@wrikka/create-docs 0.1.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 (380) hide show
  1. package/README.md +137 -0
  2. package/bin/cli.js +408 -0
  3. package/dist/index.cjs +20 -0
  4. package/dist/index.d.cts +475 -0
  5. package/dist/index.d.ts +475 -0
  6. package/dist/index.js +20 -0
  7. package/docs/_dir.yml +2 -0
  8. package/docs/config.md +75 -0
  9. package/docs/data-sources.md +88 -0
  10. package/docs/deploy.md +38 -0
  11. package/docs/features.md +51 -0
  12. package/docs/getting-started.md +42 -0
  13. package/docs/index.md +34 -0
  14. package/docs/markdown.md +154 -0
  15. package/docs/theming.md +53 -0
  16. package/package.json +142 -0
  17. package/scripts/generate-docs-index.ts +111 -0
  18. package/scripts/github-pull.ts +124 -0
  19. package/src/adapters/config/index.ts +1 -0
  20. package/src/adapters/config/node-config-loader.ts +36 -0
  21. package/src/adapters/fs/fs-docs-loader.ts +31 -0
  22. package/src/adapters/fs/index.ts +12 -0
  23. package/src/adapters/fs/memory-fs.ts +60 -0
  24. package/src/adapters/fs/node-fs.ts +116 -0
  25. package/src/adapters/git/index.ts +164 -0
  26. package/src/adapters/github/github-pull.ts +340 -0
  27. package/src/adapters/index.ts +6 -0
  28. package/src/adapters/velite.ts +112 -0
  29. package/src/adapters/vite/docs-watcher.ts +36 -0
  30. package/src/adapters/vite/index.ts +2 -0
  31. package/src/adapters/vite/polling-watcher.ts +89 -0
  32. package/src/code-block-enhancements/index.ts +3 -0
  33. package/src/config/index.ts +15 -0
  34. package/src/content/index.ts +11 -0
  35. package/src/content-validation/index.ts +5 -0
  36. package/src/index.ts +174 -0
  37. package/src/live-editor/index.ts +7 -0
  38. package/src/modules/analytics/application/plausible-adapter.ts +103 -0
  39. package/src/modules/analytics/application/umami-adapter.ts +109 -0
  40. package/src/modules/analytics/domain/events/index.ts +37 -0
  41. package/src/modules/analytics/domain/models/index.ts +35 -0
  42. package/src/modules/analytics/domain/operations/analytics-operations.ts +67 -0
  43. package/src/modules/analytics/domain/validators/index.ts +50 -0
  44. package/src/modules/analytics/index.ts +9 -0
  45. package/src/modules/analytics/ports/analytics-port.ts +17 -0
  46. package/src/modules/analytics/types/analytics.ts +16 -0
  47. package/src/modules/api-docs/application/type-docs-adapter.ts +34 -0
  48. package/src/modules/api-docs/domain/events/index.ts +42 -0
  49. package/src/modules/api-docs/domain/models/index.ts +40 -0
  50. package/src/modules/api-docs/domain/operations/api-docs-operations.ts +59 -0
  51. package/src/modules/api-docs/domain/validators/index.ts +56 -0
  52. package/src/modules/api-docs/index.ts +8 -0
  53. package/src/modules/api-docs/ports/api-docs-port.ts +21 -0
  54. package/src/modules/api-docs/types/api-docs.ts +15 -0
  55. package/src/modules/api-reference/openapi.ts +166 -0
  56. package/src/modules/api-reference/orpc.ts +94 -0
  57. package/src/modules/code-block-enhancements/application/usecases/index.ts +39 -0
  58. package/src/modules/code-block-enhancements/domain/code-operations.ts +72 -0
  59. package/src/modules/code-block-enhancements/domain/events/index.ts +58 -0
  60. package/src/modules/code-block-enhancements/domain/index.ts +11 -0
  61. package/src/modules/code-block-enhancements/domain/models/index.ts +36 -0
  62. package/src/modules/code-block-enhancements/domain/validators/index.ts +50 -0
  63. package/src/modules/code-block-enhancements/index.ts +10 -0
  64. package/src/modules/code-block-enhancements/ports/index.ts +18 -0
  65. package/src/modules/code-block-enhancements/types/index.ts +37 -0
  66. package/src/modules/code-execution/application/sandbox-adapter.ts +44 -0
  67. package/src/modules/code-execution/domain/events/index.ts +58 -0
  68. package/src/modules/code-execution/domain/models/index.ts +33 -0
  69. package/src/modules/code-execution/domain/operations/execution-operations.ts +60 -0
  70. package/src/modules/code-execution/domain/validators/index.ts +50 -0
  71. package/src/modules/code-execution/index.ts +8 -0
  72. package/src/modules/code-execution/ports/execution-port.ts +15 -0
  73. package/src/modules/code-execution/types/execution.ts +15 -0
  74. package/src/modules/comments/application/giscus-adapter.ts +55 -0
  75. package/src/modules/comments/domain/events/index.ts +55 -0
  76. package/src/modules/comments/domain/models/index.ts +30 -0
  77. package/src/modules/comments/domain/operations/comment-operations.ts +46 -0
  78. package/src/modules/comments/domain/validators/index.ts +50 -0
  79. package/src/modules/comments/index.ts +8 -0
  80. package/src/modules/comments/ports/comment-port.ts +18 -0
  81. package/src/modules/comments/types/comments.ts +19 -0
  82. package/src/modules/config/application/usecases/index.ts +1 -0
  83. package/src/modules/config/application/usecases/loadConfig.ts +38 -0
  84. package/src/modules/config/application/workflows/index.ts +1 -0
  85. package/src/modules/config/application/workflows/validateConfig.ts +14 -0
  86. package/src/modules/config/domain/events/index.ts +50 -0
  87. package/src/modules/config/domain/models/index.ts +9 -0
  88. package/src/modules/config/domain/operations/defaults.ts +74 -0
  89. package/src/modules/config/domain/operations/index.ts +2 -0
  90. package/src/modules/config/domain/operations/resolve.ts +40 -0
  91. package/src/modules/config/domain/validators/index.ts +152 -0
  92. package/src/modules/config/index.ts +23 -0
  93. package/src/modules/config/ports/index.ts +15 -0
  94. package/src/modules/config/types/index.ts +113 -0
  95. package/src/modules/config/types/public.ts +19 -0
  96. package/src/modules/content/application/cache/index.ts +6 -0
  97. package/src/modules/content/application/cache/parse-cache.ts +6 -0
  98. package/src/modules/content/application/cache/parseCache.ts +56 -0
  99. package/src/modules/content/application/usecases/index.ts +2 -0
  100. package/src/modules/content/application/usecases/load-doc-page.ts +1 -0
  101. package/src/modules/content/application/usecases/loadDocPage.ts +111 -0
  102. package/src/modules/content/application/usecases/scanDocsDir.ts +105 -0
  103. package/src/modules/content/application/workflows/index.ts +1 -0
  104. package/src/modules/content/application/workflows/processDocs.ts +51 -0
  105. package/src/modules/content/domain/events/index.ts +61 -0
  106. package/src/modules/content/domain/models/index.ts +13 -0
  107. package/src/modules/content/domain/operations/build-page.ts +146 -0
  108. package/src/modules/content/domain/operations/buildPage.ts +93 -0
  109. package/src/modules/content/domain/operations/index.ts +17 -0
  110. package/src/modules/content/domain/operations/parse.ts +241 -0
  111. package/src/modules/content/domain/validators/frontmatter.ts +82 -0
  112. package/src/modules/content/domain/validators/index.ts +6 -0
  113. package/src/modules/content/index.ts +27 -0
  114. package/src/modules/content/ports/index.ts +45 -0
  115. package/src/modules/content/ports/velite.ts +134 -0
  116. package/src/modules/content/types/index.ts +76 -0
  117. package/src/modules/content/types/public.ts +1 -0
  118. package/src/modules/content-linting/application/builtin-linting-adapter.ts +82 -0
  119. package/src/modules/content-linting/domain/events/index.ts +58 -0
  120. package/src/modules/content-linting/domain/models/index.ts +46 -0
  121. package/src/modules/content-linting/domain/operations/linting-operations.ts +82 -0
  122. package/src/modules/content-linting/domain/validators/index.ts +50 -0
  123. package/src/modules/content-linting/index.ts +8 -0
  124. package/src/modules/content-linting/ports/linting-port.ts +21 -0
  125. package/src/modules/content-linting/types/linting.ts +18 -0
  126. package/src/modules/content-validation/application/usecases/index.ts +18 -0
  127. package/src/modules/content-validation/domain/events/index.ts +7 -0
  128. package/src/modules/content-validation/domain/index.ts +16 -0
  129. package/src/modules/content-validation/domain/models/index.ts +33 -0
  130. package/src/modules/content-validation/domain/operations/index.ts +157 -0
  131. package/src/modules/content-validation/domain/types/index.ts +17 -0
  132. package/src/modules/content-validation/domain/validators/index.ts +8 -0
  133. package/src/modules/content-validation/index.ts +9 -0
  134. package/src/modules/content-validation/ports/index.ts +15 -0
  135. package/src/modules/content-validation/types/index.ts +5 -0
  136. package/src/modules/export/application/puppeteer-export-adapter.ts +63 -0
  137. package/src/modules/export/domain/events/index.ts +55 -0
  138. package/src/modules/export/domain/models/index.ts +38 -0
  139. package/src/modules/export/domain/operations/export-operations.ts +56 -0
  140. package/src/modules/export/domain/validators/index.ts +52 -0
  141. package/src/modules/export/index.ts +8 -0
  142. package/src/modules/export/ports/export-port.ts +15 -0
  143. package/src/modules/export/types/export.ts +15 -0
  144. package/src/modules/external-search/application/algolia-adapter.ts +182 -0
  145. package/src/modules/external-search/application/meilisearch-adapter.ts +161 -0
  146. package/src/modules/external-search/domain/events/index.ts +42 -0
  147. package/src/modules/external-search/domain/models/index.ts +42 -0
  148. package/src/modules/external-search/domain/operations/search-operations.ts +53 -0
  149. package/src/modules/external-search/domain/validators/index.ts +55 -0
  150. package/src/modules/external-search/index.ts +9 -0
  151. package/src/modules/external-search/ports/external-search-port.ts +23 -0
  152. package/src/modules/external-search/types/search.ts +19 -0
  153. package/src/modules/git-history/application/simple-git-adapter.ts +46 -0
  154. package/src/modules/git-history/domain/events/index.ts +34 -0
  155. package/src/modules/git-history/domain/models/index.ts +25 -0
  156. package/src/modules/git-history/domain/operations/git-history-operations.ts +56 -0
  157. package/src/modules/git-history/domain/validators/index.ts +52 -0
  158. package/src/modules/git-history/index.ts +8 -0
  159. package/src/modules/git-history/ports/git-history-port.ts +21 -0
  160. package/src/modules/git-history/types/git-history.ts +15 -0
  161. package/src/modules/i18n/application/fs-locale-loader.ts +39 -0
  162. package/src/modules/i18n/domain/events/index.ts +34 -0
  163. package/src/modules/i18n/domain/models/index.ts +34 -0
  164. package/src/modules/i18n/domain/operations/locale-operations.ts +74 -0
  165. package/src/modules/i18n/domain/validators/index.ts +52 -0
  166. package/src/modules/i18n/index.ts +8 -0
  167. package/src/modules/i18n/ports/locale-loader-port.ts +18 -0
  168. package/src/modules/i18n/types/locale.ts +17 -0
  169. package/src/modules/image-optimization/application/sharp-adapter.ts +58 -0
  170. package/src/modules/image-optimization/domain/events/index.ts +39 -0
  171. package/src/modules/image-optimization/domain/models/index.ts +27 -0
  172. package/src/modules/image-optimization/domain/operations/image-operations.ts +65 -0
  173. package/src/modules/image-optimization/domain/validators/index.ts +52 -0
  174. package/src/modules/image-optimization/index.ts +8 -0
  175. package/src/modules/image-optimization/ports/image-optimizer-port.ts +15 -0
  176. package/src/modules/image-optimization/types/image.ts +17 -0
  177. package/src/modules/live-editor/application/usecases/index.ts +60 -0
  178. package/src/modules/live-editor/domain/events/index.ts +37 -0
  179. package/src/modules/live-editor/domain/gitOperations.ts +110 -0
  180. package/src/modules/live-editor/domain/index.ts +15 -0
  181. package/src/modules/live-editor/domain/models/index.ts +21 -0
  182. package/src/modules/live-editor/domain/validators/index.ts +55 -0
  183. package/src/modules/live-editor/index.ts +14 -0
  184. package/src/modules/live-editor/ports/index.ts +49 -0
  185. package/src/modules/live-editor/types/index.ts +80 -0
  186. package/src/modules/live-preview/application/vite-preview-adapter.ts +20 -0
  187. package/src/modules/live-preview/domain/operations/preview-operations.ts +56 -0
  188. package/src/modules/live-preview/index.ts +8 -0
  189. package/src/modules/live-preview/ports/preview-port.ts +20 -0
  190. package/src/modules/live-preview/types/preview.ts +16 -0
  191. package/src/modules/mdx/application/mdx-js-adapter.ts +38 -0
  192. package/src/modules/mdx/domain/operations/parse-mdx.ts +43 -0
  193. package/src/modules/mdx/index.ts +8 -0
  194. package/src/modules/mdx/ports/mdx-parser-port.ts +15 -0
  195. package/src/modules/mdx/types/mdx.ts +14 -0
  196. package/src/modules/navigation/application/usecases/buildNav.ts +15 -0
  197. package/src/modules/navigation/application/usecases/buildSidebar.ts +45 -0
  198. package/src/modules/navigation/application/usecases/index.ts +2 -0
  199. package/src/modules/navigation/domain/events/index.ts +30 -0
  200. package/src/modules/navigation/domain/models/index.ts +7 -0
  201. package/src/modules/navigation/domain/operations/group.ts +79 -0
  202. package/src/modules/navigation/domain/operations/index.ts +10 -0
  203. package/src/modules/navigation/domain/operations/sort.ts +27 -0
  204. package/src/modules/navigation/domain/shared/utils/array.ts +39 -0
  205. package/src/modules/navigation/domain/validators/index.ts +88 -0
  206. package/src/modules/navigation/index.ts +15 -0
  207. package/src/modules/navigation/ports/index.ts +9 -0
  208. package/src/modules/navigation/types/index.ts +38 -0
  209. package/src/modules/navigation/types/public.ts +9 -0
  210. package/src/modules/openapi/application/swagger-parser-adapter.ts +178 -0
  211. package/src/modules/openapi/domain/operations/parse-openapi.ts +46 -0
  212. package/src/modules/openapi/index.ts +8 -0
  213. package/src/modules/openapi/ports/openapi-parser-port.ts +15 -0
  214. package/src/modules/openapi/types/openapi.ts +37 -0
  215. package/src/modules/plugin/application/usecases/build-virtual-modules.ts +53 -0
  216. package/src/modules/plugin/application/usecases/index.ts +1 -0
  217. package/src/modules/plugin/application/workflows/build-docs.ts +79 -0
  218. package/src/modules/plugin/application/workflows/index.ts +1 -0
  219. package/src/modules/plugin/domain/events/index.ts +62 -0
  220. package/src/modules/plugin/domain/models/index.ts +1 -0
  221. package/src/modules/plugin/domain/operations/build-virtual.ts +76 -0
  222. package/src/modules/plugin/domain/operations/index.ts +11 -0
  223. package/src/modules/plugin/domain/validators/index.ts +30 -0
  224. package/src/modules/plugin/index.ts +14 -0
  225. package/src/modules/plugin/ports/index.ts +21 -0
  226. package/src/modules/plugin/types/index.ts +27 -0
  227. package/src/modules/plugin/types/public.ts +1 -0
  228. package/src/modules/search/application/usecases/index.ts +1 -0
  229. package/src/modules/search/application/usecases/indexPages.ts +15 -0
  230. package/src/modules/search/domain/events/index.ts +32 -0
  231. package/src/modules/search/domain/models/index.ts +1 -0
  232. package/src/modules/search/domain/operations/build-index.ts +6 -0
  233. package/src/modules/search/domain/operations/buildIndex.ts +70 -0
  234. package/src/modules/search/domain/operations/index.ts +7 -0
  235. package/src/modules/search/domain/operations/query.ts +186 -0
  236. package/src/modules/search/domain/validators/index.ts +32 -0
  237. package/src/modules/search/index.ts +9 -0
  238. package/src/modules/search/types/index.ts +22 -0
  239. package/src/modules/search/types/public.ts +1 -0
  240. package/src/modules/search-analytics/application/local-storage-adapter.ts +68 -0
  241. package/src/modules/search-analytics/domain/operations/search-analytics-operations.ts +74 -0
  242. package/src/modules/search-analytics/index.ts +8 -0
  243. package/src/modules/search-analytics/ports/search-analytics-port.ts +20 -0
  244. package/src/modules/search-analytics/types/search-analytics.ts +16 -0
  245. package/src/modules/search-highlighting/application/dom-highlighting-adapter.ts +36 -0
  246. package/src/modules/search-highlighting/domain/operations/highlighting-operations.ts +72 -0
  247. package/src/modules/search-highlighting/index.ts +8 -0
  248. package/src/modules/search-highlighting/ports/highlighting-port.ts +14 -0
  249. package/src/modules/search-highlighting/types/highlighting.ts +15 -0
  250. package/src/modules/seo-optimization/application/usecases/index.ts +18 -0
  251. package/src/modules/seo-optimization/domain/index.ts +12 -0
  252. package/src/modules/seo-optimization/domain/seoOperations.ts +92 -0
  253. package/src/modules/seo-optimization/index.ts +8 -0
  254. package/src/modules/seo-optimization/ports/index.ts +18 -0
  255. package/src/modules/seo-optimization/types/index.ts +41 -0
  256. package/src/modules/theme/application/css-theme-adapter.ts +50 -0
  257. package/src/modules/theme/domain/operations/theme-operations.ts +68 -0
  258. package/src/modules/theme/index.ts +8 -0
  259. package/src/modules/theme/ports/theme-port.ts +8 -0
  260. package/src/modules/theme/types/theme.ts +12 -0
  261. package/src/modules/toc/application/markdown-toc-adapter.ts +106 -0
  262. package/src/modules/toc/domain/operations/toc-operations.ts +92 -0
  263. package/src/modules/toc/index.ts +8 -0
  264. package/src/modules/toc/ports/toc-port.ts +21 -0
  265. package/src/modules/toc/types/toc.ts +17 -0
  266. package/src/modules/toc-generator/application/usecases/index.ts +30 -0
  267. package/src/modules/toc-generator/domain/index.ts +12 -0
  268. package/src/modules/toc-generator/domain/tocOperations.ts +104 -0
  269. package/src/modules/toc-generator/index.ts +9 -0
  270. package/src/modules/toc-generator/ports/index.ts +20 -0
  271. package/src/modules/toc-generator/types/index.ts +50 -0
  272. package/src/modules/version-control/domain/events/index.ts +39 -0
  273. package/src/modules/version-control/domain/models/index.ts +25 -0
  274. package/src/modules/version-control/domain/validators/index.ts +50 -0
  275. package/src/modules/versioning/application/fs-version-loader.ts +44 -0
  276. package/src/modules/versioning/domain/operations/versioning-operations.ts +80 -0
  277. package/src/modules/versioning/index.ts +8 -0
  278. package/src/modules/versioning/ports/version-loader-port.ts +18 -0
  279. package/src/modules/versioning/types/versioning.ts +17 -0
  280. package/src/modules/workflow/domain/events/index.ts +55 -0
  281. package/src/modules/workflow/domain/models/index.ts +40 -0
  282. package/src/modules/workflow/domain/validators/index.ts +50 -0
  283. package/src/modules/yaml-parser/application/js-yaml-adapter.ts +34 -0
  284. package/src/modules/yaml-parser/domain/operations/parse-yaml.ts +58 -0
  285. package/src/modules/yaml-parser/index.ts +7 -0
  286. package/src/modules/yaml-parser/ports/yaml-parser-port.ts +18 -0
  287. package/src/navigation/index.ts +9 -0
  288. package/src/plugin/index.ts +4 -0
  289. package/src/presentation/index.ts +1 -0
  290. package/src/presentation/live-editor/index.ts +22 -0
  291. package/src/presentation/live-editor/live-editor-component.ts +219 -0
  292. package/src/presentation/live-editor/virtual-module.ts +16 -0
  293. package/src/presentation/solid/CodeBlock.tsx +120 -0
  294. package/src/presentation/solid/Toc.tsx +58 -0
  295. package/src/presentation/solid/index.ts +11 -0
  296. package/src/presentation/vite-plugin/docs-plugin.ts +212 -0
  297. package/src/presentation/vite-plugin/index.ts +9 -0
  298. package/src/presentation/vite-plugin/transform-markdown.ts +26 -0
  299. package/src/runtime/analytics.ts +59 -0
  300. package/src/runtime/api-diff.ts +115 -0
  301. package/src/runtime/app.tsx +32 -0
  302. package/src/runtime/components/AccentPicker.tsx +114 -0
  303. package/src/runtime/components/ApiPlayground.tsx +332 -0
  304. package/src/runtime/components/AskAiDialog.tsx +127 -0
  305. package/src/runtime/components/BackToTop.tsx +38 -0
  306. package/src/runtime/components/Banner.tsx +75 -0
  307. package/src/runtime/components/Breadcrumbs.tsx +42 -0
  308. package/src/runtime/components/CollectionDropdown.tsx +85 -0
  309. package/src/runtime/components/CustomizeDrawer.tsx +195 -0
  310. package/src/runtime/components/DocMarkdown.tsx +579 -0
  311. package/src/runtime/components/DocPrevNext.tsx +54 -0
  312. package/src/runtime/components/DocToc.tsx +147 -0
  313. package/src/runtime/components/DocsDropdown.tsx +184 -0
  314. package/src/runtime/components/Footer.tsx +52 -0
  315. package/src/runtime/components/GitHubAuth.tsx +82 -0
  316. package/src/runtime/components/GitHubStats.tsx +73 -0
  317. package/src/runtime/components/Head.tsx +225 -0
  318. package/src/runtime/components/LocaleDropdown.tsx +75 -0
  319. package/src/runtime/components/MobileBottomNav.tsx +111 -0
  320. package/src/runtime/components/NotFound.tsx +139 -0
  321. package/src/runtime/components/PageActions.tsx +144 -0
  322. package/src/runtime/components/RelatedDocs.tsx +50 -0
  323. package/src/runtime/components/ScrollProgress.tsx +32 -0
  324. package/src/runtime/components/SearchPalette.tsx +333 -0
  325. package/src/runtime/components/ShowcaseCard.tsx +87 -0
  326. package/src/runtime/components/SidebarNav.tsx +237 -0
  327. package/src/runtime/components/Skeleton.tsx +39 -0
  328. package/src/runtime/components/ThemeToggle.tsx +26 -0
  329. package/src/runtime/components/TopNav.tsx +270 -0
  330. package/src/runtime/components/VersionDropdown.tsx +189 -0
  331. package/src/runtime/components/markdown/components.ts +280 -0
  332. package/src/runtime/config.ts +225 -0
  333. package/src/runtime/content.ts +451 -0
  334. package/src/runtime/context.tsx +30 -0
  335. package/src/runtime/data.ts +93 -0
  336. package/src/runtime/github.ts +226 -0
  337. package/src/runtime/icons.ts +32 -0
  338. package/src/runtime/index.ts +153 -0
  339. package/src/runtime/layouts/DocsLayout.tsx +144 -0
  340. package/src/runtime/markdown-content.css +996 -0
  341. package/src/runtime/pages/AbTestPage.tsx +88 -0
  342. package/src/runtime/pages/AnalyticsPage.tsx +90 -0
  343. package/src/runtime/pages/ApiDiffPage.tsx +86 -0
  344. package/src/runtime/pages/ApiEndpointPage.tsx +248 -0
  345. package/src/runtime/pages/BuilderPage.tsx +150 -0
  346. package/src/runtime/pages/ChangelogPage.tsx +210 -0
  347. package/src/runtime/pages/CollectionPage.tsx +140 -0
  348. package/src/runtime/pages/CommunityPage.tsx +384 -0
  349. package/src/runtime/pages/CreatePage.tsx +448 -0
  350. package/src/runtime/pages/DocPage.tsx +193 -0
  351. package/src/runtime/pages/EditPage.tsx +201 -0
  352. package/src/runtime/pages/HomePage.tsx +187 -0
  353. package/src/runtime/pages/IssuesPage.tsx +140 -0
  354. package/src/runtime/pages/OAuthCallbackPage.tsx +80 -0
  355. package/src/runtime/pages/PluginsPage.tsx +249 -0
  356. package/src/runtime/pages/ShowcasePage.tsx +202 -0
  357. package/src/runtime/pwa.ts +39 -0
  358. package/src/runtime/router.tsx +192 -0
  359. package/src/runtime/seo.ts +192 -0
  360. package/src/runtime/theme.css +175 -0
  361. package/src/runtime/theme.ts +224 -0
  362. package/src/runtime/types.ts +217 -0
  363. package/src/search/index.ts +6 -0
  364. package/src/seo-optimization/index.ts +4 -0
  365. package/src/shared/constants/index.ts +26 -0
  366. package/src/shared/errors/index.ts +195 -0
  367. package/src/shared/index.ts +27 -0
  368. package/src/shared/types/brand.ts +14 -0
  369. package/src/shared/types/client.d.ts +45 -0
  370. package/src/shared/types/either.ts +38 -0
  371. package/src/shared/types/index.ts +42 -0
  372. package/src/shared/types/option.ts +52 -0
  373. package/src/shared/types/result.ts +81 -0
  374. package/src/shared/utils/array.ts +97 -0
  375. package/src/shared/utils/index.ts +46 -0
  376. package/src/shared/utils/object.ts +47 -0
  377. package/src/shared/utils/string.ts +74 -0
  378. package/src/toc-generator/index.ts +1 -0
  379. package/src/types/js-yaml.d.ts +42 -0
  380. package/src/worker.ts +462 -0
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Port for comment operations.
3
+ */
4
+
5
+ export type CommentPort = {
6
+ /**
7
+ * Load comments for a page.
8
+ */
9
+ readonly load: (
10
+ pageId: string,
11
+ config: unknown,
12
+ ) => Promise<readonly unknown[]>;
13
+
14
+ /**
15
+ * Submit a new comment.
16
+ */
17
+ readonly submit: (comment: unknown, config: unknown) => Promise<void>;
18
+ };
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Comment system types for user comments on documentation pages.
3
+ */
4
+
5
+ export type Comment = {
6
+ readonly id: string;
7
+ readonly pageId: string;
8
+ readonly author: string;
9
+ readonly content: string;
10
+ readonly createdAt: string;
11
+ readonly updatedAt: string;
12
+ };
13
+
14
+ export type CommentConfig = {
15
+ readonly provider: "giscus" | "utterances" | "disqus" | "none";
16
+ readonly repo?: string;
17
+ readonly repoId?: string;
18
+ readonly theme?: string;
19
+ };
@@ -0,0 +1 @@
1
+ export { loadConfig } from "./loadConfig";
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Use case: load user config from a project file and merge with defaults.
3
+ * Pure orchestration — no I/O itself, delegates to ConfigLoader.
4
+ */
5
+
6
+ import type { AppError } from "@create-docs/shared/errors";
7
+ import { ok, type Result } from "@create-docs/shared/types/result";
8
+ import {
9
+ resolveConfig,
10
+ type UserConfig,
11
+ } from "../../domain/operations/resolve";
12
+ import type { ConfigLoader } from "../../ports";
13
+ import type { ResolvedDocsConfig } from "../../types";
14
+
15
+ export interface LoadConfigDeps {
16
+ readonly loader: ConfigLoader;
17
+ readonly cwd: string;
18
+ readonly configPath: string;
19
+ readonly userOverride?: UserConfig;
20
+ }
21
+
22
+ export const loadConfig = async (
23
+ deps: LoadConfigDeps,
24
+ ): Promise<Result<ResolvedDocsConfig, AppError>> => {
25
+ const { loader, cwd, configPath, userOverride } = deps;
26
+
27
+ if (userOverride) {
28
+ return ok(resolveConfig(userOverride));
29
+ }
30
+
31
+ const result = await loader.load(cwd, configPath);
32
+ if (!result.ok) return result;
33
+ const fileConfig = result.value;
34
+ if (fileConfig === null) {
35
+ return ok(resolveConfig({}));
36
+ }
37
+ return ok(resolveConfig(fileConfig));
38
+ };
@@ -0,0 +1 @@
1
+ export { validateConfig } from "./validateConfig";
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Workflow: validate a config and return it (or fail).
3
+ * Pure — no I/O.
4
+ */
5
+
6
+ import type { AppError } from "@create-docs/shared/errors";
7
+ import type { Result } from "@create-docs/shared/types/result";
8
+ import { validateDocsConfig } from "../../domain/validators";
9
+ import type { DocsConfig } from "../../types";
10
+
11
+ export type ValidateConfig = (c: DocsConfig) => Result<DocsConfig, AppError>;
12
+
13
+ export const validateConfig: ValidateConfig = (c) =>
14
+ validateDocsConfig(c) as Result<DocsConfig, AppError>;
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Config module domain events.
3
+ */
4
+ import type { DocsConfig, ResolvedDocsConfig } from "../../types";
5
+
6
+ export type ConfigEvent =
7
+ | {
8
+ readonly type: "config.loaded";
9
+ readonly source: "defaults" | "file" | "user";
10
+ }
11
+ | { readonly type: "config.merged"; readonly keys: readonly string[] }
12
+ | { readonly type: "config.resolved"; readonly config: ResolvedDocsConfig }
13
+ | {
14
+ readonly type: "config.validated";
15
+ readonly valid: boolean;
16
+ readonly issues: number;
17
+ }
18
+ | {
19
+ readonly type: "config.changed";
20
+ readonly previous: DocsConfig;
21
+ readonly next: DocsConfig;
22
+ };
23
+
24
+ export const configLoaded = (
25
+ source: "defaults" | "file" | "user",
26
+ ): ConfigEvent => ({ type: "config.loaded", source });
27
+ export const configMerged = (keys: readonly string[]): ConfigEvent => ({
28
+ type: "config.merged",
29
+ keys,
30
+ });
31
+ export const configResolved = (config: ResolvedDocsConfig): ConfigEvent => ({
32
+ type: "config.resolved",
33
+ config,
34
+ });
35
+ export const configValidated = (
36
+ valid: boolean,
37
+ issues: number,
38
+ ): ConfigEvent => ({
39
+ type: "config.validated",
40
+ valid,
41
+ issues,
42
+ });
43
+ export const configChanged = (
44
+ previous: DocsConfig,
45
+ next: DocsConfig,
46
+ ): ConfigEvent => ({
47
+ type: "config.changed",
48
+ previous,
49
+ next,
50
+ });
@@ -0,0 +1,9 @@
1
+ export type {
2
+ DocsConfig,
3
+ DocsPluginOptions,
4
+ NavItem,
5
+ NavSection,
6
+ ResolvedDocsConfig,
7
+ SidebarGroup,
8
+ SiteConfig,
9
+ } from "../../types";
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Default config — the canonical fallback for the docs site.
3
+ */
4
+ import type { DocsConfig } from "../../types";
5
+
6
+ export const defaultDocsConfig: DocsConfig = {
7
+ site: {
8
+ title: "Documentation",
9
+ description: "Documentation and guides",
10
+ logo: "/logo.svg",
11
+ github: "",
12
+ twitter: "",
13
+ version: "1.0.0",
14
+ },
15
+ nav: [
16
+ {
17
+ title: "Product",
18
+ items: [
19
+ {
20
+ label: "Getting Started",
21
+ href: "/docs/getting-started/introduction",
22
+ },
23
+ { label: "Installation", href: "/docs/getting-started/installation" },
24
+ { label: "Features", href: "/docs/product/features" },
25
+ { label: "Configuration", href: "/docs/product/configuration" },
26
+ ],
27
+ },
28
+ {
29
+ title: "Resources",
30
+ items: [
31
+ { label: "FAQ", href: "/docs/resources/faq" },
32
+ { label: "Best Practices", href: "/docs/resources/best-practices" },
33
+ { label: "Troubleshooting", href: "/docs/resources/troubleshooting" },
34
+ { label: "Integrations", href: "/docs/resources/integrations" },
35
+ ],
36
+ },
37
+ {
38
+ title: "API",
39
+ items: [
40
+ { label: "Overview", href: "/docs/api/overview" },
41
+ { label: "Authentication", href: "/docs/api/authentication" },
42
+ { label: "Endpoints", href: "/docs/api/endpoints" },
43
+ { label: "API Tester", href: "/docs/api/tester" },
44
+ ],
45
+ },
46
+ ],
47
+ sidebar: [],
48
+ theme: {
49
+ primaryColor: "#3B82F6",
50
+ darkMode: true,
51
+ accentColor: "#8B5CF6",
52
+ codeTheme: "github-dark",
53
+ },
54
+ api: {
55
+ baseUrl: "/api/v1",
56
+ authType: "bearer",
57
+ authHeader: "Authorization",
58
+ testerEnabled: true,
59
+ },
60
+ search: {
61
+ enabled: true,
62
+ placeholder: "Search docs...",
63
+ shortcuts: ["⌘K", "Ctrl+K"],
64
+ },
65
+ editLink: {
66
+ enabled: true,
67
+ baseUrl: "",
68
+ branch: "main",
69
+ },
70
+ lastUpdated: {
71
+ enabled: true,
72
+ format: "dd MMM yyyy",
73
+ },
74
+ };
@@ -0,0 +1,2 @@
1
+ export { defaultDocsConfig } from "./defaults";
2
+ export { resolveConfig, type UserConfig } from "./resolve";
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Pure operations for building and merging configs.
3
+ * No I/O. No mutation of inputs.
4
+ */
5
+ import {
6
+ DEFAULT_BASE_ROUTE,
7
+ DEFAULT_DOCS_DIR,
8
+ } from "@create-docs/shared/constants";
9
+ import type {
10
+ DocsConfig,
11
+ DocsPluginOptions,
12
+ ResolvedDocsConfig,
13
+ } from "../../types";
14
+ import { defaultDocsConfig } from "./defaults";
15
+
16
+ export type UserConfig = Partial<DocsConfig> & DocsPluginOptions;
17
+
18
+ export const resolveConfig = (user: UserConfig = {}): ResolvedDocsConfig => ({
19
+ ...defaultDocsConfig,
20
+ ...user,
21
+ nav: user.nav ?? defaultDocsConfig.nav,
22
+ sidebar: user.sidebar ?? defaultDocsConfig.sidebar,
23
+ site: { ...defaultDocsConfig.site, ...(user.site ?? {}) },
24
+ theme: mergeOptional(defaultDocsConfig.theme, user.theme),
25
+ api: mergeOptional(defaultDocsConfig.api, user.api),
26
+ search: mergeOptional(defaultDocsConfig.search, user.search),
27
+ editLink: mergeOptional(defaultDocsConfig.editLink, user.editLink),
28
+ lastUpdated: mergeOptional(defaultDocsConfig.lastUpdated, user.lastUpdated),
29
+ docsDir: user.docsDir ?? DEFAULT_DOCS_DIR,
30
+ baseRoute: user.baseRoute ?? DEFAULT_BASE_ROUTE,
31
+ });
32
+
33
+ const mergeOptional = <T>(
34
+ a: T | undefined,
35
+ b: T | undefined,
36
+ ): T | undefined => {
37
+ if (a === undefined) return b;
38
+ if (b === undefined) return a;
39
+ return { ...a, ...b };
40
+ };
@@ -0,0 +1,152 @@
1
+ // Config Domain Schemas - Arktype validation schemas
2
+ // Following /follow-arktype workflow for type-safe runtime validation
3
+
4
+ import { API_AUTH_TYPES } from "@create-docs/shared/constants";
5
+ import { type AppError, configError } from "@create-docs/shared/errors";
6
+ import { err, ok, type Result } from "@create-docs/shared/types/result";
7
+ import { type Type, type } from "arktype";
8
+ import type { ApiEndpoint, DocsConfig } from "../../types";
9
+
10
+ /**
11
+ * Site Schema
12
+ */
13
+ export const siteSchema: Type = type({
14
+ title: "string >= 1",
15
+ description: "string >= 1",
16
+ });
17
+
18
+ /**
19
+ * API Schema
20
+ */
21
+ export const apiSchema: Type = type({
22
+ baseUrl: "string >= 1",
23
+ authType: type("'bearer' | 'apiKey' | 'oauth2'"),
24
+ });
25
+
26
+ /**
27
+ * API Endpoint Schema
28
+ */
29
+ export const apiEndpointSchema: Type = type({
30
+ method: type("'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'"),
31
+ path: "string >= 1",
32
+ description: "string >= 1",
33
+ });
34
+
35
+ export interface ValidationIssue {
36
+ readonly path: string;
37
+ readonly message: string;
38
+ readonly hint?: string;
39
+ readonly suggestions?: readonly string[];
40
+ }
41
+
42
+ const isNonEmptyString = (v: unknown): v is string =>
43
+ typeof v === "string" && v.trim().length > 0;
44
+
45
+ const validateSite = (site: DocsConfig["site"]): ValidationIssue[] => {
46
+ const issues: ValidationIssue[] = [];
47
+ if (!isNonEmptyString(site.title)) {
48
+ issues.push({
49
+ path: "site.title",
50
+ message: "must be a non-empty string",
51
+ });
52
+ }
53
+ if (!isNonEmptyString(site.description)) {
54
+ issues.push({
55
+ path: "site.description",
56
+ message: "must be a non-empty string",
57
+ });
58
+ }
59
+ return issues;
60
+ };
61
+
62
+ const validateApi = (api: DocsConfig["api"]): ValidationIssue[] => {
63
+ const issues: ValidationIssue[] = [];
64
+ if (api === undefined) return issues;
65
+ if (!isNonEmptyString(api.baseUrl)) {
66
+ issues.push({
67
+ path: "api.baseUrl",
68
+ message: "must be a non-empty string",
69
+ });
70
+ }
71
+ const authTypes = API_AUTH_TYPES as readonly string[];
72
+ if (!authTypes.includes(api.authType)) {
73
+ issues.push({
74
+ path: "api.authType",
75
+ message: `must be one of: ${API_AUTH_TYPES.join(", ")}`,
76
+ suggestions: [...API_AUTH_TYPES],
77
+ });
78
+ }
79
+ return issues;
80
+ };
81
+
82
+ export const validateSiteSchema = (
83
+ s: DocsConfig["site"],
84
+ ): Result<DocsConfig["site"], AppError> => {
85
+ const issues = validateSite(s);
86
+ if (issues.length === 0) return ok(s);
87
+ const first = issues[0];
88
+ return err(
89
+ configError(first.message, {
90
+ path: first.path,
91
+ ...(first.suggestions ? { suggestions: first.suggestions } : {}),
92
+ }),
93
+ );
94
+ };
95
+
96
+ export const validateApiSchema = (
97
+ a: DocsConfig["api"],
98
+ ): Result<DocsConfig["api"] | undefined, AppError> => {
99
+ if (a === undefined) return ok(undefined);
100
+ const issues = validateApi(a);
101
+ if (issues.length === 0) return ok(a);
102
+ const first = issues[0];
103
+ return err(
104
+ configError(first.message, {
105
+ path: first.path,
106
+ ...(first.suggestions ? { suggestions: first.suggestions } : {}),
107
+ }),
108
+ );
109
+ };
110
+
111
+ export const validateApiEndpoint = (
112
+ e: ApiEndpoint,
113
+ path: string,
114
+ ): Result<ApiEndpoint, AppError> => {
115
+ const result = apiEndpointSchema(e);
116
+ if (result instanceof type.errors) {
117
+ return err(
118
+ configError(result.summary, {
119
+ path: `${path}`,
120
+ }),
121
+ );
122
+ }
123
+ return ok(e);
124
+ };
125
+
126
+ /** Collect all issues in one pass — returns every problem at once. */
127
+ export const validateDocsConfigAll = (
128
+ c: DocsConfig,
129
+ ): { ok: true } | { ok: false; issues: readonly ValidationIssue[] } => {
130
+ const issues: ValidationIssue[] = [
131
+ ...validateSite(c.site),
132
+ ...validateApi(c.api),
133
+ ];
134
+ if (issues.length > 0) return { ok: false, issues };
135
+ return { ok: true };
136
+ };
137
+
138
+ export const validateDocsConfig = (
139
+ c: DocsConfig,
140
+ ): Result<DocsConfig, AppError> => {
141
+ const all = validateDocsConfigAll(c);
142
+ if (all.ok) return ok(c);
143
+ const first = all.issues[0];
144
+ if (!first) return ok(c);
145
+ return err(
146
+ configError(first.message, {
147
+ path: first.path,
148
+ ...(first.suggestions ? { suggestions: first.suggestions } : {}),
149
+ ...(first.hint ? { context: { hint: first.hint } } : {}),
150
+ }),
151
+ );
152
+ };
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Public API for the config module.
3
+ */
4
+
5
+ export * from "./application/usecases";
6
+ export * from "./application/workflows";
7
+ export {
8
+ configChanged,
9
+ configLoaded,
10
+ configMerged,
11
+ configResolved,
12
+ configValidated,
13
+ } from "./domain/events";
14
+ export * from "./domain/operations";
15
+ export {
16
+ validateApiEndpoint,
17
+ validateApiSchema as validateApi,
18
+ validateDocsConfig,
19
+ validateDocsConfigAll,
20
+ validateSiteSchema as validateSite,
21
+ } from "./domain/validators";
22
+ export type { ConfigLoader } from "./ports";
23
+ export * from "./types/public";
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Config module ports — interfaces for I/O.
3
+ */
4
+
5
+ import type { AppError } from "@create-docs/shared/errors";
6
+ import type { Result } from "@create-docs/shared/types/result";
7
+ import type { DocsConfig } from "../types";
8
+
9
+ /** Loads a DocsConfig from a project file (e.g. docs/docs.config.ts). */
10
+ export interface ConfigLoader {
11
+ load(
12
+ cwd: string,
13
+ configPath: string,
14
+ ): Promise<Result<Partial<DocsConfig> | null, AppError>>;
15
+ }
@@ -0,0 +1,113 @@
1
+ import type {
2
+ BadgeVariant,
3
+ NavItem,
4
+ NavSection,
5
+ SidebarGroup,
6
+ SidebarItem,
7
+ } from "@create-docs/modules/navigation";
8
+
9
+ export type { BadgeVariant, NavItem, NavSection, SidebarGroup, SidebarItem };
10
+
11
+ export type AuthType = "bearer" | "apiKey" | "oauth2";
12
+ export type HttpMethod = "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
13
+
14
+ export interface ApiEndpoint {
15
+ readonly method: HttpMethod;
16
+ readonly path: string;
17
+ readonly description: string;
18
+ readonly group: string;
19
+ readonly requiresAuth?: boolean;
20
+ readonly requestBody?: {
21
+ readonly description: string;
22
+ readonly example?: string;
23
+ readonly schema?: Record<string, unknown>;
24
+ };
25
+ readonly response?: {
26
+ readonly description: string;
27
+ readonly example?: string;
28
+ readonly schema?: Record<string, unknown>;
29
+ };
30
+ readonly queryParams?: readonly {
31
+ readonly name: string;
32
+ readonly type: string;
33
+ readonly description: string;
34
+ readonly required?: boolean;
35
+ readonly default?: string;
36
+ }[];
37
+ readonly pathParams?: readonly {
38
+ readonly name: string;
39
+ readonly type: string;
40
+ readonly description: string;
41
+ }[];
42
+ readonly headers?: readonly {
43
+ readonly name: string;
44
+ readonly type: string;
45
+ readonly description: string;
46
+ readonly required?: boolean;
47
+ }[];
48
+ }
49
+
50
+ export interface ThemeConfig {
51
+ readonly primaryColor?: string;
52
+ readonly darkMode?: boolean;
53
+ readonly accentColor?: string;
54
+ readonly codeTheme?: string;
55
+ }
56
+
57
+ export interface SiteConfig {
58
+ readonly title: string;
59
+ readonly description: string;
60
+ readonly logo?: string;
61
+ readonly logoDark?: string;
62
+ readonly github?: string;
63
+ readonly twitter?: string;
64
+ readonly version?: string;
65
+ }
66
+
67
+ export interface ApiConfig {
68
+ readonly baseUrl: string;
69
+ readonly authType: AuthType;
70
+ readonly authHeader?: string;
71
+ readonly defaultHeaders?: Record<string, string>;
72
+ readonly testerEnabled?: boolean;
73
+ readonly endpoints?: readonly ApiEndpoint[];
74
+ }
75
+
76
+ export interface SearchConfig {
77
+ readonly enabled?: boolean;
78
+ readonly placeholder?: string;
79
+ readonly shortcuts?: readonly string[];
80
+ }
81
+
82
+ export interface EditLinkConfig {
83
+ readonly enabled?: boolean;
84
+ readonly baseUrl?: string;
85
+ readonly branch?: string;
86
+ }
87
+
88
+ export interface LastUpdatedConfig {
89
+ readonly enabled?: boolean;
90
+ readonly format?: string;
91
+ }
92
+
93
+ export interface DocsConfig {
94
+ readonly site: SiteConfig;
95
+ readonly nav: readonly NavSection[];
96
+ readonly sidebar: readonly SidebarGroup[];
97
+ readonly theme?: ThemeConfig;
98
+ readonly api?: ApiConfig;
99
+ readonly search?: SearchConfig;
100
+ readonly editLink?: EditLinkConfig;
101
+ readonly lastUpdated?: LastUpdatedConfig;
102
+ }
103
+
104
+ /** Plugin-specific options layered on top of DocsConfig. */
105
+ export interface DocsPluginOptions {
106
+ readonly docsDir?: string;
107
+ readonly baseRoute?: string;
108
+ }
109
+
110
+ export type ResolvedDocsConfig = DocsConfig & {
111
+ readonly docsDir: string;
112
+ readonly baseRoute: string;
113
+ };
@@ -0,0 +1,19 @@
1
+ export type {
2
+ ApiConfig,
3
+ ApiEndpoint,
4
+ AuthType,
5
+ BadgeVariant,
6
+ DocsConfig,
7
+ DocsPluginOptions,
8
+ EditLinkConfig,
9
+ HttpMethod,
10
+ LastUpdatedConfig,
11
+ NavItem,
12
+ NavSection,
13
+ ResolvedDocsConfig,
14
+ SearchConfig,
15
+ SidebarGroup,
16
+ SidebarItem,
17
+ SiteConfig,
18
+ ThemeConfig,
19
+ } from "./index";
@@ -0,0 +1,6 @@
1
+ export {
2
+ type CacheEntry,
3
+ type CacheKeyParts,
4
+ makeCacheKey,
5
+ ParseCache,
6
+ } from "./parseCache";
@@ -0,0 +1,6 @@
1
+ export {
2
+ type CacheEntry,
3
+ type CacheKeyParts,
4
+ makeCacheKey,
5
+ ParseCache,
6
+ } from "./parseCache";
@@ -0,0 +1,56 @@
1
+ /**
2
+ * mtime+size keyed parse cache.
3
+ *
4
+ * Skips re-parsing files whose mtime and size have not changed since the
5
+ * last build. Pure — no I/O. Designed to be wrapped by an outer Map keyed
6
+ * by absolute file path.
7
+ */
8
+
9
+ export interface CacheKeyParts {
10
+ readonly mtimeMs: number;
11
+ readonly size: number;
12
+ }
13
+
14
+ export interface CacheEntry<T> {
15
+ readonly key: string;
16
+ readonly value: T;
17
+ }
18
+
19
+ /** Build a stable cache key from a file path and stat info. */
20
+ export const makeCacheKey = (filePath: string, parts: CacheKeyParts): string =>
21
+ `${filePath}@${parts.mtimeMs.toFixed(0)}:${parts.size}`;
22
+
23
+ /**
24
+ * Simple bounded parse cache with LRU-like eviction.
25
+ */
26
+ export class ParseCache<T> {
27
+ private map = new Map<string, T>();
28
+
29
+ constructor(private max: number = 1024) {}
30
+
31
+ get(key: string): T | undefined {
32
+ return this.map.get(key);
33
+ }
34
+
35
+ set(key: string, value: T): void {
36
+ if (this.map.has(key)) this.map.delete(key);
37
+ this.map.set(key, value);
38
+
39
+ if (this.map.size > this.max) {
40
+ const oldest = this.map.keys().next().value;
41
+ if (oldest !== undefined) this.map.delete(oldest);
42
+ }
43
+ }
44
+
45
+ has(key: string): boolean {
46
+ return this.map.has(key);
47
+ }
48
+
49
+ clear(): void {
50
+ this.map.clear();
51
+ }
52
+
53
+ get size(): number {
54
+ return this.map.size;
55
+ }
56
+ }
@@ -0,0 +1,2 @@
1
+ export { buildDocPageFromRaw, loadDocPage } from "./loadDocPage";
2
+ export { scanDocsDir } from "./scanDocsDir";
@@ -0,0 +1 @@
1
+ export { buildDocPageFromRaw, loadDocPage } from "./loadDocPage";