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

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 (499) hide show
  1. package/README.md +37 -0
  2. package/dist/cli/generate.js +2963 -0
  3. package/dist/defaults-DUwru49Q.js +12 -0
  4. package/dist/defaults-SH0Rsi5E.js +11 -0
  5. package/dist/defaults-jLXD2y8-.js +13 -0
  6. package/dist/index.d.ts +101 -0
  7. package/dist/index.js +36 -0
  8. package/examples/markdown/docs/index.md +109 -0
  9. package/examples/{plain-markdown/docs/Miscellaneous/ns.BaseClass.md → markdown/docs/miscellaneous/BaseClass.md} +1 -1
  10. package/examples/markdown/docs/miscellaneous/MultiInheritanceClass.md +72 -0
  11. package/examples/{plain-markdown/docs/Miscellaneous/ns.ParentInterface.md → markdown/docs/miscellaneous/ParentInterface.md} +1 -1
  12. package/examples/{plain-markdown/docs/Miscellaneous/ns.ReferencedEnum.md → markdown/docs/miscellaneous/ReferencedEnum.md} +1 -1
  13. package/examples/markdown/docs/miscellaneous/SampleException.md +24 -0
  14. package/examples/{plain-markdown/docs/Miscellaneous/ns.SampleInterface.md → markdown/docs/miscellaneous/SampleInterface.md} +29 -32
  15. package/examples/markdown/docs/miscellaneous/Url.md +309 -0
  16. package/examples/markdown/docs/sample-enums/SampleEnum.md +36 -0
  17. package/examples/{plain-markdown/docs/SampleGroup/ns.SampleClass.md → markdown/docs/samplegroup/SampleClass.md} +11 -14
  18. package/examples/markdown/force-app/classes/MultiInheritanceClass.cls +1 -0
  19. package/examples/markdown/force-app/classes/SampleException.cls +17 -0
  20. package/examples/markdown/force-app/classes/Url.cls +194 -0
  21. package/examples/{plain-markdown → markdown}/package.json +2 -2
  22. package/examples/vitepress/.forceignore +12 -0
  23. package/examples/vitepress/apexdocs.config.ts +106 -0
  24. package/examples/vitepress/config/project-scratch-def.json +13 -0
  25. package/examples/vitepress/docs/.vitepress/cache/deps/@theme_index.js +259 -0
  26. package/examples/vitepress/docs/.vitepress/cache/deps/@theme_index.js.map +7 -0
  27. package/examples/vitepress/docs/.vitepress/cache/deps/_metadata.json +40 -0
  28. package/examples/vitepress/docs/.vitepress/cache/deps/chunk-574YRH25.js +11474 -0
  29. package/examples/vitepress/docs/.vitepress/cache/deps/chunk-574YRH25.js.map +7 -0
  30. package/examples/vitepress/docs/.vitepress/cache/deps/chunk-E5DZZB2I.js +9172 -0
  31. package/examples/vitepress/docs/.vitepress/cache/deps/chunk-E5DZZB2I.js.map +7 -0
  32. package/examples/vitepress/docs/.vitepress/cache/deps/package.json +3 -0
  33. package/examples/vitepress/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js +4339 -0
  34. package/examples/vitepress/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map +7 -0
  35. package/examples/vitepress/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js +567 -0
  36. package/examples/vitepress/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js.map +7 -0
  37. package/examples/vitepress/docs/.vitepress/cache/deps/vue.js +323 -0
  38. package/examples/vitepress/docs/.vitepress/cache/deps/vue.js.map +7 -0
  39. package/examples/vitepress/docs/.vitepress/config.mts +21 -0
  40. package/examples/vitepress/docs/.vitepress/sidebar.json +119 -0
  41. package/examples/vitepress/docs/api-examples.md +49 -0
  42. package/examples/vitepress/docs/index-frontmatter.md +16 -0
  43. package/examples/vitepress/docs/index.md +56 -0
  44. package/examples/vitepress/docs/markdown-examples.md +85 -0
  45. package/examples/vitepress/docs/miscellaneous/BaseClass.md +20 -0
  46. package/examples/vitepress/docs/miscellaneous/MultiInheritanceClass.md +76 -0
  47. package/examples/vitepress/docs/miscellaneous/ParentInterface.md +19 -0
  48. package/examples/vitepress/docs/miscellaneous/ReferencedEnum.md +15 -0
  49. package/examples/vitepress/docs/miscellaneous/SampleException.md +28 -0
  50. package/examples/vitepress/docs/miscellaneous/SampleInterface.md +116 -0
  51. package/examples/vitepress/docs/miscellaneous/Url.md +317 -0
  52. package/examples/vitepress/docs/sample-enums/SampleEnum.md +40 -0
  53. package/examples/vitepress/docs/samplegroup/SampleClass.md +174 -0
  54. package/examples/vitepress/force-app/main/default/classes/BaseClass.cls +3 -0
  55. package/examples/vitepress/force-app/main/default/classes/MultiInheritanceClass.cls +1 -0
  56. package/examples/vitepress/force-app/main/default/classes/ParentInterface.cls +3 -0
  57. package/examples/vitepress/force-app/main/default/classes/ReferencedEnum.cls +5 -0
  58. package/examples/vitepress/force-app/main/default/classes/SampleClass.cls +72 -0
  59. package/examples/vitepress/force-app/main/default/classes/SampleEnum.cls +30 -0
  60. package/examples/vitepress/force-app/main/default/classes/SampleException.cls +17 -0
  61. package/examples/vitepress/force-app/main/default/classes/SampleInterface.cls +46 -0
  62. package/examples/vitepress/force-app/main/default/classes/Url.cls +198 -0
  63. package/examples/vitepress/package-lock.json +2574 -0
  64. package/examples/vitepress/package.json +18 -0
  65. package/examples/vitepress/sfdx-project.json +12 -0
  66. package/jest.config.js +2 -1
  67. package/package.json +18 -19
  68. package/src/application/Apexdocs.ts +17 -70
  69. package/src/application/__tests__/apex-file-reader.spec.ts +104 -0
  70. package/src/application/apex-file-reader.ts +42 -0
  71. package/src/application/file-writer.ts +21 -0
  72. package/src/application/generators/markdown.ts +58 -0
  73. package/src/application/generators/openapi.ts +56 -0
  74. package/src/cli/args.ts +43 -0
  75. package/src/cli/commands/markdown.ts +52 -0
  76. package/src/cli/generate.ts +10 -134
  77. package/src/core/manifest.ts +90 -0
  78. package/src/{__spec__/core → core/markdown/__test__}/expect-extensions.ts +5 -5
  79. package/src/core/markdown/__test__/generating-class-docs.spec.ts +735 -0
  80. package/src/{__spec__/core → core/markdown/__test__}/generating-enum-docs.spec.ts +89 -59
  81. package/src/{__spec__/core → core/markdown/__test__}/generating-interface-docs.spec.ts +105 -75
  82. package/src/{__spec__/core → core/markdown/__test__}/generating-reference-guide.spec.ts +43 -26
  83. package/src/core/markdown/__test__/inheritance-chain.test.ts +54 -0
  84. package/src/core/markdown/__test__/test-helpers.ts +23 -0
  85. package/src/core/markdown/adapters/__tests__/documentables.spec.ts +109 -0
  86. package/src/core/markdown/adapters/__tests__/interface-adapter.spec.ts +148 -0
  87. package/src/{adapters → core/markdown/adapters}/__tests__/references.spec.ts +23 -2
  88. package/src/{adapters → core/markdown/adapters}/apex-types.ts +58 -44
  89. package/src/{adapters → core/markdown/adapters}/documentables.ts +58 -35
  90. package/src/{adapters → core/markdown/adapters}/fields-and-properties.ts +18 -11
  91. package/src/{adapters/references.ts → core/markdown/adapters/inline.ts} +43 -13
  92. package/src/{adapters → core/markdown/adapters}/methods-and-constructors.ts +36 -20
  93. package/src/core/markdown/adapters/reference-guide.ts +35 -0
  94. package/src/core/markdown/adapters/renderable-bundle.ts +78 -0
  95. package/src/core/markdown/adapters/renderable-to-page-data.ts +89 -0
  96. package/src/core/markdown/adapters/type-utils.ts +13 -0
  97. package/src/core/{renderable → markdown/adapters}/types.d.ts +57 -8
  98. package/src/core/markdown/generate-docs.ts +216 -0
  99. package/src/core/markdown/reflection/error-handling.ts +37 -0
  100. package/src/core/markdown/reflection/filter-scope.ts +13 -0
  101. package/src/core/markdown/reflection/inheritance-chain-expanion.ts +22 -0
  102. package/src/core/markdown/reflection/inheritance-chain.ts +23 -0
  103. package/src/core/markdown/reflection/inherited-member-expansion.ts +105 -0
  104. package/src/core/markdown/reflection/reflect-source.ts +45 -0
  105. package/src/core/markdown/reflection/sort-members.ts +59 -0
  106. package/src/{transpiler/markdown/plain-markdown → core/markdown/templates}/class-template.ts +5 -3
  107. package/src/{transpiler/markdown/plain-markdown → core/markdown/templates}/constructors-partial-template.ts +2 -2
  108. package/src/{transpiler/markdown/plain-markdown → core/markdown/templates}/documentable-partial-template.ts +6 -4
  109. package/src/{transpiler/markdown/plain-markdown → core/markdown/templates}/fieldsPartialTemplate.ts +1 -1
  110. package/src/core/markdown/templates/hookable.ts +7 -0
  111. package/src/{transpiler/markdown/plain-markdown → core/markdown/templates}/methods-partial-template.ts +2 -2
  112. package/src/core/{templates → markdown/templates}/reference-guide.ts +1 -1
  113. package/src/core/{template.ts → markdown/templates/template.ts} +25 -19
  114. package/src/core/markdown/utils.ts +3 -0
  115. package/src/{transpiler → core}/openapi/__tests__/open-api-docs-processor.spec.ts +1 -1
  116. package/src/{model → core/openapi}/apex-type-wrappers/__tests__/ClassMirrorWrapper.spec.ts +3 -3
  117. package/src/core/openapi/file-container.ts +13 -0
  118. package/src/{service → core/openapi}/manifest-factory.ts +3 -3
  119. package/src/{transpiler → core}/openapi/open-api-docs-processor.ts +9 -10
  120. package/src/core/openapi/openapi-type-file.ts +12 -0
  121. package/src/{service → core/openapi}/parser.ts +8 -8
  122. package/src/{transpiler → core}/openapi/parsers/Builder.ts +2 -2
  123. package/src/{transpiler → core}/openapi/parsers/MethodParser.ts +5 -5
  124. package/src/{transpiler → core}/openapi/parsers/ParameterObjectBuilder.ts +2 -2
  125. package/src/{transpiler → core}/openapi/parsers/ReferenceBuilder.ts +3 -3
  126. package/src/{transpiler → core}/openapi/parsers/RequestBodyBuilder.ts +2 -2
  127. package/src/{transpiler → core}/openapi/parsers/ResponsesBuilder.ts +2 -2
  128. package/src/{transpiler → core}/openapi/parsers/__tests__/MethodParser.spec.ts +1 -1
  129. package/src/{transpiler → core}/openapi/parsers/__tests__/ParameterObjectBuilder.spec.ts +2 -2
  130. package/src/{transpiler → core}/openapi/parsers/__tests__/ReferenceBuilder.spec.ts +2 -2
  131. package/src/{transpiler → core}/openapi/parsers/__tests__/RequestBodyBuilder.spec.ts +2 -2
  132. package/src/{transpiler → core}/openapi/parsers/__tests__/ResponsesBuilder.spec.ts +1 -1
  133. package/src/{transpiler → core/openapi}/transpiler.ts +2 -6
  134. package/src/{model → core/openapi}/types-repository.ts +0 -9
  135. package/src/core/parse-apex-metadata.ts +14 -0
  136. package/src/core/settings.ts +56 -0
  137. package/src/core/shared/types.d.ts +131 -0
  138. package/src/core/shared/utils.ts +5 -0
  139. package/src/defaults.ts +9 -0
  140. package/src/index.ts +40 -2
  141. package/src/test-helpers/ClassMirrorBuilder.ts +14 -1
  142. package/src/test-helpers/InterfaceMirrorBuilder.ts +0 -5
  143. package/src/test-helpers/SettingsBuilder.ts +1 -4
  144. package/src/util/fp.ts +3 -0
  145. package/src/util/logger.ts +3 -3
  146. package/src/util/string-utils.ts +0 -4
  147. package/tsconfig.json +6 -2
  148. package/apexdocs.config.ts +0 -13
  149. package/docs/.nojekyll +0 -0
  150. package/docs/__old/README.md +0 -1
  151. package/docs/__old/index.html +0 -22
  152. package/docs/__old/restapi.json +0 -589
  153. package/docs/__old/types/Classes/nspc.AnotherInterface.md +0 -22
  154. package/docs/__old/types/Classes/nspc.ChildClass.md +0 -97
  155. package/docs/__old/types/Main/nspc.GroupedClass.md +0 -10
  156. package/docs/__old/types/Main/nspc.SampleClass.md +0 -189
  157. package/docs/__old/types/Misc-Group/nspc.EscapedAnnotations.md +0 -4
  158. package/docs/__old/types/Misc-Group/nspc.GrandparentClass.md +0 -13
  159. package/docs/__old/types/Misc-Group/nspc.InterfaceWithInheritance.md +0 -29
  160. package/docs/__old/types/Misc-Group/nspc.MemberGrouping.md +0 -13
  161. package/docs/__old/types/Misc-Group/nspc.ParentClass.md +0 -37
  162. package/docs/__old/types/Misc-Group/nspc.Reference1.md +0 -18
  163. package/docs/__old/types/Misc-Group/nspc.Reference2.md +0 -12
  164. package/docs/__old/types/Misc-Group/nspc.Reference3.md +0 -7
  165. package/docs/__old/types/Misc-Group/nspc.Reference4.md +0 -7
  166. package/docs/__old/types/Misc-Group/nspc.Reference5.md +0 -7
  167. package/docs/__old/types/Misc-Group/nspc.Reference6.md +0 -9
  168. package/docs/__old/types/Misc-Group/nspc.Reference7.md +0 -7
  169. package/docs/__old/types/Misc-Group/nspc.SampleClassWithoutModifier.md +0 -11
  170. package/docs/__old/types/Misc-Group/nspc.SampleRestResource.md +0 -104
  171. package/docs/__old/types/Misc-Group/nspc.SampleRestResourceWithInnerClass.md +0 -33
  172. package/docs/__old/types/Misc-Group/nspc.SampleRestResourceWithoutApexDocs.md +0 -14
  173. package/docs/__old/types/README.md +0 -97
  174. package/docs/__old/types/Sample-Interfaces/nspc.SampleInterface.md +0 -23
  175. package/examples/includes/header.md +0 -3
  176. package/examples/plain-markdown/docs/Miscellaneous/ns.SampleException.md +0 -7
  177. package/examples/plain-markdown/docs/Sample-Enums/ns.SampleEnum.md +0 -36
  178. package/examples/plain-markdown/docs/index.md +0 -36
  179. package/examples/plain-markdown/force-app/classes/SampleException.cls +0 -1
  180. package/examples/plain-markdown/template.md +0 -3
  181. package/lib/__spec__/core/expect-extensions.d.ts +0 -3
  182. package/lib/__spec__/core/expect-extensions.js +0 -54
  183. package/lib/__spec__/core/expect-extensions.js.map +0 -1
  184. package/lib/__spec__/core/generating-class-docs.spec.d.ts +0 -1
  185. package/lib/__spec__/core/generating-class-docs.spec.js +0 -427
  186. package/lib/__spec__/core/generating-class-docs.spec.js.map +0 -1
  187. package/lib/__spec__/core/generating-enum-docs.spec.d.ts +0 -1
  188. package/lib/__spec__/core/generating-enum-docs.spec.js +0 -303
  189. package/lib/__spec__/core/generating-enum-docs.spec.js.map +0 -1
  190. package/lib/__spec__/core/generating-interface-docs.spec.d.ts +0 -1
  191. package/lib/__spec__/core/generating-interface-docs.spec.js +0 -361
  192. package/lib/__spec__/core/generating-interface-docs.spec.js.map +0 -1
  193. package/lib/__spec__/core/generating-reference-guide.spec.d.ts +0 -1
  194. package/lib/__spec__/core/generating-reference-guide.spec.js +0 -161
  195. package/lib/__spec__/core/generating-reference-guide.spec.js.map +0 -1
  196. package/lib/adapters/apex-types.d.ts +0 -7
  197. package/lib/adapters/apex-types.js +0 -112
  198. package/lib/adapters/apex-types.js.map +0 -1
  199. package/lib/adapters/documentables.d.ts +0 -7
  200. package/lib/adapters/documentables.js +0 -56
  201. package/lib/adapters/documentables.js.map +0 -1
  202. package/lib/adapters/fields-and-properties.d.ts +0 -4
  203. package/lib/adapters/fields-and-properties.js +0 -32
  204. package/lib/adapters/fields-and-properties.js.map +0 -1
  205. package/lib/adapters/methods-and-constructors.d.ts +0 -5
  206. package/lib/adapters/methods-and-constructors.js +0 -92
  207. package/lib/adapters/methods-and-constructors.js.map +0 -1
  208. package/lib/adapters/references.d.ts +0 -5
  209. package/lib/adapters/references.js +0 -82
  210. package/lib/adapters/references.js.map +0 -1
  211. package/lib/adapters/type-utils.d.ts +0 -2
  212. package/lib/adapters/type-utils.js +0 -7
  213. package/lib/adapters/type-utils.js.map +0 -1
  214. package/lib/application/Apexdocs.d.ts +0 -13
  215. package/lib/application/Apexdocs.js +0 -80
  216. package/lib/application/Apexdocs.js.map +0 -1
  217. package/lib/cli/generate.d.ts +0 -2
  218. package/lib/cli/generate.js +0 -157
  219. package/lib/cli/generate.js.map +0 -1
  220. package/lib/core/generate-docs.d.ts +0 -23
  221. package/lib/core/generate-docs.js +0 -241
  222. package/lib/core/generate-docs.js.map +0 -1
  223. package/lib/core/template.d.ts +0 -10
  224. package/lib/core/template.js +0 -92
  225. package/lib/core/template.js.map +0 -1
  226. package/lib/core/templates/reference-guide.d.ts +0 -1
  227. package/lib/core/templates/reference-guide.js +0 -18
  228. package/lib/core/templates/reference-guide.js.map +0 -1
  229. package/lib/index.d.ts +0 -2
  230. package/lib/index.js +0 -29
  231. package/lib/index.js.map +0 -1
  232. package/lib/model/apex-bundle.d.ts +0 -6
  233. package/lib/model/apex-bundle.js +0 -11
  234. package/lib/model/apex-bundle.js.map +0 -1
  235. package/lib/model/apex-type-wrappers/ClassMirrorWrapper.d.ts +0 -7
  236. package/lib/model/apex-type-wrappers/ClassMirrorWrapper.js +0 -14
  237. package/lib/model/apex-type-wrappers/ClassMirrorWrapper.js.map +0 -1
  238. package/lib/model/apex-type-wrappers/MethodMirrorWrapper.d.ts +0 -7
  239. package/lib/model/apex-type-wrappers/MethodMirrorWrapper.js +0 -12
  240. package/lib/model/apex-type-wrappers/MethodMirrorWrapper.js.map +0 -1
  241. package/lib/model/inheritance.d.ts +0 -8
  242. package/lib/model/inheritance.js +0 -3
  243. package/lib/model/inheritance.js.map +0 -1
  244. package/lib/model/manifest.d.ts +0 -22
  245. package/lib/model/manifest.js +0 -53
  246. package/lib/model/manifest.js.map +0 -1
  247. package/lib/model/markdown-file.d.ts +0 -16
  248. package/lib/model/markdown-file.js +0 -111
  249. package/lib/model/markdown-file.js.map +0 -1
  250. package/lib/model/markdown-generation-util/doc-comment-annotation-util.d.ts +0 -8
  251. package/lib/model/markdown-generation-util/doc-comment-annotation-util.js +0 -46
  252. package/lib/model/markdown-generation-util/doc-comment-annotation-util.js.map +0 -1
  253. package/lib/model/markdown-generation-util/field-declaration-util.d.ts +0 -3
  254. package/lib/model/markdown-generation-util/field-declaration-util.js +0 -54
  255. package/lib/model/markdown-generation-util/field-declaration-util.js.map +0 -1
  256. package/lib/model/markdown-generation-util/index.d.ts +0 -3
  257. package/lib/model/markdown-generation-util/index.js +0 -20
  258. package/lib/model/markdown-generation-util/index.js.map +0 -1
  259. package/lib/model/markdown-generation-util/method-declaration-util.d.ts +0 -4
  260. package/lib/model/markdown-generation-util/method-declaration-util.js +0 -114
  261. package/lib/model/markdown-generation-util/method-declaration-util.js.map +0 -1
  262. package/lib/model/markdown-generation-util/type-declaration-util.d.ts +0 -3
  263. package/lib/model/markdown-generation-util/type-declaration-util.js +0 -81
  264. package/lib/model/markdown-generation-util/type-declaration-util.js.map +0 -1
  265. package/lib/model/markdown-home-file.d.ts +0 -11
  266. package/lib/model/markdown-home-file.js +0 -57
  267. package/lib/model/markdown-home-file.js.map +0 -1
  268. package/lib/model/markdown-type-file.d.ts +0 -26
  269. package/lib/model/markdown-type-file.js +0 -137
  270. package/lib/model/markdown-type-file.js.map +0 -1
  271. package/lib/model/openapi/apex-doc-types.d.ts +0 -19
  272. package/lib/model/openapi/apex-doc-types.js +0 -5
  273. package/lib/model/openapi/apex-doc-types.js.map +0 -1
  274. package/lib/model/openapi/open-api-types.d.ts +0 -93
  275. package/lib/model/openapi/open-api-types.js +0 -3
  276. package/lib/model/openapi/open-api-types.js.map +0 -1
  277. package/lib/model/openapi/open-api.d.ts +0 -16
  278. package/lib/model/openapi/open-api.js +0 -34
  279. package/lib/model/openapi/open-api.js.map +0 -1
  280. package/lib/model/openapi/openapi-type-file.d.ts +0 -7
  281. package/lib/model/openapi/openapi-type-file.js +0 -17
  282. package/lib/model/openapi/openapi-type-file.js.map +0 -1
  283. package/lib/model/outputFile.d.ts +0 -10
  284. package/lib/model/outputFile.js +0 -22
  285. package/lib/model/outputFile.js.map +0 -1
  286. package/lib/model/types-repository.d.ts +0 -16
  287. package/lib/model/types-repository.js +0 -54
  288. package/lib/model/types-repository.js.map +0 -1
  289. package/lib/service/apex-file-reader.d.ts +0 -14
  290. package/lib/service/apex-file-reader.js +0 -49
  291. package/lib/service/apex-file-reader.js.map +0 -1
  292. package/lib/service/file-system.d.ts +0 -14
  293. package/lib/service/file-system.js +0 -48
  294. package/lib/service/file-system.js.map +0 -1
  295. package/lib/service/file-writer.d.ts +0 -6
  296. package/lib/service/file-writer.js +0 -57
  297. package/lib/service/file-writer.js.map +0 -1
  298. package/lib/service/manifest-factory.d.ts +0 -10
  299. package/lib/service/manifest-factory.js +0 -16
  300. package/lib/service/manifest-factory.js.map +0 -1
  301. package/lib/service/metadata-processor.d.ts +0 -3
  302. package/lib/service/metadata-processor.js +0 -17
  303. package/lib/service/metadata-processor.js.map +0 -1
  304. package/lib/service/parser.d.ts +0 -21
  305. package/lib/service/parser.js +0 -138
  306. package/lib/service/parser.js.map +0 -1
  307. package/lib/service/state.d.ts +0 -9
  308. package/lib/service/state.js +0 -20
  309. package/lib/service/state.js.map +0 -1
  310. package/lib/service/walkers/class-walker.d.ts +0 -4
  311. package/lib/service/walkers/class-walker.js +0 -33
  312. package/lib/service/walkers/class-walker.js.map +0 -1
  313. package/lib/service/walkers/enum-walker.d.ts +0 -4
  314. package/lib/service/walkers/enum-walker.js +0 -11
  315. package/lib/service/walkers/enum-walker.js.map +0 -1
  316. package/lib/service/walkers/interface-walker.d.ts +0 -4
  317. package/lib/service/walkers/interface-walker.js +0 -15
  318. package/lib/service/walkers/interface-walker.js.map +0 -1
  319. package/lib/service/walkers/walker-factory.d.ts +0 -5
  320. package/lib/service/walkers/walker-factory.js +0 -21
  321. package/lib/service/walkers/walker-factory.js.map +0 -1
  322. package/lib/service/walkers/walker.d.ts +0 -19
  323. package/lib/service/walkers/walker.js +0 -17
  324. package/lib/service/walkers/walker.js.map +0 -1
  325. package/lib/settings.d.ts +0 -64
  326. package/lib/settings.js +0 -89
  327. package/lib/settings.js.map +0 -1
  328. package/lib/test-helpers/AnnotationBuilder.d.ts +0 -12
  329. package/lib/test-helpers/AnnotationBuilder.js +0 -31
  330. package/lib/test-helpers/AnnotationBuilder.js.map +0 -1
  331. package/lib/test-helpers/ClassMirrorBuilder.d.ts +0 -18
  332. package/lib/test-helpers/ClassMirrorBuilder.js +0 -54
  333. package/lib/test-helpers/ClassMirrorBuilder.js.map +0 -1
  334. package/lib/test-helpers/DocCommentAnnotationBuilder.d.ts +0 -8
  335. package/lib/test-helpers/DocCommentAnnotationBuilder.js +0 -26
  336. package/lib/test-helpers/DocCommentAnnotationBuilder.js.map +0 -1
  337. package/lib/test-helpers/DocCommentBuilder.d.ts +0 -12
  338. package/lib/test-helpers/DocCommentBuilder.js +0 -38
  339. package/lib/test-helpers/DocCommentBuilder.js.map +0 -1
  340. package/lib/test-helpers/FieldMirrorBuilder.d.ts +0 -18
  341. package/lib/test-helpers/FieldMirrorBuilder.js +0 -54
  342. package/lib/test-helpers/FieldMirrorBuilder.js.map +0 -1
  343. package/lib/test-helpers/InterfaceMirrorBuilder.d.ts +0 -16
  344. package/lib/test-helpers/InterfaceMirrorBuilder.js +0 -43
  345. package/lib/test-helpers/InterfaceMirrorBuilder.js.map +0 -1
  346. package/lib/test-helpers/MethodMirrorBuilder.d.ts +0 -29
  347. package/lib/test-helpers/MethodMirrorBuilder.js +0 -72
  348. package/lib/test-helpers/MethodMirrorBuilder.js.map +0 -1
  349. package/lib/test-helpers/SettingsBuilder.d.ts +0 -8
  350. package/lib/test-helpers/SettingsBuilder.js +0 -27
  351. package/lib/test-helpers/SettingsBuilder.js.map +0 -1
  352. package/lib/transpiler/factory.d.ts +0 -6
  353. package/lib/transpiler/factory.js +0 -35
  354. package/lib/transpiler/factory.js.map +0 -1
  355. package/lib/transpiler/file-container.d.ts +0 -6
  356. package/lib/transpiler/file-container.js +0 -16
  357. package/lib/transpiler/file-container.js.map +0 -1
  358. package/lib/transpiler/generator-choices.d.ts +0 -1
  359. package/lib/transpiler/generator-choices.js +0 -3
  360. package/lib/transpiler/generator-choices.js.map +0 -1
  361. package/lib/transpiler/markdown/class-file-generatorHelper.d.ts +0 -11
  362. package/lib/transpiler/markdown/class-file-generatorHelper.js +0 -75
  363. package/lib/transpiler/markdown/class-file-generatorHelper.js.map +0 -1
  364. package/lib/transpiler/markdown/docsify/docsify-docs-processor.d.ts +0 -6
  365. package/lib/transpiler/markdown/docsify/docsify-docs-processor.js +0 -13
  366. package/lib/transpiler/markdown/docsify/docsify-docs-processor.js.map +0 -1
  367. package/lib/transpiler/markdown/jekyll/jekyll-docsProcessor.d.ts +0 -11
  368. package/lib/transpiler/markdown/jekyll/jekyll-docsProcessor.js +0 -51
  369. package/lib/transpiler/markdown/jekyll/jekyll-docsProcessor.js.map +0 -1
  370. package/lib/transpiler/markdown/markdown-transpiler-base.d.ts +0 -11
  371. package/lib/transpiler/markdown/markdown-transpiler-base.js +0 -27
  372. package/lib/transpiler/markdown/markdown-transpiler-base.js.map +0 -1
  373. package/lib/transpiler/markdown/plain-markdown/class-template.d.ts +0 -1
  374. package/lib/transpiler/markdown/plain-markdown/class-template.js +0 -77
  375. package/lib/transpiler/markdown/plain-markdown/class-template.js.map +0 -1
  376. package/lib/transpiler/markdown/plain-markdown/constructors-partial-template.d.ts +0 -1
  377. package/lib/transpiler/markdown/plain-markdown/constructors-partial-template.js +0 -36
  378. package/lib/transpiler/markdown/plain-markdown/constructors-partial-template.js.map +0 -1
  379. package/lib/transpiler/markdown/plain-markdown/documentable-partial-template.d.ts +0 -1
  380. package/lib/transpiler/markdown/plain-markdown/documentable-partial-template.js +0 -28
  381. package/lib/transpiler/markdown/plain-markdown/documentable-partial-template.js.map +0 -1
  382. package/lib/transpiler/markdown/plain-markdown/enum-template.d.ts +0 -1
  383. package/lib/transpiler/markdown/plain-markdown/enum-template.js +0 -16
  384. package/lib/transpiler/markdown/plain-markdown/enum-template.js.map +0 -1
  385. package/lib/transpiler/markdown/plain-markdown/fieldsPartialTemplate.d.ts +0 -1
  386. package/lib/transpiler/markdown/plain-markdown/fieldsPartialTemplate.js +0 -27
  387. package/lib/transpiler/markdown/plain-markdown/fieldsPartialTemplate.js.map +0 -1
  388. package/lib/transpiler/markdown/plain-markdown/grouped-members-partial-template.d.ts +0 -1
  389. package/lib/transpiler/markdown/plain-markdown/grouped-members-partial-template.js +0 -10
  390. package/lib/transpiler/markdown/plain-markdown/grouped-members-partial-template.js.map +0 -1
  391. package/lib/transpiler/markdown/plain-markdown/interface-template.d.ts +0 -1
  392. package/lib/transpiler/markdown/plain-markdown/interface-template.js +0 -20
  393. package/lib/transpiler/markdown/plain-markdown/interface-template.js.map +0 -1
  394. package/lib/transpiler/markdown/plain-markdown/methods-partial-template.d.ts +0 -1
  395. package/lib/transpiler/markdown/plain-markdown/methods-partial-template.js +0 -47
  396. package/lib/transpiler/markdown/plain-markdown/methods-partial-template.js.map +0 -1
  397. package/lib/transpiler/markdown/plain-markdown/plain-docsProcessor.d.ts +0 -9
  398. package/lib/transpiler/markdown/plain-markdown/plain-docsProcessor.js +0 -42
  399. package/lib/transpiler/markdown/plain-markdown/plain-docsProcessor.js.map +0 -1
  400. package/lib/transpiler/markdown/plain-markdown/type-doc-partial.d.ts +0 -1
  401. package/lib/transpiler/markdown/plain-markdown/type-doc-partial.js +0 -31
  402. package/lib/transpiler/markdown/plain-markdown/type-doc-partial.js.map +0 -1
  403. package/lib/transpiler/openapi/open-api-docs-processor.d.ts +0 -13
  404. package/lib/transpiler/openapi/open-api-docs-processor.js +0 -78
  405. package/lib/transpiler/openapi/open-api-docs-processor.js.map +0 -1
  406. package/lib/transpiler/openapi/parsers/Builder.d.ts +0 -16
  407. package/lib/transpiler/openapi/parsers/Builder.js +0 -30
  408. package/lib/transpiler/openapi/parsers/Builder.js.map +0 -1
  409. package/lib/transpiler/openapi/parsers/MethodParser.d.ts +0 -20
  410. package/lib/transpiler/openapi/parsers/MethodParser.js +0 -190
  411. package/lib/transpiler/openapi/parsers/MethodParser.js.map +0 -1
  412. package/lib/transpiler/openapi/parsers/ParameterObjectBuilder.d.ts +0 -7
  413. package/lib/transpiler/openapi/parsers/ParameterObjectBuilder.js +0 -11
  414. package/lib/transpiler/openapi/parsers/ParameterObjectBuilder.js.map +0 -1
  415. package/lib/transpiler/openapi/parsers/ReferenceBuilder.d.ts +0 -39
  416. package/lib/transpiler/openapi/parsers/ReferenceBuilder.js +0 -250
  417. package/lib/transpiler/openapi/parsers/ReferenceBuilder.js.map +0 -1
  418. package/lib/transpiler/openapi/parsers/RequestBodyBuilder.d.ts +0 -10
  419. package/lib/transpiler/openapi/parsers/RequestBodyBuilder.js +0 -20
  420. package/lib/transpiler/openapi/parsers/RequestBodyBuilder.js.map +0 -1
  421. package/lib/transpiler/openapi/parsers/ResponsesBuilder.d.ts +0 -7
  422. package/lib/transpiler/openapi/parsers/ResponsesBuilder.js +0 -22
  423. package/lib/transpiler/openapi/parsers/ResponsesBuilder.js.map +0 -1
  424. package/lib/transpiler/processor-type-transpiler.d.ts +0 -10
  425. package/lib/transpiler/processor-type-transpiler.js +0 -9
  426. package/lib/transpiler/processor-type-transpiler.js.map +0 -1
  427. package/lib/transpiler/transpiler.d.ts +0 -5
  428. package/lib/transpiler/transpiler.js +0 -30
  429. package/lib/transpiler/transpiler.js.map +0 -1
  430. package/lib/util/error-logger.d.ts +0 -8
  431. package/lib/util/error-logger.js +0 -90
  432. package/lib/util/error-logger.js.map +0 -1
  433. package/lib/util/logger.d.ts +0 -21
  434. package/lib/util/logger.js +0 -61
  435. package/lib/util/logger.js.map +0 -1
  436. package/lib/util/string-utils.d.ts +0 -2
  437. package/lib/util/string-utils.js +0 -15
  438. package/lib/util/string-utils.js.map +0 -1
  439. package/src/__spec__/core/generating-class-docs.spec.ts +0 -511
  440. package/src/adapters/__tests__/interface-adapter.spec.ts +0 -80
  441. package/src/adapters/type-utils.ts +0 -5
  442. package/src/adapters/types.d.ts +0 -8
  443. package/src/core/generate-docs.ts +0 -357
  444. package/src/model/apex-bundle.ts +0 -3
  445. package/src/model/inheritance.ts +0 -7
  446. package/src/model/manifest.ts +0 -84
  447. package/src/model/markdown-file.ts +0 -122
  448. package/src/model/markdown-generation-util/doc-comment-annotation-util.ts +0 -50
  449. package/src/model/markdown-generation-util/field-declaration-util.ts +0 -71
  450. package/src/model/markdown-generation-util/index.ts +0 -3
  451. package/src/model/markdown-generation-util/method-declaration-util.ts +0 -166
  452. package/src/model/markdown-generation-util/type-declaration-util.ts +0 -91
  453. package/src/model/markdown-home-file.ts +0 -58
  454. package/src/model/markdown-type-file.ts +0 -165
  455. package/src/model/openapi/openapi-type-file.ts +0 -14
  456. package/src/model/outputFile.ts +0 -20
  457. package/src/service/__tests__/apex-file-reader.spec.ts +0 -92
  458. package/src/service/apex-file-reader.ts +0 -51
  459. package/src/service/file-writer.ts +0 -34
  460. package/src/service/metadata-processor.ts +0 -16
  461. package/src/service/state.ts +0 -24
  462. package/src/service/walkers/class-walker.ts +0 -30
  463. package/src/service/walkers/enum-walker.ts +0 -7
  464. package/src/service/walkers/interface-walker.ts +0 -12
  465. package/src/service/walkers/walker-factory.ts +0 -19
  466. package/src/service/walkers/walker.ts +0 -42
  467. package/src/settings.ts +0 -147
  468. package/src/transpiler/factory.ts +0 -33
  469. package/src/transpiler/file-container.ts +0 -13
  470. package/src/transpiler/generator-choices.ts +0 -1
  471. package/src/transpiler/markdown/class-file-generatorHelper.ts +0 -78
  472. package/src/transpiler/markdown/docsify/docsify-docs-processor.ts +0 -12
  473. package/src/transpiler/markdown/jekyll/jekyll-docsProcessor.ts +0 -50
  474. package/src/transpiler/markdown/markdown-transpiler-base.ts +0 -28
  475. package/src/transpiler/markdown/plain-markdown/plain-docsProcessor.ts +0 -42
  476. package/src/transpiler/processor-type-transpiler.ts +0 -18
  477. /package/examples/{plain-markdown → markdown}/.forceignore +0 -0
  478. /package/examples/{plain-markdown → markdown}/config/project-scratch-def.json +0 -0
  479. /package/examples/{plain-markdown → markdown}/force-app/classes/BaseClass.cls +0 -0
  480. /package/examples/{plain-markdown → markdown}/force-app/classes/ParentInterface.cls +0 -0
  481. /package/examples/{plain-markdown → markdown}/force-app/classes/ReferencedEnum.cls +0 -0
  482. /package/examples/{plain-markdown → markdown}/force-app/classes/SampleClass.cls +0 -0
  483. /package/examples/{plain-markdown → markdown}/force-app/classes/SampleEnum.cls +0 -0
  484. /package/examples/{plain-markdown → markdown}/force-app/classes/SampleInterface.cls +0 -0
  485. /package/examples/{plain-markdown → markdown}/package-lock.json +0 -0
  486. /package/examples/{plain-markdown → markdown}/sfdx-project.json +0 -0
  487. /package/src/{service → application}/file-system.ts +0 -0
  488. /package/src/{model/__tests__ → core/__test__}/manifest.spec.ts +0 -0
  489. /package/src/{transpiler/markdown/plain-markdown → core/markdown/templates}/enum-template.ts +0 -0
  490. /package/src/{transpiler/markdown/plain-markdown → core/markdown/templates}/grouped-members-partial-template.ts +0 -0
  491. /package/src/{transpiler/markdown/plain-markdown → core/markdown/templates}/interface-template.ts +0 -0
  492. /package/src/{transpiler/markdown/plain-markdown → core/markdown/templates}/type-doc-partial.ts +0 -0
  493. /package/src/{service → core/openapi}/__tests__/manifest-factory.spec.ts +0 -0
  494. /package/src/{model → core}/openapi/__tests__/open-api.spec.ts +0 -0
  495. /package/src/{model → core}/openapi/apex-doc-types.ts +0 -0
  496. /package/src/{model → core/openapi}/apex-type-wrappers/ClassMirrorWrapper.ts +0 -0
  497. /package/src/{model → core/openapi}/apex-type-wrappers/MethodMirrorWrapper.ts +0 -0
  498. /package/src/{model → core}/openapi/open-api-types.ts +0 -0
  499. /package/src/{model → core}/openapi/open-api.ts +0 -0
