@cparra/apexdocs 2.25.0-alpha.1 → 2.25.0-alpha.3

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 (393) hide show
  1. package/README.md +37 -0
  2. package/{lib → dist}/__spec__/core/expect-extensions.js +3 -2
  3. package/dist/__spec__/core/expect-extensions.js.map +1 -0
  4. package/{lib → dist}/__spec__/core/generating-class-docs.spec.js +54 -37
  5. package/dist/__spec__/core/generating-class-docs.spec.js.map +1 -0
  6. package/{lib → dist}/__spec__/core/generating-enum-docs.spec.js +25 -22
  7. package/dist/__spec__/core/generating-enum-docs.spec.js.map +1 -0
  8. package/{lib → dist}/__spec__/core/generating-interface-docs.spec.js +33 -30
  9. package/dist/__spec__/core/generating-interface-docs.spec.js.map +1 -0
  10. package/{lib → dist}/__spec__/core/generating-reference-guide.spec.js +8 -7
  11. package/dist/__spec__/core/generating-reference-guide.spec.js.map +1 -0
  12. package/dist/__spec__/core/test-helpers.d.ts +2 -0
  13. package/dist/__spec__/core/test-helpers.js +12 -0
  14. package/dist/__spec__/core/test-helpers.js.map +1 -0
  15. package/{lib → dist}/application/Apexdocs.d.ts +4 -2
  16. package/{lib → dist}/application/Apexdocs.js +49 -16
  17. package/dist/application/Apexdocs.js.map +1 -0
  18. package/dist/application/generators/generate-markdown-files.d.ts +3 -0
  19. package/dist/application/generators/generate-markdown-files.js +64 -0
  20. package/dist/application/generators/generate-markdown-files.js.map +1 -0
  21. package/dist/cli/args.d.ts +39 -0
  22. package/{lib/cli/generate.js → dist/cli/args.js} +37 -40
  23. package/dist/cli/args.js.map +1 -0
  24. package/dist/cli/generate.js +291 -0
  25. package/dist/cli/generate.js.map +1 -0
  26. package/dist/core/__test__/inheritance-chain.test.d.ts +1 -0
  27. package/dist/core/__test__/inheritance-chain.test.js +42 -0
  28. package/dist/core/__test__/inheritance-chain.test.js.map +1 -0
  29. package/dist/core/adapters/apex-types.d.ts +6 -0
  30. package/{lib → dist/core}/adapters/apex-types.js +18 -21
  31. package/dist/core/adapters/apex-types.js.map +1 -0
  32. package/{lib → dist/core}/adapters/documentables.d.ts +1 -1
  33. package/dist/core/adapters/documentables.js +154 -0
  34. package/dist/core/adapters/documentables.js.map +1 -0
  35. package/{lib → dist/core}/adapters/fields-and-properties.d.ts +1 -2
  36. package/{lib → dist/core}/adapters/fields-and-properties.js +11 -6
  37. package/dist/core/adapters/fields-and-properties.js.map +1 -0
  38. package/{lib → dist/core}/adapters/methods-and-constructors.d.ts +1 -1
  39. package/{lib → dist/core}/adapters/methods-and-constructors.js +24 -16
  40. package/dist/core/adapters/methods-and-constructors.js.map +1 -0
  41. package/{lib → dist/core}/adapters/references.d.ts +2 -3
  42. package/{lib → dist/core}/adapters/references.js +5 -9
  43. package/dist/core/adapters/references.js.map +1 -0
  44. package/dist/core/adapters/type-utils.d.ts +3 -0
  45. package/dist/core/adapters/type-utils.js +12 -0
  46. package/dist/core/adapters/type-utils.js.map +1 -0
  47. package/dist/core/apex-bundle.js.map +1 -0
  48. package/{lib → dist}/core/generate-docs.d.ts +8 -3
  49. package/{lib → dist}/core/generate-docs.js +79 -24
  50. package/dist/core/generate-docs.js.map +1 -0
  51. package/dist/core/inheritance-chain.d.ts +2 -0
  52. package/{lib/index.js → dist/core/inheritance-chain.js} +11 -4
  53. package/dist/core/inheritance-chain.js.map +1 -0
  54. package/dist/core/manifest.js.map +1 -0
  55. package/{lib → dist}/core/template.js +12 -7
  56. package/{lib → dist}/core/template.js.map +1 -1
  57. package/{lib → dist}/core/templates/reference-guide.js +1 -1
  58. package/dist/index.d.ts +2 -0
  59. package/dist/index.js +1 -0
  60. package/{lib → dist}/model/markdown-file.d.ts +1 -1
  61. package/{lib → dist}/model/markdown-file.js +1 -1
  62. package/dist/model/markdown-file.js.map +1 -0
  63. package/{lib → dist}/model/markdown-generation-util/doc-comment-annotation-util.js +3 -2
  64. package/dist/model/markdown-generation-util/doc-comment-annotation-util.js.map +1 -0
  65. package/{lib → dist}/model/markdown-generation-util/field-declaration-util.d.ts +1 -1
  66. package/{lib → dist}/model/markdown-generation-util/field-declaration-util.js +2 -1
  67. package/dist/model/markdown-generation-util/field-declaration-util.js.map +1 -0
  68. package/{lib → dist}/model/markdown-generation-util/method-declaration-util.d.ts +1 -1
  69. package/{lib → dist}/model/markdown-generation-util/method-declaration-util.js +2 -1
  70. package/dist/model/markdown-generation-util/method-declaration-util.js.map +1 -0
  71. package/{lib → dist}/model/markdown-generation-util/type-declaration-util.js +2 -1
  72. package/dist/model/markdown-generation-util/type-declaration-util.js.map +1 -0
  73. package/{lib → dist}/model/markdown-type-file.d.ts +1 -1
  74. package/dist/model/markdown-type-file.js.map +1 -0
  75. package/{lib → dist}/service/apex-file-reader.d.ts +1 -1
  76. package/{lib → dist}/service/apex-file-reader.js +1 -1
  77. package/{lib → dist}/service/apex-file-reader.js.map +1 -1
  78. package/{lib → dist}/service/manifest-factory.d.ts +2 -2
  79. package/{lib → dist}/service/manifest-factory.js +3 -2
  80. package/dist/service/manifest-factory.js.map +1 -0
  81. package/{lib → dist}/service/parser.d.ts +1 -1
  82. package/{lib → dist}/settings.d.ts +3 -0
  83. package/{lib → dist}/settings.js +3 -0
  84. package/{lib → dist}/settings.js.map +1 -1
  85. package/{lib → dist}/test-helpers/ClassMirrorBuilder.d.ts +4 -0
  86. package/{lib → dist}/test-helpers/ClassMirrorBuilder.js +11 -1
  87. package/dist/test-helpers/ClassMirrorBuilder.js.map +1 -0
  88. package/{lib → dist}/test-helpers/SettingsBuilder.js +1 -0
  89. package/{lib → dist}/test-helpers/SettingsBuilder.js.map +1 -1
  90. package/{lib → dist}/transpiler/factory.js +2 -4
  91. package/dist/transpiler/factory.js.map +1 -0
  92. package/{lib → dist}/transpiler/markdown/class-file-generatorHelper.d.ts +0 -2
  93. package/{lib → dist}/transpiler/markdown/class-file-generatorHelper.js +1 -15
  94. package/dist/transpiler/markdown/class-file-generatorHelper.js.map +1 -0
  95. package/{lib → dist}/transpiler/markdown/plain-markdown/class-template.js +3 -3
  96. package/{lib → dist}/transpiler/markdown/plain-markdown/constructors-partial-template.js +1 -1
  97. package/{lib → dist}/transpiler/markdown/plain-markdown/documentable-partial-template.js +6 -4
  98. package/{lib → dist}/transpiler/markdown/plain-markdown/documentable-partial-template.js.map +1 -1
  99. package/{lib → dist}/transpiler/markdown/plain-markdown/fieldsPartialTemplate.js +1 -1
  100. package/{lib → dist}/transpiler/markdown/plain-markdown/methods-partial-template.js +2 -2
  101. package/{lib → dist}/util/logger.js +1 -1
  102. package/{lib → dist}/util/logger.js.map +1 -1
  103. package/{lib → dist}/util/string-utils.js +2 -2
  104. package/{lib → dist}/util/string-utils.js.map +1 -1
  105. package/examples/plain-markdown/docs/Miscellaneous/ns.MultiInheritanceClass.md +73 -0
  106. package/examples/plain-markdown/docs/Miscellaneous/ns.SampleException.md +19 -1
  107. package/examples/plain-markdown/docs/Miscellaneous/ns.SampleInterface.md +6 -2
  108. package/examples/plain-markdown/docs/Sample-Enums/ns.SampleEnum.md +3 -1
  109. package/examples/plain-markdown/docs/SampleGroup/ns.SampleClass.md +2 -2
  110. package/examples/plain-markdown/docs/index.md +12 -13
  111. package/examples/plain-markdown/force-app/classes/MultiInheritanceClass.cls +1 -0
  112. package/examples/plain-markdown/force-app/classes/SampleException.cls +16 -0
  113. package/jest.config.js +1 -1
  114. package/package.json +13 -15
  115. package/src/__spec__/core/generating-class-docs.spec.ts +57 -37
  116. package/src/__spec__/core/generating-enum-docs.spec.ts +25 -22
  117. package/src/__spec__/core/generating-interface-docs.spec.ts +33 -30
  118. package/src/__spec__/core/generating-reference-guide.spec.ts +8 -7
  119. package/src/__spec__/core/test-helpers.ts +9 -0
  120. package/src/application/Apexdocs.ts +56 -19
  121. package/src/application/generators/generate-markdown-files.ts +53 -0
  122. package/src/cli/args.ts +136 -0
  123. package/src/cli/generate.ts +11 -135
  124. package/src/core/__test__/inheritance-chain.test.ts +54 -0
  125. package/src/{adapters → core/adapters}/__tests__/interface-adapter.spec.ts +13 -11
  126. package/src/{adapters → core/adapters}/__tests__/references.spec.ts +11 -1
  127. package/src/{adapters → core/adapters}/apex-types.ts +54 -44
  128. package/src/core/adapters/documentables.ts +195 -0
  129. package/src/{adapters → core/adapters}/fields-and-properties.ts +13 -11
  130. package/src/{adapters → core/adapters}/methods-and-constructors.ts +31 -20
  131. package/src/{adapters → core/adapters}/references.ts +3 -6
  132. package/src/core/adapters/type-utils.ts +9 -0
  133. package/src/core/{renderable → adapters}/types.d.ts +36 -5
  134. package/src/core/generate-docs.ts +106 -31
  135. package/src/core/inheritance-chain.ts +23 -0
  136. package/src/core/template.ts +12 -9
  137. package/src/core/templates/reference-guide.ts +1 -1
  138. package/src/model/__tests__/manifest.spec.ts +1 -1
  139. package/src/model/markdown-file.ts +1 -1
  140. package/src/model/markdown-generation-util/field-declaration-util.ts +1 -1
  141. package/src/model/markdown-generation-util/method-declaration-util.ts +1 -1
  142. package/src/model/markdown-type-file.ts +5 -1
  143. package/src/service/__tests__/apex-file-reader.spec.ts +1 -0
  144. package/src/service/apex-file-reader.ts +1 -1
  145. package/src/service/manifest-factory.ts +2 -2
  146. package/src/service/parser.ts +1 -1
  147. package/src/settings.ts +6 -0
  148. package/src/test-helpers/ClassMirrorBuilder.ts +14 -1
  149. package/src/test-helpers/SettingsBuilder.ts +1 -0
  150. package/src/transpiler/factory.ts +2 -4
  151. package/src/transpiler/markdown/class-file-generatorHelper.ts +1 -18
  152. package/src/transpiler/markdown/plain-markdown/class-template.ts +3 -3
  153. package/src/transpiler/markdown/plain-markdown/constructors-partial-template.ts +1 -1
  154. package/src/transpiler/markdown/plain-markdown/documentable-partial-template.ts +6 -4
  155. package/src/transpiler/markdown/plain-markdown/fieldsPartialTemplate.ts +1 -1
  156. package/src/transpiler/markdown/plain-markdown/methods-partial-template.ts +2 -2
  157. package/src/util/logger.ts +1 -1
  158. package/tsconfig.json +1 -1
  159. package/docs/.nojekyll +0 -0
  160. package/docs/__old/README.md +0 -1
  161. package/docs/__old/index.html +0 -22
  162. package/docs/__old/restapi.json +0 -589
  163. package/docs/__old/types/Classes/nspc.AnotherInterface.md +0 -22
  164. package/docs/__old/types/Classes/nspc.ChildClass.md +0 -97
  165. package/docs/__old/types/Main/nspc.GroupedClass.md +0 -10
  166. package/docs/__old/types/Main/nspc.SampleClass.md +0 -189
  167. package/docs/__old/types/Misc-Group/nspc.EscapedAnnotations.md +0 -4
  168. package/docs/__old/types/Misc-Group/nspc.GrandparentClass.md +0 -13
  169. package/docs/__old/types/Misc-Group/nspc.InterfaceWithInheritance.md +0 -29
  170. package/docs/__old/types/Misc-Group/nspc.MemberGrouping.md +0 -13
  171. package/docs/__old/types/Misc-Group/nspc.ParentClass.md +0 -37
  172. package/docs/__old/types/Misc-Group/nspc.Reference1.md +0 -18
  173. package/docs/__old/types/Misc-Group/nspc.Reference2.md +0 -12
  174. package/docs/__old/types/Misc-Group/nspc.Reference3.md +0 -7
  175. package/docs/__old/types/Misc-Group/nspc.Reference4.md +0 -7
  176. package/docs/__old/types/Misc-Group/nspc.Reference5.md +0 -7
  177. package/docs/__old/types/Misc-Group/nspc.Reference6.md +0 -9
  178. package/docs/__old/types/Misc-Group/nspc.Reference7.md +0 -7
  179. package/docs/__old/types/Misc-Group/nspc.SampleClassWithoutModifier.md +0 -11
  180. package/docs/__old/types/Misc-Group/nspc.SampleRestResource.md +0 -104
  181. package/docs/__old/types/Misc-Group/nspc.SampleRestResourceWithInnerClass.md +0 -33
  182. package/docs/__old/types/Misc-Group/nspc.SampleRestResourceWithoutApexDocs.md +0 -14
  183. package/docs/__old/types/README.md +0 -97
  184. package/docs/__old/types/Sample-Interfaces/nspc.SampleInterface.md +0 -23
  185. package/examples/includes/header.md +0 -3
  186. package/lib/__spec__/core/expect-extensions.js.map +0 -1
  187. package/lib/__spec__/core/generating-class-docs.spec.js.map +0 -1
  188. package/lib/__spec__/core/generating-enum-docs.spec.js.map +0 -1
  189. package/lib/__spec__/core/generating-interface-docs.spec.js.map +0 -1
  190. package/lib/__spec__/core/generating-reference-guide.spec.js.map +0 -1
  191. package/lib/adapters/apex-types.d.ts +0 -7
  192. package/lib/adapters/apex-types.js.map +0 -1
  193. package/lib/adapters/documentables.js +0 -56
  194. package/lib/adapters/documentables.js.map +0 -1
  195. package/lib/adapters/fields-and-properties.js.map +0 -1
  196. package/lib/adapters/methods-and-constructors.js.map +0 -1
  197. package/lib/adapters/references.js.map +0 -1
  198. package/lib/adapters/type-utils.d.ts +0 -2
  199. package/lib/adapters/type-utils.js +0 -7
  200. package/lib/adapters/type-utils.js.map +0 -1
  201. package/lib/application/Apexdocs.js.map +0 -1
  202. package/lib/cli/generate.js.map +0 -1
  203. package/lib/core/generate-docs.js.map +0 -1
  204. package/lib/index.d.ts +0 -2
  205. package/lib/model/apex-bundle.js.map +0 -1
  206. package/lib/model/inheritance.d.ts +0 -8
  207. package/lib/model/inheritance.js +0 -3
  208. package/lib/model/inheritance.js.map +0 -1
  209. package/lib/model/manifest.js.map +0 -1
  210. package/lib/model/markdown-file.js.map +0 -1
  211. package/lib/model/markdown-generation-util/doc-comment-annotation-util.js.map +0 -1
  212. package/lib/model/markdown-generation-util/field-declaration-util.js.map +0 -1
  213. package/lib/model/markdown-generation-util/method-declaration-util.js.map +0 -1
  214. package/lib/model/markdown-generation-util/type-declaration-util.js.map +0 -1
  215. package/lib/model/markdown-type-file.js.map +0 -1
  216. package/lib/service/manifest-factory.js.map +0 -1
  217. package/lib/test-helpers/ClassMirrorBuilder.js.map +0 -1
  218. package/lib/transpiler/factory.js.map +0 -1
  219. package/lib/transpiler/markdown/class-file-generatorHelper.js.map +0 -1
  220. package/lib/transpiler/markdown/plain-markdown/plain-docsProcessor.d.ts +0 -9
  221. package/lib/transpiler/markdown/plain-markdown/plain-docsProcessor.js +0 -42
  222. package/lib/transpiler/markdown/plain-markdown/plain-docsProcessor.js.map +0 -1
  223. package/src/adapters/documentables.ts +0 -93
  224. package/src/adapters/type-utils.ts +0 -5
  225. package/src/adapters/types.d.ts +0 -8
  226. package/src/model/inheritance.ts +0 -7
  227. package/src/transpiler/markdown/plain-markdown/plain-docsProcessor.ts +0 -42
  228. /package/{lib → dist}/__spec__/core/expect-extensions.d.ts +0 -0
  229. /package/{lib → dist}/__spec__/core/generating-class-docs.spec.d.ts +0 -0
  230. /package/{lib → dist}/__spec__/core/generating-enum-docs.spec.d.ts +0 -0
  231. /package/{lib → dist}/__spec__/core/generating-interface-docs.spec.d.ts +0 -0
  232. /package/{lib → dist}/__spec__/core/generating-reference-guide.spec.d.ts +0 -0
  233. /package/{lib → dist}/cli/generate.d.ts +0 -0
  234. /package/{lib/model → dist/core}/apex-bundle.d.ts +0 -0
  235. /package/{lib/model → dist/core}/apex-bundle.js +0 -0
  236. /package/{lib/model → dist/core}/manifest.d.ts +0 -0
  237. /package/{lib/model → dist/core}/manifest.js +0 -0
  238. /package/{lib → dist}/core/template.d.ts +0 -0
  239. /package/{lib → dist}/core/templates/reference-guide.d.ts +0 -0
  240. /package/{lib → dist}/core/templates/reference-guide.js.map +0 -0
  241. /package/{lib → dist}/index.js.map +0 -0
  242. /package/{lib → dist}/model/apex-type-wrappers/ClassMirrorWrapper.d.ts +0 -0
  243. /package/{lib → dist}/model/apex-type-wrappers/ClassMirrorWrapper.js +0 -0
  244. /package/{lib → dist}/model/apex-type-wrappers/ClassMirrorWrapper.js.map +0 -0
  245. /package/{lib → dist}/model/apex-type-wrappers/MethodMirrorWrapper.d.ts +0 -0
  246. /package/{lib → dist}/model/apex-type-wrappers/MethodMirrorWrapper.js +0 -0
  247. /package/{lib → dist}/model/apex-type-wrappers/MethodMirrorWrapper.js.map +0 -0
  248. /package/{lib → dist}/model/markdown-generation-util/doc-comment-annotation-util.d.ts +0 -0
  249. /package/{lib → dist}/model/markdown-generation-util/index.d.ts +0 -0
  250. /package/{lib → dist}/model/markdown-generation-util/index.js +0 -0
  251. /package/{lib → dist}/model/markdown-generation-util/index.js.map +0 -0
  252. /package/{lib → dist}/model/markdown-generation-util/type-declaration-util.d.ts +0 -0
  253. /package/{lib → dist}/model/markdown-home-file.d.ts +0 -0
  254. /package/{lib → dist}/model/markdown-home-file.js +0 -0
  255. /package/{lib → dist}/model/markdown-home-file.js.map +0 -0
  256. /package/{lib → dist}/model/markdown-type-file.js +0 -0
  257. /package/{lib → dist}/model/openapi/apex-doc-types.d.ts +0 -0
  258. /package/{lib → dist}/model/openapi/apex-doc-types.js +0 -0
  259. /package/{lib → dist}/model/openapi/apex-doc-types.js.map +0 -0
  260. /package/{lib → dist}/model/openapi/open-api-types.d.ts +0 -0
  261. /package/{lib → dist}/model/openapi/open-api-types.js +0 -0
  262. /package/{lib → dist}/model/openapi/open-api-types.js.map +0 -0
  263. /package/{lib → dist}/model/openapi/open-api.d.ts +0 -0
  264. /package/{lib → dist}/model/openapi/open-api.js +0 -0
  265. /package/{lib → dist}/model/openapi/open-api.js.map +0 -0
  266. /package/{lib → dist}/model/openapi/openapi-type-file.d.ts +0 -0
  267. /package/{lib → dist}/model/openapi/openapi-type-file.js +0 -0
  268. /package/{lib → dist}/model/openapi/openapi-type-file.js.map +0 -0
  269. /package/{lib → dist}/model/outputFile.d.ts +0 -0
  270. /package/{lib → dist}/model/outputFile.js +0 -0
  271. /package/{lib → dist}/model/outputFile.js.map +0 -0
  272. /package/{lib → dist}/model/types-repository.d.ts +0 -0
  273. /package/{lib → dist}/model/types-repository.js +0 -0
  274. /package/{lib → dist}/model/types-repository.js.map +0 -0
  275. /package/{lib → dist}/service/file-system.d.ts +0 -0
  276. /package/{lib → dist}/service/file-system.js +0 -0
  277. /package/{lib → dist}/service/file-system.js.map +0 -0
  278. /package/{lib → dist}/service/file-writer.d.ts +0 -0
  279. /package/{lib → dist}/service/file-writer.js +0 -0
  280. /package/{lib → dist}/service/file-writer.js.map +0 -0
  281. /package/{lib → dist}/service/metadata-processor.d.ts +0 -0
  282. /package/{lib → dist}/service/metadata-processor.js +0 -0
  283. /package/{lib → dist}/service/metadata-processor.js.map +0 -0
  284. /package/{lib → dist}/service/parser.js +0 -0
  285. /package/{lib → dist}/service/parser.js.map +0 -0
  286. /package/{lib → dist}/service/state.d.ts +0 -0
  287. /package/{lib → dist}/service/state.js +0 -0
  288. /package/{lib → dist}/service/state.js.map +0 -0
  289. /package/{lib → dist}/service/walkers/class-walker.d.ts +0 -0
  290. /package/{lib → dist}/service/walkers/class-walker.js +0 -0
  291. /package/{lib → dist}/service/walkers/class-walker.js.map +0 -0
  292. /package/{lib → dist}/service/walkers/enum-walker.d.ts +0 -0
  293. /package/{lib → dist}/service/walkers/enum-walker.js +0 -0
  294. /package/{lib → dist}/service/walkers/enum-walker.js.map +0 -0
  295. /package/{lib → dist}/service/walkers/interface-walker.d.ts +0 -0
  296. /package/{lib → dist}/service/walkers/interface-walker.js +0 -0
  297. /package/{lib → dist}/service/walkers/interface-walker.js.map +0 -0
  298. /package/{lib → dist}/service/walkers/walker-factory.d.ts +0 -0
  299. /package/{lib → dist}/service/walkers/walker-factory.js +0 -0
  300. /package/{lib → dist}/service/walkers/walker-factory.js.map +0 -0
  301. /package/{lib → dist}/service/walkers/walker.d.ts +0 -0
  302. /package/{lib → dist}/service/walkers/walker.js +0 -0
  303. /package/{lib → dist}/service/walkers/walker.js.map +0 -0
  304. /package/{lib → dist}/test-helpers/AnnotationBuilder.d.ts +0 -0
  305. /package/{lib → dist}/test-helpers/AnnotationBuilder.js +0 -0
  306. /package/{lib → dist}/test-helpers/AnnotationBuilder.js.map +0 -0
  307. /package/{lib → dist}/test-helpers/DocCommentAnnotationBuilder.d.ts +0 -0
  308. /package/{lib → dist}/test-helpers/DocCommentAnnotationBuilder.js +0 -0
  309. /package/{lib → dist}/test-helpers/DocCommentAnnotationBuilder.js.map +0 -0
  310. /package/{lib → dist}/test-helpers/DocCommentBuilder.d.ts +0 -0
  311. /package/{lib → dist}/test-helpers/DocCommentBuilder.js +0 -0
  312. /package/{lib → dist}/test-helpers/DocCommentBuilder.js.map +0 -0
  313. /package/{lib → dist}/test-helpers/FieldMirrorBuilder.d.ts +0 -0
  314. /package/{lib → dist}/test-helpers/FieldMirrorBuilder.js +0 -0
  315. /package/{lib → dist}/test-helpers/FieldMirrorBuilder.js.map +0 -0
  316. /package/{lib → dist}/test-helpers/InterfaceMirrorBuilder.d.ts +0 -0
  317. /package/{lib → dist}/test-helpers/InterfaceMirrorBuilder.js +0 -0
  318. /package/{lib → dist}/test-helpers/InterfaceMirrorBuilder.js.map +0 -0
  319. /package/{lib → dist}/test-helpers/MethodMirrorBuilder.d.ts +0 -0
  320. /package/{lib → dist}/test-helpers/MethodMirrorBuilder.js +0 -0
  321. /package/{lib → dist}/test-helpers/MethodMirrorBuilder.js.map +0 -0
  322. /package/{lib → dist}/test-helpers/SettingsBuilder.d.ts +0 -0
  323. /package/{lib → dist}/transpiler/factory.d.ts +0 -0
  324. /package/{lib → dist}/transpiler/file-container.d.ts +0 -0
  325. /package/{lib → dist}/transpiler/file-container.js +0 -0
  326. /package/{lib → dist}/transpiler/file-container.js.map +0 -0
  327. /package/{lib → dist}/transpiler/generator-choices.d.ts +0 -0
  328. /package/{lib → dist}/transpiler/generator-choices.js +0 -0
  329. /package/{lib → dist}/transpiler/generator-choices.js.map +0 -0
  330. /package/{lib → dist}/transpiler/markdown/docsify/docsify-docs-processor.d.ts +0 -0
  331. /package/{lib → dist}/transpiler/markdown/docsify/docsify-docs-processor.js +0 -0
  332. /package/{lib → dist}/transpiler/markdown/docsify/docsify-docs-processor.js.map +0 -0
  333. /package/{lib → dist}/transpiler/markdown/jekyll/jekyll-docsProcessor.d.ts +0 -0
  334. /package/{lib → dist}/transpiler/markdown/jekyll/jekyll-docsProcessor.js +0 -0
  335. /package/{lib → dist}/transpiler/markdown/jekyll/jekyll-docsProcessor.js.map +0 -0
  336. /package/{lib → dist}/transpiler/markdown/markdown-transpiler-base.d.ts +0 -0
  337. /package/{lib → dist}/transpiler/markdown/markdown-transpiler-base.js +0 -0
  338. /package/{lib → dist}/transpiler/markdown/markdown-transpiler-base.js.map +0 -0
  339. /package/{lib → dist}/transpiler/markdown/plain-markdown/class-template.d.ts +0 -0
  340. /package/{lib → dist}/transpiler/markdown/plain-markdown/class-template.js.map +0 -0
  341. /package/{lib → dist}/transpiler/markdown/plain-markdown/constructors-partial-template.d.ts +0 -0
  342. /package/{lib → dist}/transpiler/markdown/plain-markdown/constructors-partial-template.js.map +0 -0
  343. /package/{lib → dist}/transpiler/markdown/plain-markdown/documentable-partial-template.d.ts +0 -0
  344. /package/{lib → dist}/transpiler/markdown/plain-markdown/enum-template.d.ts +0 -0
  345. /package/{lib → dist}/transpiler/markdown/plain-markdown/enum-template.js +0 -0
  346. /package/{lib → dist}/transpiler/markdown/plain-markdown/enum-template.js.map +0 -0
  347. /package/{lib → dist}/transpiler/markdown/plain-markdown/fieldsPartialTemplate.d.ts +0 -0
  348. /package/{lib → dist}/transpiler/markdown/plain-markdown/fieldsPartialTemplate.js.map +0 -0
  349. /package/{lib → dist}/transpiler/markdown/plain-markdown/grouped-members-partial-template.d.ts +0 -0
  350. /package/{lib → dist}/transpiler/markdown/plain-markdown/grouped-members-partial-template.js +0 -0
  351. /package/{lib → dist}/transpiler/markdown/plain-markdown/grouped-members-partial-template.js.map +0 -0
  352. /package/{lib → dist}/transpiler/markdown/plain-markdown/interface-template.d.ts +0 -0
  353. /package/{lib → dist}/transpiler/markdown/plain-markdown/interface-template.js +0 -0
  354. /package/{lib → dist}/transpiler/markdown/plain-markdown/interface-template.js.map +0 -0
  355. /package/{lib → dist}/transpiler/markdown/plain-markdown/methods-partial-template.d.ts +0 -0
  356. /package/{lib → dist}/transpiler/markdown/plain-markdown/methods-partial-template.js.map +0 -0
  357. /package/{lib → dist}/transpiler/markdown/plain-markdown/type-doc-partial.d.ts +0 -0
  358. /package/{lib → dist}/transpiler/markdown/plain-markdown/type-doc-partial.js +0 -0
  359. /package/{lib → dist}/transpiler/markdown/plain-markdown/type-doc-partial.js.map +0 -0
  360. /package/{lib → dist}/transpiler/openapi/open-api-docs-processor.d.ts +0 -0
  361. /package/{lib → dist}/transpiler/openapi/open-api-docs-processor.js +0 -0
  362. /package/{lib → dist}/transpiler/openapi/open-api-docs-processor.js.map +0 -0
  363. /package/{lib → dist}/transpiler/openapi/parsers/Builder.d.ts +0 -0
  364. /package/{lib → dist}/transpiler/openapi/parsers/Builder.js +0 -0
  365. /package/{lib → dist}/transpiler/openapi/parsers/Builder.js.map +0 -0
  366. /package/{lib → dist}/transpiler/openapi/parsers/MethodParser.d.ts +0 -0
  367. /package/{lib → dist}/transpiler/openapi/parsers/MethodParser.js +0 -0
  368. /package/{lib → dist}/transpiler/openapi/parsers/MethodParser.js.map +0 -0
  369. /package/{lib → dist}/transpiler/openapi/parsers/ParameterObjectBuilder.d.ts +0 -0
  370. /package/{lib → dist}/transpiler/openapi/parsers/ParameterObjectBuilder.js +0 -0
  371. /package/{lib → dist}/transpiler/openapi/parsers/ParameterObjectBuilder.js.map +0 -0
  372. /package/{lib → dist}/transpiler/openapi/parsers/ReferenceBuilder.d.ts +0 -0
  373. /package/{lib → dist}/transpiler/openapi/parsers/ReferenceBuilder.js +0 -0
  374. /package/{lib → dist}/transpiler/openapi/parsers/ReferenceBuilder.js.map +0 -0
  375. /package/{lib → dist}/transpiler/openapi/parsers/RequestBodyBuilder.d.ts +0 -0
  376. /package/{lib → dist}/transpiler/openapi/parsers/RequestBodyBuilder.js +0 -0
  377. /package/{lib → dist}/transpiler/openapi/parsers/RequestBodyBuilder.js.map +0 -0
  378. /package/{lib → dist}/transpiler/openapi/parsers/ResponsesBuilder.d.ts +0 -0
  379. /package/{lib → dist}/transpiler/openapi/parsers/ResponsesBuilder.js +0 -0
  380. /package/{lib → dist}/transpiler/openapi/parsers/ResponsesBuilder.js.map +0 -0
  381. /package/{lib → dist}/transpiler/processor-type-transpiler.d.ts +0 -0
  382. /package/{lib → dist}/transpiler/processor-type-transpiler.js +0 -0
  383. /package/{lib → dist}/transpiler/processor-type-transpiler.js.map +0 -0
  384. /package/{lib → dist}/transpiler/transpiler.d.ts +0 -0
  385. /package/{lib → dist}/transpiler/transpiler.js +0 -0
  386. /package/{lib → dist}/transpiler/transpiler.js.map +0 -0
  387. /package/{lib → dist}/util/error-logger.d.ts +0 -0
  388. /package/{lib → dist}/util/error-logger.js +0 -0
  389. /package/{lib → dist}/util/error-logger.js.map +0 -0
  390. /package/{lib → dist}/util/logger.d.ts +0 -0
  391. /package/{lib → dist}/util/string-utils.d.ts +0 -0
  392. /package/src/{model → core}/apex-bundle.ts +0 -0
  393. /package/src/{model → core}/manifest.ts +0 -0
