mwoffliner 1.17.4 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) hide show
  1. package/README.md +355 -62
  2. package/docs/functional_architecture.md +34 -38
  3. package/extensions/wiktionary_fr.js +18 -17
  4. package/jest.config.cjs +2 -2
  5. package/lib/DOMUtils.js +0 -1
  6. package/lib/DOMUtils.js.map +1 -1
  7. package/lib/Downloader.d.ts +39 -31
  8. package/lib/Downloader.js +418 -349
  9. package/lib/Downloader.js.map +1 -1
  10. package/lib/Dump.d.ts +24 -10
  11. package/lib/Dump.js +95 -50
  12. package/lib/Dump.js.map +1 -1
  13. package/lib/Gadgets.d.ts +2 -1
  14. package/lib/Gadgets.js +7 -5
  15. package/lib/Gadgets.js.map +1 -1
  16. package/lib/Logger.d.ts +6 -6
  17. package/lib/Logger.js +33 -33
  18. package/lib/Logger.js.map +1 -1
  19. package/lib/MediaWiki.d.ts +14 -31
  20. package/lib/MediaWiki.js +119 -172
  21. package/lib/MediaWiki.js.map +1 -1
  22. package/lib/RedisStore.d.ts +3 -3
  23. package/lib/RedisStore.js +21 -23
  24. package/lib/RedisStore.js.map +1 -1
  25. package/lib/S3.js +1 -1
  26. package/lib/S3.js.map +1 -1
  27. package/lib/Templates.d.ts +3 -10
  28. package/lib/Templates.js +5 -14
  29. package/lib/Templates.js.map +1 -1
  30. package/lib/cli.js +7 -6
  31. package/lib/cli.js.map +1 -1
  32. package/lib/config.d.ts +10 -16
  33. package/lib/config.js +33 -55
  34. package/lib/config.js.map +1 -1
  35. package/lib/error.manager.d.ts +2 -2
  36. package/lib/error.manager.js +42 -49
  37. package/lib/error.manager.js.map +1 -1
  38. package/lib/i18n.d.ts +2 -0
  39. package/lib/i18n.js +53 -0
  40. package/lib/i18n.js.map +1 -0
  41. package/lib/mutex.d.ts +2 -1
  42. package/lib/mutex.js +2 -1
  43. package/lib/mutex.js.map +1 -1
  44. package/lib/mwoffliner.lib.js +370 -222
  45. package/lib/mwoffliner.lib.js.map +1 -1
  46. package/lib/parameterList.d.ts +20 -8
  47. package/lib/parameterList.js +30 -18
  48. package/lib/parameterList.js.map +1 -1
  49. package/lib/renderers/abstract.renderer.d.ts +48 -55
  50. package/lib/renderers/abstract.renderer.js +377 -98
  51. package/lib/renderers/abstract.renderer.js.map +1 -1
  52. package/lib/renderers/action-parse.renderer.d.ts +22 -3
  53. package/lib/renderers/action-parse.renderer.js +123 -81
  54. package/lib/renderers/action-parse.renderer.js.map +1 -1
  55. package/lib/renderers/renderer.builder.js +6 -69
  56. package/lib/renderers/renderer.builder.js.map +1 -1
  57. package/lib/renderers/rendering.context.d.ts +2 -3
  58. package/lib/renderers/rendering.context.js +6 -14
  59. package/lib/renderers/rendering.context.js.map +1 -1
  60. package/lib/sanitize-argument.d.ts +7 -4
  61. package/lib/sanitize-argument.js +99 -41
  62. package/lib/sanitize-argument.js.map +1 -1
  63. package/lib/util/FileManager.d.ts +36 -0
  64. package/lib/util/FileManager.js +246 -0
  65. package/lib/util/FileManager.js.map +1 -0
  66. package/lib/util/RedisKvs.js +4 -4
  67. package/lib/util/RedisKvs.js.map +1 -1
  68. package/lib/util/RedisQueue.js +1 -1
  69. package/lib/util/RedisQueue.js.map +1 -1
  70. package/lib/util/builders/url/action-parse.director.d.ts +2 -2
  71. package/lib/util/builders/url/action-parse.director.js +7 -7
  72. package/lib/util/builders/url/action-parse.director.js.map +1 -1
  73. package/lib/util/builders/url/api.director.d.ts +2 -4
  74. package/lib/util/builders/url/api.director.js +10 -17
  75. package/lib/util/builders/url/api.director.js.map +1 -1
  76. package/lib/util/builders/url/base.director.d.ts +0 -4
  77. package/lib/util/builders/url/base.director.js +0 -25
  78. package/lib/util/builders/url/base.director.js.map +1 -1
  79. package/lib/util/builders/url/basic.director.d.ts +1 -1
  80. package/lib/util/builders/url/basic.director.js +1 -1
  81. package/lib/util/builders/url/web.director.d.ts +1 -1
  82. package/lib/util/builders/url/web.director.js +2 -2
  83. package/lib/util/builders/url/web.director.js.map +1 -1
  84. package/lib/util/categories.d.ts +5 -5
  85. package/lib/util/categories.js +175 -174
  86. package/lib/util/categories.js.map +1 -1
  87. package/lib/util/const.d.ts +4 -8
  88. package/lib/util/const.js +9 -17
  89. package/lib/util/const.js.map +1 -1
  90. package/lib/util/customCssJs.d.ts +6 -0
  91. package/lib/util/customCssJs.js +70 -0
  92. package/lib/util/customCssJs.js.map +1 -0
  93. package/lib/util/dump.d.ts +15 -4
  94. package/lib/util/dump.js +282 -86
  95. package/lib/util/dump.js.map +1 -1
  96. package/lib/util/index.d.ts +1 -1
  97. package/lib/util/index.js +1 -1
  98. package/lib/util/index.js.map +1 -1
  99. package/lib/util/metaData.js.map +1 -1
  100. package/lib/util/misc.d.ts +23 -13
  101. package/lib/util/misc.js +90 -59
  102. package/lib/util/misc.js.map +1 -1
  103. package/lib/util/mw-api.d.ts +7 -5
  104. package/lib/util/mw-api.js +167 -221
  105. package/lib/util/mw-api.js.map +1 -1
  106. package/lib/util/pageListMainPage.d.ts +3 -0
  107. package/lib/util/pageListMainPage.js +10 -0
  108. package/lib/util/pageListMainPage.js.map +1 -0
  109. package/lib/util/pages.d.ts +30 -0
  110. package/lib/util/pages.js +146 -0
  111. package/lib/util/pages.js.map +1 -0
  112. package/lib/util/rewriteUrls.d.ts +2 -2
  113. package/lib/util/rewriteUrls.js +33 -31
  114. package/lib/util/rewriteUrls.js.map +1 -1
  115. package/lib/util/savePages.d.ts +8 -0
  116. package/lib/util/savePages.js +182 -0
  117. package/lib/util/savePages.js.map +1 -0
  118. package/lib/version.d.ts +1 -1
  119. package/lib/version.js +1 -1
  120. package/lib/version.js.map +1 -1
  121. package/offliner-definition.json +178 -90
  122. package/package.json +50 -49
  123. package/res/page_list_home.js +20 -0
  124. package/res/{article_not_found.svg → page_not_found.svg} +1 -1
  125. package/res/script.js +30 -45
  126. package/res/style.css +52 -68
  127. package/res/templates/download_error_placeholder.html +7 -8
  128. package/res/templates/javaScript.html +19 -0
  129. package/res/templates/pageFallback.html +9 -7
  130. package/res/templates/pageVector2022.html +9 -7
  131. package/res/templates/pageVectorLegacy.html +9 -7
  132. package/res/templates/{article_list_home.html → page_list_home.html} +1 -2
  133. package/translation/ar.json +21 -21
  134. package/translation/bn.json +1 -1
  135. package/translation/de.json +46 -19
  136. package/translation/en.json +54 -21
  137. package/translation/es.json +17 -19
  138. package/translation/fi.json +23 -3
  139. package/translation/fr.json +57 -21
  140. package/translation/he.json +8 -6
  141. package/translation/ia.json +19 -19
  142. package/translation/id.json +13 -13
  143. package/translation/it.json +13 -8
  144. package/translation/ko.json +55 -3
  145. package/translation/lb.json +5 -2
  146. package/translation/mk.json +5 -5
  147. package/translation/nl.json +57 -22
  148. package/translation/or.json +2 -2
  149. package/translation/pt.json +2 -2
  150. package/translation/qqq.json +55 -22
  151. package/translation/ru.json +2 -2
  152. package/translation/sc.json +2 -2
  153. package/translation/sk.json +62 -0
  154. package/translation/sl.json +54 -21
  155. package/translation/sv.json +20 -19
  156. package/translation/sw.json +45 -2
  157. package/translation/zh-hans.json +56 -22
  158. package/translation/zh-hant.json +26 -19
  159. package/lib/renderers/abstractDesktop.render.d.ts +0 -12
  160. package/lib/renderers/abstractDesktop.render.js +0 -67
  161. package/lib/renderers/abstractDesktop.render.js.map +0 -1
  162. package/lib/renderers/abstractMobile.render.d.ts +0 -12
  163. package/lib/renderers/abstractMobile.render.js +0 -54
  164. package/lib/renderers/abstractMobile.render.js.map +0 -1
  165. package/lib/renderers/rest-api.renderer.d.ts +0 -7
  166. package/lib/renderers/rest-api.renderer.js +0 -68
  167. package/lib/renderers/rest-api.renderer.js.map +0 -1
  168. package/lib/renderers/visual-editor.renderer.d.ts +0 -7
  169. package/lib/renderers/visual-editor.renderer.js +0 -76
  170. package/lib/renderers/visual-editor.renderer.js.map +0 -1
  171. package/lib/renderers/wikimedia-desktop.renderer.d.ts +0 -4
  172. package/lib/renderers/wikimedia-desktop.renderer.js +0 -7
  173. package/lib/renderers/wikimedia-desktop.renderer.js.map +0 -1
  174. package/lib/renderers/wikimedia-mobile.renderer.d.ts +0 -19
  175. package/lib/renderers/wikimedia-mobile.renderer.js +0 -243
  176. package/lib/renderers/wikimedia-mobile.renderer.js.map +0 -1
  177. package/lib/util/articleListMainPage.d.ts +0 -3
  178. package/lib/util/articleListMainPage.js +0 -10
  179. package/lib/util/articleListMainPage.js.map +0 -1
  180. package/lib/util/articles.d.ts +0 -26
  181. package/lib/util/articles.js +0 -102
  182. package/lib/util/articles.js.map +0 -1
  183. package/lib/util/builders/url/desktop.director.d.ts +0 -8
  184. package/lib/util/builders/url/desktop.director.js +0 -15
  185. package/lib/util/builders/url/desktop.director.js.map +0 -1
  186. package/lib/util/builders/url/mobile.director.d.ts +0 -8
  187. package/lib/util/builders/url/mobile.director.js +0 -15
  188. package/lib/util/builders/url/mobile.director.js.map +0 -1
  189. package/lib/util/builders/url/rest-api.director.d.ts +0 -8
  190. package/lib/util/builders/url/rest-api.director.js +0 -18
  191. package/lib/util/builders/url/rest-api.director.js.map +0 -1
  192. package/lib/util/builders/url/visual-editor.director.d.ts +0 -9
  193. package/lib/util/builders/url/visual-editor.director.js +0 -18
  194. package/lib/util/builders/url/visual-editor.director.js.map +0 -1
  195. package/lib/util/saveArticles.d.ts +0 -8
  196. package/lib/util/saveArticles.js +0 -411
  197. package/lib/util/saveArticles.js.map +0 -1
  198. package/res/article_list_home.js +0 -24
  199. package/res/content.parsoid.css +0 -196
  200. package/res/inserted_style.css +0 -45
  201. package/res/templates/categories.html +0 -11
  202. package/res/templates/lead_section_wrapper.html +0 -6
  203. package/res/templates/pageWikimediaDesktop.html +0 -24
  204. package/res/templates/pageWikimediaMobile.html +0 -24
  205. package/res/templates/section_wrapper.html +0 -5
  206. package/res/templates/subcategories.html +0 -23
  207. package/res/templates/subpages.html +0 -17
  208. package/res/templates/subsection_wrapper.html +0 -5
  209. package/res/webpHandler.js +0 -165
  210. package/res/wm_mobile_override_script.js +0 -15
  211. package/res/wm_mobile_override_style.css +0 -20
  212. package/translation/br.json +0 -8
  213. package/translation/dag.json +0 -9
  214. package/translation/es-formal.json +0 -29
  215. package/translation/ha.json +0 -10
  216. package/translation/hi.json +0 -9
  217. package/translation/ig.json +0 -10
  218. package/translation/kaa.json +0 -9
  219. package/translation/nb.json +0 -9
  220. package/translation/nqo.json +0 -8
  221. package/translation/pt-br.json +0 -10
  222. package/translation/ro.json +0 -9
  223. package/translation/scn.json +0 -8
  224. package/translation/sq.json +0 -9
  225. package/translation/te.json +0 -9
  226. package/translation/tn.json +0 -9
  227. package/translation/tr.json +0 -10
