@cparra/apexdocs 2.25.0-alpha.9 → 2.25.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 (430) hide show
  1. package/.eslintrc.js +12 -0
  2. package/README.md +12 -73
  3. package/apexdocs.config.ts +13 -0
  4. package/docs/.nojekyll +0 -0
  5. package/docs/README.md +1 -0
  6. package/docs/index.html +22 -0
  7. package/docs/restapi.json +589 -0
  8. package/docs/types/Classes/nspc.AnotherInterface.md +22 -0
  9. package/docs/types/Classes/nspc.ChildClass.md +97 -0
  10. package/docs/types/Main/nspc.GroupedClass.md +10 -0
  11. package/docs/types/Main/nspc.SampleClass.md +190 -0
  12. package/docs/types/Misc-Group/nspc.EscapedAnnotations.md +4 -0
  13. package/docs/types/Misc-Group/nspc.GrandparentClass.md +13 -0
  14. package/docs/types/Misc-Group/nspc.InterfaceWithInheritance.md +29 -0
  15. package/docs/types/Misc-Group/nspc.MemberGrouping.md +13 -0
  16. package/docs/types/Misc-Group/nspc.ParentClass.md +37 -0
  17. package/docs/types/Misc-Group/nspc.Reference1.md +18 -0
  18. package/docs/types/Misc-Group/nspc.Reference2.md +12 -0
  19. package/docs/types/Misc-Group/nspc.Reference3.md +7 -0
  20. package/docs/types/Misc-Group/nspc.Reference4.md +7 -0
  21. package/docs/types/Misc-Group/nspc.Reference5.md +7 -0
  22. package/docs/types/Misc-Group/nspc.Reference6.md +9 -0
  23. package/docs/types/Misc-Group/nspc.Reference7.md +7 -0
  24. package/docs/types/Misc-Group/nspc.SampleClassWithoutModifier.md +11 -0
  25. package/docs/types/Misc-Group/nspc.SampleRestResource.md +211 -0
  26. package/docs/types/Misc-Group/nspc.SampleRestResourceWithInnerClass.md +34 -0
  27. package/docs/types/Misc-Group/nspc.SampleRestResourceWithoutApexDocs.md +14 -0
  28. package/docs/types/README.md +97 -0
  29. package/docs/types/Sample-Interfaces/nspc.SampleInterface.md +23 -0
  30. package/examples/includes/header.md +3 -0
  31. package/jest.config.js +1 -6
  32. package/lib/application/Apexdocs.d.ts +13 -0
  33. package/lib/application/Apexdocs.js +77 -0
  34. package/lib/application/Apexdocs.js.map +1 -0
  35. package/lib/cli/generate.d.ts +2 -0
  36. package/lib/cli/generate.js +131 -0
  37. package/lib/cli/generate.js.map +1 -0
  38. package/lib/index.d.ts +1 -0
  39. package/lib/index.js +18 -0
  40. package/lib/index.js.map +1 -0
  41. package/lib/model/apex-bundle.d.ts +6 -0
  42. package/lib/model/apex-bundle.js +11 -0
  43. package/lib/model/apex-bundle.js.map +1 -0
  44. package/lib/model/apex-type-wrappers/ClassMirrorWrapper.d.ts +7 -0
  45. package/lib/model/apex-type-wrappers/ClassMirrorWrapper.js +14 -0
  46. package/lib/model/apex-type-wrappers/ClassMirrorWrapper.js.map +1 -0
  47. package/lib/model/apex-type-wrappers/MethodMirrorWrapper.d.ts +7 -0
  48. package/lib/model/apex-type-wrappers/MethodMirrorWrapper.js +12 -0
  49. package/lib/model/apex-type-wrappers/MethodMirrorWrapper.js.map +1 -0
  50. package/lib/model/inheritance.d.ts +8 -0
  51. package/lib/model/inheritance.js +3 -0
  52. package/lib/model/inheritance.js.map +1 -0
  53. package/lib/model/manifest-diff.d.ts +27 -0
  54. package/lib/model/manifest-diff.js +69 -0
  55. package/lib/model/manifest-diff.js.map +1 -0
  56. package/lib/model/manifest.d.ts +22 -0
  57. package/lib/model/manifest.js +47 -0
  58. package/lib/model/manifest.js.map +1 -0
  59. package/lib/model/markdown-file.d.ts +16 -0
  60. package/lib/model/markdown-file.js +107 -0
  61. package/lib/model/markdown-file.js.map +1 -0
  62. package/lib/model/markdown-generation-util/doc-comment-annotation-util.d.ts +8 -0
  63. package/lib/model/markdown-generation-util/doc-comment-annotation-util.js +44 -0
  64. package/lib/model/markdown-generation-util/doc-comment-annotation-util.js.map +1 -0
  65. package/lib/model/markdown-generation-util/field-declaration-util.d.ts +3 -0
  66. package/lib/model/markdown-generation-util/field-declaration-util.js +55 -0
  67. package/lib/model/markdown-generation-util/field-declaration-util.js.map +1 -0
  68. package/lib/model/markdown-generation-util/index.d.ts +3 -0
  69. package/lib/model/markdown-generation-util/index.js +20 -0
  70. package/lib/model/markdown-generation-util/index.js.map +1 -0
  71. package/lib/model/markdown-generation-util/method-declaration-util.d.ts +4 -0
  72. package/lib/model/markdown-generation-util/method-declaration-util.js +115 -0
  73. package/lib/model/markdown-generation-util/method-declaration-util.js.map +1 -0
  74. package/lib/model/markdown-generation-util/type-declaration-util.d.ts +3 -0
  75. package/lib/model/markdown-generation-util/type-declaration-util.js +82 -0
  76. package/lib/model/markdown-generation-util/type-declaration-util.js.map +1 -0
  77. package/lib/model/markdown-home-file.d.ts +11 -0
  78. package/lib/model/markdown-home-file.js +54 -0
  79. package/lib/model/markdown-home-file.js.map +1 -0
  80. package/lib/model/markdown-type-file.d.ts +26 -0
  81. package/lib/model/markdown-type-file.js +134 -0
  82. package/lib/model/markdown-type-file.js.map +1 -0
  83. package/lib/model/openapi/apex-doc-types.d.ts +19 -0
  84. package/lib/model/openapi/apex-doc-types.js +5 -0
  85. package/lib/model/openapi/apex-doc-types.js.map +1 -0
  86. package/lib/model/openapi/open-api-types.d.ts +93 -0
  87. package/lib/model/openapi/open-api-types.js +3 -0
  88. package/lib/model/openapi/open-api-types.js.map +1 -0
  89. package/lib/model/openapi/open-api.d.ts +16 -0
  90. package/lib/model/openapi/open-api.js +34 -0
  91. package/lib/model/openapi/open-api.js.map +1 -0
  92. package/lib/model/openapi/openapi-type-file.d.ts +7 -0
  93. package/lib/model/openapi/openapi-type-file.js +17 -0
  94. package/lib/model/openapi/openapi-type-file.js.map +1 -0
  95. package/lib/model/outputFile.d.ts +10 -0
  96. package/lib/model/outputFile.js +29 -0
  97. package/lib/model/outputFile.js.map +1 -0
  98. package/lib/model/types-repository.d.ts +16 -0
  99. package/lib/model/types-repository.js +54 -0
  100. package/lib/model/types-repository.js.map +1 -0
  101. package/lib/service/apex-file-reader.d.ts +14 -0
  102. package/lib/service/apex-file-reader.js +46 -0
  103. package/lib/service/apex-file-reader.js.map +1 -0
  104. package/lib/service/file-system.d.ts +14 -0
  105. package/lib/service/file-system.js +25 -0
  106. package/lib/service/file-system.js.map +1 -0
  107. package/lib/service/file-writer.d.ts +6 -0
  108. package/lib/service/file-writer.js +34 -0
  109. package/lib/service/file-writer.js.map +1 -0
  110. package/lib/service/manifest-factory.d.ts +10 -0
  111. package/lib/service/manifest-factory.js +14 -0
  112. package/lib/service/manifest-factory.js.map +1 -0
  113. package/lib/service/metadata-processor.d.ts +3 -0
  114. package/lib/service/metadata-processor.js +17 -0
  115. package/lib/service/metadata-processor.js.map +1 -0
  116. package/lib/service/parser.d.ts +21 -0
  117. package/lib/service/parser.js +135 -0
  118. package/lib/service/parser.js.map +1 -0
  119. package/lib/service/state.d.ts +9 -0
  120. package/lib/service/state.js +20 -0
  121. package/lib/service/state.js.map +1 -0
  122. package/lib/service/walkers/class-walker.d.ts +4 -0
  123. package/lib/service/walkers/class-walker.js +33 -0
  124. package/lib/service/walkers/class-walker.js.map +1 -0
  125. package/lib/service/walkers/enum-walker.d.ts +4 -0
  126. package/lib/service/walkers/enum-walker.js +11 -0
  127. package/lib/service/walkers/enum-walker.js.map +1 -0
  128. package/lib/service/walkers/interface-walker.d.ts +4 -0
  129. package/lib/service/walkers/interface-walker.js +15 -0
  130. package/lib/service/walkers/interface-walker.js.map +1 -0
  131. package/lib/service/walkers/walker-factory.d.ts +5 -0
  132. package/lib/service/walkers/walker-factory.js +21 -0
  133. package/lib/service/walkers/walker-factory.js.map +1 -0
  134. package/lib/service/walkers/walker.d.ts +19 -0
  135. package/lib/service/walkers/walker.js +17 -0
  136. package/lib/service/walkers/walker.js.map +1 -0
  137. package/lib/settings.d.ts +64 -0
  138. package/lib/settings.js +89 -0
  139. package/lib/settings.js.map +1 -0
  140. package/lib/test-helpers/AnnotationBuilder.d.ts +12 -0
  141. package/lib/test-helpers/AnnotationBuilder.js +31 -0
  142. package/lib/test-helpers/AnnotationBuilder.js.map +1 -0
  143. package/lib/test-helpers/ClassMirrorBuilder.d.ts +18 -0
  144. package/lib/test-helpers/ClassMirrorBuilder.js +54 -0
  145. package/lib/test-helpers/ClassMirrorBuilder.js.map +1 -0
  146. package/lib/test-helpers/DocCommentAnnotationBuilder.d.ts +8 -0
  147. package/lib/test-helpers/DocCommentAnnotationBuilder.js +26 -0
  148. package/lib/test-helpers/DocCommentAnnotationBuilder.js.map +1 -0
  149. package/lib/test-helpers/DocCommentBuilder.d.ts +12 -0
  150. package/lib/test-helpers/DocCommentBuilder.js +38 -0
  151. package/lib/test-helpers/DocCommentBuilder.js.map +1 -0
  152. package/lib/test-helpers/FieldMirrorBuilder.d.ts +18 -0
  153. package/lib/test-helpers/FieldMirrorBuilder.js +54 -0
  154. package/lib/test-helpers/FieldMirrorBuilder.js.map +1 -0
  155. package/lib/test-helpers/MethodMirrorBuilder.d.ts +10 -0
  156. package/lib/test-helpers/MethodMirrorBuilder.js +37 -0
  157. package/lib/test-helpers/MethodMirrorBuilder.js.map +1 -0
  158. package/lib/test-helpers/SettingsBuilder.d.ts +8 -0
  159. package/lib/test-helpers/SettingsBuilder.js +27 -0
  160. package/lib/test-helpers/SettingsBuilder.js.map +1 -0
  161. package/lib/transpiler/factory.d.ts +6 -0
  162. package/lib/transpiler/factory.js +32 -0
  163. package/lib/transpiler/factory.js.map +1 -0
  164. package/lib/transpiler/file-container.d.ts +6 -0
  165. package/lib/transpiler/file-container.js +16 -0
  166. package/lib/transpiler/file-container.js.map +1 -0
  167. package/lib/transpiler/generator-choices.d.ts +1 -0
  168. package/lib/transpiler/generator-choices.js +3 -0
  169. package/lib/transpiler/generator-choices.js.map +1 -0
  170. package/lib/transpiler/markdown/class-file-generatorHelper.d.ts +8 -0
  171. package/lib/transpiler/markdown/class-file-generatorHelper.js +56 -0
  172. package/lib/transpiler/markdown/class-file-generatorHelper.js.map +1 -0
  173. package/lib/transpiler/markdown/docsify/docsify-docs-processor.d.ts +6 -0
  174. package/lib/transpiler/markdown/docsify/docsify-docs-processor.js +13 -0
  175. package/lib/transpiler/markdown/docsify/docsify-docs-processor.js.map +1 -0
  176. package/lib/transpiler/markdown/jekyll/jekyll-docsProcessor.d.ts +11 -0
  177. package/lib/transpiler/markdown/jekyll/jekyll-docsProcessor.js +51 -0
  178. package/lib/transpiler/markdown/jekyll/jekyll-docsProcessor.js.map +1 -0
  179. package/lib/transpiler/markdown/markdown-transpiler-base.d.ts +11 -0
  180. package/lib/transpiler/markdown/markdown-transpiler-base.js +24 -0
  181. package/lib/transpiler/markdown/markdown-transpiler-base.js.map +1 -0
  182. package/lib/transpiler/markdown/plain-markdown/plain-docsProcessor.d.ts +6 -0
  183. package/lib/transpiler/markdown/plain-markdown/plain-docsProcessor.js +14 -0
  184. package/lib/transpiler/markdown/plain-markdown/plain-docsProcessor.js.map +1 -0
  185. package/lib/transpiler/openapi/open-api-docs-processor.d.ts +13 -0
  186. package/lib/transpiler/openapi/open-api-docs-processor.js +75 -0
  187. package/lib/transpiler/openapi/open-api-docs-processor.js.map +1 -0
  188. package/lib/transpiler/openapi/parsers/Builder.d.ts +16 -0
  189. package/lib/transpiler/openapi/parsers/Builder.js +30 -0
  190. package/lib/transpiler/openapi/parsers/Builder.js.map +1 -0
  191. package/lib/transpiler/openapi/parsers/MethodParser.d.ts +20 -0
  192. package/lib/transpiler/openapi/parsers/MethodParser.js +167 -0
  193. package/lib/transpiler/openapi/parsers/MethodParser.js.map +1 -0
  194. package/lib/transpiler/openapi/parsers/ParameterObjectBuilder.d.ts +7 -0
  195. package/lib/transpiler/openapi/parsers/ParameterObjectBuilder.js +11 -0
  196. package/lib/transpiler/openapi/parsers/ParameterObjectBuilder.js.map +1 -0
  197. package/lib/transpiler/openapi/parsers/ReferenceBuilder.d.ts +39 -0
  198. package/lib/transpiler/openapi/parsers/ReferenceBuilder.js +226 -0
  199. package/lib/transpiler/openapi/parsers/ReferenceBuilder.js.map +1 -0
  200. package/lib/transpiler/openapi/parsers/RequestBodyBuilder.d.ts +10 -0
  201. package/lib/transpiler/openapi/parsers/RequestBodyBuilder.js +20 -0
  202. package/lib/transpiler/openapi/parsers/RequestBodyBuilder.js.map +1 -0
  203. package/lib/transpiler/openapi/parsers/ResponsesBuilder.d.ts +7 -0
  204. package/lib/transpiler/openapi/parsers/ResponsesBuilder.js +22 -0
  205. package/lib/transpiler/openapi/parsers/ResponsesBuilder.js.map +1 -0
  206. package/lib/transpiler/processor-type-transpiler.d.ts +10 -0
  207. package/lib/transpiler/processor-type-transpiler.js +9 -0
  208. package/lib/transpiler/processor-type-transpiler.js.map +1 -0
  209. package/lib/transpiler/transpiler.d.ts +5 -0
  210. package/lib/transpiler/transpiler.js +27 -0
  211. package/lib/transpiler/transpiler.js.map +1 -0
  212. package/lib/util/error-logger.d.ts +8 -0
  213. package/lib/util/error-logger.js +90 -0
  214. package/lib/util/error-logger.js.map +1 -0
  215. package/lib/util/logger.d.ts +21 -0
  216. package/lib/util/logger.js +58 -0
  217. package/lib/util/logger.js.map +1 -0
  218. package/lib/util/string-utils.d.ts +2 -0
  219. package/lib/util/string-utils.js +15 -0
  220. package/lib/util/string-utils.js.map +1 -0
  221. package/package.json +36 -35
  222. package/src/application/Apexdocs.ts +70 -17
  223. package/src/cli/generate.ts +131 -10
  224. package/src/index.ts +1 -36
  225. package/src/model/__tests__/manifest-diff.spec.ts +147 -0
  226. package/src/model/apex-bundle.ts +3 -0
  227. package/src/{core/openapi → model}/apex-type-wrappers/__tests__/ClassMirrorWrapper.spec.ts +3 -3
  228. package/src/model/inheritance.ts +7 -0
  229. package/src/model/manifest-diff.ts +94 -0
  230. package/src/model/manifest.ts +74 -0
  231. package/src/model/markdown-file.ts +121 -0
  232. package/src/model/markdown-generation-util/doc-comment-annotation-util.ts +50 -0
  233. package/src/model/markdown-generation-util/field-declaration-util.ts +71 -0
  234. package/src/model/markdown-generation-util/index.ts +3 -0
  235. package/src/model/markdown-generation-util/method-declaration-util.ts +166 -0
  236. package/src/model/markdown-generation-util/type-declaration-util.ts +91 -0
  237. package/src/model/markdown-home-file.ts +58 -0
  238. package/src/model/markdown-type-file.ts +165 -0
  239. package/src/{core → model}/openapi/open-api-types.ts +2 -2
  240. package/src/model/openapi/openapi-type-file.ts +14 -0
  241. package/src/model/outputFile.ts +29 -0
  242. package/src/{core/openapi → model}/types-repository.ts +9 -0
  243. package/src/service/__tests__/apex-file-reader.spec.ts +92 -0
  244. package/src/{core/openapi → service}/__tests__/manifest-factory.spec.ts +2 -1
  245. package/src/service/apex-file-reader.ts +51 -0
  246. package/src/service/file-writer.ts +34 -0
  247. package/src/{core/openapi → service}/manifest-factory.ts +3 -3
  248. package/src/service/metadata-processor.ts +16 -0
  249. package/src/{core/openapi → service}/parser.ts +9 -9
  250. package/src/service/state.ts +24 -0
  251. package/src/service/walkers/class-walker.ts +30 -0
  252. package/src/service/walkers/enum-walker.ts +7 -0
  253. package/src/service/walkers/interface-walker.ts +12 -0
  254. package/src/service/walkers/walker-factory.ts +19 -0
  255. package/src/service/walkers/walker.ts +42 -0
  256. package/src/settings.ts +147 -0
  257. package/src/test-helpers/ClassMirrorBuilder.ts +1 -14
  258. package/src/test-helpers/FieldMirrorBuilder.ts +1 -1
  259. package/src/test-helpers/MethodMirrorBuilder.ts +6 -46
  260. package/src/test-helpers/SettingsBuilder.ts +4 -1
  261. package/src/transpiler/factory.ts +33 -0
  262. package/src/transpiler/file-container.ts +13 -0
  263. package/src/transpiler/generator-choices.ts +1 -0
  264. package/src/transpiler/markdown/class-file-generatorHelper.ts +58 -0
  265. package/src/transpiler/markdown/docsify/docsify-docs-processor.ts +12 -0
  266. package/src/transpiler/markdown/jekyll/jekyll-docsProcessor.ts +50 -0
  267. package/src/transpiler/markdown/markdown-transpiler-base.ts +28 -0
  268. package/src/transpiler/markdown/plain-markdown/plain-docsProcessor.ts +12 -0
  269. package/src/{core → transpiler}/openapi/__tests__/open-api-docs-processor.spec.ts +1 -1
  270. package/src/{core → transpiler}/openapi/open-api-docs-processor.ts +10 -9
  271. package/src/{core → transpiler}/openapi/parsers/Builder.ts +3 -3
  272. package/src/{core → transpiler}/openapi/parsers/MethodParser.ts +6 -6
  273. package/src/{core → transpiler}/openapi/parsers/ParameterObjectBuilder.ts +2 -2
  274. package/src/{core → transpiler}/openapi/parsers/ReferenceBuilder.ts +6 -7
  275. package/src/{core → transpiler}/openapi/parsers/RequestBodyBuilder.ts +2 -2
  276. package/src/{core → transpiler}/openapi/parsers/ResponsesBuilder.ts +2 -2
  277. package/src/{core → transpiler}/openapi/parsers/__tests__/MethodParser.spec.ts +1 -1
  278. package/src/{core → transpiler}/openapi/parsers/__tests__/ParameterObjectBuilder.spec.ts +2 -2
  279. package/src/{core → transpiler}/openapi/parsers/__tests__/ReferenceBuilder.spec.ts +2 -2
  280. package/src/{core → transpiler}/openapi/parsers/__tests__/RequestBodyBuilder.spec.ts +2 -2
  281. package/src/{core → transpiler}/openapi/parsers/__tests__/ResponsesBuilder.spec.ts +1 -1
  282. package/src/transpiler/processor-type-transpiler.ts +18 -0
  283. package/src/{core/openapi → transpiler}/transpiler.ts +6 -2
  284. package/src/util/error-logger.ts +4 -4
  285. package/src/util/logger.ts +6 -6
  286. package/src/util/string-utils.ts +4 -0
  287. package/tsconfig.json +3 -8
  288. package/.github/workflows/ci.yaml +0 -22
  289. package/__mocks__/chalk.js +0 -12
  290. package/__mocks__/log-update.js +0 -6
  291. package/dist/cli/generate.js +0 -2964
  292. package/dist/defaults-DUwru49Q.js +0 -12
  293. package/dist/defaults-SH0Rsi5E.js +0 -11
  294. package/dist/index.d.ts +0 -100
  295. package/dist/index.js +0 -36
  296. package/eslint.config.mjs +0 -10
  297. package/examples/plain-markdown/.forceignore +0 -12
  298. package/examples/plain-markdown/config/project-scratch-def.json +0 -5
  299. package/examples/plain-markdown/docs/index.md +0 -109
  300. package/examples/plain-markdown/docs/miscellaneous/BaseClass.md +0 -16
  301. package/examples/plain-markdown/docs/miscellaneous/MultiInheritanceClass.md +0 -72
  302. package/examples/plain-markdown/docs/miscellaneous/ParentInterface.md +0 -15
  303. package/examples/plain-markdown/docs/miscellaneous/ReferencedEnum.md +0 -8
  304. package/examples/plain-markdown/docs/miscellaneous/SampleException.md +0 -24
  305. package/examples/plain-markdown/docs/miscellaneous/SampleInterface.md +0 -112
  306. package/examples/plain-markdown/docs/miscellaneous/Url.md +0 -309
  307. package/examples/plain-markdown/docs/sample-enums/SampleEnum.md +0 -36
  308. package/examples/plain-markdown/docs/samplegroup/SampleClass.md +0 -170
  309. package/examples/plain-markdown/force-app/classes/BaseClass.cls +0 -3
  310. package/examples/plain-markdown/force-app/classes/MultiInheritanceClass.cls +0 -1
  311. package/examples/plain-markdown/force-app/classes/ParentInterface.cls +0 -3
  312. package/examples/plain-markdown/force-app/classes/ReferencedEnum.cls +0 -3
  313. package/examples/plain-markdown/force-app/classes/SampleClass.cls +0 -72
  314. package/examples/plain-markdown/force-app/classes/SampleEnum.cls +0 -30
  315. package/examples/plain-markdown/force-app/classes/SampleException.cls +0 -17
  316. package/examples/plain-markdown/force-app/classes/SampleInterface.cls +0 -46
  317. package/examples/plain-markdown/force-app/classes/Url.cls +0 -194
  318. package/examples/plain-markdown/package-lock.json +0 -665
  319. package/examples/plain-markdown/package.json +0 -20
  320. package/examples/plain-markdown/sfdx-project.json +0 -12
  321. package/examples/vitepress/.forceignore +0 -12
  322. package/examples/vitepress/apexdocs.config.ts +0 -106
  323. package/examples/vitepress/config/project-scratch-def.json +0 -13
  324. package/examples/vitepress/docs/.vitepress/cache/deps/@theme_index.js +0 -259
  325. package/examples/vitepress/docs/.vitepress/cache/deps/@theme_index.js.map +0 -7
  326. package/examples/vitepress/docs/.vitepress/cache/deps/_metadata.json +0 -40
  327. package/examples/vitepress/docs/.vitepress/cache/deps/chunk-574YRH25.js +0 -11474
  328. package/examples/vitepress/docs/.vitepress/cache/deps/chunk-574YRH25.js.map +0 -7
  329. package/examples/vitepress/docs/.vitepress/cache/deps/chunk-E5DZZB2I.js +0 -9172
  330. package/examples/vitepress/docs/.vitepress/cache/deps/chunk-E5DZZB2I.js.map +0 -7
  331. package/examples/vitepress/docs/.vitepress/cache/deps/package.json +0 -3
  332. package/examples/vitepress/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js +0 -4339
  333. package/examples/vitepress/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map +0 -7
  334. package/examples/vitepress/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js +0 -567
  335. package/examples/vitepress/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js.map +0 -7
  336. package/examples/vitepress/docs/.vitepress/cache/deps/vue.js +0 -323
  337. package/examples/vitepress/docs/.vitepress/cache/deps/vue.js.map +0 -7
  338. package/examples/vitepress/docs/.vitepress/config.mts +0 -21
  339. package/examples/vitepress/docs/.vitepress/sidebar.json +0 -119
  340. package/examples/vitepress/docs/api-examples.md +0 -49
  341. package/examples/vitepress/docs/index-frontmatter.md +0 -16
  342. package/examples/vitepress/docs/index.md +0 -56
  343. package/examples/vitepress/docs/markdown-examples.md +0 -85
  344. package/examples/vitepress/docs/miscellaneous/BaseClass.md +0 -20
  345. package/examples/vitepress/docs/miscellaneous/MultiInheritanceClass.md +0 -76
  346. package/examples/vitepress/docs/miscellaneous/ParentInterface.md +0 -19
  347. package/examples/vitepress/docs/miscellaneous/ReferencedEnum.md +0 -15
  348. package/examples/vitepress/docs/miscellaneous/SampleException.md +0 -28
  349. package/examples/vitepress/docs/miscellaneous/SampleInterface.md +0 -116
  350. package/examples/vitepress/docs/miscellaneous/Url.md +0 -317
  351. package/examples/vitepress/docs/sample-enums/SampleEnum.md +0 -40
  352. package/examples/vitepress/docs/samplegroup/SampleClass.md +0 -174
  353. package/examples/vitepress/force-app/main/default/classes/BaseClass.cls +0 -3
  354. package/examples/vitepress/force-app/main/default/classes/MultiInheritanceClass.cls +0 -1
  355. package/examples/vitepress/force-app/main/default/classes/ParentInterface.cls +0 -3
  356. package/examples/vitepress/force-app/main/default/classes/ReferencedEnum.cls +0 -5
  357. package/examples/vitepress/force-app/main/default/classes/SampleClass.cls +0 -72
  358. package/examples/vitepress/force-app/main/default/classes/SampleEnum.cls +0 -30
  359. package/examples/vitepress/force-app/main/default/classes/SampleException.cls +0 -17
  360. package/examples/vitepress/force-app/main/default/classes/SampleInterface.cls +0 -46
  361. package/examples/vitepress/force-app/main/default/classes/Url.cls +0 -198
  362. package/examples/vitepress/package-lock.json +0 -2574
  363. package/examples/vitepress/package.json +0 -18
  364. package/examples/vitepress/sfdx-project.json +0 -12
  365. package/jest.d.ts +0 -7
  366. package/src/application/__tests__/apex-file-reader.spec.ts +0 -104
  367. package/src/application/apex-file-reader.ts +0 -42
  368. package/src/application/file-writer.ts +0 -21
  369. package/src/application/generators/markdown.ts +0 -58
  370. package/src/application/generators/openapi.ts +0 -56
  371. package/src/cli/args.ts +0 -43
  372. package/src/cli/commands/markdown.ts +0 -58
  373. package/src/core/manifest.ts +0 -90
  374. package/src/core/markdown/__test__/expect-extensions.ts +0 -32
  375. package/src/core/markdown/__test__/generating-class-docs.spec.ts +0 -735
  376. package/src/core/markdown/__test__/generating-enum-docs.spec.ts +0 -385
  377. package/src/core/markdown/__test__/generating-interface-docs.spec.ts +0 -461
  378. package/src/core/markdown/__test__/generating-reference-guide.spec.ts +0 -180
  379. package/src/core/markdown/__test__/inheritance-chain.test.ts +0 -54
  380. package/src/core/markdown/__test__/test-helpers.ts +0 -22
  381. package/src/core/markdown/adapters/__tests__/documentables.spec.ts +0 -109
  382. package/src/core/markdown/adapters/__tests__/interface-adapter.spec.ts +0 -147
  383. package/src/core/markdown/adapters/__tests__/references.spec.ts +0 -136
  384. package/src/core/markdown/adapters/apex-types.ts +0 -238
  385. package/src/core/markdown/adapters/documentables.ts +0 -116
  386. package/src/core/markdown/adapters/fields-and-properties.ts +0 -45
  387. package/src/core/markdown/adapters/inline.ts +0 -143
  388. package/src/core/markdown/adapters/methods-and-constructors.ts +0 -133
  389. package/src/core/markdown/adapters/reference-guide.ts +0 -35
  390. package/src/core/markdown/adapters/renderable-bundle.ts +0 -68
  391. package/src/core/markdown/adapters/renderable-to-page-data.ts +0 -89
  392. package/src/core/markdown/adapters/type-utils.ts +0 -13
  393. package/src/core/markdown/adapters/types.d.ts +0 -180
  394. package/src/core/markdown/generate-docs.ts +0 -215
  395. package/src/core/markdown/reflection/error-handling.ts +0 -37
  396. package/src/core/markdown/reflection/filter-scope.ts +0 -13
  397. package/src/core/markdown/reflection/inheritance-chain-expanion.ts +0 -22
  398. package/src/core/markdown/reflection/inheritance-chain.ts +0 -23
  399. package/src/core/markdown/reflection/inherited-member-expansion.ts +0 -105
  400. package/src/core/markdown/reflection/reflect-source.ts +0 -45
  401. package/src/core/markdown/reflection/sort-members.ts +0 -59
  402. package/src/core/markdown/templates/class-template.ts +0 -75
  403. package/src/core/markdown/templates/constructors-partial-template.ts +0 -32
  404. package/src/core/markdown/templates/documentable-partial-template.ts +0 -26
  405. package/src/core/markdown/templates/enum-template.ts +0 -12
  406. package/src/core/markdown/templates/fieldsPartialTemplate.ts +0 -23
  407. package/src/core/markdown/templates/grouped-members-partial-template.ts +0 -6
  408. package/src/core/markdown/templates/hookable.ts +0 -7
  409. package/src/core/markdown/templates/interface-template.ts +0 -16
  410. package/src/core/markdown/templates/methods-partial-template.ts +0 -43
  411. package/src/core/markdown/templates/reference-guide.ts +0 -14
  412. package/src/core/markdown/templates/template.ts +0 -114
  413. package/src/core/markdown/templates/type-doc-partial.ts +0 -27
  414. package/src/core/markdown/utils.ts +0 -3
  415. package/src/core/openapi/file-container.ts +0 -13
  416. package/src/core/openapi/openapi-type-file.ts +0 -12
  417. package/src/core/parse-apex-metadata.ts +0 -14
  418. package/src/core/settings.ts +0 -56
  419. package/src/core/shared/types.d.ts +0 -130
  420. package/src/core/shared/utils.ts +0 -5
  421. package/src/defaults.ts +0 -8
  422. package/src/test-helpers/InterfaceMirrorBuilder.ts +0 -39
  423. package/src/util/fp.ts +0 -3
  424. /package/src/{core/__test__ → model/__tests__}/manifest.spec.ts +0 -0
  425. /package/src/{core/openapi → model}/apex-type-wrappers/ClassMirrorWrapper.ts +0 -0
  426. /package/src/{core/openapi → model}/apex-type-wrappers/MethodMirrorWrapper.ts +0 -0
  427. /package/src/{core → model}/openapi/__tests__/open-api.spec.ts +0 -0
  428. /package/src/{core → model}/openapi/apex-doc-types.ts +0 -0
  429. /package/src/{core → model}/openapi/open-api.ts +0 -0
  430. /package/src/{application → service}/file-system.ts +0 -0