@@ -0,0 +1,54 @@
1
+ import { ClassMirrorBuilder } from '../../../test-helpers/ClassMirrorBuilder';
2
+ import { createInheritanceChain } from '../reflection/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
+ });
@@ -0,0 +1,23 @@
1
+ import { UnparsedSourceFile } from '../../shared/types';
2
+ import { generateDocs as gen, MarkdownGeneratorConfig } from '../generate-docs';
3
+ import { referenceGuideTemplate } from '../templates/reference-guide';
4
+
5
+ export function apexBundleFromRawString(raw: string, rawMetadata?: string): UnparsedSourceFile {
6
+ return {
7
+ filePath: 'test.cls',
8
+ content: raw,
9
+ metadataContent: rawMetadata ?? null,
10
+ };
11
+ }
12
+
13
+ export function generateDocs(apexBundles: UnparsedSourceFile[], config?: Partial<MarkdownGeneratorConfig>) {
14
+ return gen(apexBundles, {
15
+ targetDir: 'target',
16
+ scope: ['global', 'public'],
17
+ defaultGroupName: 'Miscellaneous',
18
+ sortMembersAlphabetically: true,
19
+ referenceGuideTemplate: referenceGuideTemplate,
20
+ ...config,
21
+ documentationRootDir: '',
22
+ });
23
+ }
@@ -0,0 +1,109 @@
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
+ });
@@ -0,0 +1,148 @@
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
+ documentationRootDir: '',
19
+ };
20
+
21
+ describe('Conversion from InterfaceMirror to InterfaceSource understandable by the templating engine', () => {
22
+ it('converts the name', () => {
23
+ const interfaceMirror = new InterfaceMirrorBuilder().withName('SampleInterface').build();
24
+ const interfaceSource = typeToRenderable(
25
+ {
26
+ source: {
27
+ filePath: '',
28
+ type: 'interface',
29
+ name: 'SampleInterface',
30
+ },
31
+ type: interfaceMirror,
32
+ },
33
+ linkGenerator,
34
+ defaultMarkdownGeneratorConfig,
35
+ );
36
+
37
+ expect(interfaceSource.name).toBe('SampleInterface');
38
+ });
39
+
40
+ it('converts the access modifier', () => {
41
+ const interfaceMirror = new InterfaceMirrorBuilder().build();
42
+ const interfaceSource = typeToRenderable(
43
+ {
44
+ source: {
45
+ filePath: '',
46
+ type: 'interface',
47
+ name: 'SampleInterface',
48
+ },
49
+ type: interfaceMirror,
50
+ },
51
+ linkGenerator,
52
+ defaultMarkdownGeneratorConfig,
53
+ );
54
+
55
+ expect(interfaceSource.meta.accessModifier).toBe('public');
56
+ });
57
+
58
+ it('converts annotations', () => {
59
+ const interfaceMirror = new InterfaceMirrorBuilder()
60
+ .addAnnotation(new AnnotationBuilder().withName('MyAnnotation').build())
61
+ .build();
62
+ const interfaceSource = typeToRenderable(
63
+ {
64
+ source: {
65
+ filePath: '',
66
+ type: 'interface',
67
+ name: 'SampleInterface',
68
+ },
69
+ type: interfaceMirror,
70
+ },
71
+ linkGenerator,
72
+ defaultMarkdownGeneratorConfig,
73
+ );
74
+
75
+ expect(interfaceSource.doc.annotations).toEqual(['MYANNOTATION']);
76
+ });
77
+
78
+ it('converts method declarations. Method with no parameters', () => {
79
+ const interfaceMirror = new InterfaceMirrorBuilder()
80
+ .addMethod(
81
+ new MethodMirrorBuilder()
82
+ .withName('sampleMethod')
83
+ .withTypeReference({
84
+ type: 'String',
85
+ rawDeclaration: 'String',
86
+ })
87
+ .build(),
88
+ )
89
+ .build();
90
+
91
+ const interfaceSource = typeToRenderable(
92
+ {
93
+ source: {
94
+ filePath: '',
95
+ type: 'interface',
96
+ name: 'SampleInterface',
97
+ },
98
+ type: interfaceMirror,
99
+ },
100
+ linkGenerator,
101
+ defaultMarkdownGeneratorConfig,
102
+ );
103
+
104
+ expect(interfaceSource.methods.value).toHaveLength(1);
105
+ expect(interfaceSource.methods.value[0].signature.value.content[0]).toBe('public String sampleMethod()');
106
+ });
107
+
108
+ it('converts method declarations. Method with parameters', () => {
109
+ const interfaceMirror = new InterfaceMirrorBuilder()
110
+ .addMethod(
111
+ new MethodMirrorBuilder()
112
+ .withName('sampleMethod')
113
+ .withTypeReference({
114
+ type: 'String',
115
+ rawDeclaration: 'String',
116
+ })
117
+ .addParameter(
118
+ new ParameterBuilder()
119
+ .withName('param1')
120
+ .withTypeReference({
121
+ type: 'String',
122
+ rawDeclaration: 'String',
123
+ })
124
+ .build(),
125
+ )
126
+ .build(),
127
+ )
128
+ .build();
129
+
130
+ const interfaceSource = typeToRenderable(
131
+ {
132
+ source: {
133
+ filePath: '',
134
+ type: 'interface',
135
+ name: 'SampleInterface',
136
+ },
137
+ type: interfaceMirror,
138
+ },
139
+ linkGenerator,
140
+ defaultMarkdownGeneratorConfig,
141
+ );
142
+
143
+ expect(interfaceSource.methods.value).toHaveLength(1);
144
+ expect(interfaceSource.methods.value[0].signature.value.content[0]).toBe(
145
+ 'public String sampleMethod(String param1)',
146
+ );
147
+ });
148
+ });
@@ -1,8 +1,9 @@
1
- import { replaceInlineReferences } from '../references';
2
- import { Link } from '../../core/renderable/types';
1
+ import { replaceInlineReferences } from '../inline';
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
  };
