@cparra/apexdocs 2.25.0-alpha.8 → 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 (429) 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 -35
  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 -2976
  292. package/dist/defaults-DUwru49Q.js +0 -12
  293. package/dist/defaults-SH0Rsi5E.js +0 -11
  294. package/dist/index.d.ts +0 -62
  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/Miscellaneous/ns.BaseClass.md +0 -16
  300. package/examples/plain-markdown/docs/Miscellaneous/ns.MultiInheritanceClass.md +0 -73
  301. package/examples/plain-markdown/docs/Miscellaneous/ns.ParentInterface.md +0 -15
  302. package/examples/plain-markdown/docs/Miscellaneous/ns.ReferencedEnum.md +0 -8
  303. package/examples/plain-markdown/docs/Miscellaneous/ns.SampleException.md +0 -25
  304. package/examples/plain-markdown/docs/Miscellaneous/ns.SampleInterface.md +0 -119
  305. package/examples/plain-markdown/docs/Miscellaneous/ns.Url.md +0 -320
  306. package/examples/plain-markdown/docs/Sample-Enums/ns.SampleEnum.md +0 -38
  307. package/examples/plain-markdown/docs/SampleGroup/ns.SampleClass.md +0 -173
  308. package/examples/plain-markdown/docs/index.md +0 -117
  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 -108
  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/Miscellaneous/apexdocs.BaseClass.md +0 -20
  341. package/examples/vitepress/docs/Miscellaneous/apexdocs.MultiInheritanceClass.md +0 -76
  342. package/examples/vitepress/docs/Miscellaneous/apexdocs.ParentInterface.md +0 -19
  343. package/examples/vitepress/docs/Miscellaneous/apexdocs.ReferencedEnum.md +0 -15
  344. package/examples/vitepress/docs/Miscellaneous/apexdocs.SampleException.md +0 -28
  345. package/examples/vitepress/docs/Miscellaneous/apexdocs.SampleInterface.md +0 -116
  346. package/examples/vitepress/docs/Miscellaneous/apexdocs.Url.md +0 -317
  347. package/examples/vitepress/docs/Sample-Enums/apexdocs.SampleEnum.md +0 -40
  348. package/examples/vitepress/docs/SampleGroup/apexdocs.SampleClass.md +0 -174
  349. package/examples/vitepress/docs/api-examples.md +0 -49
  350. package/examples/vitepress/docs/index-frontmatter.md +0 -16
  351. package/examples/vitepress/docs/index.md +0 -56
  352. package/examples/vitepress/docs/markdown-examples.md +0 -85
  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 -25
  369. package/src/application/generators/markdown.ts +0 -53
  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 -733
  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 -459
  378. package/src/core/markdown/__test__/generating-reference-guide.spec.ts +0 -184
  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 -112
  383. package/src/core/markdown/adapters/__tests__/references.spec.ts +0 -136
  384. package/src/core/markdown/adapters/apex-types.ts +0 -237
  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/renderable-bundle.ts +0 -144
  390. package/src/core/markdown/adapters/renderable-to-page-data.ts +0 -92
  391. package/src/core/markdown/adapters/type-utils.ts +0 -13
  392. package/src/core/markdown/adapters/types.d.ts +0 -182
  393. package/src/core/markdown/generate-docs.ts +0 -158
  394. package/src/core/markdown/reflection/error-handling.ts +0 -37
  395. package/src/core/markdown/reflection/filter-scope.ts +0 -13
  396. package/src/core/markdown/reflection/inheritance-chain-expanion.ts +0 -22
  397. package/src/core/markdown/reflection/inheritance-chain.ts +0 -23
  398. package/src/core/markdown/reflection/inherited-member-expansion.ts +0 -105
  399. package/src/core/markdown/reflection/reflect-source.ts +0 -41
  400. package/src/core/markdown/reflection/sort-members.ts +0 -59
  401. package/src/core/markdown/templates/class-template.ts +0 -75
  402. package/src/core/markdown/templates/constructors-partial-template.ts +0 -32
  403. package/src/core/markdown/templates/documentable-partial-template.ts +0 -26
  404. package/src/core/markdown/templates/enum-template.ts +0 -12
  405. package/src/core/markdown/templates/fieldsPartialTemplate.ts +0 -23
  406. package/src/core/markdown/templates/grouped-members-partial-template.ts +0 -6
  407. package/src/core/markdown/templates/hookable.ts +0 -7
  408. package/src/core/markdown/templates/interface-template.ts +0 -16
  409. package/src/core/markdown/templates/methods-partial-template.ts +0 -43
  410. package/src/core/markdown/templates/reference-guide.ts +0 -14
  411. package/src/core/markdown/templates/template.ts +0 -114
  412. package/src/core/markdown/templates/type-doc-partial.ts +0 -27
  413. package/src/core/markdown/utils.ts +0 -3
  414. package/src/core/openapi/file-container.ts +0 -13
  415. package/src/core/openapi/openapi-type-file.ts +0 -14
  416. package/src/core/parse-apex-metadata.ts +0 -14
  417. package/src/core/settings.ts +0 -56
  418. package/src/core/shared/types.d.ts +0 -92
  419. package/src/core/shared/utils.ts +0 -5
  420. package/src/defaults.ts +0 -8
  421. package/src/test-helpers/InterfaceMirrorBuilder.ts +0 -39
  422. package/src/util/fp.ts +0 -3
  423. /package/src/{core/__test__ → model/__tests__}/manifest.spec.ts +0 -0
  424. /package/src/{core/openapi → model}/apex-type-wrappers/ClassMirrorWrapper.ts +0 -0
  425. /package/src/{core/openapi → model}/apex-type-wrappers/MethodMirrorWrapper.ts +0 -0
  426. /package/src/{core → model}/openapi/__tests__/open-api.spec.ts +0 -0
  427. /package/src/{core → model}/openapi/apex-doc-types.ts +0 -0
  428. /package/src/{core → model}/openapi/open-api.ts +0 -0
  429. /package/src/{application → service}/file-system.ts +0 -0