@@ -1,116 +0,0 @@
1
- import { CustomTag, RenderableDocumentation, RenderableContent } from './types';
2
- import { Describable, Documentable, GetRenderableContentByTypeName } from './types';
3
- import { replaceInlineReferences } from './inline';
4
- import { isEmptyLine } from './type-utils';
5
-
6
- export function adaptDescribable(
7
- describable: Describable,
8
- linkGenerator: GetRenderableContentByTypeName,
9
- ): {
10
- description?: RenderableContent[];
11
- } {
12
- return {
13
- description: describableToRenderableContent(describable, linkGenerator),
14
- };
15
- }
16
-
17
- export function describableToRenderableContent(
18
- describable: Describable,
19
- linkGenerator: GetRenderableContentByTypeName,
20
- ): RenderableContent[] | undefined {
21
- if (!describable) {
22
- return;
23
- }
24
-
25
- let content: RenderableContent[] = [];
26
- for (let i = 0; i < describable.length; i++) {
27
- const line = describable[i];
28
- // The language might or might not be present after ```
29
- const codeBlockMatch = line.match(/^```([a-zA-Z]*)$/);
30
- if (codeBlockMatch) {
31
- // Check if the language is present, if not, fallback to "apex"
32
- const language = codeBlockMatch[1] || 'apex';
33
- const codeBlockLines: string[] = [];
34
- i++;
35
- while (i < describable.length) {
36
- const currentLine = describable[i];
37
- if (currentLine.trim() === '```') {
38
- break;
39
- }
40
- codeBlockLines.push(currentLine);
41
- i++;
42
- }
43
- content = [
44
- ...content,
45
- {
46
- __type: 'code-block',
47
- language,
48
- content: codeBlockLines,
49
- },
50
- { __type: 'empty-line' },
51
- ];
52
- continue;
53
- }
54
-
55
- content = [
56
- ...content,
57
- ...replaceInlineReferences(line, linkGenerator),
58
- {
59
- __type: 'empty-line',
60
- },
61
- ];
62
- }
63
- return (
64
- content
65
- // If the last element is an empty line, remove it
66
- .filter((line, index, lines) => !(isEmptyLine(line) && index === lines.length - 1))
67
- );
68
- }
69
-
70
- export function adaptDocumentable(
71
- documentable: Documentable,
72
- linkGenerator: GetRenderableContentByTypeName,
73
- subHeadingLevel: number,
74
- ): RenderableDocumentation {
75
- function extractCustomTags(type: Documentable): CustomTag[] {
76
- const baseTags = ['description', 'group', 'author', 'date', 'see', 'example', 'throws', 'exception'];
77
-
78
- return (
79
- type.docComment?.annotations
80
- .filter((currentAnnotation) => !baseTags.includes(currentAnnotation.name.toLowerCase()))
81
- .map<CustomTag>((currentAnnotation) => ({
82
- ...adaptDescribable(currentAnnotation.bodyLines, linkGenerator),
83
- name: currentAnnotation.name,
84
- })) ?? []
85
- );
86
- }
87
-
88
- function extractAnnotationBody(type: Documentable, annotationName: string): string | undefined {
89
- return type.docComment?.annotations.find(
90
- (currentAnnotation) => currentAnnotation.name.toLowerCase() === annotationName,
91
- )?.body;
92
- }
93
-
94
- function extractSeeAnnotations(type: Documentable): string[] {
95
- return (
96
- type.docComment?.annotations
97
- .filter((currentAnnotation) => currentAnnotation.name.toLowerCase() === 'see')
98
- .map((currentAnnotation) => currentAnnotation.body) ?? []
99
- );
100
- }
101
-
102
- return {
103
- ...adaptDescribable(documentable.docComment?.descriptionLines, linkGenerator),
104
- annotations: documentable.annotations.map((annotation) => annotation.type.toUpperCase()),
105
- customTags: extractCustomTags(documentable),
106
- example: {
107
- headingLevel: subHeadingLevel,
108
- heading: 'Example',
109
- value: describableToRenderableContent(documentable.docComment?.exampleAnnotation?.bodyLines, linkGenerator),
110
- },
111
- group: extractAnnotationBody(documentable, 'group'),
112
- author: extractAnnotationBody(documentable, 'author'),
113
- date: extractAnnotationBody(documentable, 'date'),
114
- sees: extractSeeAnnotations(documentable).map(linkGenerator),
115
- };
116
- }
@@ -1,45 +0,0 @@
1
- import {
2
- CodeBlock,
3
- FieldMirrorWithInheritance,
4
- PropertyMirrorWithInheritance,
5
- RenderableField,
6
- GetRenderableContentByTypeName,
7
- } from './types';
8
- import { adaptDocumentable } from './documentables';
9
-
10
- export function adaptFieldOrProperty(
11
- field: FieldMirrorWithInheritance | PropertyMirrorWithInheritance,
12
- linkGenerator: GetRenderableContentByTypeName,
13
- baseHeadingLevel: number,
14
- ): RenderableField {
15
- function buildSignature(): CodeBlock {
16
- const { access_modifier, name } = field;
17
- const memberModifiers = field.memberModifiers.join(' ');
18
- const codeContents = `${access_modifier} ${memberModifiers} ${name}`
19
- // remove double spaces
20
- .replace(/ {2}/g, ' ');
21
- return {
22
- __type: 'code-block',
23
- language: 'apex',
24
- content: [codeContents],
25
- };
26
- }
27
-
28
- return {
29
- headingLevel: baseHeadingLevel,
30
- doc: adaptDocumentable(field, linkGenerator, baseHeadingLevel + 1),
31
- heading: field.name,
32
- type: {
33
- headingLevel: baseHeadingLevel + 1,
34
- heading: 'Type',
35
- value: linkGenerator(field.typeReference.rawDeclaration),
36
- },
37
- inherited: field.inherited,
38
- accessModifier: field.access_modifier,
39
- signature: {
40
- headingLevel: baseHeadingLevel + 1,
41
- heading: 'Signature',
42
- value: buildSignature(),
43
- },
44
- };
45
- }
@@ -1,143 +0,0 @@
1
- import { InlineCode, Link, RenderableContent } from './types';
2
- import { pipe } from 'fp-ts/function';
3
- import { apply } from '#utils/fp';
4
-
5
- type InlineRenderableContent = InlineCode | Link | string;
6
-
7
- type ToInlineRenderableContent = (typeName: string) => InlineRenderableContent;
8
-
9
- function defaultGetEmailByReference(email: string): Link {
10
- return {
11
- __type: 'link',
12
- title: email,
13
- url: `mailto:${email}`,
14
- };
15
- }
16
-
17
- export function replaceInlineReferences(
18
- text: string,
19
- linkReplacer: ToInlineRenderableContent,
20
- emailReplacer: ToInlineRenderableContent = defaultGetEmailByReference,
21
- ): RenderableContent[] {
22
- const inlineLinks = apply(replaceInlineLinks, linkReplacer);
23
- const inlineEmails = apply(replaceInlineEmails, emailReplacer);
24
-
25
- return pipe(inlineCode([text]), inlineLinks, inlineEmails);
26
- }
27
-
28
- function inlineCode(renderableContents: RenderableContent[]): RenderableContent[] {
29
- return renderableContents.flatMap((renderableContent) => inlineCodeContent(renderableContent));
30
- }
31
-
32
- // Replace string that is inline code with InlineCode
33
- // Inline code is any text that backticks surround
34
- function inlineCodeContent(renderableContent: RenderableContent): RenderableContent[] {
35
- if (typeof renderableContent !== 'string') {
36
- return [renderableContent];
37
- }
38
-
39
- function inlineCodeLink(text: string): InlineCode {
40
- return {
41
- __type: 'inline-code',
42
- content: text,
43
- };
44
- }
45
-
46
- const text = renderableContent;
47
-
48
- // Matches any text surrounded by backticks
49
- const codeFormatRegEx = '`([^`]*)`';
50
- const matches = match(codeFormatRegEx, text);
51
- return createRenderableContents(matches, text, inlineCodeLink);
52
- }
53
-
54
- function replaceInlineLinks(
55
- getLinkByTypeName: ToInlineRenderableContent,
56
- renderableContents: RenderableContent[],
57
- ): RenderableContent[] {
58
- return renderableContents.flatMap((renderableContent) => inlineLinkContent(renderableContent, getLinkByTypeName));
59
- }
60
-
61
- function inlineLinkContent(
62
- renderableContent: RenderableContent,
63
- getLinkByTypeName: ToInlineRenderableContent,
64
- ): RenderableContent[] {
65
- if (typeof renderableContent !== 'string') {
66
- return [renderableContent];
67
- }
68
-
69
- const text = renderableContent;
70
-
71
- // Matches either `<<ClassName>>` or `{@link ClassName}`
72
- const linkFormatRegEx = '{@link (.*?)}|<<([^>]+)>>';
73
- const matches = match(linkFormatRegEx, text);
74
- return createRenderableContents(matches, text, getLinkByTypeName);
75
- }
76
-
77
- export function replaceInlineEmails(
78
- getLinkByTypeName: ToInlineRenderableContent,
79
- renderableContents: RenderableContent[],
80
- ): RenderableContent[] {
81
- return renderableContents.flatMap((renderableContent) => inlineEmailContent(renderableContent, getLinkByTypeName));
82
- }
83
-
84
- function inlineEmailContent(
85
- renderableContent: RenderableContent,
86
- getLinkByTypeName: ToInlineRenderableContent,
87
- ): RenderableContent[] {
88
- if (typeof renderableContent !== 'string') {
89
- return [renderableContent];
90
- }
91
-
92
- const text = renderableContent;
93
-
94
- // Parsing references using the format '{@email email}'
95
- const linkFormatRegEx = '{@email (.*?)}';
96
- const matches = match(linkFormatRegEx, text);
97
- return createRenderableContents(matches, text, getLinkByTypeName);
98
- }
99
-
100
- function match(regex: string, text: string) {
101
- const expression = new RegExp(regex, 'gi');
102
- let match;
103
- const matches = [];
104
-
105
- do {
106
- match = expression.exec(text);
107
- if (match) {
108
- matches.push(match);
109
- }
110
- } while (match);
111
-
112
- return matches;
113
- }
114
-
115
- function createRenderableContents(matches: RegExpExecArray[], text: string, linker: ToInlineRenderableContent) {
116
- if (matches.length === 0) {
117
- return [text];
118
- }
119
-
120
- const result: RenderableContent[] = [];
121
- let lastIndex = 0;
122
- for (const match of matches) {
123
- const index = match.index;
124
- const length = match[0].length;
125
-
126
- // loop through the matches (skip the first one, which is the full match)
127
- // until we find the first capturing group that has a value
128
- const capturedGroup = match.slice(1).find((group) => group);
129
- if (!capturedGroup) {
130
- continue;
131
- }
132
- result.push(text.slice(lastIndex, index));
133
- result.push(linker(capturedGroup));
134
-
135
- lastIndex = index + length;
136
- }
137
-
138
- if (lastIndex < text.length) {
139
- result.push(text.slice(lastIndex));
140
- }
141
-
142
- return result;
143
- }
@@ -1,133 +0,0 @@
1
- import { ConstructorMirror, MethodMirror, ParameterMirror, ThrowsAnnotation } from '@cparra/apex-reflection';
2
- import {
3
- RenderableConstructor,
4
- RenderableMethod,
5
- MethodMirrorWithInheritance,
6
- CodeBlock,
7
- GetRenderableContentByTypeName,
8
- } from './types';
9
- import { adaptDescribable, adaptDocumentable } from './documentables';
10
- import { Documentable } from './types';
11
-
12
- export function adaptMethod(
13
- method: MethodMirror,
14
- linkGenerator: GetRenderableContentByTypeName,
15
- baseHeadingLevel: number,
16
- ): RenderableMethod {
17
- function buildTitle(method: MethodMirrorWithInheritance): string {
18
- const { name, parameters } = method;
19
- const parametersString = parameters.map((param) => param.name).join(', ');
20
- return `${name}(${parametersString})`;
21
- }
22
-
23
- function buildSignature(method: MethodMirrorWithInheritance): CodeBlock {
24
- const { access_modifier, typeReference, name, memberModifiers } = method;
25
- const parameters = method.parameters
26
- .map((param) => `${param.typeReference.rawDeclaration} ${param.name}`)
27
- .join(', ');
28
- const members = memberModifiers.length > 0 ? `${memberModifiers.join(' ')} ` : '';
29
- return {
30
- __type: 'code-block',
31
- language: 'apex',
32
- content: [`${access_modifier} ${members}${typeReference.rawDeclaration} ${name}(${parameters})`],
33
- };
34
- }
35
-
36
- return {
37
- headingLevel: baseHeadingLevel,
38
- doc: adaptDocumentable(method, linkGenerator, baseHeadingLevel + 1),
39
- heading: buildTitle(method as MethodMirrorWithInheritance),
40
- signature: {
41
- headingLevel: baseHeadingLevel + 1,
42
- heading: 'Signature',
43
- value: buildSignature(method as MethodMirrorWithInheritance),
44
- },
45
- returnType: {
46
- headingLevel: baseHeadingLevel + 1,
47
- heading: 'Return Type',
48
- value: {
49
- ...adaptDescribable(method.docComment?.returnAnnotation?.bodyLines, linkGenerator),
50
- type: linkGenerator(method.typeReference.rawDeclaration),
51
- },
52
- },
53
- throws: {
54
- headingLevel: baseHeadingLevel + 1,
55
- heading: 'Throws',
56
- value: method.docComment?.throwsAnnotations.map((thrown) => mapThrows(thrown, linkGenerator)),
57
- },
58
- parameters: {
59
- headingLevel: baseHeadingLevel + 1,
60
- heading: 'Parameters',
61
- value: method.parameters.map((param) => mapParameters(method, param, linkGenerator)),
62
- },
63
- inherited: (method as MethodMirrorWithInheritance).inherited,
64
- };
65
- }
66
-
67
- export function adaptConstructor(
68
- typeName: string,
69
- constructor: ConstructorMirror,
70
- linkGenerator: GetRenderableContentByTypeName,
71
- baseHeadingLevel: number,
72
- ): RenderableConstructor {
73
- function buildTitle(name: string, constructor: ConstructorMirror): string {
74
- const { parameters } = constructor;
75
- const parametersString = parameters.map((param) => param.name).join(', ');
76
- return `${name}(${parametersString})`;
77
- }
78
-
79
- function buildSignature(name: string, constructor: ConstructorMirror): CodeBlock {
80
- const { access_modifier } = constructor;
81
- const parameters = constructor.parameters
82
- .map((param) => `${param.typeReference.rawDeclaration} ${param.name}`)
83
- .join(', ');
84
- return {
85
- __type: 'code-block',
86
- language: 'apex',
87
- content: [`${access_modifier} ${name}(${parameters})`],
88
- };
89
- }
90
-
91
- return {
92
- doc: adaptDocumentable(constructor, linkGenerator, baseHeadingLevel + 1),
93
- headingLevel: baseHeadingLevel,
94
- heading: buildTitle(typeName, constructor),
95
- signature: {
96
- headingLevel: baseHeadingLevel + 1,
97
- heading: 'Signature',
98
- value: buildSignature(typeName, constructor),
99
- },
100
- parameters: {
101
- headingLevel: baseHeadingLevel + 1,
102
- heading: 'Parameters',
103
- value: constructor.parameters.map((param) => mapParameters(constructor, param, linkGenerator)),
104
- },
105
- throws: {
106
- headingLevel: baseHeadingLevel + 1,
107
- heading: 'Throws',
108
- value: constructor.docComment?.throwsAnnotations.map((thrown) => mapThrows(thrown, linkGenerator)),
109
- },
110
- };
111
- }
112
-
113
- function mapParameters(
114
- documentable: Documentable,
115
- param: ParameterMirror,
116
- linkGenerator: GetRenderableContentByTypeName,
117
- ) {
118
- const paramAnnotation = documentable.docComment?.paramAnnotations.find(
119
- (pa) => pa.paramName.toLowerCase() === param.name.toLowerCase(),
120
- );
121
- return {
122
- ...adaptDescribable(paramAnnotation?.bodyLines, linkGenerator),
123
- name: param.name,
124
- type: linkGenerator(param.typeReference.rawDeclaration),
125
- };
126
- }
127
-
128
- function mapThrows(thrown: ThrowsAnnotation, linkGenerator: GetRenderableContentByTypeName) {
129
- return {
130
- ...adaptDescribable(thrown.bodyLines, linkGenerator),
131
- type: linkGenerator(thrown.exceptionName),
132
- };
133
- }
@@ -1,35 +0,0 @@
1
- import { MarkdownGeneratorConfig } from '../generate-docs';
2
- import { DocPageReference, ParsedFile } from '../../shared/types';
3
- import { Type } from '@cparra/apex-reflection';
4
-
5
- export function parsedFilesToReferenceGuide(
6
- config: MarkdownGeneratorConfig,
7
- parsedFiles: ParsedFile[],
8
- ): Record<string, DocPageReference> {
9
- return parsedFiles.reduce<Record<string, DocPageReference>>((acc, parsedFile) => {
10
- acc[parsedFile.type.name] = parsedFileToDocPageReference(config, parsedFile);
11
- return acc;
12
- }, {});
13
- }
14
-
15
- function parsedFileToDocPageReference(config: MarkdownGeneratorConfig, parsedFile: ParsedFile): DocPageReference {
16
- return {
17
- source: parsedFile.source,
18
- displayName: parsedFile.type.name,
19
- pathFromRoot: `${slugify(getTypeGroup(parsedFile.type, config))}/${parsedFile.type.name}.md`,
20
- };
21
- }
22
-
23
- function getTypeGroup(type: Type, config: MarkdownGeneratorConfig): string {
24
- const groupAnnotation = type.docComment?.annotations.find((annotation) => annotation.name.toLowerCase() === 'group');
25
- return groupAnnotation?.body ?? config.defaultGroupName;
26
- }
27
-
28
- function slugify(text: string): string {
29
- return text
30
- .toLowerCase()
31
- .replace(/[^a-z0-9\s-]/g, '') // Remove non-alphanumeric characters except spaces and hyphens
32
- .trim()
33
- .replace(/\s+/g, '-') // Replace spaces with hyphens
34
- .replace(/-+/g, '-'); // Replace multiple hyphens with a single hyphen
35
- }
@@ -1,68 +0,0 @@
1
- import { DocPageReference, ParsedFile } from '../../shared/types';
2
- import { Link, ReferenceGuideReference, Renderable, RenderableBundle, StringOrLink } from './types';
3
- import { typeToRenderable } from './apex-types';
4
- import { adaptDescribable } from './documentables';
5
- import { MarkdownGeneratorConfig } from '../generate-docs';
6
- import { apply } from '#utils/fp';
7
- import { Type } from '@cparra/apex-reflection';
8
-
9
- export function parsedFilesToRenderableBundle(
10
- config: MarkdownGeneratorConfig,
11
- parsedFiles: ParsedFile[],
12
- references: Record<string, DocPageReference>,
13
- ): RenderableBundle {
14
- const referenceFinder = apply(linkGenerator, references);
15
-
16
- function toReferenceGuide(parsedFiles: ParsedFile[]): Record<string, ReferenceGuideReference[]> {
17
- return parsedFiles.reduce<Record<string, ReferenceGuideReference[]>>(
18
- addToReferenceGuide(referenceFinder, config, references),
19
- {},
20
- );
21
- }
22
-
23
- function toRenderables(parsedFiles: ParsedFile[]): Renderable[] {
24
- return parsedFiles.reduce<Renderable[]>((acc, parsedFile) => {
25
- const renderable = typeToRenderable(parsedFile, referenceFinder, config);
26
- acc.push(renderable);
27
- return acc;
28
- }, []);
29
- }
30
-
31
- return {
32
- referencesByGroup: toReferenceGuide(parsedFiles),
33
- renderables: toRenderables(parsedFiles),
34
- };
35
- }
36
-
37
- function addToReferenceGuide(
38
- findLinkFromHome: (referenceName: string) => string | Link,
39
- config: MarkdownGeneratorConfig,
40
- references: Record<string, DocPageReference>,
41
- ) {
42
- return (acc: Record<string, ReferenceGuideReference[]>, parsedFile: ParsedFile) => {
43
- const group: string = getTypeGroup(parsedFile.type, config);
44
- if (!acc[group]) {
45
- acc[group] = [];
46
- }
47
- acc[group].push({
48
- reference: references[parsedFile.type.name],
49
- title: findLinkFromHome(parsedFile.type.name) as Link,
50
- description: adaptDescribable(parsedFile.type.docComment?.descriptionLines, findLinkFromHome).description ?? null,
51
- });
52
-
53
- return acc;
54
- };
55
- }
56
-
57
- const linkGenerator = (references: Record<string, DocPageReference>, referenceName: string): StringOrLink => {
58
- const reference: DocPageReference | undefined = references[referenceName];
59
- return reference
60
- ? // Starting the path with a "/" will ensure the link will always be relative to the root of the site.
61
- { __type: 'link', title: reference.displayName, url: `/${reference.pathFromRoot}` }
62
- : referenceName;
63
- };
64
-
65
- function getTypeGroup(type: Type, config: MarkdownGeneratorConfig): string {
66
- const groupAnnotation = type.docComment?.annotations.find((annotation) => annotation.name.toLowerCase() === 'group');
67
- return groupAnnotation?.body ?? config.defaultGroupName;
68
- }
@@ -1,89 +0,0 @@
1
- import { ReferenceGuideReference, Renderable, RenderableBundle, RenderableEnum } from './types';
2
- import { DocPageData, DocumentationBundle } from '../../shared/types';
3
- import { pipe } from 'fp-ts/function';
4
- import { CompilationRequest, Template } from '../templates/template';
5
- import { enumMarkdownTemplate } from '../templates/enum-template';
6
- import { interfaceMarkdownTemplate } from '../templates/interface-template';
7
- import { classMarkdownTemplate } from '../templates/class-template';
8
- import { defaults } from '../../../defaults';
9
-
10
- export const convertToDocumentationBundle = (
11
- referenceGuideTemplate: string,
12
- { referencesByGroup, renderables }: RenderableBundle,
13
- ): DocumentationBundle => ({
14
- referenceGuide: {
15
- frontmatter: null,
16
- content: referencesToReferenceGuideContent(referencesByGroup, referenceGuideTemplate),
17
- filePath: 'index.md',
18
- },
19
- docs: renderables.map((renderable: Renderable) =>
20
- renderableToPageData(Object.values(referencesByGroup).flat(), renderable),
21
- ),
22
- });
23
-
24
- function referencesToReferenceGuideContent(
25
- references: { [key: string]: ReferenceGuideReference[] },
26
- template: string,
27
- ): string {
28
- function alphabetizeReferences(references: { [key: string]: ReferenceGuideReference[] }): {
29
- [key: string]: ReferenceGuideReference[];
30
- } {
31
- return Object.keys(references)
32
- .sort((a, b) => a.localeCompare(b))
33
- .reduce<{ [key: string]: ReferenceGuideReference[] }>((acc, key) => {
34
- acc[key] = references[key].sort((a, b) => a.title.toString().localeCompare(b.title.toString()));
35
- return acc;
36
- }, {});
37
- }
38
-
39
- return pipe(references, alphabetizeReferences, (references) =>
40
- compile({
41
- template: template,
42
- source: references,
43
- }),
44
- );
45
- }
46
-
47
- function renderableToPageData(referenceGuideReference: ReferenceGuideReference[], renderable: Renderable): DocPageData {
48
- function buildDocOutput(renderable: Renderable, docContents: string): DocPageData {
49
- const reference: ReferenceGuideReference = referenceGuideReference.find(
50
- (ref) => ref.reference.source.name.toLowerCase() === renderable.name.toLowerCase(),
51
- )!;
52
-
53
- return {
54
- source: {
55
- filePath: renderable.filePath,
56
- name: renderable.name,
57
- type: renderable.type,
58
- },
59
- filePath: reference!.reference.pathFromRoot,
60
- frontmatter: null,
61
- content: docContents,
62
- group: renderable.doc.group ?? defaults.defaultGroupName,
63
- };
64
- }
65
-
66
- return pipe(renderable, resolveApexTypeTemplate, compile, (docContents) => buildDocOutput(renderable, docContents));
67
- }
68
-
69
- function resolveApexTypeTemplate(renderable: Renderable): CompilationRequest {
70
- function getTemplate(renderable: Renderable): string {
71
- switch (renderable.type) {
72
- case 'enum':
73
- return enumMarkdownTemplate;
74
- case 'interface':
75
- return interfaceMarkdownTemplate;
76
- case 'class':
77
- return classMarkdownTemplate;
78
- }
79
- }
80
-
81
- return {
82
- template: getTemplate(renderable),
83
- source: renderable as RenderableEnum,
84
- };
85
- }
86
-
87
- function compile(request: CompilationRequest): string {
88
- return Template.getInstance().compile(request);
89
- }
@@ -1,13 +0,0 @@
1
- import { CodeBlock, EmptyLine, InlineCode, RenderableContent } from './types';
2
-
3
- export function isEmptyLine(content: RenderableContent): content is EmptyLine {
4
- return Object.keys(content).includes('__type') && (content as { __type: string }).__type === 'empty-line';
5
- }
6
-
7
- export function isCodeBlock(content: RenderableContent): content is CodeBlock {
8
- return Object.keys(content).includes('__type') && (content as { __type: string }).__type === 'code-block';
9
- }
10
-
11
- export function isInlineCode(content: RenderableContent): content is InlineCode {
12
- return Object.keys(content).includes('__type') && (content as { __type: string }).__type === 'inline-code';
13
- }