@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,22 +0,0 @@
1
- import { UnparsedSourceFile } from '../../shared/types';
2
- import { generateDocs as gen, MarkdownGeneratorConfig } from '../generate-docs';
3
- import { referenceGuideTemplate } from '../templates/reference-guide';
4
-
5
- export function apexBundleFromRawString(raw: string, rawMetadata?: string): UnparsedSourceFile {
6
- return {
7
- filePath: 'test.cls',
8
- content: raw,
9
- metadataContent: rawMetadata ?? null,
10
- };
11
- }
12
-
13
- export function generateDocs(apexBundles: UnparsedSourceFile[], config?: Partial<MarkdownGeneratorConfig>) {
14
- return gen(apexBundles, {
15
- targetDir: 'target',
16
- scope: ['global', 'public'],
17
- defaultGroupName: 'Miscellaneous',
18
- sortMembersAlphabetically: true,
19
- referenceGuideTemplate: referenceGuideTemplate,
20
- ...config,
21
- });
22
- }
@@ -1,109 +0,0 @@
1
- import { adaptDescribable } from '../documentables';
2
-
3
- function linkGenerator(typeName: string) {
4
- return typeName;
5
- }
6
-
7
- describe('describable', () => {
8
- it('returns undefined if describable is undefined', () => {
9
- const result = adaptDescribable(undefined, linkGenerator);
10
-
11
- expect(result).toEqual({
12
- description: undefined,
13
- });
14
- });
15
-
16
- it('returns an empty array if describable is an empty array', () => {
17
- const result = adaptDescribable([], linkGenerator);
18
-
19
- expect(result).toEqual({
20
- description: [],
21
- });
22
- });
23
-
24
- it('returns a string if describable contains a string', () => {
25
- const describable = ['This is a test'];
26
-
27
- const result = adaptDescribable(describable, linkGenerator);
28
-
29
- expect(result).toEqual({
30
- description: ['This is a test'],
31
- });
32
- });
33
-
34
- it('separates strings with an empty line', () => {
35
- const describable = ['This is a test', 'This is another test'];
36
-
37
- const result = adaptDescribable(describable, linkGenerator);
38
-
39
- expect(result).toEqual({
40
- description: ['This is a test', { __type: 'empty-line' }, 'This is another test'],
41
- });
42
- });
43
-
44
- it('returns a code block if describable contains code', () => {
45
- const describable = ['```typescript', 'const a = 1;', '```'];
46
-
47
- const result = adaptDescribable(describable, linkGenerator);
48
-
49
- expect(result).toEqual({
50
- description: [
51
- {
52
- __type: 'code-block',
53
- language: 'typescript',
54
- content: ['const a = 1;'],
55
- },
56
- ],
57
- });
58
- });
59
-
60
- it('sets the code blocks language to apex if one is not provided', () => {
61
- const describable = ['```', 'const a = 1;', '```'];
62
-
63
- const result = adaptDescribable(describable, linkGenerator);
64
-
65
- expect(result).toEqual({
66
- description: [
67
- {
68
- __type: 'code-block',
69
- language: 'apex',
70
- content: ['const a = 1;'],
71
- },
72
- ],
73
- });
74
- });
75
-
76
- it('returns a code block followed by an empty line and then whatever content is in the describable', () => {
77
- const describable = ['```typescript', 'const a = 1;', '```', 'This is a test'];
78
-
79
- const result = adaptDescribable(describable, linkGenerator);
80
-
81
- expect(result).toEqual({
82
- description: [
83
- {
84
- __type: 'code-block',
85
- language: 'typescript',
86
- content: ['const a = 1;'],
87
- },
88
- { __type: 'empty-line' },
89
- 'This is a test',
90
- ],
91
- });
92
- });
93
-
94
- it('returns a code block even when there is no closing tag', () => {
95
- const describable = ['```typescript', 'const a = 1;'];
96
-
97
- const result = adaptDescribable(describable, linkGenerator);
98
-
99
- expect(result).toEqual({
100
- description: [
101
- {
102
- __type: 'code-block',
103
- language: 'typescript',
104
- content: ['const a = 1;'],
105
- },
106
- ],
107
- });
108
- });
109
- });
@@ -1,147 +0,0 @@
1
- import { typeToRenderable } from '../apex-types';
2
- import { InterfaceMirrorBuilder } from '../../../../test-helpers/InterfaceMirrorBuilder';
3
- import { AnnotationBuilder } from '../../../../test-helpers/AnnotationBuilder';
4
- import { MethodMirrorBuilder, ParameterBuilder } from '../../../../test-helpers/MethodMirrorBuilder';
5
- import { MarkdownGeneratorConfig } from '../../generate-docs';
6
-
7
- function linkGenerator(type: string): string {
8
- return type;
9
- }
10
-
11
- const defaultMarkdownGeneratorConfig: MarkdownGeneratorConfig = {
12
- targetDir: '',
13
- scope: ['global', 'public'],
14
- namespace: '',
15
- defaultGroupName: 'Miscellaneous',
16
- referenceGuideTemplate: '',
17
- sortMembersAlphabetically: false,
18
- };
19
-
20
- describe('Conversion from InterfaceMirror to InterfaceSource understandable by the templating engine', () => {
21
- it('converts the name', () => {
22
- const interfaceMirror = new InterfaceMirrorBuilder().withName('SampleInterface').build();
23
- const interfaceSource = typeToRenderable(
24
- {
25
- source: {
26
- filePath: '',
27
- type: 'interface',
28
- name: 'SampleInterface',
29
- },
30
- type: interfaceMirror,
31
- },
32
- linkGenerator,
33
- defaultMarkdownGeneratorConfig,
34
- );
35
-
36
- expect(interfaceSource.name).toBe('SampleInterface');
37
- });
38
-
39
- it('converts the access modifier', () => {
40
- const interfaceMirror = new InterfaceMirrorBuilder().build();
41
- const interfaceSource = typeToRenderable(
42
- {
43
- source: {
44
- filePath: '',
45
- type: 'interface',
46
- name: 'SampleInterface',
47
- },
48
- type: interfaceMirror,
49
- },
50
- linkGenerator,
51
- defaultMarkdownGeneratorConfig,
52
- );
53
-
54
- expect(interfaceSource.meta.accessModifier).toBe('public');
55
- });
56
-
57
- it('converts annotations', () => {
58
- const interfaceMirror = new InterfaceMirrorBuilder()
59
- .addAnnotation(new AnnotationBuilder().withName('MyAnnotation').build())
60
- .build();
61
- const interfaceSource = typeToRenderable(
62
- {
63
- source: {
64
- filePath: '',
65
- type: 'interface',
66
- name: 'SampleInterface',
67
- },
68
- type: interfaceMirror,
69
- },
70
- linkGenerator,
71
- defaultMarkdownGeneratorConfig,
72
- );
73
-
74
- expect(interfaceSource.doc.annotations).toEqual(['MYANNOTATION']);
75
- });
76
-
77
- it('converts method declarations. Method with no parameters', () => {
78
- const interfaceMirror = new InterfaceMirrorBuilder()
79
- .addMethod(
80
- new MethodMirrorBuilder()
81
- .withName('sampleMethod')
82
- .withTypeReference({
83
- type: 'String',
84
- rawDeclaration: 'String',
85
- })
86
- .build(),
87
- )
88
- .build();
89
-
90
- const interfaceSource = typeToRenderable(
91
- {
92
- source: {
93
- filePath: '',
94
- type: 'interface',
95
- name: 'SampleInterface',
96
- },
97
- type: interfaceMirror,
98
- },
99
- linkGenerator,
100
- defaultMarkdownGeneratorConfig,
101
- );
102
-
103
- expect(interfaceSource.methods.value).toHaveLength(1);
104
- expect(interfaceSource.methods.value[0].signature.value.content[0]).toBe('public String sampleMethod()');
105
- });
106
-
107
- it('converts method declarations. Method with parameters', () => {
108
- const interfaceMirror = new InterfaceMirrorBuilder()
109
- .addMethod(
110
- new MethodMirrorBuilder()
111
- .withName('sampleMethod')
112
- .withTypeReference({
113
- type: 'String',
114
- rawDeclaration: 'String',
115
- })
116
- .addParameter(
117
- new ParameterBuilder()
118
- .withName('param1')
119
- .withTypeReference({
120
- type: 'String',
121
- rawDeclaration: 'String',
122
- })
123
- .build(),
124
- )
125
- .build(),
126
- )
127
- .build();
128
-
129
- const interfaceSource = typeToRenderable(
130
- {
131
- source: {
132
- filePath: '',
133
- type: 'interface',
134
- name: 'SampleInterface',
135
- },
136
- type: interfaceMirror,
137
- },
138
- linkGenerator,
139
- defaultMarkdownGeneratorConfig,
140
- );
141
-
142
- expect(interfaceSource.methods.value).toHaveLength(1);
143
- expect(interfaceSource.methods.value[0].signature.value.content[0]).toBe(
144
- 'public String sampleMethod(String param1)',
145
- );
146
- });
147
- });
@@ -1,136 +0,0 @@
1
- import { replaceInlineReferences } from '../inline';
2
- import { Link } from '../types';
3
-
4
- function getFileLink(typeName: string): Link {
5
- return {
6
- __type: 'link' as const,
7
- title: typeName,
8
- url: `/api/${typeName}.html`,
9
- };
10
- }
11
-
12
- function getEmailLink(typeName: string) {
13
- return {
14
- __type: 'link' as const,
15
- title: typeName,
16
- url: `mailto:${typeName}`,
17
- };
18
- }
19
-
20
- describe('reference utilities', () => {
21
- it('returns a RenderableContent array with the full string when there are no links', () => {
22
- const text = 'This is a test';
23
- const result = replaceInlineReferences(text, getFileLink, getEmailLink);
24
-
25
- const expected = ['This is a test'];
26
-
27
- expect(result).toEqual(expected);
28
- });
29
-
30
- describe('replace inline code', () => {
31
- it('replaces inline code with InlineCode', () => {
32
- const text = 'This is a test `ClassName`.';
33
- const result = replaceInlineReferences(text, getFileLink, getEmailLink);
34
-
35
- const expected = ['This is a test ', { __type: 'inline-code', content: 'ClassName' }, '.'];
36
-
37
- expect(result).toEqual(expected);
38
- });
39
- });
40
-
41
- describe('replace inline links', () => {
42
- it('replaces links in the format of <<ClassName>>', () => {
43
- const text = 'This is a test <<ClassName>>.';
44
- const result = replaceInlineReferences(text, getFileLink, getEmailLink);
45
-
46
- const expected = [
47
- 'This is a test ',
48
- {
49
- __type: 'link',
50
- title: 'ClassName',
51
- url: '/api/ClassName.html',
52
- },
53
- '.',
54
- ];
55
-
56
- expect(result).toEqual(expected);
57
- });
58
- it('replaces links in the format of {@link ClassName}', () => {
59
- function getFileLinkByTypeName(typeName: string): Link {
60
- return {
61
- __type: 'link' as const,
62
- title: typeName,
63
- url: `/api/${typeName}.html`,
64
- };
65
- }
66
-
67
- const text = 'This is a test {@link ClassName}';
68
- const result = replaceInlineReferences(text, getFileLinkByTypeName, getEmailLink);
69
-
70
- const expected = [
71
- 'This is a test ',
72
- {
73
- __type: 'link',
74
- title: 'ClassName',
75
- url: '/api/ClassName.html',
76
- },
77
- ];
78
-
79
- expect(result).toEqual(expected);
80
- });
81
- });
82
-
83
- describe('replace inline emails', () => {
84
- it('replaces emails in the format of {@email email-address}', () => {
85
- function getLinkByTypeName(typeName: string) {
86
- return {
87
- __type: 'link' as const,
88
- title: typeName,
89
- url: `mailto:${typeName}`,
90
- };
91
- }
92
-
93
- const text = 'This is an email {@email example@example.com}';
94
- const result = replaceInlineReferences(text, getFileLink, getLinkByTypeName);
95
-
96
- const expected = [
97
- 'This is an email ',
98
- {
99
- __type: 'link',
100
- title: 'example@example.com',
101
- url: 'mailto:example@example.com',
102
- },
103
- ];
104
-
105
- expect(result).toEqual(expected);
106
- });
107
- });
108
-
109
- it('replaces both links and emails in the same string', () => {
110
- const text = 'This is a test <<ClassName>>, and {@link AnotherClass}, and an email {@email testerson}';
111
- const result = replaceInlineReferences(text, getFileLink, getEmailLink);
112
-
113
- const expected = [
114
- 'This is a test ',
115
- {
116
- __type: 'link',
117
- title: 'ClassName',
118
- url: '/api/ClassName.html',
119
- },
120
- ', and ',
121
- {
122
- __type: 'link',
123
- title: 'AnotherClass',
124
- url: '/api/AnotherClass.html',
125
- },
126
- ', and an email ',
127
- {
128
- __type: 'link',
129
- title: 'testerson',
130
- url: 'mailto:testerson',
131
- },
132
- ];
133
-
134
- expect(result).toEqual(expected);
135
- });
136
- });
@@ -1,238 +0,0 @@
1
- import { ClassMirror, EnumMirror, InterfaceMirror, Type } from '@cparra/apex-reflection';
2
- import {
3
- RenderableType,
4
- RenderableClass,
5
- RenderableEnum,
6
- RenderableInterface,
7
- RenderableSection,
8
- GroupedMember,
9
- ClassMirrorWithInheritanceChain,
10
- FieldMirrorWithInheritance,
11
- PropertyMirrorWithInheritance,
12
- GetRenderableContentByTypeName,
13
- } from './types';
14
- import { adaptDescribable, adaptDocumentable } from './documentables';
15
- import { adaptConstructor, adaptMethod } from './methods-and-constructors';
16
- import { adaptFieldOrProperty } from './fields-and-properties';
17
- import { MarkdownGeneratorConfig } from '../generate-docs';
18
- import { SourceFileMetadata } from '../../shared/types';
19
-
20
- type GetReturnRenderable<T extends Type> = T extends InterfaceMirror
21
- ? RenderableInterface
22
- : T extends ClassMirror
23
- ? RenderableClass
24
- : RenderableEnum;
25
-
26
- export function typeToRenderable<T extends Type>(
27
- parsedFile: { source: SourceFileMetadata; type: T },
28
- linkGenerator: GetRenderableContentByTypeName,
29
- config: MarkdownGeneratorConfig,
30
- ): GetReturnRenderable<T> & { filePath: string; namespace?: string } {
31
- function getRenderable(): RenderableInterface | RenderableClass | RenderableEnum {
32
- const { type } = parsedFile;
33
- switch (type.type_name) {
34
- case 'enum':
35
- return enumTypeToEnumSource(type as EnumMirror, linkGenerator) as RenderableEnum;
36
- case 'interface':
37
- return interfaceTypeToInterfaceSource(type as InterfaceMirror, linkGenerator) as RenderableInterface;
38
- case 'class':
39
- return classTypeToClassSource(type as ClassMirrorWithInheritanceChain, linkGenerator) as RenderableClass;
40
- }
41
- }
42
-
43
- return {
44
- ...(getRenderable() as GetReturnRenderable<T>),
45
- filePath: parsedFile.source.filePath,
46
- namespace: config.namespace,
47
- };
48
- }
49
-
50
- function baseTypeAdapter(
51
- type: EnumMirror | InterfaceMirror | ClassMirror,
52
- linkGenerator: GetRenderableContentByTypeName,
53
- baseHeadingLevel: number,
54
- ): RenderableType {
55
- function getHeading(type: Type): string {
56
- const suffixMap = {
57
- class: 'Class',
58
- interface: 'Interface',
59
- enum: 'Enum',
60
- };
61
-
62
- return `${type.name} ${suffixMap[type.type_name]}`;
63
- }
64
-
65
- return {
66
- headingLevel: baseHeadingLevel,
67
- heading: getHeading(type),
68
- doc: adaptDocumentable(type, linkGenerator, baseHeadingLevel + 1),
69
- name: type.name,
70
- meta: {
71
- accessModifier: type.access_modifier,
72
- },
73
- };
74
- }
75
-
76
- function enumTypeToEnumSource(
77
- enumType: EnumMirror,
78
- linkGenerator: GetRenderableContentByTypeName,
79
- baseHeadingLevel: number = 1,
80
- ): RenderableEnum {
81
- return {
82
- type: 'enum',
83
- ...baseTypeAdapter(enumType, linkGenerator, baseHeadingLevel),
84
- values: {
85
- headingLevel: baseHeadingLevel + 1,
86
- heading: 'Values',
87
- value: enumType.values.map((value) => ({
88
- ...adaptDescribable(value.docComment?.descriptionLines, linkGenerator),
89
- value: value.name,
90
- })),
91
- },
92
- };
93
- }
94
-
95
- function interfaceTypeToInterfaceSource(
96
- interfaceType: InterfaceMirror,
97
- linkGenerator: GetRenderableContentByTypeName,
98
- baseHeadingLevel: number = 1,
99
- ): RenderableInterface {
100
- return {
101
- type: 'interface',
102
- ...baseTypeAdapter(interfaceType, linkGenerator, baseHeadingLevel),
103
- extends: interfaceType.extended_interfaces.map(linkGenerator),
104
- methods: {
105
- headingLevel: baseHeadingLevel + 1,
106
- heading: 'Methods',
107
- value: interfaceType.methods.map((method) => adaptMethod(method, linkGenerator, baseHeadingLevel + 2)),
108
- },
109
- };
110
- }
111
-
112
- function classTypeToClassSource(
113
- classType: ClassMirrorWithInheritanceChain,
114
- linkGenerator: GetRenderableContentByTypeName,
115
- baseHeadingLevel: number = 1,
116
- ): RenderableClass {
117
- return {
118
- type: 'class',
119
- ...baseTypeAdapter(classType, linkGenerator, baseHeadingLevel),
120
- classModifier: classType.classModifier,
121
- sharingModifier: classType.sharingModifier,
122
- implements: classType.implemented_interfaces.map(linkGenerator),
123
- extends: classType.inheritanceChain.map(linkGenerator),
124
- methods: adaptMembers('Methods', classType.methods, adaptMethod, linkGenerator, baseHeadingLevel + 1),
125
- constructors: adaptMembers(
126
- 'Constructors',
127
- classType.constructors,
128
- (constructor, linkGenerator, baseHeadingLevel) =>
129
- adaptConstructor(classType.name, constructor, linkGenerator, baseHeadingLevel),
130
- linkGenerator,
131
- baseHeadingLevel + 1,
132
- ),
133
- fields: adaptMembers(
134
- 'Fields',
135
- classType.fields as FieldMirrorWithInheritance[],
136
- adaptFieldOrProperty,
137
- linkGenerator,
138
- baseHeadingLevel + 1,
139
- ),
140
- properties: adaptMembers(
141
- 'Properties',
142
- classType.properties as PropertyMirrorWithInheritance[],
143
- adaptFieldOrProperty,
144
- linkGenerator,
145
- baseHeadingLevel + 1,
146
- ),
147
- innerClasses: {
148
- headingLevel: baseHeadingLevel + 1,
149
- heading: 'Classes',
150
- value: classType.classes.map((innerClass) =>
151
- classTypeToClassSource({ ...innerClass, inheritanceChain: [] }, linkGenerator, baseHeadingLevel + 2),
152
- ),
153
- },
154
- innerEnums: {
155
- headingLevel: baseHeadingLevel + 1,
156
- heading: 'Enums',
157
- value: classType.enums.map((innerEnum) => enumTypeToEnumSource(innerEnum, linkGenerator, baseHeadingLevel + 2)),
158
- },
159
- innerInterfaces: {
160
- headingLevel: baseHeadingLevel + 1,
161
- heading: 'Interfaces',
162
- value: classType.interfaces.map((innerInterface) =>
163
- interfaceTypeToInterfaceSource(innerInterface, linkGenerator, baseHeadingLevel + 2),
164
- ),
165
- },
166
- };
167
- }
168
-
169
- type Groupable = { group?: string; groupDescription?: string };
170
-
171
- function adaptMembers<T extends Groupable, K>(
172
- heading: string,
173
- members: T[],
174
- adapter: (member: T, linkGenerator: GetRenderableContentByTypeName, baseHeadingLevel: number) => K,
175
- linkFromTypeNameGenerator: GetRenderableContentByTypeName,
176
- headingLevel: number,
177
- ): RenderableSection<K[] | GroupedMember<K>[]> & { isGrouped: boolean } {
178
- return {
179
- headingLevel,
180
- heading,
181
- isGrouped: hasGroup(members),
182
- value: hasGroup(members)
183
- ? toGroupedMembers(members, adapter, linkFromTypeNameGenerator, headingLevel + 1)
184
- : toFlat(members, adapter, linkFromTypeNameGenerator, headingLevel + 1),
185
- };
186
- }
187
-
188
- function hasGroup(members: Groupable[]): boolean {
189
- return members.some((member) => member.group);
190
- }
191
-
192
- function toFlat<T extends Groupable, K>(
193
- members: T[],
194
- adapter: (member: T, linkGenerator: GetRenderableContentByTypeName, baseHeadingLevel: number) => K,
195
- linkGenerator: GetRenderableContentByTypeName,
196
- baseHeadingLevel: number,
197
- ): K[] {
198
- return members.map((member) => adapter(member, linkGenerator, baseHeadingLevel));
199
- }
200
-
201
- function toGroupedMembers<T extends Groupable, K>(
202
- members: T[],
203
- adapter: (member: T, linkGenerator: GetRenderableContentByTypeName, baseHeadingLevel: number) => K,
204
- linkGenerator: GetRenderableContentByTypeName,
205
- baseHeadingLevel: number,
206
- ): GroupedMember<K>[] {
207
- const groupedMembers = groupByGroupName(members);
208
- return Object.entries(groupedMembers).map(([groupName, members]) =>
209
- singleGroup(baseHeadingLevel, groupName, adapter, members, linkGenerator),
210
- );
211
- }
212
-
213
- function groupByGroupName<T extends Groupable>(members: T[]): Record<string, T[]> {
214
- return members.reduce(
215
- (acc, member) => {
216
- const groupName = member.group ?? 'Other';
217
- acc[groupName] = acc[groupName] ?? [];
218
- acc[groupName].push(member);
219
- return acc;
220
- },
221
- {} as Record<string, T[]>,
222
- );
223
- }
224
-
225
- function singleGroup<T extends Groupable, K>(
226
- headingLevel: number,
227
- groupName: string,
228
- adapter: (member: T, linkGenerator: GetRenderableContentByTypeName, baseHeadingLevel: number) => K,
229
- members: T[],
230
- linkGenerator: GetRenderableContentByTypeName,
231
- ): GroupedMember<K> {
232
- return {
233
- headingLevel: headingLevel,
234
- heading: groupName,
235
- groupDescription: members[0].groupDescription, // All fields in the group have the same description
236
- value: toFlat(members, adapter, linkGenerator, headingLevel + 1),
237
- };
238
- }