@@ -1,22 +0,0 @@
1
- import { SourceFile } 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): SourceFile {
6
- return {
7
- filePath: 'test.cls',
8
- content: raw,
9
- metadataContent: rawMetadata ?? null,
10
- };
11
- }
12
-
13
- export function generateDocs(apexBundles: SourceFile[], 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,112 +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
- { filePath: '', type: interfaceMirror },
25
- linkGenerator,
26
- defaultMarkdownGeneratorConfig,
27
- );
28
-
29
- expect(interfaceSource.name).toBe('SampleInterface');
30
- });
31
-
32
- it('converts the access modifier', () => {
33
- const interfaceMirror = new InterfaceMirrorBuilder().build();
34
- const interfaceSource = typeToRenderable(
35
- { filePath: '', type: interfaceMirror },
36
- linkGenerator,
37
- defaultMarkdownGeneratorConfig,
38
- );
39
-
40
- expect(interfaceSource.meta.accessModifier).toBe('public');
41
- });
42
-
43
- it('converts annotations', () => {
44
- const interfaceMirror = new InterfaceMirrorBuilder()
45
- .addAnnotation(new AnnotationBuilder().withName('MyAnnotation').build())
46
- .build();
47
- const interfaceSource = typeToRenderable(
48
- { filePath: '', type: interfaceMirror },
49
- linkGenerator,
50
- defaultMarkdownGeneratorConfig,
51
- );
52
-
53
- expect(interfaceSource.doc.annotations).toEqual(['MYANNOTATION']);
54
- });
55
-
56
- it('converts method declarations. Method with no parameters', () => {
57
- const interfaceMirror = new InterfaceMirrorBuilder()
58
- .addMethod(
59
- new MethodMirrorBuilder()
60
- .withName('sampleMethod')
61
- .withTypeReference({
62
- type: 'String',
63
- rawDeclaration: 'String',
64
- })
65
- .build(),
66
- )
67
- .build();
68
-
69
- const interfaceSource = typeToRenderable(
70
- { filePath: '', type: interfaceMirror },
71
- linkGenerator,
72
- defaultMarkdownGeneratorConfig,
73
- );
74
-
75
- expect(interfaceSource.methods.value).toHaveLength(1);
76
- expect(interfaceSource.methods.value[0].signature.value.content[0]).toBe('public String sampleMethod()');
77
- });
78
-
79
- it('converts method declarations. Method with parameters', () => {
80
- const interfaceMirror = new InterfaceMirrorBuilder()
81
- .addMethod(
82
- new MethodMirrorBuilder()
83
- .withName('sampleMethod')
84
- .withTypeReference({
85
- type: 'String',
86
- rawDeclaration: 'String',
87
- })
88
- .addParameter(
89
- new ParameterBuilder()
90
- .withName('param1')
91
- .withTypeReference({
92
- type: 'String',
93
- rawDeclaration: 'String',
94
- })
95
- .build(),
96
- )
97
- .build(),
98
- )
99
- .build();
100
-
101
- const interfaceSource = typeToRenderable(
102
- { filePath: '', type: interfaceMirror },
103
- linkGenerator,
104
- defaultMarkdownGeneratorConfig,
105
- );
106
-
107
- expect(interfaceSource.methods.value).toHaveLength(1);
108
- expect(interfaceSource.methods.value[0].signature.value.content[0]).toBe(
109
- 'public String sampleMethod(String param1)',
110
- );
111
- });
112
- });
@@ -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,237 +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
-
19
- type GetReturnRenderable<T extends Type> = T extends InterfaceMirror
20
- ? RenderableInterface
21
- : T extends ClassMirror
22
- ? RenderableClass
23
- : RenderableEnum;
24
-
25
- export function typeToRenderable<T extends Type>(
26
- parsedFile: { filePath: string; type: T },
27
- linkGenerator: GetRenderableContentByTypeName,
28
- config: MarkdownGeneratorConfig,
29
- ): GetReturnRenderable<T> & { filePath: string; namespace?: string } {
30
- function getRenderable(): RenderableInterface | RenderableClass | RenderableEnum {
31
- const { type } = parsedFile;
32
- switch (type.type_name) {
33
- case 'enum':
34
- return enumTypeToEnumSource(type as EnumMirror, linkGenerator) as RenderableEnum;
35
- case 'interface':
36
- return interfaceTypeToInterfaceSource(type as InterfaceMirror, linkGenerator) as RenderableInterface;
37
- case 'class':
38
- return classTypeToClassSource(type as ClassMirrorWithInheritanceChain, linkGenerator) as RenderableClass;
39
- }
40
- }
41
-
42
- return {
43
- ...(getRenderable() as GetReturnRenderable<T>),
44
- filePath: parsedFile.filePath,
45
- namespace: config.namespace,
46
- };
47
- }
48
-
49
- function baseTypeAdapter(
50
- type: EnumMirror | InterfaceMirror | ClassMirror,
51
- linkGenerator: GetRenderableContentByTypeName,
52
- baseHeadingLevel: number,
53
- ): RenderableType {
54
- function getHeading(type: Type): string {
55
- const suffixMap = {
56
- class: 'Class',
57
- interface: 'Interface',
58
- enum: 'Enum',
59
- };
60
-
61
- return `${type.name} ${suffixMap[type.type_name]}`;
62
- }
63
-
64
- return {
65
- headingLevel: baseHeadingLevel,
66
- heading: getHeading(type),
67
- doc: adaptDocumentable(type, linkGenerator, baseHeadingLevel + 1),
68
- name: type.name,
69
- meta: {
70
- accessModifier: type.access_modifier,
71
- },
72
- };
73
- }
74
-
75
- function enumTypeToEnumSource(
76
- enumType: EnumMirror,
77
- linkGenerator: GetRenderableContentByTypeName,
78
- baseHeadingLevel: number = 1,
79
- ): RenderableEnum {
80
- return {
81
- type: 'enum',
82
- ...baseTypeAdapter(enumType, linkGenerator, baseHeadingLevel),
83
- values: {
84
- headingLevel: baseHeadingLevel + 1,
85
- heading: 'Values',
86
- value: enumType.values.map((value) => ({
87
- ...adaptDescribable(value.docComment?.descriptionLines, linkGenerator),
88
- value: value.name,
89
- })),
90
- },
91
- };
92
- }
93
-
94
- function interfaceTypeToInterfaceSource(
95
- interfaceType: InterfaceMirror,
96
- linkGenerator: GetRenderableContentByTypeName,
97
- baseHeadingLevel: number = 1,
98
- ): RenderableInterface {
99
- return {
100
- type: 'interface',
101
- ...baseTypeAdapter(interfaceType, linkGenerator, baseHeadingLevel),
102
- extends: interfaceType.extended_interfaces.map(linkGenerator),
103
- methods: {
104
- headingLevel: baseHeadingLevel + 1,
105
- heading: 'Methods',
106
- value: interfaceType.methods.map((method) => adaptMethod(method, linkGenerator, baseHeadingLevel + 2)),
107
- },
108
- };
109
- }
110
-
111
- function classTypeToClassSource(
112
- classType: ClassMirrorWithInheritanceChain,
113
- linkGenerator: GetRenderableContentByTypeName,
114
- baseHeadingLevel: number = 1,
115
- ): RenderableClass {
116
- return {
117
- type: 'class',
118
- ...baseTypeAdapter(classType, linkGenerator, baseHeadingLevel),
119
- classModifier: classType.classModifier,
120
- sharingModifier: classType.sharingModifier,
121
- implements: classType.implemented_interfaces.map(linkGenerator),
122
- extends: classType.inheritanceChain.map(linkGenerator),
123
- methods: adaptMembers('Methods', classType.methods, adaptMethod, linkGenerator, baseHeadingLevel + 1),
124
- constructors: adaptMembers(
125
- 'Constructors',
126
- classType.constructors,
127
- (constructor, linkGenerator, baseHeadingLevel) =>
128
- adaptConstructor(classType.name, constructor, linkGenerator, baseHeadingLevel),
129
- linkGenerator,
130
- baseHeadingLevel + 1,
131
- ),
132
- fields: adaptMembers(
133
- 'Fields',
134
- classType.fields as FieldMirrorWithInheritance[],
135
- adaptFieldOrProperty,
136
- linkGenerator,
137
- baseHeadingLevel + 1,
138
- ),
139
- properties: adaptMembers(
140
- 'Properties',
141
- classType.properties as PropertyMirrorWithInheritance[],
142
- adaptFieldOrProperty,
143
- linkGenerator,
144
- baseHeadingLevel + 1,
145
- ),
146
- innerClasses: {
147
- headingLevel: baseHeadingLevel + 1,
148
- heading: 'Classes',
149
- value: classType.classes.map((innerClass) =>
150
- classTypeToClassSource({ ...innerClass, inheritanceChain: [] }, linkGenerator, baseHeadingLevel + 2),
151
- ),
152
- },
153
- innerEnums: {
154
- headingLevel: baseHeadingLevel + 1,
155
- heading: 'Enums',
156
- value: classType.enums.map((innerEnum) => enumTypeToEnumSource(innerEnum, linkGenerator, baseHeadingLevel + 2)),
157
- },
158
- innerInterfaces: {
159
- headingLevel: baseHeadingLevel + 1,
160
- heading: 'Interfaces',
161
- value: classType.interfaces.map((innerInterface) =>
162
- interfaceTypeToInterfaceSource(innerInterface, linkGenerator, baseHeadingLevel + 2),
163
- ),
164
- },
165
- };
166
- }
167
-
168
- type Groupable = { group?: string; groupDescription?: string };
169
-
170
- function adaptMembers<T extends Groupable, K>(
171
- heading: string,
172
- members: T[],
173
- adapter: (member: T, linkGenerator: GetRenderableContentByTypeName, baseHeadingLevel: number) => K,
174
- linkFromTypeNameGenerator: GetRenderableContentByTypeName,
175
- headingLevel: number,
176
- ): RenderableSection<K[] | GroupedMember<K>[]> & { isGrouped: boolean } {
177
- return {
178
- headingLevel,
179
- heading,
180
- isGrouped: hasGroup(members),
181
- value: hasGroup(members)
182
- ? toGroupedMembers(members, adapter, linkFromTypeNameGenerator, headingLevel + 1)
183
- : toFlat(members, adapter, linkFromTypeNameGenerator, headingLevel + 1),
184
- };
185
- }
186
-
187
- function hasGroup(members: Groupable[]): boolean {
188
- return members.some((member) => member.group);
189
- }
190
-
191
- function toFlat<T extends Groupable, K>(
192
- members: T[],
193
- adapter: (member: T, linkGenerator: GetRenderableContentByTypeName, baseHeadingLevel: number) => K,
194
- linkGenerator: GetRenderableContentByTypeName,
195
- baseHeadingLevel: number,
196
- ): K[] {
197
- return members.map((member) => adapter(member, linkGenerator, baseHeadingLevel));
198
- }
199
-
200
- function toGroupedMembers<T extends Groupable, K>(
201
- members: T[],
202
- adapter: (member: T, linkGenerator: GetRenderableContentByTypeName, baseHeadingLevel: number) => K,
203
- linkGenerator: GetRenderableContentByTypeName,
204
- baseHeadingLevel: number,
205
- ): GroupedMember<K>[] {
206
- const groupedMembers = groupByGroupName(members);
207
- return Object.entries(groupedMembers).map(([groupName, members]) =>
208
- singleGroup(baseHeadingLevel, groupName, adapter, members, linkGenerator),
209
- );
210
- }
211
-
212
- function groupByGroupName<T extends Groupable>(members: T[]): Record<string, T[]> {
213
- return members.reduce(
214
- (acc, member) => {
215
- const groupName = member.group ?? 'Other';
216
- acc[groupName] = acc[groupName] ?? [];
217
- acc[groupName].push(member);
218
- return acc;
219
- },
220
- {} as Record<string, T[]>,
221
- );
222
- }
223
-
224
- function singleGroup<T extends Groupable, K>(
225
- headingLevel: number,
226
- groupName: string,
227
- adapter: (member: T, linkGenerator: GetRenderableContentByTypeName, baseHeadingLevel: number) => K,
228
- members: T[],
229
- linkGenerator: GetRenderableContentByTypeName,
230
- ): GroupedMember<K> {
231
- return {
232
- headingLevel: headingLevel,
233
- heading: groupName,
234
- groupDescription: members[0].groupDescription, // All fields in the group have the same description
235
- value: toFlat(members, adapter, linkGenerator, headingLevel + 1),
236
- };
237
- }