@@ -1,140 +1,16 @@
1
1
  #!/usr/bin/env node
2
- import * as yargs from 'yargs';
3
-
4
- import { Settings } from '../settings';
5
2
  import { Apexdocs } from '../application/Apexdocs';
6
- import { GeneratorChoices } from '../transpiler/generator-choices';
7
- import { cosmiconfig } from 'cosmiconfig';
3
+ import { extractArgs } from './args';
8
4
 
9
- const result = cosmiconfig('apexdocs').search();
10
- result.then((config) => {
11
- yargs.config(config?.config);
12
- let argv = yargs
13
- .options({
14
- sourceDir: {
15
- type: 'string',
16
- alias: 's',
17
- demandOption: true,
18
- describe: 'The directory location which contains your apex .cls classes.',
19
- },
20
- targetDir: {
21
- type: 'string',
22
- alias: 't',
23
- default: './docs/',
24
- describe: 'The directory location where documentation will be generated to.',
25
- },
26
- recursive: {
27
- type: 'boolean',
28
- alias: 'r',
29
- default: true,
30
- describe: 'Whether .cls classes will be searched for recursively in the directory provided.',
31
- },
32
- scope: {
33
- type: 'string',
34
- array: true,
35
- alias: 'p',
36
- default: ['global'],
37
- describe:
38
- 'A list of scopes to document. Values should be separated by a space, e.g --scope global public namespaceaccessible. ' +
39
- 'Annotations are supported and should be passed lowercased and without the @ symbol, e.g. namespaceaccessible auraenabled. ' +
40
- 'Note that this setting is ignored if generating an OpenApi REST specification since that looks for classes annotated with @RestResource.',
41
- },
42
- targetGenerator: {
43
- type: 'string',
44
- alias: 'g',
45
- default: 'jekyll',
46
- choices: ['jekyll', 'docsify', 'plain-markdown', 'openapi'],
47
- describe:
48
- 'Define the static file generator for which the documents will be created. ' +
49
- 'Currently supports jekyll, docsify, plain markdown, and OpenAPI v3.1.0.',
50
- },
51
- indexOnly: {
52
- type: 'boolean',
53
- default: false,
54
- describe: 'Defines whether only the index file should be generated.',
55
- },
56
- defaultGroupName: {
57
- type: 'string',
58
- default: 'Miscellaneous',
59
- describe: 'Defines the @group name to be used when a file does not specify it.',
60
- },
61
- sanitizeHtml: {
62
- type: 'boolean',
63
- default: true,
64
- describe:
65
- 'When on, any special character within your ApexDocs is converted into its HTML code representation. ' +
66
- 'This is specially useful when generic objects are described within the docs, e.g. "List< Foo>", "Map<Foo, Bar>" ' +
67
- 'because otherwise the content within < and > would be treated as HTML tags and not shown in the output. ' +
68
- 'Content in @example blocks are never sanitized.',
69
- },
70
- openApiTitle: {
71
- type: 'string',
72
- default: 'Apex REST Api',
73
- describe: 'If using "openapi" as the target generator, this allows you to specify the OpenApi title value.',
74
- },
75
- title: {
76
- type: 'string',
77
- describe: "If this allows you to specify the title of the generated documentation's home file.",
78
- default: 'Classes',
79
- },
80
- namespace: {
81
- type: 'string',
82
- describe:
83
- 'The package namespace, if any. If this value is provided the namespace will be added as a prefix to all of the parsed files. ' +
84
- "If generating an OpenApi definition, it will be added to the file's Server Url.",
85
- },
86
- openApiFileName: {
87
- type: 'string',
88
- describe: 'If using "openapi" as the target generator, this allows you to specify the name of the output file.',
89
- default: 'openapi',
90
- },
91
- sortMembersAlphabetically: {
92
- type: 'boolean',
93
- describe: 'Whether to sort members alphabetically.',
94
- default: false,
95
- },
96
- includeMetadata: {
97
- type: 'boolean',
98
- describe: "Whether to include the file's meta.xml information: Whether it is active and and the API version",
99
- default: false,
100
- },
101
- documentationRootDir: {
102
- type: 'string',
103
- describe:
104
- 'Allows you to specify the root documentation directory where the files are being generated. This can be helpful when embedding the generated docs into an existing site so that the links are generated correctly.',
105
- },
5
+ function main() {
6
+ extractArgs()
7
+ .then((config) => {
8
+ Apexdocs.generate(config);
106
9
  })
107
- .parseSync();
108
-
109
- if (config) {
110
- argv = { ...config.config, ...argv };
111
- }
112
-
113
- Settings.build({
114
- sourceDirectory: argv.sourceDir,
115
- recursive: argv.recursive,
116
- scope: argv.scope,
117
- outputDir: argv.targetDir,
118
- targetGenerator: argv.targetGenerator as GeneratorChoices,
119
- indexOnly: argv.indexOnly,
120
- defaultGroupName: argv.defaultGroupName,
121
- sanitizeHtml: argv.sanitizeHtml,
122
- openApiTitle: argv.openApiTitle,
123
- title: argv.title,
124
- namespace: argv.namespace,
125
- openApiFileName: argv.openApiFileName,
126
- sortMembersAlphabetically: argv.sortMembersAlphabetically,
127
- includeMetadata: argv.includeMetadata,
128
- rootDir: argv.documentationRootDir,
129
- onAfterProcess: config?.config?.onAfterProcess,
130
- onBeforeFileWrite: config?.config?.onBeforeFileWrite,
131
- frontMatterHeader: config?.config?.frontMatterHeader,
132
- });
10
+ .catch((error) => {
11
+ console.error(error);
12
+ process.exit(1);
13
+ });
14
+ }
133
15
 
134
- try {
135
- Apexdocs.generate();
136
- } catch (error) {
137
- console.error(error);
138
- process.exit(1);
139
- }
140
- });
16
+ main();
@@ -0,0 +1,54 @@
1
+ import { ClassMirrorBuilder } from '../../test-helpers/ClassMirrorBuilder';
2
+ import { createInheritanceChain } from '../inheritance-chain';
3
+
4
+ describe('inheritance chain for classes', () => {
5
+ test('returns an empty list of the class does not extend any other class', () => {
6
+ const classMirror = new ClassMirrorBuilder().build();
7
+ const repository = [classMirror];
8
+
9
+ const inheritanceChain = createInheritanceChain(repository, classMirror);
10
+
11
+ expect(inheritanceChain).toEqual([]);
12
+ });
13
+
14
+ test('returns the name of the extended class if it is not found in the repository', () => {
15
+ const classMirror = new ClassMirrorBuilder().withExtendedClass('ExtendedClass').build();
16
+ const repository = [classMirror];
17
+
18
+ const inheritanceChain = createInheritanceChain(repository, classMirror);
19
+
20
+ expect(inheritanceChain).toEqual(['ExtendedClass']);
21
+ });
22
+
23
+ test('returns the extended class when it is present in the repository', () => {
24
+ const classMirror = new ClassMirrorBuilder().withExtendedClass('ExtendedClass').build();
25
+ const extendedClass = new ClassMirrorBuilder().withName('ExtendedClass').build();
26
+ const repository = [classMirror, extendedClass];
27
+
28
+ const inheritanceChain = createInheritanceChain(repository, classMirror);
29
+
30
+ expect(inheritanceChain).toEqual(['ExtendedClass']);
31
+ });
32
+
33
+ test('returns the full inheritance chain when the extended class is also extended', () => {
34
+ const classMirror = new ClassMirrorBuilder().withExtendedClass('ExtendedClass').build();
35
+ const extendedClass = new ClassMirrorBuilder().withName('ExtendedClass').withExtendedClass('SuperClass').build();
36
+ const superClass = new ClassMirrorBuilder().withName('SuperClass').build();
37
+ const repository = [classMirror, extendedClass, superClass];
38
+
39
+ const inheritanceChain = createInheritanceChain(repository, classMirror);
40
+
41
+ expect(inheritanceChain).toEqual(['ExtendedClass', 'SuperClass']);
42
+ });
43
+
44
+ test('returns the inheritance for a class that extends an inner class', () => {
45
+ const classMirror = new ClassMirrorBuilder().withExtendedClass('OuterClass.InnerClass').build();
46
+ const innerClass = new ClassMirrorBuilder().withName('InnerClass').build();
47
+ const outerClass = new ClassMirrorBuilder().withName('OuterClass').addInnerClass(innerClass).build();
48
+ const repository = [classMirror, outerClass];
49
+
50
+ const inheritanceChain = createInheritanceChain(repository, classMirror);
51
+
52
+ expect(inheritanceChain).toEqual(['OuterClass.InnerClass']);
53
+ });
54
+ });
@@ -1,7 +1,7 @@
1
- import { InterfaceMirrorBuilder } from '../../test-helpers/InterfaceMirrorBuilder';
2
- import { AnnotationBuilder } from '../../test-helpers/AnnotationBuilder';
3
- import { MethodMirrorBuilder, ParameterBuilder } from '../../test-helpers/MethodMirrorBuilder';
4
- import { interfaceTypeToInterfaceSource } from '../apex-types';
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
5
 
6
6
  function linkGenerator(type: string): string {
7
7
  return type;
@@ -10,14 +10,14 @@ function linkGenerator(type: string): string {
10
10
  describe('Conversion from InterfaceMirror to InterfaceSource understandable by the templating engine', () => {
11
11
  it('converts the name', () => {
12
12
  const interfaceMirror = new InterfaceMirrorBuilder().withName('SampleInterface').build();
13
- const interfaceSource = interfaceTypeToInterfaceSource(interfaceMirror, linkGenerator);
13
+ const interfaceSource = typeToRenderable(interfaceMirror, linkGenerator);
14
14
 
15
15
  expect(interfaceSource.name).toBe('SampleInterface');
16
16
  });
17
17
 
18
18
  it('converts the access modifier', () => {
19
19
  const interfaceMirror = new InterfaceMirrorBuilder().build();
20
- const interfaceSource = interfaceTypeToInterfaceSource(interfaceMirror, linkGenerator);
20
+ const interfaceSource = typeToRenderable(interfaceMirror, linkGenerator);
21
21
 
22
22
  expect(interfaceSource.meta.accessModifier).toBe('public');
23
23
  });
@@ -26,7 +26,7 @@ describe('Conversion from InterfaceMirror to InterfaceSource understandable by t
26
26
  const interfaceMirror = new InterfaceMirrorBuilder()
27
27
  .addAnnotation(new AnnotationBuilder().withName('MyAnnotation').build())
28
28
  .build();
29
- const interfaceSource = interfaceTypeToInterfaceSource(interfaceMirror, linkGenerator);
29
+ const interfaceSource = typeToRenderable(interfaceMirror, linkGenerator);
30
30
 
31
31
  expect(interfaceSource.doc.annotations).toEqual(['MYANNOTATION']);
32
32
  });
@@ -44,10 +44,10 @@ describe('Conversion from InterfaceMirror to InterfaceSource understandable by t
44
44
  )
45
45
  .build();
46
46
 
47
- const interfaceSource = interfaceTypeToInterfaceSource(interfaceMirror, linkGenerator);
47
+ const interfaceSource = typeToRenderable(interfaceMirror, linkGenerator);
48
48
 
49
49
  expect(interfaceSource.methods.value).toHaveLength(1);
50
- expect(interfaceSource.methods.value[0].signature.value[0]).toBe('public String sampleMethod()');
50
+ expect(interfaceSource.methods.value[0].signature.value.content[0]).toBe('public String sampleMethod()');
51
51
  });
52
52
 
53
53
  it('converts method declarations. Method with parameters', () => {
@@ -72,9 +72,11 @@ describe('Conversion from InterfaceMirror to InterfaceSource understandable by t
72
72
  )
73
73
  .build();
74
74
 
75
- const interfaceSource = interfaceTypeToInterfaceSource(interfaceMirror, linkGenerator);
75
+ const interfaceSource = typeToRenderable(interfaceMirror, linkGenerator);
76
76
 
77
77
  expect(interfaceSource.methods.value).toHaveLength(1);
78
- expect(interfaceSource.methods.value[0].signature.value[0]).toBe('public String sampleMethod(String param1)');
78
+ expect(interfaceSource.methods.value[0].signature.value.content[0]).toBe(
79
+ 'public String sampleMethod(String param1)',
80
+ );
79
81
  });
80
82
  });
@@ -1,8 +1,9 @@
1
1
  import { replaceInlineReferences } from '../references';
2
- import { Link } from '../../core/renderable/types';
2
+ import { Link } from '../types';
3
3
 
4
4
  function getFileLink(typeName: string): Link {
5
5
  return {
6
+ __type: 'link' as const,
6
7
  title: typeName,
7
8
  url: `/api/${typeName}.html`,
8
9
  };
@@ -10,6 +11,7 @@ function getFileLink(typeName: string): Link {
10
11
 
11
12
  function getEmailLink(typeName: string) {
12
13
  return {
14
+ __type: 'link' as const,
13
15
  title: typeName,
14
16
  url: `mailto:${typeName}`,
15
17
  };
@@ -33,6 +35,7 @@ describe('reference utilities', () => {
33
35
  const expected = [
34
36
  'This is a test ',
35
37
  {
38
+ __type: 'link',
36
39
  title: 'ClassName',
37
40
  url: '/api/ClassName.html',
38
41
  },
@@ -44,6 +47,7 @@ describe('reference utilities', () => {
44
47
  it('replaces links in the format of {@link ClassName}', () => {
45
48
  function getFileLinkByTypeName(typeName: string): Link {
46
49
  return {
50
+ __type: 'link' as const,
47
51
  title: typeName,
48
52
  url: `/api/${typeName}.html`,
49
53
  };
@@ -55,6 +59,7 @@ describe('reference utilities', () => {
55
59
  const expected = [
56
60
  'This is a test ',
57
61
  {
62
+ __type: 'link',
58
63
  title: 'ClassName',
59
64
  url: '/api/ClassName.html',
60
65
  },
@@ -68,6 +73,7 @@ describe('reference utilities', () => {
68
73
  it('replaces emails in the format of {@email email-address}', () => {
69
74
  function getLinkByTypeName(typeName: string) {
70
75
  return {
76
+ __type: 'link' as const,
71
77
  title: typeName,
72
78
  url: `mailto:${typeName}`,
73
79
  };
@@ -79,6 +85,7 @@ describe('reference utilities', () => {
79
85
  const expected = [
80
86
  'This is an email ',
81
87
  {
88
+ __type: 'link',
82
89
  title: 'example@example.com',
83
90
  url: 'mailto:example@example.com',
84
91
  },
@@ -95,16 +102,19 @@ describe('reference utilities', () => {
95
102
  const expected = [
96
103
  'This is a test ',
97
104
  {
105
+ __type: 'link',
98
106
  title: 'ClassName',
99
107
  url: '/api/ClassName.html',
100
108
  },
101
109
  ', and ',
102
110
  {
111
+ __type: 'link',
103
112
  title: 'AnotherClass',
104
113
  url: '/api/AnotherClass.html',
105
114
  },
106
115
  ', and an email ',
107
116
  {
117
+ __type: 'link',
108
118
  title: 'testerson',
109
119
  url: 'mailto:testerson',
110
120
  },
@@ -4,16 +4,45 @@ import {
4
4
  RenderableClass,
5
5
  RenderableEnum,
6
6
  RenderableInterface,
7
- Renderable,
8
7
  RenderableSection,
9
8
  GroupedMember,
10
- } from '../core/renderable/types';
9
+ ClassMirrorWithInheritanceChain,
10
+ FieldMirrorWithInheritance,
11
+ PropertyMirrorWithInheritance,
12
+ } from './types';
11
13
  import { adaptDescribable, adaptDocumentable } from './documentables';
12
- import { GetRenderableContentByTypeName, linkFromTypeNameGenerator } from './references';
13
- import { FieldMirrorWithInheritance, PropertyMirrorWithInheritance } from '../model/inheritance';
14
+ import { GetRenderableContentByTypeName } from './references';
14
15
  import { adaptConstructor, adaptMethod } from './methods-and-constructors';
15
16
  import { adaptFieldOrProperty } from './fields-and-properties';
16
17
 
18
+ type GetReturnRenderable<T extends Type> = T extends InterfaceMirror
19
+ ? RenderableInterface
20
+ : T extends ClassMirror
21
+ ? RenderableClass
22
+ : RenderableEnum;
23
+
24
+ export function typeToRenderable<T extends Type>(
25
+ type: T,
26
+ linkGenerator: GetRenderableContentByTypeName,
27
+ namespace?: string,
28
+ ): GetReturnRenderable<T> {
29
+ function getRenderable(): RenderableInterface | RenderableClass | RenderableEnum {
30
+ switch (type.type_name) {
31
+ case 'enum':
32
+ return enumTypeToEnumSource(type as EnumMirror, linkGenerator) as RenderableEnum;
33
+ case 'interface':
34
+ return interfaceTypeToInterfaceSource(type as InterfaceMirror, linkGenerator) as RenderableInterface;
35
+ case 'class':
36
+ return classTypeToClassSource(type as ClassMirrorWithInheritanceChain, linkGenerator) as RenderableClass;
37
+ }
38
+ }
39
+
40
+ return {
41
+ ...(getRenderable() as GetReturnRenderable<T>),
42
+ namespace,
43
+ };
44
+ }
45
+
17
46
  function baseTypeAdapter(
18
47
  type: EnumMirror | InterfaceMirror | ClassMirror,
19
48
  linkGenerator: GetRenderableContentByTypeName,
@@ -40,29 +69,7 @@ function baseTypeAdapter(
40
69
  };
41
70
  }
42
71
 
43
- export function typeToRenderableType(
44
- type: Type,
45
- linkGenerator: GetRenderableContentByTypeName,
46
- namespace?: string,
47
- ): Renderable {
48
- function getRenderable() {
49
- switch (type.type_name) {
50
- case 'enum':
51
- return enumTypeToEnumSource(type as EnumMirror, linkGenerator);
52
- case 'interface':
53
- return interfaceTypeToInterfaceSource(type as InterfaceMirror, linkGenerator);
54
- case 'class':
55
- return classTypeToClassSource(type as ClassMirror, linkGenerator);
56
- }
57
- }
58
-
59
- return {
60
- ...getRenderable(),
61
- namespace,
62
- };
63
- }
64
-
65
- export function enumTypeToEnumSource(
72
+ function enumTypeToEnumSource(
66
73
  enumType: EnumMirror,
67
74
  linkGenerator: GetRenderableContentByTypeName,
68
75
  baseHeadingLevel: number = 1,
@@ -81,7 +88,7 @@ export function enumTypeToEnumSource(
81
88
  };
82
89
  }
83
90
 
84
- export function interfaceTypeToInterfaceSource(
91
+ function interfaceTypeToInterfaceSource(
85
92
  interfaceType: InterfaceMirror,
86
93
  linkGenerator: GetRenderableContentByTypeName,
87
94
  baseHeadingLevel: number = 1,
@@ -89,7 +96,7 @@ export function interfaceTypeToInterfaceSource(
89
96
  return {
90
97
  type: 'interface',
91
98
  ...baseTypeAdapter(interfaceType, linkGenerator, baseHeadingLevel),
92
- extends: interfaceType.extended_interfaces.map(linkFromTypeNameGenerator),
99
+ extends: interfaceType.extended_interfaces.map(linkGenerator),
93
100
  methods: {
94
101
  headingLevel: baseHeadingLevel + 1,
95
102
  heading: 'Methods',
@@ -98,8 +105,8 @@ export function interfaceTypeToInterfaceSource(
98
105
  };
99
106
  }
100
107
 
101
- export function classTypeToClassSource(
102
- classType: ClassMirror,
108
+ function classTypeToClassSource(
109
+ classType: ClassMirrorWithInheritanceChain,
103
110
  linkGenerator: GetRenderableContentByTypeName,
104
111
  baseHeadingLevel: number = 1,
105
112
  ): RenderableClass {
@@ -108,36 +115,36 @@ export function classTypeToClassSource(
108
115
  ...baseTypeAdapter(classType, linkGenerator, baseHeadingLevel),
109
116
  classModifier: classType.classModifier,
110
117
  sharingModifier: classType.sharingModifier,
111
- implements: classType.implemented_interfaces.map(linkFromTypeNameGenerator),
112
- extends: classType.extended_class ? linkFromTypeNameGenerator(classType.extended_class) : undefined,
113
- methods: adaptMembers('Methods', classType.methods, adaptMethod, linkFromTypeNameGenerator, baseHeadingLevel + 1),
118
+ implements: classType.implemented_interfaces.map(linkGenerator),
119
+ extends: classType.inheritanceChain.map(linkGenerator),
120
+ methods: adaptMembers('Methods', classType.methods, adaptMethod, linkGenerator, baseHeadingLevel + 1),
114
121
  constructors: adaptMembers(
115
122
  'Constructors',
116
123
  classType.constructors,
117
124
  (constructor, linkGenerator, baseHeadingLevel) =>
118
125
  adaptConstructor(classType.name, constructor, linkGenerator, baseHeadingLevel),
119
- linkFromTypeNameGenerator,
126
+ linkGenerator,
120
127
  baseHeadingLevel + 1,
121
128
  ),
122
129
  fields: adaptMembers(
123
130
  'Fields',
124
131
  classType.fields as FieldMirrorWithInheritance[],
125
132
  adaptFieldOrProperty,
126
- linkFromTypeNameGenerator,
133
+ linkGenerator,
127
134
  baseHeadingLevel + 1,
128
135
  ),
129
136
  properties: adaptMembers(
130
137
  'Properties',
131
138
  classType.properties as PropertyMirrorWithInheritance[],
132
139
  adaptFieldOrProperty,
133
- linkFromTypeNameGenerator,
140
+ linkGenerator,
134
141
  baseHeadingLevel + 1,
135
142
  ),
136
143
  innerClasses: {
137
144
  headingLevel: baseHeadingLevel + 1,
138
145
  heading: 'Classes',
139
146
  value: classType.classes.map((innerClass) =>
140
- classTypeToClassSource(innerClass, linkGenerator, baseHeadingLevel + 2),
147
+ classTypeToClassSource({ ...innerClass, inheritanceChain: [] }, linkGenerator, baseHeadingLevel + 2),
141
148
  ),
142
149
  },
143
150
  innerEnums: {
@@ -200,12 +207,15 @@ function toGroupedMembers<T extends Groupable, K>(
200
207
  }
201
208
 
202
209
  function groupByGroupName<T extends Groupable>(members: T[]): Record<string, T[]> {
203
- return members.reduce((acc, member) => {
204
- const groupName = member.group ?? 'Other';
205
- acc[groupName] = acc[groupName] ?? [];
206
- acc[groupName].push(member);
207
- return acc;
208
- }, {} as Record<string, T[]>);
210
+ return members.reduce(
211
+ (acc, member) => {
212
+ const groupName = member.group ?? 'Other';
213
+ acc[groupName] = acc[groupName] ?? [];
214
+ acc[groupName].push(member);
215
+ return acc;
216
+ },
217
+ {} as Record<string, T[]>,
218
+ );
209
219
  }
210
220
 
211
221
  function singleGroup<T extends Groupable, K>(