@@ -4,29 +4,63 @@
4
4
  "GuoPC",
5
5
  "IceButBin",
6
6
  "Prmsh",
7
- "TFX202X"
7
+ "TFX202X",
8
+ "沈澄心"
8
9
  ]
9
10
  },
10
- "DISCLAIMER": "本文由${creator}发布。除非另有说明,文本内容遵循${license}协议。媒体文件可能适用附加条款。",
11
- "LAST_EDITED_ON": "最后编辑于:${date}",
11
+ "categoryHeaderNumerals": "0-9",
12
+ "categoryFileCount": {
13
+ "one": "此分类仅包含以下文件。",
14
+ "other": "此分类中存在以下 $t(categoryCurrentPageFileCount, {\"count\": {{curPageCount}} }) 个文件,总共有 {{count}} 个文件。"
15
+ },
16
+ "categoryCurrentPageFileCount": {
17
+ "one": "file is",
18
+ "other": "{{count}} 个文件"
19
+ },
20
+ "categoryMediaHeader": "分类“{{pageName}}”中的媒体",
21
+ "categoryPageCount": {
22
+ "one": "此分类仅包含以下页面。",
23
+ "other": "此分类中的以下 $t(categoryCurrentPagePageCount, {\"count\": {{curPageCount}} }) 个页面,共 {{count}} 个页面。"
24
+ },
25
+ "categoryCurrentPagePageCount": {
26
+ "one": "页面",
27
+ "other": "{{count}} 个页面"
28
+ },
29
+ "categoryHeader": "分类“{{pageName}}”中的页面",
30
+ "categorySubcatCount": {
31
+ "one": "此分类仅包含以下子分类。",
32
+ "other": "此分类包含以下 $t(categoryCurrentPageSubcatCount, {\"count\": {{curPageCount}} }) 个子分类,共 {{count}} 个子分类。"
33
+ },
34
+ "categoryCurrentPageSubcatCount": {
35
+ "one": "子分类",
36
+ "other": "{{count}} 个子分类"
37
+ },
38
+ "categoryPreviousPage": "上一页",
39
+ "categoryNextPage": "下一页",
40
+ "categoryNoPagination": "未启用Javascript的浏览器无法显示下一个项目",
41
+ "subcategories": "子分类",
42
+ "categoryEmpty": "<em>本分类目前不含有任何页面或媒体文件。</em>",
43
+ "categoryLimited": "<em>此分类的内容已缩减至仅包含在 ZIM 文件内的页面。</em>",
44
+ "DISCLAIMER": "本页面由 {{creator}} 发布。除非另有说明,文本内容遵循 {{license}} 协议。媒体文件可能适用附加条款。",
45
+ "LAST_EDITED_ON": "最后编辑于 {{date}}",
12
46
  "LICENSE_UNKNOWN": "未知的许可证",