@@ -25,6 +27,17 @@ describe('reference utilities', () => {
25
27
  expect(result).toEqual(expected);
26
28
  });
27
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
+
28
41
  describe('replace inline links', () => {
29
42
  it('replaces links in the format of <<ClassName>>', () => {
30
43
  const text = 'This is a test <<ClassName>>.';
@@ -33,6 +46,7 @@ describe('reference utilities', () => {
33
46
  const expected = [
34
47
  'This is a test ',
35
48
  {
49
+ __type: 'link',
36
50
  title: 'ClassName',
37
51
  url: '/api/ClassName.html',
38
52
  },
@@ -44,6 +58,7 @@ describe('reference utilities', () => {
44
58
  it('replaces links in the format of {@link ClassName}', () => {
45
59
  function getFileLinkByTypeName(typeName: string): Link {
46
60
  return {
61
+ __type: 'link' as const,
47
62
  title: typeName,
48
63
  url: `/api/${typeName}.html`,
49
64
  };
@@ -55,6 +70,7 @@ describe('reference utilities', () => {
55
70
  const expected = [
56
71
  'This is a test ',
57
72
  {
73
+ __type: 'link',
58
74
  title: 'ClassName',
59
75
  url: '/api/ClassName.html',
60
76
  },
@@ -68,6 +84,7 @@ describe('reference utilities', () => {
68
84
  it('replaces emails in the format of {@email email-address}', () => {
69
85
  function getLinkByTypeName(typeName: string) {
70
86
  return {
87
+ __type: 'link' as const,
71
88
  title: typeName,
72
89
  url: `mailto:${typeName}`,
73
90
  };
@@ -79,6 +96,7 @@ describe('reference utilities', () => {
79
96
  const expected = [
80
97
  'This is an email ',
81
98
  {
99
+ __type: 'link',
82
100
  title: 'example@example.com',
83
101
  url: 'mailto:example@example.com',
84
102
  },
@@ -95,16 +113,19 @@ describe('reference utilities', () => {
95
113
  const expected = [
96
114
  'This is a test ',
97
115
  {
116
+ __type: 'link',
98
117
  title: 'ClassName',
99
118
  url: '/api/ClassName.html',
100
119
  },
101
120
  ', and ',
102
121
  {
122
+ __type: 'link',
103
123
  title: 'AnotherClass',
104
124
  url: '/api/AnotherClass.html',
105
125
  },
106
126
  ', and an email ',
107
127
  {
128
+ __type: 'link',
108
129
  title: 'testerson',
109
130
  url: 'mailto:testerson',
110
131
  },
@@ -4,15 +4,48 @@ 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
+ GetRenderableContentByTypeName,
13
+ } from './types';
11
14
  import { adaptDescribable, adaptDocumentable } from './documentables';
12
- import { GetRenderableContentByTypeName, linkFromTypeNameGenerator } from './references';
13
- import { FieldMirrorWithInheritance, PropertyMirrorWithInheritance } from '../model/inheritance';
14
15
  import { adaptConstructor, adaptMethod } from './methods-and-constructors';
15
16
  import { adaptFieldOrProperty } from './fields-and-properties';
17
+ import { MarkdownGeneratorConfig } from '../generate-docs';
18
+ import { SourceFileMetadata } from '../../shared/types';
19
+
20
+ type GetReturnRenderable<T extends Type> = T extends InterfaceMirror
21
+ ? RenderableInterface
22
+ : T extends ClassMirror
23
+ ? RenderableClass
24
+ : RenderableEnum;
25
+
26
+ export function typeToRenderable<T extends Type>(
27
+ parsedFile: { source: SourceFileMetadata; type: T },
28
+ linkGenerator: GetRenderableContentByTypeName,
29
+ config: MarkdownGeneratorConfig,
30
+ ): GetReturnRenderable<T> & { filePath: string; namespace?: string } {
31
+ function getRenderable(): RenderableInterface | RenderableClass | RenderableEnum {
32
+ const { type } = parsedFile;
33
+ switch (type.type_name) {
34
+ case 'enum':
35
+ return enumTypeToEnumSource(type as EnumMirror, linkGenerator) as RenderableEnum;
36
+ case 'interface':
37
+ return interfaceTypeToInterfaceSource(type as InterfaceMirror, linkGenerator) as RenderableInterface;
38
+ case 'class':
39
+ return classTypeToClassSource(type as ClassMirrorWithInheritanceChain, linkGenerator) as RenderableClass;
40
+ }
41
+ }
42
+
43
+ return {
44
+ ...(getRenderable() as GetReturnRenderable<T>),
45
+ filePath: parsedFile.source.filePath,
46
+ namespace: config.namespace,
47
+ };
48
+ }
16
49
 
17
50
  function baseTypeAdapter(
18
51
  type: EnumMirror | InterfaceMirror | ClassMirror,
@@ -40,29 +73,7 @@ function baseTypeAdapter(
40
73
  };
41
74
  }
42
75
 
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(
76
+ function enumTypeToEnumSource(
66
77
  enumType: EnumMirror,
67
78
  linkGenerator: GetRenderableContentByTypeName,
68
79
  baseHeadingLevel: number = 1,
@@ -81,7 +92,7 @@ export function enumTypeToEnumSource(
81
92
  };
82
93
  }
83
94
 
84
- export function interfaceTypeToInterfaceSource(
95
+ function interfaceTypeToInterfaceSource(
85
96
  interfaceType: InterfaceMirror,
86
97
  linkGenerator: GetRenderableContentByTypeName,
87
98
  baseHeadingLevel: number = 1,
@@ -89,7 +100,7 @@ export function interfaceTypeToInterfaceSource(
89
100
  return {
90
101
  type: 'interface',
91
102
  ...baseTypeAdapter(interfaceType, linkGenerator, baseHeadingLevel),
92
- extends: interfaceType.extended_interfaces.map(linkFromTypeNameGenerator),
103
+ extends: interfaceType.extended_interfaces.map(linkGenerator),
93
104
  methods: {
94
105
  headingLevel: baseHeadingLevel + 1,
95
106
  heading: 'Methods',
@@ -98,8 +109,8 @@ export function interfaceTypeToInterfaceSource(
98
109
  };
99
110
  }
100
111
 
101
- export function classTypeToClassSource(
102
- classType: ClassMirror,
112
+ function classTypeToClassSource(
113
+ classType: ClassMirrorWithInheritanceChain,
103
114
  linkGenerator: GetRenderableContentByTypeName,
104
115
  baseHeadingLevel: number = 1,
105
116
  ): RenderableClass {
@@ -108,36 +119,36 @@ export function classTypeToClassSource(
108
119
  ...baseTypeAdapter(classType, linkGenerator, baseHeadingLevel),
109
120
  classModifier: classType.classModifier,
110
121
  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),
122
+ implements: classType.implemented_interfaces.map(linkGenerator),
123
+ extends: classType.inheritanceChain.map(linkGenerator),
124
+ methods: adaptMembers('Methods', classType.methods, adaptMethod, linkGenerator, baseHeadingLevel + 1),
114
125
  constructors: adaptMembers(
115
126
  'Constructors',
116
127
  classType.constructors,
117
128
  (constructor, linkGenerator, baseHeadingLevel) =>
118
129
  adaptConstructor(classType.name, constructor, linkGenerator, baseHeadingLevel),
119
- linkFromTypeNameGenerator,
130
+ linkGenerator,
120
131
  baseHeadingLevel + 1,
121
132
  ),
122
133
  fields: adaptMembers(
123
134
  'Fields',
124
135
  classType.fields as FieldMirrorWithInheritance[],
125
136
  adaptFieldOrProperty,
126
- linkFromTypeNameGenerator,
137
+ linkGenerator,
127
138
  baseHeadingLevel + 1,
128
139
  ),
129
140
  properties: adaptMembers(
130
141
  'Properties',
131
142
  classType.properties as PropertyMirrorWithInheritance[],
132
143
  adaptFieldOrProperty,
133
- linkFromTypeNameGenerator,
144
+ linkGenerator,
134
145
  baseHeadingLevel + 1,
135
146
  ),
136
147
  innerClasses: {
137
148
  headingLevel: baseHeadingLevel + 1,
138
149
  heading: 'Classes',
139
150
  value: classType.classes.map((innerClass) =>
140
- classTypeToClassSource(innerClass, linkGenerator, baseHeadingLevel + 2),
151
+ classTypeToClassSource({ ...innerClass, inheritanceChain: [] }, linkGenerator, baseHeadingLevel + 2),
141
152
  ),
142
153
  },
143
154
  innerEnums: {
@@ -200,12 +211,15 @@ function toGroupedMembers<T extends Groupable, K>(
200
211
  }
201
212
 
202
213
  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[]>);
214
+ return members.reduce(
215
+ (acc, member) => {
216
+ const groupName = member.group ?? 'Other';
217
+ acc[groupName] = acc[groupName] ?? [];
218
+ acc[groupName].push(member);
219
+ return acc;
220
+ },
221
+ {} as Record<string, T[]>,
222
+ );
209
223
  }
210
224
 
211
225
  function singleGroup<T extends Groupable, K>(