honkit 3.6.21

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 (278) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +10 -0
  3. package/bin/honkit.js +8 -0
  4. package/lib/BuildGenerator.js +2 -0
  5. package/lib/__tests__/__fixtures__/honkit/book.js +9 -0
  6. package/lib/__tests__/githon.js +11 -0
  7. package/lib/__tests__/init.js +19 -0
  8. package/lib/__tests__/snapshot-honkit.js +45 -0
  9. package/lib/api/decodeConfig.js +17 -0
  10. package/lib/api/decodeGlobal.js +21 -0
  11. package/lib/api/decodePage.js +41 -0
  12. package/lib/api/deprecate.js +113 -0
  13. package/lib/api/encodeConfig.js +30 -0
  14. package/lib/api/encodeGlobal.js +226 -0
  15. package/lib/api/encodeNavigation.js +60 -0
  16. package/lib/api/encodePage.js +37 -0
  17. package/lib/api/encodeProgress.js +58 -0
  18. package/lib/api/encodeSummary.js +52 -0
  19. package/lib/api/index.js +15 -0
  20. package/lib/bin.js +46 -0
  21. package/lib/browser.js +41 -0
  22. package/lib/cli/build.js +36 -0
  23. package/lib/cli/buildEbook.js +63 -0
  24. package/lib/cli/getBook.js +24 -0
  25. package/lib/cli/getOutputFolder.js +19 -0
  26. package/lib/cli/index.js +11 -0
  27. package/lib/cli/init.js +17 -0
  28. package/lib/cli/options.js +38 -0
  29. package/lib/cli/parse.js +65 -0
  30. package/lib/cli/serve.js +184 -0
  31. package/lib/cli/server.js +116 -0
  32. package/lib/cli/watch.js +35 -0
  33. package/lib/constants/__tests__/configSchema.js +41 -0
  34. package/lib/constants/configDefault.js +9 -0
  35. package/lib/constants/configFiles.js +3 -0
  36. package/lib/constants/configSchema.js +235 -0
  37. package/lib/constants/defaultBlocks.js +48 -0
  38. package/lib/constants/defaultFilters.js +18 -0
  39. package/lib/constants/defaultPlugins.js +20 -0
  40. package/lib/constants/extsAsciidoc.js +3 -0
  41. package/lib/constants/extsMarkdown.js +3 -0
  42. package/lib/constants/ignoreFiles.js +3 -0
  43. package/lib/constants/pluginAssetsFolder.js +3 -0
  44. package/lib/constants/pluginHooks.js +3 -0
  45. package/lib/constants/pluginPrefix.js +3 -0
  46. package/lib/constants/pluginResources.js +7 -0
  47. package/lib/constants/templatesFolder.js +3 -0
  48. package/lib/constants/themePrefix.js +3 -0
  49. package/lib/fs/__tests__/mock.js +68 -0
  50. package/lib/fs/mock.js +88 -0
  51. package/lib/fs/node.js +44 -0
  52. package/lib/honkit.js +34 -0
  53. package/lib/index.js +17 -0
  54. package/lib/init.js +79 -0
  55. package/lib/json/encodeBook.js +41 -0
  56. package/lib/json/encodeBookWithPage.js +25 -0
  57. package/lib/json/encodeFile.js +20 -0
  58. package/lib/json/encodeGlossary.js +22 -0
  59. package/lib/json/encodeGlossaryEntry.js +16 -0
  60. package/lib/json/encodeLanguages.js +29 -0
  61. package/lib/json/encodeOutput.js +26 -0
  62. package/lib/json/encodeOutputWithPage.js +26 -0
  63. package/lib/json/encodePage.js +38 -0
  64. package/lib/json/encodeReadme.js +19 -0
  65. package/lib/json/encodeSummary.js +22 -0
  66. package/lib/json/encodeSummaryArticle.js +25 -0
  67. package/lib/json/encodeSummaryPart.js +19 -0
  68. package/lib/json/index.js +27 -0
  69. package/lib/models/__tests__/config.js +164 -0
  70. package/lib/models/__tests__/glossary.js +38 -0
  71. package/lib/models/__tests__/glossaryEntry.js +16 -0
  72. package/lib/models/__tests__/page.js +26 -0
  73. package/lib/models/__tests__/plugin.js +26 -0
  74. package/lib/models/__tests__/pluginDependency.js +71 -0
  75. package/lib/models/__tests__/summary.js +115 -0
  76. package/lib/models/__tests__/summaryArticle.js +62 -0
  77. package/lib/models/__tests__/summaryPart.js +24 -0
  78. package/lib/models/__tests__/templateBlock.js +172 -0
  79. package/lib/models/__tests__/templateEngine.js +49 -0
  80. package/lib/models/book.js +312 -0
  81. package/lib/models/config.js +152 -0
  82. package/lib/models/file.js +83 -0
  83. package/lib/models/fs.js +255 -0
  84. package/lib/models/glossary.js +90 -0
  85. package/lib/models/glossaryEntry.js +34 -0
  86. package/lib/models/hash.js +191 -0
  87. package/lib/models/ignore.js +40 -0
  88. package/lib/models/language.js +22 -0
  89. package/lib/models/languages.js +64 -0
  90. package/lib/models/output.js +109 -0
  91. package/lib/models/page.js +91 -0
  92. package/lib/models/parser.js +102 -0
  93. package/lib/models/plugin.js +139 -0
  94. package/lib/models/pluginDependency.js +192 -0
  95. package/lib/models/readme.js +38 -0
  96. package/lib/models/summary.js +199 -0
  97. package/lib/models/summaryArticle.js +169 -0
  98. package/lib/models/summaryPart.js +53 -0
  99. package/lib/models/templateBlock.js +230 -0
  100. package/lib/models/templateEngine.js +115 -0
  101. package/lib/models/templateOutput.js +36 -0
  102. package/lib/models/templateShortcut.js +65 -0
  103. package/lib/modifiers/config/__tests__/addPlugin.js +30 -0
  104. package/lib/modifiers/config/__tests__/removePlugin.js +29 -0
  105. package/lib/modifiers/config/__tests__/togglePlugin.js +28 -0
  106. package/lib/modifiers/config/addPlugin.js +27 -0
  107. package/lib/modifiers/config/editPlugin.js +13 -0
  108. package/lib/modifiers/config/getPluginConfig.js +22 -0
  109. package/lib/modifiers/config/hasPlugin.js +15 -0
  110. package/lib/modifiers/config/index.js +21 -0
  111. package/lib/modifiers/config/isDefaultPlugin.js +17 -0
  112. package/lib/modifiers/config/removePlugin.js +27 -0
  113. package/lib/modifiers/config/togglePlugin.js +32 -0
  114. package/lib/modifiers/index.js +11 -0
  115. package/lib/modifiers/summary/__tests__/editPartTitle.js +41 -0
  116. package/lib/modifiers/summary/__tests__/insertArticle.js +72 -0
  117. package/lib/modifiers/summary/__tests__/insertPart.js +56 -0
  118. package/lib/modifiers/summary/__tests__/mergeAtLevel.js +45 -0
  119. package/lib/modifiers/summary/__tests__/moveArticle.js +66 -0
  120. package/lib/modifiers/summary/__tests__/moveArticleAfter.js +75 -0
  121. package/lib/modifiers/summary/__tests__/removeArticle.js +54 -0
  122. package/lib/modifiers/summary/editArticleRef.js +20 -0
  123. package/lib/modifiers/summary/editArticleTitle.js +20 -0
  124. package/lib/modifiers/summary/editPartTitle.js +21 -0
  125. package/lib/modifiers/summary/index.js +27 -0
  126. package/lib/modifiers/summary/indexArticleLevels.js +21 -0
  127. package/lib/modifiers/summary/indexLevels.js +18 -0
  128. package/lib/modifiers/summary/indexPartLevels.js +25 -0
  129. package/lib/modifiers/summary/insertArticle.js +47 -0
  130. package/lib/modifiers/summary/insertPart.js +21 -0
  131. package/lib/modifiers/summary/mergeAtLevel.js +68 -0
  132. package/lib/modifiers/summary/moveArticle.js +27 -0
  133. package/lib/modifiers/summary/moveArticleAfter.js +59 -0
  134. package/lib/modifiers/summary/removeArticle.js +36 -0
  135. package/lib/modifiers/summary/removePart.js +18 -0
  136. package/lib/modifiers/summary/unshiftArticle.js +27 -0
  137. package/lib/output/__tests__/ebook.js +17 -0
  138. package/lib/output/__tests__/json.js +43 -0
  139. package/lib/output/__tests__/plugin-hooks.js +57 -0
  140. package/lib/output/__tests__/website.js +121 -0
  141. package/lib/output/callHook.js +51 -0
  142. package/lib/output/callPageHook.js +23 -0
  143. package/lib/output/createTemplateEngine.js +42 -0
  144. package/lib/output/ebook/getConvertOptions.js +69 -0
  145. package/lib/output/ebook/getCoverPath.js +30 -0
  146. package/lib/output/ebook/getPDFTemplate.js +40 -0
  147. package/lib/output/ebook/index.js +16 -0
  148. package/lib/output/ebook/onFinish.js +84 -0
  149. package/lib/output/ebook/onPage.js +23 -0
  150. package/lib/output/ebook/options.js +17 -0
  151. package/lib/output/generateAssets.js +26 -0
  152. package/lib/output/generateBook.js +167 -0
  153. package/lib/output/generatePage.js +90 -0
  154. package/lib/output/generatePages.js +52 -0
  155. package/lib/output/getModifiers.js +63 -0
  156. package/lib/output/helper/fileToOutput.js +30 -0
  157. package/lib/output/helper/fileToURL.js +30 -0
  158. package/lib/output/helper/index.js +3 -0
  159. package/lib/output/helper/resolveFileToURL.js +25 -0
  160. package/lib/output/helper/writeFile.js +26 -0
  161. package/lib/output/index.js +27 -0
  162. package/lib/output/json/index.js +14 -0
  163. package/lib/output/json/onFinish.js +39 -0
  164. package/lib/output/json/onPage.js +37 -0
  165. package/lib/output/json/options.js +11 -0
  166. package/lib/output/modifiers/__tests__/addHeadingId.js +23 -0
  167. package/lib/output/modifiers/__tests__/annotateText.js +39 -0
  168. package/lib/output/modifiers/__tests__/fetchRemoteImages.js +32 -0
  169. package/lib/output/modifiers/__tests__/highlightCode.js +48 -0
  170. package/lib/output/modifiers/__tests__/inlinePng.js +22 -0
  171. package/lib/output/modifiers/__tests__/inlineSvg.js +42 -0
  172. package/lib/output/modifiers/__tests__/resolveImages.js +39 -0
  173. package/lib/output/modifiers/__tests__/resolveLinks.js +81 -0
  174. package/lib/output/modifiers/__tests__/svgToImg.js +29 -0
  175. package/lib/output/modifiers/addHeadingId.js +26 -0
  176. package/lib/output/modifiers/annotateText.js +76 -0
  177. package/lib/output/modifiers/editHTMLElement.js +17 -0
  178. package/lib/output/modifiers/fetchRemoteImages.js +42 -0
  179. package/lib/output/modifiers/highlightCode.js +59 -0
  180. package/lib/output/modifiers/index.js +26 -0
  181. package/lib/output/modifiers/inlineAssets.js +29 -0
  182. package/lib/output/modifiers/inlinePng.js +43 -0
  183. package/lib/output/modifiers/inlineSvg.js +39 -0
  184. package/lib/output/modifiers/modifyHTML.js +27 -0
  185. package/lib/output/modifiers/resolveImages.js +30 -0
  186. package/lib/output/modifiers/resolveLinks.js +46 -0
  187. package/lib/output/modifiers/svgToImg.js +58 -0
  188. package/lib/output/page-cache.js +15 -0
  189. package/lib/output/prepareAssets.js +22 -0
  190. package/lib/output/preparePages.js +25 -0
  191. package/lib/output/preparePlugins.js +36 -0
  192. package/lib/output/testing/createMock.js +39 -0
  193. package/lib/output/testing/generateMock.js +55 -0
  194. package/lib/output/website/__tests__/i18n.js +40 -0
  195. package/lib/output/website/copyPluginAssets.js +92 -0
  196. package/lib/output/website/createTemplateEngine.js +136 -0
  197. package/lib/output/website/index.js +22 -0
  198. package/lib/output/website/listSearchPaths.js +20 -0
  199. package/lib/output/website/onAsset.js +29 -0
  200. package/lib/output/website/onFinish.js +35 -0
  201. package/lib/output/website/onInit.js +19 -0
  202. package/lib/output/website/onPage.js +73 -0
  203. package/lib/output/website/options.js +15 -0
  204. package/lib/output/website/prepareI18n.js +28 -0
  205. package/lib/output/website/prepareResources.js +49 -0
  206. package/lib/output/website/state.js +20 -0
  207. package/lib/parse/__tests__/listAssets.js +63 -0
  208. package/lib/parse/__tests__/parseBook.js +77 -0
  209. package/lib/parse/__tests__/parseGlossary.js +32 -0
  210. package/lib/parse/__tests__/parseIgnore.js +37 -0
  211. package/lib/parse/__tests__/parsePageFromString.js +34 -0
  212. package/lib/parse/__tests__/parseReadme.js +33 -0
  213. package/lib/parse/__tests__/parseSummary.js +30 -0
  214. package/lib/parse/findParsableFile.js +33 -0
  215. package/lib/parse/index.js +31 -0
  216. package/lib/parse/listAssets.js +36 -0
  217. package/lib/parse/lookupStructureFile.js +21 -0
  218. package/lib/parse/parseBook.js +68 -0
  219. package/lib/parse/parseConfig.js +52 -0
  220. package/lib/parse/parseGlossary.js +25 -0
  221. package/lib/parse/parseIgnore.js +43 -0
  222. package/lib/parse/parseLanguages.js +26 -0
  223. package/lib/parse/parsePage.js +21 -0
  224. package/lib/parse/parsePageFromString.js +25 -0
  225. package/lib/parse/parsePagesList.js +80 -0
  226. package/lib/parse/parseReadme.js +26 -0
  227. package/lib/parse/parseStructureFile.js +64 -0
  228. package/lib/parse/parseSummary.js +43 -0
  229. package/lib/parse/validateConfig.js +31 -0
  230. package/lib/parse/walkSummary.js +34 -0
  231. package/lib/parsers.js +60 -0
  232. package/lib/plugins/PluginResolver.js +84 -0
  233. package/lib/plugins/__tests__/findInstalled.js +25 -0
  234. package/lib/plugins/__tests__/listDependencies.js +28 -0
  235. package/lib/plugins/__tests__/sortDependencies.js +28 -0
  236. package/lib/plugins/__tests__/validatePlugin.js +99 -0
  237. package/lib/plugins/findInstalled.js +87 -0
  238. package/lib/plugins/index.js +17 -0
  239. package/lib/plugins/listBlocks.js +19 -0
  240. package/lib/plugins/listDependencies.js +33 -0
  241. package/lib/plugins/listDepsForBook.js +20 -0
  242. package/lib/plugins/listFilters.js +18 -0
  243. package/lib/plugins/listResources.js +44 -0
  244. package/lib/plugins/loadForBook.js +38 -0
  245. package/lib/plugins/loadPlugin.js +89 -0
  246. package/lib/plugins/package-name-util.js +48 -0
  247. package/lib/plugins/sortDependencies.js +30 -0
  248. package/lib/plugins/toNames.js +16 -0
  249. package/lib/plugins/validateConfig.js +60 -0
  250. package/lib/plugins/validatePlugin.js +36 -0
  251. package/lib/templating/__tests__/conrefsLoader.js +93 -0
  252. package/lib/templating/__tests__/postRender.js +52 -0
  253. package/lib/templating/__tests__/replaceShortcuts.js +27 -0
  254. package/lib/templating/conrefsLoader.js +88 -0
  255. package/lib/templating/index.js +19 -0
  256. package/lib/templating/listShortcuts.js +29 -0
  257. package/lib/templating/postRender.js +46 -0
  258. package/lib/templating/render.js +41 -0
  259. package/lib/templating/renderFile.js +39 -0
  260. package/lib/templating/replaceShortcuts.js +36 -0
  261. package/lib/templating/themesLoader.js +98 -0
  262. package/lib/utils/__tests__/git.js +47 -0
  263. package/lib/utils/__tests__/location.js +81 -0
  264. package/lib/utils/__tests__/path.js +19 -0
  265. package/lib/utils/command.js +104 -0
  266. package/lib/utils/error.js +88 -0
  267. package/lib/utils/fs.js +163 -0
  268. package/lib/utils/genKey.js +13 -0
  269. package/lib/utils/git.js +116 -0
  270. package/lib/utils/images.js +22 -0
  271. package/lib/utils/location.js +129 -0
  272. package/lib/utils/logger.js +158 -0
  273. package/lib/utils/mergeDefaults.js +18 -0
  274. package/lib/utils/path.js +62 -0
  275. package/lib/utils/promise.js +142 -0
  276. package/lib/utils/reducedObject.js +31 -0
  277. package/lib/utils/timing.js +90 -0
  278. package/package.json +112 -0
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const encodeBook_1 = __importDefault(require("./encodeBook"));
7
+ const encodePage_1 = __importDefault(require("./encodePage"));
8
+ const encodeFile_1 = __importDefault(require("./encodeFile"));
9
+ /**
10
+ * Return a JSON representation of a book with a specific file
11
+ *
12
+ * @param {Book} output
13
+ * @param {Page} page
14
+ * @return {Object}
15
+ */
16
+ function encodeBookWithPage(book, page) {
17
+ const file = page.getFile();
18
+ const result = encodeBook_1.default(book);
19
+ // @ts-expect-error ts-migrate(2339) FIXME: Property 'page' does not exist on type '{ summary:... Remove this comment to see the full error message
20
+ result.page = encodePage_1.default(page, book.getSummary());
21
+ // @ts-expect-error ts-migrate(2339) FIXME: Property 'file' does not exist on type '{ summary:... Remove this comment to see the full error message
22
+ result.file = encodeFile_1.default(file);
23
+ return result;
24
+ }
25
+ exports.default = encodeBookWithPage;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ Return a JSON representation of a file
5
+
6
+ @param {File} file
7
+ @return {Object}
8
+ */
9
+ function encodeFileToJson(file) {
10
+ const filePath = file.getPath();
11
+ if (!filePath) {
12
+ return undefined;
13
+ }
14
+ return {
15
+ path: filePath,
16
+ mtime: file.getMTime(),
17
+ type: file.getType(),
18
+ };
19
+ }
20
+ exports.default = encodeFileToJson;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const encodeFile_1 = __importDefault(require("./encodeFile"));
7
+ const encodeGlossaryEntry_1 = __importDefault(require("./encodeGlossaryEntry"));
8
+ /**
9
+ Encode a glossary to JSON
10
+
11
+ @param {Glossary}
12
+ @return {Object}
13
+ */
14
+ function encodeGlossary(glossary) {
15
+ const file = glossary.getFile();
16
+ const entries = glossary.getEntries();
17
+ return {
18
+ file: encodeFile_1.default(file),
19
+ entries: entries.map(encodeGlossaryEntry_1.default).toJS(),
20
+ };
21
+ }
22
+ exports.default = encodeGlossary;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ /**
3
+ Encode a SummaryArticle to JSON
4
+
5
+ @param {GlossaryEntry}
6
+ @return {Object}
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ function encodeGlossaryEntry(entry) {
10
+ return {
11
+ id: entry.getID(),
12
+ name: entry.getName(),
13
+ description: entry.getDescription(),
14
+ };
15
+ }
16
+ exports.default = encodeGlossaryEntry;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const encodeFile_1 = __importDefault(require("./encodeFile"));
7
+ /**
8
+ Encode a languages listing to JSON
9
+
10
+ @param {Languages}
11
+ @return {Object}
12
+ */
13
+ function encodeLanguages(languages) {
14
+ const file = languages.getFile();
15
+ const list = languages.getList();
16
+ return {
17
+ file: encodeFile_1.default(file),
18
+ list: list
19
+ .valueSeq()
20
+ .map((lang) => {
21
+ return {
22
+ id: lang.getID(),
23
+ title: lang.getTitle(),
24
+ };
25
+ })
26
+ .toJS(),
27
+ };
28
+ }
29
+ exports.default = encodeLanguages;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const encodeBook_1 = __importDefault(require("./encodeBook"));
7
+ /**
8
+ * Encode an output to JSON
9
+ *
10
+ * @param {Output}
11
+ * @return {Object}
12
+ */
13
+ function encodeOutputToJson(output) {
14
+ const book = output.getBook();
15
+ const generator = output.getGenerator();
16
+ const options = output.getOptions();
17
+ const result = encodeBook_1.default(book);
18
+ // @ts-expect-error ts-migrate(2339) FIXME: Property 'output' does not exist on type '{ summar... Remove this comment to see the full error message
19
+ result.output = {
20
+ name: generator,
21
+ };
22
+ // @ts-expect-error ts-migrate(2339) FIXME: Property 'options' does not exist on type '{ summa... Remove this comment to see the full error message
23
+ result.options = options.toJS();
24
+ return result;
25
+ }
26
+ exports.default = encodeOutputToJson;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const encodeOutput_1 = __importDefault(require("./encodeOutput"));
7
+ const encodePage_1 = __importDefault(require("./encodePage"));
8
+ const encodeFile_1 = __importDefault(require("./encodeFile"));
9
+ /**
10
+ * Return a JSON representation of a book with a specific file
11
+ *
12
+ * @param {Book} output
13
+ * @param {Page} page
14
+ * @return {Object}
15
+ */
16
+ function encodeOutputWithPage(output, page) {
17
+ const file = page.getFile();
18
+ const book = output.getBook();
19
+ const result = encodeOutput_1.default(output);
20
+ // @ts-expect-error ts-migrate(2339) FIXME: Property 'page' does not exist on type '{ summary:... Remove this comment to see the full error message
21
+ result.page = encodePage_1.default(page, book.getSummary());
22
+ // @ts-expect-error ts-migrate(2339) FIXME: Property 'file' does not exist on type '{ summary:... Remove this comment to see the full error message
23
+ result.file = encodeFile_1.default(file);
24
+ return result;
25
+ }
26
+ exports.default = encodeOutputWithPage;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const encodeSummaryArticle_1 = __importDefault(require("./encodeSummaryArticle"));
7
+ /**
8
+ Return a JSON representation of a page
9
+
10
+ @param {Page} page
11
+ @param {Summary} summary
12
+ @return {Object}
13
+ */
14
+ function encodePage(page, summary) {
15
+ const file = page.getFile();
16
+ const attributes = page.getAttributes();
17
+ const article = summary.getByPath(file.getPath());
18
+ const result = attributes.toJS();
19
+ if (article) {
20
+ result.title = article.getTitle();
21
+ result.level = article.getLevel();
22
+ result.depth = article.getDepth();
23
+ const nextArticle = summary.getNextArticle(article);
24
+ if (nextArticle) {
25
+ // @ts-expect-error ts-migrate(2554) FIXME: Expected 2 arguments, but got 1.
26
+ result.next = encodeSummaryArticle_1.default(nextArticle);
27
+ }
28
+ const prevArticle = summary.getPrevArticle(article);
29
+ if (prevArticle) {
30
+ // @ts-expect-error ts-migrate(2554) FIXME: Expected 2 arguments, but got 1.
31
+ result.previous = encodeSummaryArticle_1.default(prevArticle);
32
+ }
33
+ }
34
+ result.content = page.getContent();
35
+ result.dir = page.getDir();
36
+ return result;
37
+ }
38
+ exports.default = encodePage;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const encodeFile_1 = __importDefault(require("./encodeFile"));
7
+ /**
8
+ Encode a readme to JSON
9
+
10
+ @param {Readme}
11
+ @return {Object}
12
+ */
13
+ function encodeReadme(readme) {
14
+ const file = readme.getFile();
15
+ return {
16
+ file: encodeFile_1.default(file),
17
+ };
18
+ }
19
+ exports.default = encodeReadme;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const encodeFile_1 = __importDefault(require("./encodeFile"));
7
+ const encodeSummaryPart_1 = __importDefault(require("./encodeSummaryPart"));
8
+ /**
9
+ Encode a summary to JSON
10
+
11
+ @param {Summary}
12
+ @return {Object}
13
+ */
14
+ function encodeSummary(summary) {
15
+ const file = summary.getFile();
16
+ const parts = summary.getParts();
17
+ return {
18
+ file: encodeFile_1.default(file),
19
+ parts: parts.map(encodeSummaryPart_1.default).toJS(),
20
+ };
21
+ }
22
+ exports.default = encodeSummary;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ /**
3
+ Encode a SummaryArticle to JSON
4
+
5
+ @param {SummaryArticle}
6
+ @return {Object}
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ function encodeSummaryArticle(article, recursive) {
10
+ let articles = undefined;
11
+ if (recursive !== false) {
12
+ articles = article.getArticles().map(encodeSummaryArticle).toJS();
13
+ }
14
+ return {
15
+ title: article.getTitle(),
16
+ level: article.getLevel(),
17
+ depth: article.getDepth(),
18
+ anchor: article.getAnchor(),
19
+ url: article.getUrl(),
20
+ path: article.getPath(),
21
+ ref: article.getRef(),
22
+ articles: articles,
23
+ };
24
+ }
25
+ exports.default = encodeSummaryArticle;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const encodeSummaryArticle_1 = __importDefault(require("./encodeSummaryArticle"));
7
+ /**
8
+ Encode a SummaryPart to JSON
9
+
10
+ @param {SummaryPart}
11
+ @return {Object}
12
+ */
13
+ function encodeSummaryPart(part) {
14
+ return {
15
+ title: part.getTitle(),
16
+ articles: part.getArticles().map(encodeSummaryArticle_1.default).toJS(),
17
+ };
18
+ }
19
+ exports.default = encodeSummaryPart;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const encodeOutput_1 = __importDefault(require("./encodeOutput"));
7
+ const encodeBookWithPage_1 = __importDefault(require("./encodeBookWithPage"));
8
+ const encodeOutputWithPage_1 = __importDefault(require("./encodeOutputWithPage"));
9
+ const encodeBook_1 = __importDefault(require("./encodeBook"));
10
+ const encodeFile_1 = __importDefault(require("./encodeFile"));
11
+ const encodePage_1 = __importDefault(require("./encodePage"));
12
+ const encodeSummary_1 = __importDefault(require("./encodeSummary"));
13
+ const encodeSummaryArticle_1 = __importDefault(require("./encodeSummaryArticle"));
14
+ const encodeReadme_1 = __importDefault(require("./encodeReadme"));
15
+ const encodeLanguages_1 = __importDefault(require("./encodeLanguages"));
16
+ exports.default = {
17
+ encodeOutput: encodeOutput_1.default,
18
+ encodeBookWithPage: encodeBookWithPage_1.default,
19
+ encodeOutputWithPage: encodeOutputWithPage_1.default,
20
+ encodeBook: encodeBook_1.default,
21
+ encodeFile: encodeFile_1.default,
22
+ encodePage: encodePage_1.default,
23
+ encodeSummary: encodeSummary_1.default,
24
+ encodeSummaryArticle: encodeSummaryArticle_1.default,
25
+ encodeReadme: encodeReadme_1.default,
26
+ encodeLanguages: encodeLanguages_1.default,
27
+ };
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const immutable_1 = __importDefault(require("immutable"));
7
+ const config_1 = __importDefault(require("../config"));
8
+ describe("Config", () => {
9
+ const config = config_1.default.createWithValues({
10
+ hello: {
11
+ world: 1,
12
+ test: "Hello",
13
+ isFalse: false,
14
+ },
15
+ });
16
+ describe("getValue", () => {
17
+ test("must return value as immutable", () => {
18
+ const value = config.getValue("hello");
19
+ expect(immutable_1.default.Map.isMap(value)).toBeTruthy();
20
+ });
21
+ test("must return deep value", () => {
22
+ const value = config.getValue("hello.world");
23
+ expect(value).toBe(1);
24
+ });
25
+ test("must return default value if non existant", () => {
26
+ const value = config.getValue("hello.nonExistant", "defaultValue");
27
+ expect(value).toBe("defaultValue");
28
+ });
29
+ test("must not return default value for falsy values", () => {
30
+ const value = config.getValue("hello.isFalse", "defaultValue");
31
+ expect(value).toBe(false);
32
+ });
33
+ });
34
+ describe("setValue", () => {
35
+ test("must set value as immutable", () => {
36
+ const testConfig = config.setValue("hello", {
37
+ cool: 1,
38
+ });
39
+ const value = testConfig.getValue("hello");
40
+ expect(immutable_1.default.Map.isMap(value)).toBeTruthy();
41
+ expect(value.size).toBe(1);
42
+ expect(value.has("cool")).toBeTruthy();
43
+ });
44
+ test("must set deep value", () => {
45
+ const testConfig = config.setValue("hello.world", 2);
46
+ const hello = testConfig.getValue("hello");
47
+ const world = testConfig.getValue("hello.world");
48
+ expect(immutable_1.default.Map.isMap(hello)).toBeTruthy();
49
+ expect(hello.size).toBe(3);
50
+ expect(world).toBe(2);
51
+ });
52
+ });
53
+ describe("toReducedVersion", () => {
54
+ test("must only return diffs for simple values", () => {
55
+ const _config = config_1.default.createWithValues({
56
+ gitbook: "3.0.0",
57
+ });
58
+ const reducedVersion = _config.toReducedVersion();
59
+ expect(reducedVersion.toJS()).toEqual({
60
+ gitbook: "3.0.0",
61
+ });
62
+ });
63
+ test("must only return diffs for deep values", () => {
64
+ const _config = config_1.default.createWithValues({
65
+ structure: {
66
+ readme: "intro.md",
67
+ },
68
+ });
69
+ const reducedVersion = _config.toReducedVersion();
70
+ expect(reducedVersion.toJS()).toEqual({
71
+ structure: {
72
+ readme: "intro.md",
73
+ },
74
+ });
75
+ });
76
+ });
77
+ describe("getPluginDependencies", () => {
78
+ const config = config_1.default.createWithValues({
79
+ plugins: [
80
+ "example",
81
+ "honkit-plugin-example",
82
+ "@example/example",
83
+ "@example/honkit-plugin-example",
84
+ "@honkit/honkit-plugin-example",
85
+ "-no-use",
86
+ "-honkit-plugin-no-use",
87
+ "-@honkit/honkit-plugin-no-use",
88
+ // GitBook logic - deprecated
89
+ "example-v@1.0.0",
90
+ "gitbook-plugin-example-v@1.0.0",
91
+ "example@git+ssh://samy@github.com/GitbookIO/plugin-ga.git",
92
+ ],
93
+ });
94
+ const dependencies = config.getPluginDependencies();
95
+ expect(dependencies.toJS()).toEqual([
96
+ {
97
+ enabled: true,
98
+ name: "example",
99
+ path: "",
100
+ version: "*",
101
+ },
102
+ {
103
+ enabled: true,
104
+ name: "honkit-plugin-example",
105
+ path: "",
106
+ version: "*",
107
+ },
108
+ {
109
+ enabled: true,
110
+ name: "@example/example",
111
+ path: "",
112
+ version: "*",
113
+ },
114
+ {
115
+ enabled: true,
116
+ name: "@example/honkit-plugin-example",
117
+ path: "",
118
+ version: "*",
119
+ },
120
+ {
121
+ enabled: true,
122
+ name: "@honkit/honkit-plugin-example",
123
+ path: "",
124
+ version: "*",
125
+ },
126
+ {
127
+ enabled: false,
128
+ name: "no-use",
129
+ path: "",
130
+ version: "*",
131
+ },
132
+ {
133
+ enabled: false,
134
+ name: "honkit-plugin-no-use",
135
+ path: "",
136
+ version: "*",
137
+ },
138
+ {
139
+ enabled: false,
140
+ name: "@honkit/honkit-plugin-no-use",
141
+ path: "",
142
+ version: "*",
143
+ },
144
+ {
145
+ enabled: true,
146
+ name: "example-v",
147
+ path: "",
148
+ version: "1.0.0",
149
+ },
150
+ {
151
+ enabled: true,
152
+ name: "gitbook-plugin-example-v",
153
+ path: "",
154
+ version: "1.0.0",
155
+ },
156
+ {
157
+ enabled: true,
158
+ name: "example",
159
+ path: "",
160
+ version: "git+ssh://samy@github.com/GitbookIO/plugin-ga.git",
161
+ },
162
+ ]);
163
+ });
164
+ });