13
- "DOWNLOAD_ERRORS_HEADING": "哎呀!找不到条目。",
14
- "DOWNLOAD_ERRORS_MESSAGE": "所请求的条目“${articleTitle}”在此 ZIM 中不可用,无法从 ${server} 检索。",
15
- "DOWNLOAD_ERRORS_LINE1_DELETED_ARTICLE": "此条目在待检索条目的列表编译之后、获取此条目以构建您浏览的 ZIM 之前被删除。",
16
- "DOWNLOAD_ERRORS_LINE1_CLIENT_SIDE_TIMEOUT": "当您正在浏览的ZIM文件被创建时,${server}服务器未能及时提供此文章HTML的详细信息。",
17
- "DOWNLOAD_ERRORS_LINE1_WIKIMEDIA_DESKTOP_API_HTML_500_ERROR": "在构建您浏览的 ZIM 时,${server} 服务器无法渲染此条目的 HTML 内容,并返回 HTTP 500 错误。",
18
- "DOWNLOAD_ERRORS_LINE1_WIKIMEDIA_DESKTOP_API_HTML_504_UPSTREAM_TIMEOUT": "在构建您浏览的 ZIM 时,${server} 服务器在渲染此条目 HTML 内容时超时,并返回 HTTP 504 错误。",
19
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_UPSTREAM_TIMEOUT": "在构建您浏览的 ZIM 时,${server} 服务器的 ActionParse API 在处理此条目时超时,并返回 HTTP 504 错误。",
20
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_HTML_503_ERROR": "在构建您浏览的 ZIM 时,${server} 服务器的 ActionParse API 在提供此关于此条目 HTML 的详细信息时引发 HTTP 503 错误。",
21
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_BAD_REVISION_ERROR": "在构建您浏览的 ZIM 时,${server} 服务器的 ActionParse API 在提供关于此条目 HTML 的详细信息时,引发意外的修订版本 ID 不合法的错误。",
22
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_UNREACHABLE_EXCEPTION_ERROR": "在构建您浏览的 ZIM 时,${server} 服务器的 ActionParse API 在提供关于此条目 HTML 的详细信息时引发无法访问的异常错误。",
23
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_INVARIANT_EXCEPTION_ERROR": "当您正在浏览的ZIM文件构建时,${server}服务器的ActionParse API在提供此文章HTML详情时触发了不变异常错误。",
24
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_PARSOID_RESOURCE_LIMIT_EXCEEDED": "当您浏览的ZIM文件被构建时,${server}服务器的ActionParse API在提供此文章HTML详细信息时引发了与Parsoid资源限制超出相关的错误。",
25
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_GENERIC_INTERNAL_API_ERROR": "在构建您浏览的 ZIM 时,${server} 服务器的 ActionParse API 在提供关于此条目 HTML 的详细信息时引发内部 API 错误。",
26
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_INTERNAL_API_TYPE_ERROR": "当您正在浏览的ZIM文件被构建时,${server}服务器的ActionParse API在提供此文章HTML的详细信息时引发了内部API类型错误。",
27
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_INVALID_ARGUMENT_EXCEPTION_ERROR": "当您正在浏览的ZIM文件构建时,${server}服务器的ActionParse API在提供有关此文章HTML的详细信息时引发了一个参数异常错误。",
28
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_TRUNCATED_RESPONSE": "在构建您浏览的 ZIM 时,${server} 服务器的 ActionParse API 未能提供关于此条目 HTML 的详细信息,因为此条目过长。需要在 ${server} 服务器上将此条目拆分为多个相对短的条目。",
29
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_EMPTY_500_RESPONSE": "当您正在浏览的ZIM文件被构建时,${server}服务器的ActionParse API未能返回关于此文章的HTML详细内容,返回了一个空响应。",
30
- "DOWNLOAD_ERRORS_LINE2": "缺失的条目已被您当前看到的占位符页面所取代。",
31
- "DOWNLOAD_ERRORS_LINE3": "希望 ${server} 服务器上的问题能够得到解决,以及希望下一个版本的 ZIM 能够包含此条目。"
47
+ "DOWNLOAD_ERRORS_HEADING": "哎呀!找不到页面。",
48
+ "DOWNLOAD_ERRORS_MESSAGE": "所请求的页面“{{pageTitle}}”在此 ZIM 中不可用,无法从 {{server}} 检索。",
49
+ "DOWNLOAD_ERRORS_LINE1_DELETED_PAGE": "此页面在待检索页面的列表编译之后、获取此页面以构建您浏览的 ZIM 之前被删除。",
50
+ "DOWNLOAD_ERRORS_LINE1_PERMISSION_DENIED": "在 {{server}} 服务器上对此页面的访问受到限制。其所需要的特殊权限在 ZIM 抓取过程中无法获得。",
51
+ "DOWNLOAD_ERRORS_LINE1_CATEGORY_LOCKDOWN": "由于 {{server}} 服务器上的分类锁定,对本页面的访问受到限制。在 ZIM 抓取过程中,所需的分类权限不可用。",
52
+ "DOWNLOAD_ERRORS_LINE1_CLIENT_SIDE_TIMEOUT": "当您正在浏览的 ZIM 文件构建时,{{server}} 服务器未能及时提供关于此页面 HTML 的详细信息。",
53
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_UPSTREAM_TIMEOUT": "当您正在浏览的 ZIM 文件构建时,{{server}} 服务器的 ActionParse API 在处理此页面时超时,并返回了 HTTP 504 错误。",
54
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_HTML_503_ERROR": "当您正在浏览的 ZIM 文件构建时,{{server}} 服务器的 ActionParse API 在提供关于此页面 HTML 的详细信息时引发了 HTTP 503 错误。",
55
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_BAD_REVISION_ERROR": "当您正在浏览的 ZIM 文件构建时,{{server}} 服务器的 ActionParse API 在提供关于此页面 HTML 的详细信息时引发了意外的修订版本 ID 不合法错误。",
56
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_UNREACHABLE_EXCEPTION_ERROR": "当您正在浏览的 ZIM 文件构建时,{{server}} 服务器的 ActionParse API 在提供关于此页面 HTML 的详细信息时引发了无法访问异常错误。",
57
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_INVARIANT_EXCEPTION_ERROR": "当您正在浏览的 ZIM 文件构建时,{{server}} 服务器的 ActionParse API 在提供关于此页面 HTML 的详细信息时引发了不变式异常错误。",
58
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_PARSOID_RESOURCE_LIMIT_EXCEEDED": "当您正在浏览的 ZIM 文件构建时,{{server}} 服务器的 ActionParse API 在提供关于此页面 HTML 的详细信息时引发了与 Parsoid 资源限制超出相关的错误。",
59
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_GENERIC_INTERNAL_API_ERROR": "在构建您浏览的 ZIM 时,{{server}} 服务器的 ActionParse API 在提供关于此页面 HTML 的详细信息时引发内部 API 错误。",
60
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_INTERNAL_API_TYPE_ERROR": "当您正在浏览的 ZIM 文件构建时,{{server}} 服务器的 ActionParse API 在提供关于此页面 HTML 的详细信息时引发了内部 API 类型错误。",
61
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_INVALID_ARGUMENT_EXCEPTION_ERROR": "当您正在浏览的 ZIM 文件构建时,{{server}} 服务器的 ActionParse API 在提供关于此页面 HTML 的详细信息时引发了参数异常错误。",
62
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_TRUNCATED_RESPONSE": "当您正在浏览的 ZIM 文件构建时,{{server}} 服务器的 ActionParse API 未能提供关于此页面 HTML 的详细信息,因为此页面过长。需要在 {{server}} 服务器上将此页面拆分为多个相对短的页面。",
63
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_EMPTY_500_RESPONSE": "当您正在浏览的 ZIM 文件构建时,{{server}} 服务器的 ActionParse API 未能返回关于此页面 HTML 的详细信息,返回了空响应。",
64
+ "DOWNLOAD_ERRORS_LINE2": "缺失的页面已被您当前看到的占位符页面所取代。",
65
+ "DOWNLOAD_ERRORS_LINE3": "希望 {{server}} 服务器上的问题能够得到解决,以及希望下一个版本的 ZIM 能够包含此页面。"
32
66
  }
@@ -4,26 +4,33 @@
4
4
  "Kly"
5
5
  ]
6
6
  },
7
- "DISCLAIMER": "此條目由${creator}發布。除非另有說明,否則內容文字基於${license}之下可用。媒體檔案部份可能適用於額外條款。",
8
- "LAST_EDITED_ON": "最後編輯於${date}",
7
+ "categoryHeaderNumerals": "0–9",
8
+ "categoryMediaHeader": "在分類「{{pageName}}」的媒體",
9
+ "categoryHeader": "在分類「{{pageName}}」的頁面",
10
+ "categoryPreviousPage": "上一頁",
11
+ "categoryNextPage": "下一頁",
12
+ "subcategories": "子分類",
13
+ "categoryEmpty": "<em>此分類目前未包含頁面或媒體。</em>",
14
+ "DISCLAIMER": "此頁面由{{creator}}發布。除非另有說明,否則內容文字基於{{license}}之下可用。媒體檔案部份可能適用於額外條款。",
15
+ "LAST_EDITED_ON": "最後編輯於{{date}}",
9
16
  "LICENSE_UNKNOWN": "未知授權條款",
10
17
  "DOWNLOAD_ERRORS_HEADING": "哎呀。找不到條目。",
11
- "DOWNLOAD_ERRORS_MESSAGE": "所要求的條目「${articleTitle}」在此 ZIM 中不可用,無法從 ${server} 檢索。",
12
- "DOWNLOAD_ERRORS_LINE1_DELETED_ARTICLE": "此條目在我們編譯要檢索的條目清單之後,且在我們取得它以建置您正在瀏覽的 ZIM 之前被刪除了。",
13
- "DOWNLOAD_ERRORS_LINE1_CLIENT_SIDE_TIMEOUT": "當您瀏覽的 ZIM 在建置時,${server} 伺服器未能及時提供有關該條目 HTML 的詳細資訊。",
14
- "DOWNLOAD_ERRORS_LINE1_WIKIMEDIA_DESKTOP_API_HTML_500_ERROR": "當您瀏覽的 ZIM 在建置時,${server} 伺服器會無法呈現該條目的 HTML 內容,並會回傳 HTTP 500 錯誤。",
15
- "DOWNLOAD_ERRORS_LINE1_WIKIMEDIA_DESKTOP_API_HTML_504_UPSTREAM_TIMEOUT": "當您瀏覽的 ZIM 在建置時,${server} 伺服器會在呈現該條目的 HTML 內容時逾時,並會回傳 HTTP 504 錯誤。",
16
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_UPSTREAM_TIMEOUT": "當您瀏覽的 ZIM 在建置時,${server} 伺服器的 ActionParse API 會在處理該條目時逾時,並會回傳 HTTP 504 錯誤。",
17
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_HTML_503_ERROR": "當您瀏覽的 ZIM 在建置時,${server} 伺服器的 ActionParse API 會在提供關於該條目 HTML 詳細資訊時引發 HTTP 503 錯誤。",
18
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_BAD_REVISION_ERROR": "當您瀏覽的 ZIM 在建置時,${server} 伺服器的 ActionParse API 會在提供關於該條目 HTML 詳細資訊時引發非預期錯誤修訂 ID。",
19
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_UNREACHABLE_EXCEPTION_ERROR": "當您瀏覽的 ZIM 在建置時,${server} 伺服器的 ActionParse API 會在提供關於該條目 HTML 詳細資訊時引發無法存取的例外錯誤。",
20
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_INVARIANT_EXCEPTION_ERROR": "當您瀏覽的 ZIM 在建置時,${server} 伺服器的 ActionParse API 在提供關於該條目 HTML 詳細資訊時引發慣例異常錯誤。",
21
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_PARSOID_RESOURCE_LIMIT_EXCEEDED": "當您瀏覽的 ZIM 在建置時,${server} 伺服器的 ActionParse API 在提供關於該條目 HTML 詳細資訊時引發連結至 Parsoid 資源超出限制的相關錯誤。",
22
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_GENERIC_INTERNAL_API_ERROR": "當您瀏覽的 ZIM 在建置時,${server} 伺服器的 ActionParse API 在提供關於該條目 HTML 詳細資訊時引發內部網路 API 錯誤。",
23
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_INTERNAL_API_TYPE_ERROR": "當您瀏覽的 ZIM 在建置時,${server} 伺服器的 ActionParse API 在提供關於該條目 HTML 詳細資訊時引發內網 API 類型錯誤。",
24
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_INVALID_ARGUMENT_EXCEPTION_ERROR": "當您瀏覽的 ZIM 在建置時,${server} 伺服器的 ActionParse API 在提供關於該條目 HTML 詳細資訊時引發參數異常錯誤。",
25
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_TRUNCATED_RESPONSE": "當您瀏覽的 ZIM 在建置時,${server} 伺服器的 ActionParse API 無法提供關於該條目 HTML 詳細資訊,因為該條目內容過多。需要有人在 ${server} 伺服器上將此條目拆分成多個較小內容。",
26
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_EMPTY_500_RESPONSE": "當您瀏覽的 ZIM 在建置時,${server} 伺服器的 ActionParse API 提供有關此條目 HTML 的詳細資訊失敗並回傳空回應。",
18
+ "DOWNLOAD_ERRORS_MESSAGE": "所要求的頁面「{{pageTitle}}」在此 ZIM 中不可用,無法從 {{server}} 檢索。",
19
+ "DOWNLOAD_ERRORS_LINE1_DELETED_PAGE": "此條目在我們編譯要檢索的條目清單之後,且在我們取得它以建置您正在瀏覽的 ZIM 之前被刪除了。",
20
+ "DOWNLOAD_ERRORS_LINE1_PERMISSION_DENIED": "存取此條目在 {{server}} 伺服器上受到限制。這需要特殊權限,而這些權限在 ZIM 抓取過程中無法取得。",
21
+ "DOWNLOAD_ERRORS_LINE1_CATEGORY_LOCKDOWN": "由於在伺服器 {{server}} 上設定了基於分類的權限鎖定,因此無法存取此條目。在 ZIM 抓取過程中,所需要的分類權限不可用。",
22
+ "DOWNLOAD_ERRORS_LINE1_CLIENT_SIDE_TIMEOUT": "當您瀏覽的 ZIM 在建置時,{{server}} 伺服器未能及時提供有關該條目 HTML 的詳細資訊。",
23
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_UPSTREAM_TIMEOUT": "當您瀏覽的 ZIM 在建置時,{{server}} 伺服器的 ActionParse API 會在處理該條目時逾時,並會回傳 HTTP 504 錯誤。",
24
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_HTML_503_ERROR": "當您瀏覽的 ZIM 在建置時,{{server}} 伺服器的 ActionParse API 會在提供關於該條目 HTML 詳細資訊時引發 HTTP 503 錯誤。",
25
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_BAD_REVISION_ERROR": "當您瀏覽的 ZIM 在建置時,{{server}} 伺服器的 ActionParse API 會在提供關於該條目 HTML 詳細資訊時引發非預期錯誤修訂 ID。",
26
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_UNREACHABLE_EXCEPTION_ERROR": "當您瀏覽的 ZIM 在建置時,{{server}} 伺服器的 ActionParse API 會在提供關於該條目 HTML 詳細資訊時引發無法存取的例外錯誤。",
27
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_INVARIANT_EXCEPTION_ERROR": "當您瀏覽的 ZIM 在建置時,{{server}} 伺服器的 ActionParse API 在提供關於該條目 HTML 詳細資訊時引發慣例異常錯誤。",
28
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_PARSOID_RESOURCE_LIMIT_EXCEEDED": "當您瀏覽的 ZIM 在建置時,{{server}} 伺服器的 ActionParse API 在提供關於該條目 HTML 詳細資訊時引發連結至 Parsoid 資源超出限制的相關錯誤。",
29
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_GENERIC_INTERNAL_API_ERROR": "當您瀏覽的 ZIM 在建置時,{{server}} 伺服器的 ActionParse API 在提供關於該條目 HTML 詳細資訊時引發內部網路 API 錯誤。",
30
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_INTERNAL_API_TYPE_ERROR": "當您瀏覽的 ZIM 在建置時,{{server}} 伺服器的 ActionParse API 在提供關於該條目 HTML 詳細資訊時引發內網 API 類型錯誤。",
31
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_INVALID_ARGUMENT_EXCEPTION_ERROR": "當您瀏覽的 ZIM 在建置時,{{server}} 伺服器的 ActionParse API 在提供關於該條目 HTML 詳細資訊時引發參數異常錯誤。",
32
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_TRUNCATED_RESPONSE": "當您瀏覽的 ZIM 在建置時,{{server}} 伺服器的 ActionParse API 無法提供關於該條目 HTML 詳細資訊,因為該條目內容過多。需要有人在 {{server}} 伺服器上將此條目拆分成多個較小內容。",
33
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_EMPTY_500_RESPONSE": "當您瀏覽的 ZIM 在建置時,{{server}} 伺服器的 ActionParse API 提供有關此條目 HTML 的詳細資訊失敗並回傳空回應。",
27
34
  "DOWNLOAD_ERRORS_LINE2": "缺少的條目已被您目前看到的佔位符頁面所取代。",
28
- "DOWNLOAD_ERRORS_LINE3": "希望 ${server} 伺服器上的問題可以解決,以及希望我們的下一個版本的 ZIM 將包含此條目。"
35
+ "DOWNLOAD_ERRORS_LINE3": "希望 {{server}} 伺服器上的問題可以解決,以及希望我們的下一個版本的 ZIM 將包含此條目。"
29
36
  }
@@ -1,12 +0,0 @@
1
- import { DownloadOpts, DownloadRes, Renderer } from './abstract.renderer.js';
2
- export declare abstract class DesktopRenderer extends Renderer {
3
- staticFilesListDesktop: string[];
4
- constructor();
5
- download(downloadOpts: DownloadOpts): Promise<DownloadRes>;
6
- filterWikimediaDesktopModules(_moduleDependencies: any): {
7
- jsConfigVars: string;
8
- jsDependenciesList: string[];
9
- styleDependenciesList: string[];
10
- };
11
- templateDesktopArticle(moduleDependencies: any, articleId: string): Document;
12
- }
@@ -1,67 +0,0 @@
1
- import * as domino from 'domino';
2
- import { Renderer } from './abstract.renderer.js';
3
- import { getStaticFiles, genCanonicalLink, genHeaderScript, genHeaderCSSLink, getRelativeFilePath } from '../util/misc.js';
4
- import { config } from '../config.js';
5
- import MediaWiki from '../MediaWiki.js';
6
- import { htmlWikimediaDesktopTemplateCode } from '../Templates.js';
7
- import Downloader from '../Downloader.js';
8
- export class DesktopRenderer extends Renderer {
9
- staticFilesListDesktop = [];
10
- constructor() {
11
- super();
12
- this.staticFilesListDesktop = this.staticFilesListCommon.concat(getStaticFiles(config.output.jsResources, config.output.cssResources));
13
- }
14
- async download(downloadOpts) {
15
- const { articleUrl, articleDetail } = downloadOpts;
16
- const moduleDependencies = this.filterWikimediaDesktopModules(await Downloader.getModuleDependencies(articleDetail.title));
17
- const data = await Downloader.getJSON(articleUrl);
18
- if (data.error) {
19
- throw new Error(data.error);
20
- }
21
- return { data, moduleDependencies, redirects: [] };
22
- }
23
- filterWikimediaDesktopModules(_moduleDependencies) {
24
- const { jsConfigVars, jsDependenciesList, styleDependenciesList } = _moduleDependencies;
25
- const wikimediaDesktopJsModuleDependencies = jsDependenciesList.filter((item) => !item.includes('javascript/mobile'));
26
- const wikimediaDesktopCssModuleDependencies = styleDependenciesList.filter((item) => !item.includes('css/mobile'));
27
- const wikimediaDesktopModuleDependencies = {
28
- jsConfigVars,
29
- jsDependenciesList: wikimediaDesktopJsModuleDependencies,
30
- styleDependenciesList: wikimediaDesktopCssModuleDependencies,
31
- };
32
- return wikimediaDesktopModuleDependencies;
33
- }
34
- templateDesktopArticle(moduleDependencies, articleId) {
35
- const { jsConfigVars, jsDependenciesList, styleDependenciesList } = moduleDependencies;
36
- const cssLinks = config.output.cssResources.reduce((buf, css) => {
37
- return buf + genHeaderCSSLink(config, css, articleId, config.output.dirs.res);
38
- }, '');
39
- let jsScripts = config.output.jsResources.reduce((buf, js) => {
40
- return (buf +
41
- (js === 'script'
42
- ? genHeaderScript(config, js, articleId, config.output.dirs.res, `data-article-id="${articleId.replace(/"/g, '\\\\"')}" id="script-js"`)
43
- : genHeaderScript(config, js, articleId, config.output.dirs.res)));
44
- }, '');
45
- if (Downloader.webp) {
46
- jsScripts += genHeaderScript(config, 'webpHandler', articleId, config.output.dirs.webp);
47
- }
48
- const articleConfigVarsList = jsConfigVars === '' ? '' : genHeaderScript(config, 'jsConfigVars', articleId, config.output.dirs.mediawiki);
49
- const articleJsList = jsDependenciesList.length === 0 ? '' : jsDependenciesList.map((oneJsDep) => genHeaderScript(config, oneJsDep, articleId, config.output.dirs.mediawiki)).join('\n');
50
- const articleCssList = styleDependenciesList.length === 0
51
- ? ''
52
- : styleDependenciesList.map((oneCssDep) => genHeaderCSSLink(config, oneCssDep, articleId, config.output.dirs.mediawiki)).join('\n');
53
- const htmlTemplateString = htmlWikimediaDesktopTemplateCode()
54
- .replace('__CSS_LINKS__', cssLinks)
55
- .replace('__JS_SCRIPTS__', jsScripts)
56
- .replace('__ARTICLE_CANONICAL_LINK__', genCanonicalLink(config, MediaWiki.webUrl.href, articleId))
57
- .replace('__ARTICLE_CONFIGVARS_LIST__', articleConfigVarsList)
58
- .replace('__ARTICLE_JS_LIST__', articleJsList)
59
- .replace('__ARTICLE_CSS_LIST__', articleCssList)
60
- .replace(/__ASSETS_DIR__/g, config.output.dirs.assets)
61
- .replace(/__RES_DIR__/g, config.output.dirs.res)
62
- .replace(/__MW_DIR__/g, config.output.dirs.mediawiki)
63
- .replace(/__RELATIVE_FILE_PATH__/g, getRelativeFilePath(articleId, ''));
64
- return domino.createDocument(htmlTemplateString);
65
- }
66
- }
67
- //# sourceMappingURL=abstractDesktop.render.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"abstractDesktop.render.js","sourceRoot":"","sources":["../../src/renderers/abstractDesktop.render.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- import { Renderer } from './abstract.renderer.js';
2
- export declare abstract class MobileRenderer extends Renderer {
3
- staticFilesListMobile: string[];
4
- constructor();
5
- filterWikimediaMobileModules(_moduleDependencies: any): {
6
- jsDependenciesList: string[];
7
- styleDependenciesList: string[];
8
- };
9
- private genWikimediaMobileOverrideCSSLink;
10
- private genWikimediaMobileOverrideScript;
11
- templateMobileArticle(moduleDependencies: any, articleId: string): Document;
12
- }
@@ -1,54 +0,0 @@
1
- import * as domino from 'domino';
2
- import { Renderer } from './abstract.renderer.js';
3
- import { getStaticFiles, genCanonicalLink, genHeaderScript, genHeaderCSSLink, getRelativeFilePath } from '../util/misc.js';
4
- import { config } from '../config.js';
5
- import MediaWiki from '../MediaWiki.js';
6
- import Downloader from '../Downloader.js';
7
- import { htmlWikimediaMobileTemplateCode } from '../Templates.js';
8
- export class MobileRenderer extends Renderer {
9
- staticFilesListMobile = [];
10
- constructor() {
11
- super();
12
- this.staticFilesListMobile = this.staticFilesListCommon.concat(getStaticFiles(config.output.wikimediaMobileJsResources, config.output.wikimediaMobileCssResources));
13
- }
14
- filterWikimediaMobileModules(_moduleDependencies) {
15
- const { jsDependenciesList, styleDependenciesList } = _moduleDependencies;
16
- const wikimediaMobileJsModuleDependencies = jsDependenciesList.filter((item) => item.includes('javascript/mobile'));
17
- const wikimediaMobileCssModuleDependencies = styleDependenciesList.filter((item) => item.includes('css/mobile'));
18
- const wikimediaMobileModuleDependencies = {
19
- jsDependenciesList: wikimediaMobileJsModuleDependencies,
20
- styleDependenciesList: wikimediaMobileCssModuleDependencies,
21
- };
22
- return wikimediaMobileModuleDependencies;
23
- }
24
- genWikimediaMobileOverrideCSSLink(relativeFilePath, css) {
25
- return `<link rel="stylesheet" href="${relativeFilePath}${config.output.dirs.res}/${css}.css" />`;
26
- }
27
- genWikimediaMobileOverrideScript(relativeFilePath, js) {
28
- return `<script src='${relativeFilePath}${config.output.dirs.res}/${js}.js'></script>`;
29
- }
30
- templateMobileArticle(moduleDependencies, articleId) {
31
- const { jsDependenciesList, styleDependenciesList } = moduleDependencies;
32
- let articleJsList = jsDependenciesList.length === 0 ? '' : jsDependenciesList.map((oneJsDep) => genHeaderScript(config, oneJsDep, articleId, config.output.dirs.mediawiki)).join('\n');
33
- if (Downloader.webp) {
34
- articleJsList += genHeaderScript(config, 'webpHandler', articleId, config.output.dirs.webp);
35
- }
36
- const articleCssList = styleDependenciesList.length === 0
37
- ? ''
38
- : styleDependenciesList.map((oneCssDep) => genHeaderCSSLink(config, oneCssDep, articleId, config.output.dirs.mediawiki)).join('\n');
39
- const relativeFilePath = getRelativeFilePath(articleId, '');
40
- const htmlTemplateString = htmlWikimediaMobileTemplateCode()
41
- .replace('__ARTICLE_CANONICAL_LINK__', genCanonicalLink(config, MediaWiki.webUrl.href, articleId))
42
- .replace('__ARTICLE_CONFIGVARS_LIST__', '')
43
- .replace('__JS_SCRIPTS__', this.genWikimediaMobileOverrideScript(relativeFilePath, config.output.wikimediaMobileJsResources[0]))
44
- .replace('__CSS_LINKS__', this.genWikimediaMobileOverrideCSSLink(relativeFilePath, config.output.wikimediaMobileCssResources[0]))
45
- .replace('__ARTICLE_JS_LIST__', articleJsList)
46
- .replace('__ARTICLE_CSS_LIST__', articleCssList)
47
- .replace(/__ASSETS_DIR__/g, config.output.dirs.assets)
48
- .replace(/__RES_DIR__/g, config.output.dirs.res)
49
- .replace(/__MW_DIR__/g, config.output.dirs.mediawiki)
50
- .replace(/__RELATIVE_FILE_PATH__/g, getRelativeFilePath(articleId, ''));
51
- return domino.createDocument(htmlTemplateString);
52
- }
53
- }
54
- //# sourceMappingURL=abstractMobile.render.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"abstractMobile.render.js","sourceRoot":"","sources":["../../src/renderers/abstractMobile.render.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import { DesktopRenderer } from './abstractDesktop.render.js';
2
- import { RenderOpts } from './abstract.renderer.js';
3
- export declare class RestApiRenderer extends DesktopRenderer {
4
- constructor();
5
- private retrieveHtml;
6
- render(renderOpts: RenderOpts): Promise<any>;
7
- }
@@ -1,68 +0,0 @@
1
- import domino from 'domino';
2
- import { DesktopRenderer } from './abstractDesktop.render.js';
3
- import { getStrippedTitleFromHtml } from '../util/misc.js';
4
- import { isMainPage } from '../util/articles.js';
5
- // Represent 'https://{wikimedia-wiki}/api/rest.php/v1/page/html/'
6
- export class RestApiRenderer extends DesktopRenderer {
7
- constructor() {
8
- super();
9
- }
10
- async retrieveHtml(data, i, articleId, articleDetail, numberOfPagesToSplitInto, articleDetailXId) {
11
- const pageId = i === 0 ? '' : `__${i}`;
12
- const _articleId = articleId + pageId;
13
- const _articleDetail = Object.assign({}, articleDetail, {
14
- subCategories: (articleDetail.subCategories || []).slice(i * 200, (i + 1) * 200),
15
- nextArticleId: numberOfPagesToSplitInto > i + 1 ? `${articleId}__${i + 1}` : null,
16
- prevArticleId: i - 1 > 0 ? `${articleId}__${i - 1}` : i - 1 === 0 ? articleId : null,
17
- });
18
- if (articleDetailXId && (articleDetail.subCategories || []).length > 200) {
19
- await articleDetailXId.set(_articleId, _articleDetail);
20
- }
21
- let strippedTitle = getStrippedTitleFromHtml(data);
22
- if (!strippedTitle) {
23
- const title = articleId;
24
- const doc = domino.createDocument(`<span class='mw-title'>${title}</span>`);
25
- strippedTitle = doc.getElementsByClassName('mw-title')[0].textContent;
26
- }
27
- return { strippedTitle, _articleId };
28
- }
29
- async render(renderOpts) {
30
- const result = [];
31
- const { data, articleId, articleDetailXId, moduleDependencies, dump } = renderOpts;
32
- /* istanbul ignore if */
33
- if (!data) {
34
- throw new Error(`Cannot render [${data}] into an article`);
35
- }
36
- const articleDetail = await renderOpts.articleDetailXId.get(articleId);
37
- // Paginate when there are more than 200 subCategories
38
- const numberOfPagesToSplitInto = Math.max(Math.ceil((articleDetail.subCategories || []).length / 200), 1);
39
- for (let i = 0; i < numberOfPagesToSplitInto; i++) {
40
- const { strippedTitle, _articleId } = await this.retrieveHtml(data, i, articleId, articleDetail, numberOfPagesToSplitInto, articleDetailXId);
41
- let dataWithHeader = '';
42
- if (!isMainPage(articleId)) {
43
- dataWithHeader = super.injectH1TitleToHtml(data, articleDetail);
44
- }
45
- const { finalHTML, mediaDependencies, videoDependencies, imageDependencies, subtitles } = await super.processHtml({
46
- html: dataWithHeader || data,
47
- dump,
48
- articleId,
49
- articleDetail,
50
- moduleDependencies,
51
- callback: super.templateDesktopArticle.bind(this),
52
- });
53
- result.push({
54
- articleId: _articleId,
55
- displayTitle: (strippedTitle || articleId.replace(/_/g, ' ')) + (i === 0 ? '' : `/${i}`),
56
- html: finalHTML,
57
- mediaDependencies,
58
- videoDependencies,
59
- imageDependencies,
60
- moduleDependencies,
61
- staticFiles: this.staticFilesListDesktop,
62
- subtitles,
63
- });
64
- }
65
- return result;
66
- }
67
- }
68
- //# sourceMappingURL=rest-api.renderer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rest-api.renderer.js","sourceRoot":"","sources":["../../src/renderers/rest-api.renderer.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import { DesktopRenderer } from './abstractDesktop.render.js';
2
- import { RenderOpts } from './abstract.renderer.js';
3
- export declare class VisualEditorRenderer extends DesktopRenderer {
4
- constructor();
5
- private retrieveHtml;
6
- render(renderOpts: RenderOpts): Promise<any>;
7
- }
@@ -1,76 +0,0 @@
1
- import * as logger from '../Logger.js';
2
- import { DELETED_ARTICLE_ERROR } from '../util/const.js';
3
- import { DesktopRenderer } from './abstractDesktop.render.js';
4
- import { getStrippedTitleFromHtml } from '../util/misc.js';
5
- import { DownloadError } from '../Downloader.js';
6
- import { isMainPage } from '../util/articles.js';
7
- /*
8
- Relies on VisualEditor API typically looking like 'https://{wiki-host}/w/api.php?action=visualeditor&mobileformat=html&format=json&paction=parse&page={title}'
9
- */
10
- export class VisualEditorRenderer extends DesktopRenderer {
11
- constructor() {
12
- super();
13
- }
14
- async retrieveHtml(renderOpts) {
15
- const { data, articleId, articleDetail } = renderOpts;
16
- /* istanbul ignore if */
17
- if (!data) {
18
- throw new Error(`Cannot render [${data}] into an article`);
19
- }
20
- let html;
21
- let displayTitle;
22
- let strippedTitle;
23
- if (data.visualeditor) {
24
- // Testing if article has been deleted between fetching list and downloading content.
25
- if (data.visualeditor.oldid === 0) {
26
- logger.error(DELETED_ARTICLE_ERROR);
27
- throw new DownloadError(DELETED_ARTICLE_ERROR, null, null, null, DELETED_ARTICLE_ERROR);
28
- }
29
- html = isMainPage(articleId) ? data.visualeditor.content : super.injectH1TitleToHtml(data.visualeditor.content, articleDetail);
30
- strippedTitle = getStrippedTitleFromHtml(html);
31
- displayTitle = strippedTitle || articleId.replace('_', ' ');
32
- return { html, displayTitle };
33
- }
34
- else if (data.contentmodel === 'wikitext' || (data.html && data.html.body)) {
35
- html = data.html.body;
36
- strippedTitle = getStrippedTitleFromHtml(html);
37
- displayTitle = strippedTitle || articleId.replace('_', ' ');
38
- return { html, displayTitle };
39
- }
40
- else if (data.error) {
41
- logger.error(`Error in retrieved article [${articleId}]:`, data.error);
42
- return '';
43
- }
44
- logger.error('Unable to parse data from visual editor');
45
- return '';
46
- }
47
- async render(renderOpts) {
48
- const result = [];
49
- const { articleId, articleDetail, moduleDependencies, dump } = renderOpts;
50
- const { html, displayTitle } = await this.retrieveHtml(renderOpts);
51
- if (html) {
52
- const { finalHTML, mediaDependencies, videoDependencies, imageDependencies, subtitles } = await super.processHtml({
53
- html,
54
- dump,
55
- articleId,
56
- articleDetail,
57
- moduleDependencies,
58
- callback: super.templateDesktopArticle.bind(this),
59
- });
60
- result.push({
61
- articleId,
62
- displayTitle,
63
- html: finalHTML,
64
- mediaDependencies,
65
- videoDependencies,
66
- imageDependencies,
67
- moduleDependencies,
68
- staticFiles: this.staticFilesListDesktop,
69
- subtitles,
70
- });
71
- return result;
72
- }
73
- return '';
74
- }
75
- }
76
- //# sourceMappingURL=visual-editor.renderer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"visual-editor.renderer.js","sourceRoot":"","sources":["../../src/renderers/visual-editor.renderer.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import { RestApiRenderer } from './rest-api.renderer.js';
2
- export declare class WikimediaDesktopRenderer extends RestApiRenderer {
3
- constructor();
4
- }
@@ -1,7 +0,0 @@
1
- import { RestApiRenderer } from './rest-api.renderer.js';
2
- export class WikimediaDesktopRenderer extends RestApiRenderer {
3
- constructor() {
4
- super();
5
- }
6
- }
7
- //# sourceMappingURL=wikimedia-desktop.renderer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wikimedia-desktop.renderer.js","sourceRoot":"","sources":["../../src/renderers/wikimedia-desktop.renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAExD,MAAM,OAAO,wBAAyB,SAAQ,eAAe;IAC3D;QACE,KAAK,EAAE,CAAA;IACT,CAAC;CACF"}
@@ -1,19 +0,0 @@
1
- import { MobileRenderer } from './abstractMobile.render.js';
2
- import { DownloadOpts, DownloadRes, RenderOpts } from './abstract.renderer.js';
3
- export declare class WikimediaMobileRenderer extends MobileRenderer {
4
- constructor();
5
- private getStrippedTitle;
6
- download(downloadOpts: DownloadOpts): Promise<DownloadRes>;
7
- render(renderOpts: RenderOpts): Promise<any>;
8
- private pipeMobileTransformations;
9
- private removeEditContainer;
10
- private calculateImageDimensions;
11
- private convertLazyLoadToImagesImpl;
12
- private removeHiddenClass;
13
- private unhideSectionsImpl;
14
- private restoreLinkDefaults;
15
- readonly INTERNAL: {
16
- convertLazyLoadToImages: any;
17
- unhideSections: any;
18
- };
19
- }