@cparra/apexdocs 2.25.0-alpha.2 → 2.25.0-alpha.4

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 (355) hide show
  1. package/README.md +37 -0
  2. package/dist/cli/generate.js +291 -0
  3. package/dist/index.d.ts +2 -0
  4. package/dist/index.js +1 -0
  5. package/examples/plain-markdown/docs/Miscellaneous/ns.SampleException.md +18 -0
  6. package/examples/plain-markdown/docs/Miscellaneous/ns.SampleInterface.md +6 -2
  7. package/examples/plain-markdown/docs/Miscellaneous/ns.Url.md +320 -0
  8. package/examples/plain-markdown/docs/Sample-Enums/ns.SampleEnum.md +3 -1
  9. package/examples/plain-markdown/docs/SampleGroup/ns.SampleClass.md +1 -1
  10. package/examples/plain-markdown/docs/index.md +84 -0
  11. package/examples/plain-markdown/force-app/classes/SampleException.cls +16 -0
  12. package/examples/plain-markdown/force-app/classes/Url.cls +194 -0
  13. package/examples/plain-markdown/package.json +2 -1
  14. package/jest.config.js +1 -1
  15. package/package.json +11 -13
  16. package/src/__spec__/core/generating-class-docs.spec.ts +57 -37
  17. package/src/__spec__/core/generating-enum-docs.spec.ts +25 -22
  18. package/src/__spec__/core/generating-interface-docs.spec.ts +33 -30
  19. package/src/__spec__/core/generating-reference-guide.spec.ts +8 -7
  20. package/src/__spec__/core/test-helpers.ts +9 -0
  21. package/src/application/Apexdocs.ts +34 -5
  22. package/src/application/{flows → generators}/generate-markdown-files.ts +19 -13
  23. package/src/cli/args.ts +138 -0
  24. package/src/cli/generate.ts +12 -138
  25. package/src/core/adapters/__tests__/documentables.spec.ts +109 -0
  26. package/src/{adapters → core/adapters}/__tests__/interface-adapter.spec.ts +13 -11
  27. package/src/{adapters → core/adapters}/__tests__/references.spec.ts +23 -2
  28. package/src/{adapters → core/adapters}/apex-types.ts +18 -15
  29. package/src/{adapters → core/adapters}/documentables.ts +54 -12
  30. package/src/{adapters → core/adapters}/fields-and-properties.ts +17 -10
  31. package/src/{adapters/references.ts → core/adapters/inline.ts} +43 -13
  32. package/src/{adapters → core/adapters}/methods-and-constructors.ts +21 -9
  33. package/src/core/adapters/type-utils.ts +13 -0
  34. package/src/core/{renderable → adapters}/types.d.ts +42 -4
  35. package/src/core/generate-docs.ts +55 -19
  36. package/src/core/template.ts +15 -9
  37. package/src/core/templates/reference-guide.ts +1 -1
  38. package/src/model/__tests__/manifest.spec.ts +1 -1
  39. package/src/model/markdown-generation-util/field-declaration-util.ts +1 -1
  40. package/src/model/markdown-generation-util/method-declaration-util.ts +1 -1
  41. package/src/model/markdown-type-file.ts +5 -1
  42. package/src/service/__tests__/apex-file-reader.spec.ts +1 -0
  43. package/src/service/apex-file-reader.ts +2 -6
  44. package/src/service/manifest-factory.ts +2 -2
  45. package/src/service/parser.ts +1 -1
  46. package/src/settings.ts +6 -10
  47. package/src/test-helpers/SettingsBuilder.ts +1 -2
  48. package/src/transpiler/factory.ts +2 -4
  49. package/src/transpiler/markdown/class-file-generatorHelper.ts +1 -18
  50. package/src/transpiler/markdown/plain-markdown/constructors-partial-template.ts +2 -2
  51. package/src/transpiler/markdown/plain-markdown/documentable-partial-template.ts +6 -4
  52. package/src/transpiler/markdown/plain-markdown/fieldsPartialTemplate.ts +1 -1
  53. package/src/transpiler/markdown/plain-markdown/methods-partial-template.ts +2 -2
  54. package/src/util/fp.ts +3 -0
  55. package/tsconfig.json +1 -1
  56. package/docs/.nojekyll +0 -0
  57. package/docs/__old/README.md +0 -1
  58. package/docs/__old/index.html +0 -22
  59. package/docs/__old/restapi.json +0 -589
  60. package/docs/__old/types/Classes/nspc.AnotherInterface.md +0 -22
  61. package/docs/__old/types/Classes/nspc.ChildClass.md +0 -97
  62. package/docs/__old/types/Main/nspc.GroupedClass.md +0 -10
  63. package/docs/__old/types/Main/nspc.SampleClass.md +0 -189
  64. package/docs/__old/types/Misc-Group/nspc.EscapedAnnotations.md +0 -4
  65. package/docs/__old/types/Misc-Group/nspc.GrandparentClass.md +0 -13
  66. package/docs/__old/types/Misc-Group/nspc.InterfaceWithInheritance.md +0 -29
  67. package/docs/__old/types/Misc-Group/nspc.MemberGrouping.md +0 -13
  68. package/docs/__old/types/Misc-Group/nspc.ParentClass.md +0 -37
  69. package/docs/__old/types/Misc-Group/nspc.Reference1.md +0 -18
  70. package/docs/__old/types/Misc-Group/nspc.Reference2.md +0 -12
  71. package/docs/__old/types/Misc-Group/nspc.Reference3.md +0 -7
  72. package/docs/__old/types/Misc-Group/nspc.Reference4.md +0 -7
  73. package/docs/__old/types/Misc-Group/nspc.Reference5.md +0 -7
  74. package/docs/__old/types/Misc-Group/nspc.Reference6.md +0 -9
  75. package/docs/__old/types/Misc-Group/nspc.Reference7.md +0 -7
  76. package/docs/__old/types/Misc-Group/nspc.SampleClassWithoutModifier.md +0 -11
  77. package/docs/__old/types/Misc-Group/nspc.SampleRestResource.md +0 -104
  78. package/docs/__old/types/Misc-Group/nspc.SampleRestResourceWithInnerClass.md +0 -33
  79. package/docs/__old/types/Misc-Group/nspc.SampleRestResourceWithoutApexDocs.md +0 -14
  80. package/docs/__old/types/README.md +0 -97
  81. package/docs/__old/types/Sample-Interfaces/nspc.SampleInterface.md +0 -23
  82. package/examples/includes/header.md +0 -3
  83. package/lib/__spec__/core/expect-extensions.d.ts +0 -3
  84. package/lib/__spec__/core/expect-extensions.js +0 -54
  85. package/lib/__spec__/core/expect-extensions.js.map +0 -1
  86. package/lib/__spec__/core/generating-class-docs.spec.d.ts +0 -1
  87. package/lib/__spec__/core/generating-class-docs.spec.js +0 -427
  88. package/lib/__spec__/core/generating-class-docs.spec.js.map +0 -1
  89. package/lib/__spec__/core/generating-enum-docs.spec.d.ts +0 -1
  90. package/lib/__spec__/core/generating-enum-docs.spec.js +0 -303
  91. package/lib/__spec__/core/generating-enum-docs.spec.js.map +0 -1
  92. package/lib/__spec__/core/generating-interface-docs.spec.d.ts +0 -1
  93. package/lib/__spec__/core/generating-interface-docs.spec.js +0 -361
  94. package/lib/__spec__/core/generating-interface-docs.spec.js.map +0 -1
  95. package/lib/__spec__/core/generating-reference-guide.spec.d.ts +0 -1
  96. package/lib/__spec__/core/generating-reference-guide.spec.js +0 -161
  97. package/lib/__spec__/core/generating-reference-guide.spec.js.map +0 -1
  98. package/lib/adapters/apex-types.d.ts +0 -5
  99. package/lib/adapters/apex-types.js +0 -109
  100. package/lib/adapters/apex-types.js.map +0 -1
  101. package/lib/adapters/documentables.d.ts +0 -7
  102. package/lib/adapters/documentables.js +0 -56
  103. package/lib/adapters/documentables.js.map +0 -1
  104. package/lib/adapters/fields-and-properties.d.ts +0 -4
  105. package/lib/adapters/fields-and-properties.js +0 -31
  106. package/lib/adapters/fields-and-properties.js.map +0 -1
  107. package/lib/adapters/methods-and-constructors.d.ts +0 -5
  108. package/lib/adapters/methods-and-constructors.js +0 -91
  109. package/lib/adapters/methods-and-constructors.js.map +0 -1
  110. package/lib/adapters/references.d.ts +0 -5
  111. package/lib/adapters/references.js +0 -82
  112. package/lib/adapters/references.js.map +0 -1
  113. package/lib/adapters/type-utils.d.ts +0 -2
  114. package/lib/adapters/type-utils.js +0 -7
  115. package/lib/adapters/type-utils.js.map +0 -1
  116. package/lib/application/Apexdocs.d.ts +0 -13
  117. package/lib/application/Apexdocs.js +0 -86
  118. package/lib/application/Apexdocs.js.map +0 -1
  119. package/lib/application/flows/generate-markdown-files.d.ts +0 -3
  120. package/lib/application/flows/generate-markdown-files.js +0 -57
  121. package/lib/application/flows/generate-markdown-files.js.map +0 -1
  122. package/lib/cli/generate.d.ts +0 -2
  123. package/lib/cli/generate.js +0 -157
  124. package/lib/cli/generate.js.map +0 -1
  125. package/lib/core/__test__/inheritance-chain.test.d.ts +0 -1
  126. package/lib/core/__test__/inheritance-chain.test.js +0 -42
  127. package/lib/core/__test__/inheritance-chain.test.js.map +0 -1
  128. package/lib/core/generate-docs.d.ts +0 -24
  129. package/lib/core/generate-docs.js +0 -267
  130. package/lib/core/generate-docs.js.map +0 -1
  131. package/lib/core/inheritance-chain.d.ts +0 -2
  132. package/lib/core/inheritance-chain.js +0 -35
  133. package/lib/core/inheritance-chain.js.map +0 -1
  134. package/lib/core/template.d.ts +0 -10
  135. package/lib/core/template.js +0 -92
  136. package/lib/core/template.js.map +0 -1
  137. package/lib/core/templates/reference-guide.d.ts +0 -1
  138. package/lib/core/templates/reference-guide.js +0 -18
  139. package/lib/core/templates/reference-guide.js.map +0 -1
  140. package/lib/index.d.ts +0 -2
  141. package/lib/index.js +0 -29
  142. package/lib/index.js.map +0 -1
  143. package/lib/model/apex-bundle.d.ts +0 -6
  144. package/lib/model/apex-bundle.js +0 -11
  145. package/lib/model/apex-bundle.js.map +0 -1
  146. package/lib/model/apex-type-wrappers/ClassMirrorWrapper.d.ts +0 -7
  147. package/lib/model/apex-type-wrappers/ClassMirrorWrapper.js +0 -14
  148. package/lib/model/apex-type-wrappers/ClassMirrorWrapper.js.map +0 -1
  149. package/lib/model/apex-type-wrappers/MethodMirrorWrapper.d.ts +0 -7
  150. package/lib/model/apex-type-wrappers/MethodMirrorWrapper.js +0 -12
  151. package/lib/model/apex-type-wrappers/MethodMirrorWrapper.js.map +0 -1
  152. package/lib/model/inheritance.d.ts +0 -11
  153. package/lib/model/inheritance.js +0 -3
  154. package/lib/model/inheritance.js.map +0 -1
  155. package/lib/model/manifest.d.ts +0 -22
  156. package/lib/model/manifest.js +0 -53
  157. package/lib/model/manifest.js.map +0 -1
  158. package/lib/model/markdown-file.d.ts +0 -16
  159. package/lib/model/markdown-file.js +0 -111
  160. package/lib/model/markdown-file.js.map +0 -1
  161. package/lib/model/markdown-generation-util/doc-comment-annotation-util.d.ts +0 -8
  162. package/lib/model/markdown-generation-util/doc-comment-annotation-util.js +0 -46
  163. package/lib/model/markdown-generation-util/doc-comment-annotation-util.js.map +0 -1
  164. package/lib/model/markdown-generation-util/field-declaration-util.d.ts +0 -3
  165. package/lib/model/markdown-generation-util/field-declaration-util.js +0 -54
  166. package/lib/model/markdown-generation-util/field-declaration-util.js.map +0 -1
  167. package/lib/model/markdown-generation-util/index.d.ts +0 -3
  168. package/lib/model/markdown-generation-util/index.js +0 -20
  169. package/lib/model/markdown-generation-util/index.js.map +0 -1
  170. package/lib/model/markdown-generation-util/method-declaration-util.d.ts +0 -4
  171. package/lib/model/markdown-generation-util/method-declaration-util.js +0 -114
  172. package/lib/model/markdown-generation-util/method-declaration-util.js.map +0 -1
  173. package/lib/model/markdown-generation-util/type-declaration-util.d.ts +0 -3
  174. package/lib/model/markdown-generation-util/type-declaration-util.js +0 -81
  175. package/lib/model/markdown-generation-util/type-declaration-util.js.map +0 -1
  176. package/lib/model/markdown-home-file.d.ts +0 -11
  177. package/lib/model/markdown-home-file.js +0 -57
  178. package/lib/model/markdown-home-file.js.map +0 -1
  179. package/lib/model/markdown-type-file.d.ts +0 -26
  180. package/lib/model/markdown-type-file.js +0 -137
  181. package/lib/model/markdown-type-file.js.map +0 -1
  182. package/lib/model/openapi/apex-doc-types.d.ts +0 -19
  183. package/lib/model/openapi/apex-doc-types.js +0 -5
  184. package/lib/model/openapi/apex-doc-types.js.map +0 -1
  185. package/lib/model/openapi/open-api-types.d.ts +0 -93
  186. package/lib/model/openapi/open-api-types.js +0 -3
  187. package/lib/model/openapi/open-api-types.js.map +0 -1
  188. package/lib/model/openapi/open-api.d.ts +0 -16
  189. package/lib/model/openapi/open-api.js +0 -34
  190. package/lib/model/openapi/open-api.js.map +0 -1
  191. package/lib/model/openapi/openapi-type-file.d.ts +0 -7
  192. package/lib/model/openapi/openapi-type-file.js +0 -17
  193. package/lib/model/openapi/openapi-type-file.js.map +0 -1
  194. package/lib/model/outputFile.d.ts +0 -10
  195. package/lib/model/outputFile.js +0 -22
  196. package/lib/model/outputFile.js.map +0 -1
  197. package/lib/model/types-repository.d.ts +0 -16
  198. package/lib/model/types-repository.js +0 -54
  199. package/lib/model/types-repository.js.map +0 -1
  200. package/lib/service/apex-file-reader.d.ts +0 -14
  201. package/lib/service/apex-file-reader.js +0 -49
  202. package/lib/service/apex-file-reader.js.map +0 -1
  203. package/lib/service/file-system.d.ts +0 -14
  204. package/lib/service/file-system.js +0 -48
  205. package/lib/service/file-system.js.map +0 -1
  206. package/lib/service/file-writer.d.ts +0 -6
  207. package/lib/service/file-writer.js +0 -57
  208. package/lib/service/file-writer.js.map +0 -1
  209. package/lib/service/manifest-factory.d.ts +0 -10
  210. package/lib/service/manifest-factory.js +0 -16
  211. package/lib/service/manifest-factory.js.map +0 -1
  212. package/lib/service/metadata-processor.d.ts +0 -3
  213. package/lib/service/metadata-processor.js +0 -17
  214. package/lib/service/metadata-processor.js.map +0 -1
  215. package/lib/service/parser.d.ts +0 -21
  216. package/lib/service/parser.js +0 -138
  217. package/lib/service/parser.js.map +0 -1
  218. package/lib/service/state.d.ts +0 -9
  219. package/lib/service/state.js +0 -20
  220. package/lib/service/state.js.map +0 -1
  221. package/lib/service/walkers/class-walker.d.ts +0 -4
  222. package/lib/service/walkers/class-walker.js +0 -33
  223. package/lib/service/walkers/class-walker.js.map +0 -1
  224. package/lib/service/walkers/enum-walker.d.ts +0 -4
  225. package/lib/service/walkers/enum-walker.js +0 -11
  226. package/lib/service/walkers/enum-walker.js.map +0 -1
  227. package/lib/service/walkers/interface-walker.d.ts +0 -4
  228. package/lib/service/walkers/interface-walker.js +0 -15
  229. package/lib/service/walkers/interface-walker.js.map +0 -1
  230. package/lib/service/walkers/walker-factory.d.ts +0 -5
  231. package/lib/service/walkers/walker-factory.js +0 -21
  232. package/lib/service/walkers/walker-factory.js.map +0 -1
  233. package/lib/service/walkers/walker.d.ts +0 -19
  234. package/lib/service/walkers/walker.js +0 -17
  235. package/lib/service/walkers/walker.js.map +0 -1
  236. package/lib/settings.d.ts +0 -64
  237. package/lib/settings.js +0 -89
  238. package/lib/settings.js.map +0 -1
  239. package/lib/test-helpers/AnnotationBuilder.d.ts +0 -12
  240. package/lib/test-helpers/AnnotationBuilder.js +0 -31
  241. package/lib/test-helpers/AnnotationBuilder.js.map +0 -1
  242. package/lib/test-helpers/ClassMirrorBuilder.d.ts +0 -22
  243. package/lib/test-helpers/ClassMirrorBuilder.js +0 -64
  244. package/lib/test-helpers/ClassMirrorBuilder.js.map +0 -1
  245. package/lib/test-helpers/DocCommentAnnotationBuilder.d.ts +0 -8
  246. package/lib/test-helpers/DocCommentAnnotationBuilder.js +0 -26
  247. package/lib/test-helpers/DocCommentAnnotationBuilder.js.map +0 -1
  248. package/lib/test-helpers/DocCommentBuilder.d.ts +0 -12
  249. package/lib/test-helpers/DocCommentBuilder.js +0 -38
  250. package/lib/test-helpers/DocCommentBuilder.js.map +0 -1
  251. package/lib/test-helpers/FieldMirrorBuilder.d.ts +0 -18
  252. package/lib/test-helpers/FieldMirrorBuilder.js +0 -54
  253. package/lib/test-helpers/FieldMirrorBuilder.js.map +0 -1
  254. package/lib/test-helpers/InterfaceMirrorBuilder.d.ts +0 -16
  255. package/lib/test-helpers/InterfaceMirrorBuilder.js +0 -43
  256. package/lib/test-helpers/InterfaceMirrorBuilder.js.map +0 -1
  257. package/lib/test-helpers/MethodMirrorBuilder.d.ts +0 -29
  258. package/lib/test-helpers/MethodMirrorBuilder.js +0 -72
  259. package/lib/test-helpers/MethodMirrorBuilder.js.map +0 -1
  260. package/lib/test-helpers/SettingsBuilder.d.ts +0 -8
  261. package/lib/test-helpers/SettingsBuilder.js +0 -27
  262. package/lib/test-helpers/SettingsBuilder.js.map +0 -1
  263. package/lib/transpiler/factory.d.ts +0 -6
  264. package/lib/transpiler/factory.js +0 -35
  265. package/lib/transpiler/factory.js.map +0 -1
  266. package/lib/transpiler/file-container.d.ts +0 -6
  267. package/lib/transpiler/file-container.js +0 -16
  268. package/lib/transpiler/file-container.js.map +0 -1
  269. package/lib/transpiler/generator-choices.d.ts +0 -1
  270. package/lib/transpiler/generator-choices.js +0 -3
  271. package/lib/transpiler/generator-choices.js.map +0 -1
  272. package/lib/transpiler/markdown/class-file-generatorHelper.d.ts +0 -11
  273. package/lib/transpiler/markdown/class-file-generatorHelper.js +0 -75
  274. package/lib/transpiler/markdown/class-file-generatorHelper.js.map +0 -1
  275. package/lib/transpiler/markdown/docsify/docsify-docs-processor.d.ts +0 -6
  276. package/lib/transpiler/markdown/docsify/docsify-docs-processor.js +0 -13
  277. package/lib/transpiler/markdown/docsify/docsify-docs-processor.js.map +0 -1
  278. package/lib/transpiler/markdown/jekyll/jekyll-docsProcessor.d.ts +0 -11
  279. package/lib/transpiler/markdown/jekyll/jekyll-docsProcessor.js +0 -51
  280. package/lib/transpiler/markdown/jekyll/jekyll-docsProcessor.js.map +0 -1
  281. package/lib/transpiler/markdown/markdown-transpiler-base.d.ts +0 -11
  282. package/lib/transpiler/markdown/markdown-transpiler-base.js +0 -27
  283. package/lib/transpiler/markdown/markdown-transpiler-base.js.map +0 -1
  284. package/lib/transpiler/markdown/plain-markdown/class-template.d.ts +0 -1
  285. package/lib/transpiler/markdown/plain-markdown/class-template.js +0 -77
  286. package/lib/transpiler/markdown/plain-markdown/class-template.js.map +0 -1
  287. package/lib/transpiler/markdown/plain-markdown/constructors-partial-template.d.ts +0 -1
  288. package/lib/transpiler/markdown/plain-markdown/constructors-partial-template.js +0 -36
  289. package/lib/transpiler/markdown/plain-markdown/constructors-partial-template.js.map +0 -1
  290. package/lib/transpiler/markdown/plain-markdown/documentable-partial-template.d.ts +0 -1
  291. package/lib/transpiler/markdown/plain-markdown/documentable-partial-template.js +0 -28
  292. package/lib/transpiler/markdown/plain-markdown/documentable-partial-template.js.map +0 -1
  293. package/lib/transpiler/markdown/plain-markdown/enum-template.d.ts +0 -1
  294. package/lib/transpiler/markdown/plain-markdown/enum-template.js +0 -16
  295. package/lib/transpiler/markdown/plain-markdown/enum-template.js.map +0 -1
  296. package/lib/transpiler/markdown/plain-markdown/fieldsPartialTemplate.d.ts +0 -1
  297. package/lib/transpiler/markdown/plain-markdown/fieldsPartialTemplate.js +0 -27
  298. package/lib/transpiler/markdown/plain-markdown/fieldsPartialTemplate.js.map +0 -1
  299. package/lib/transpiler/markdown/plain-markdown/grouped-members-partial-template.d.ts +0 -1
  300. package/lib/transpiler/markdown/plain-markdown/grouped-members-partial-template.js +0 -10
  301. package/lib/transpiler/markdown/plain-markdown/grouped-members-partial-template.js.map +0 -1
  302. package/lib/transpiler/markdown/plain-markdown/interface-template.d.ts +0 -1
  303. package/lib/transpiler/markdown/plain-markdown/interface-template.js +0 -20
  304. package/lib/transpiler/markdown/plain-markdown/interface-template.js.map +0 -1
  305. package/lib/transpiler/markdown/plain-markdown/methods-partial-template.d.ts +0 -1
  306. package/lib/transpiler/markdown/plain-markdown/methods-partial-template.js +0 -47
  307. package/lib/transpiler/markdown/plain-markdown/methods-partial-template.js.map +0 -1
  308. package/lib/transpiler/markdown/plain-markdown/plain-docsProcessor.d.ts +0 -9
  309. package/lib/transpiler/markdown/plain-markdown/plain-docsProcessor.js +0 -42
  310. package/lib/transpiler/markdown/plain-markdown/plain-docsProcessor.js.map +0 -1
  311. package/lib/transpiler/markdown/plain-markdown/type-doc-partial.d.ts +0 -1
  312. package/lib/transpiler/markdown/plain-markdown/type-doc-partial.js +0 -31
  313. package/lib/transpiler/markdown/plain-markdown/type-doc-partial.js.map +0 -1
  314. package/lib/transpiler/openapi/open-api-docs-processor.d.ts +0 -13
  315. package/lib/transpiler/openapi/open-api-docs-processor.js +0 -78
  316. package/lib/transpiler/openapi/open-api-docs-processor.js.map +0 -1
  317. package/lib/transpiler/openapi/parsers/Builder.d.ts +0 -16
  318. package/lib/transpiler/openapi/parsers/Builder.js +0 -30
  319. package/lib/transpiler/openapi/parsers/Builder.js.map +0 -1
  320. package/lib/transpiler/openapi/parsers/MethodParser.d.ts +0 -20
  321. package/lib/transpiler/openapi/parsers/MethodParser.js +0 -190
  322. package/lib/transpiler/openapi/parsers/MethodParser.js.map +0 -1
  323. package/lib/transpiler/openapi/parsers/ParameterObjectBuilder.d.ts +0 -7
  324. package/lib/transpiler/openapi/parsers/ParameterObjectBuilder.js +0 -11
  325. package/lib/transpiler/openapi/parsers/ParameterObjectBuilder.js.map +0 -1
  326. package/lib/transpiler/openapi/parsers/ReferenceBuilder.d.ts +0 -39
  327. package/lib/transpiler/openapi/parsers/ReferenceBuilder.js +0 -250
  328. package/lib/transpiler/openapi/parsers/ReferenceBuilder.js.map +0 -1
  329. package/lib/transpiler/openapi/parsers/RequestBodyBuilder.d.ts +0 -10
  330. package/lib/transpiler/openapi/parsers/RequestBodyBuilder.js +0 -20
  331. package/lib/transpiler/openapi/parsers/RequestBodyBuilder.js.map +0 -1
  332. package/lib/transpiler/openapi/parsers/ResponsesBuilder.d.ts +0 -7
  333. package/lib/transpiler/openapi/parsers/ResponsesBuilder.js +0 -22
  334. package/lib/transpiler/openapi/parsers/ResponsesBuilder.js.map +0 -1
  335. package/lib/transpiler/processor-type-transpiler.d.ts +0 -10
  336. package/lib/transpiler/processor-type-transpiler.js +0 -9
  337. package/lib/transpiler/processor-type-transpiler.js.map +0 -1
  338. package/lib/transpiler/transpiler.d.ts +0 -5
  339. package/lib/transpiler/transpiler.js +0 -30
  340. package/lib/transpiler/transpiler.js.map +0 -1
  341. package/lib/util/error-logger.d.ts +0 -8
  342. package/lib/util/error-logger.js +0 -90
  343. package/lib/util/error-logger.js.map +0 -1
  344. package/lib/util/logger.d.ts +0 -21
  345. package/lib/util/logger.js +0 -61
  346. package/lib/util/logger.js.map +0 -1
  347. package/lib/util/string-utils.d.ts +0 -2
  348. package/lib/util/string-utils.js +0 -15
  349. package/lib/util/string-utils.js.map +0 -1
  350. package/src/adapters/type-utils.ts +0 -5
  351. package/src/adapters/types.d.ts +0 -8
  352. package/src/model/inheritance.ts +0 -8
  353. package/src/transpiler/markdown/plain-markdown/plain-docsProcessor.ts +0 -42
  354. /package/src/{model → core}/apex-bundle.ts +0 -0
  355. /package/src/{model → core}/manifest.ts +0 -0
@@ -1,5 +1,6 @@
1
1
  import { assertEither, extendExpect } from './expect-extensions';
2
2
  import { generateDocs } from '../../core/generate-docs';
3
+ import { apexBundleFromRawString } from './test-helpers';
3
4
 
4
5
  describe('Generates interface documentation', () => {
5
6
  beforeAll(() => {
@@ -13,7 +14,7 @@ describe('Generates interface documentation', () => {
13
14
  }
14
15
  `;
15
16
 
16
- const result = generateDocs([input]);
17
+ const result = generateDocs([apexBundleFromRawString(input)]);
17
18
  assertEither(result, (data) => expect(data.format).toBe('markdown'));
18
19
  });
19
20
 
@@ -23,7 +24,7 @@ describe('Generates interface documentation', () => {
23
24
  }
24
25
  `;
25
26
 
26
- const result = generateDocs([input]);
27
+ const result = generateDocs([apexBundleFromRawString(input)]);
27
28
  expect(result).documentationBundleHasLength(1);
28
29
  assertEither(result, (data) => expect(data.docs[0].typeName).toBe('MyInterface'));
29
30
  });
@@ -34,7 +35,7 @@ describe('Generates interface documentation', () => {
34
35
  }
35
36
  `;
36
37
 
37
- const result = generateDocs([input]);
38
+ const result = generateDocs([apexBundleFromRawString(input)]);
38
39
  expect(result).documentationBundleHasLength(1);
39
40
  assertEither(result, (data) => expect(data.docs[0].type).toBe('interface'));
40
41
  });
@@ -48,7 +49,9 @@ describe('Generates interface documentation', () => {
48
49
  public interface AnotherInterface {}
49
50
  `;
50
51
 
51
- const result = generateDocs([input1, input2], { scope: ['global'] });
52
+ const result = generateDocs([apexBundleFromRawString(input1), apexBundleFromRawString(input2)], {
53
+ scope: ['global'],
54
+ });
52
55
  expect(result).documentationBundleHasLength(1);
53
56
  });
54
57
 
@@ -59,7 +62,7 @@ describe('Generates interface documentation', () => {
59
62
  */
60
63
  public interface MyInterface {}`;
61
64
 
62
- const result = generateDocs([input]);
65
+ const result = generateDocs([apexBundleFromRawString(input)]);
63
66
  expect(result).documentationBundleHasLength(0);
64
67
  });
65
68
 
@@ -72,7 +75,7 @@ describe('Generates interface documentation', () => {
72
75
  void myMethod();
73
76
  }`;
74
77
 
75
- const result = generateDocs([input]);
78
+ const result = generateDocs([apexBundleFromRawString(input)]);
76
79
  expect(result).documentationBundleHasLength(1);
77
80
  assertEither(result, (data) => expect(data.docs[0].docContents).not.toContain('myMethod'));
78
81
  });
@@ -86,7 +89,7 @@ describe('Generates interface documentation', () => {
86
89
  `;
87
90
 
88
91
  const output = `# MyInterface Interface`;
89
- const result = generateDocs([input]);
92
+ const result = generateDocs([apexBundleFromRawString(input)]);
90
93
  expect(result).documentationBundleHasLength(1);
91
94
  assertEither(result, (data) => expect(data).firstDocContains(output));
92
95
  });
@@ -100,7 +103,7 @@ describe('Generates interface documentation', () => {
100
103
  }
101
104
  `;
102
105
 
103
- const result = generateDocs([input]);
106
+ const result = generateDocs([apexBundleFromRawString(input)]);
104
107
  expect(result).documentationBundleHasLength(1);
105
108
  assertEither(result, (data) => expect(data).firstDocContains('NAMESPACEACCESSIBLE'));
106
109
  assertEither(result, (data) => expect(data).firstDocContains('DEPRECATED'));
@@ -114,7 +117,7 @@ describe('Generates interface documentation', () => {
114
117
  public interface MyInterface {}
115
118
  `;
116
119
 
117
- const result = generateDocs([input]);
120
+ const result = generateDocs([apexBundleFromRawString(input)]);
118
121
  expect(result).documentationBundleHasLength(1);
119
122
  assertEither(result, (data) => expect(data).firstDocContains('This is a description'));
120
123
  });
@@ -127,7 +130,7 @@ describe('Generates interface documentation', () => {
127
130
  public interface MyInterface {}
128
131
  `;
129
132
 
130
- const result = generateDocs([input]);
133
+ const result = generateDocs([apexBundleFromRawString(input)]);
131
134
  expect(result).documentationBundleHasLength(1);
132
135
  assertEither(result, (data) => expect(data).firstDocContains('Custom Tag'));
133
136
  assertEither(result, (data) => expect(data).firstDocContains('My Value'));
@@ -140,7 +143,7 @@ describe('Generates interface documentation', () => {
140
143
  */
141
144
  public interface MyInterface {}`;
142
145
 
143
- const result = generateDocs([input]);
146
+ const result = generateDocs([apexBundleFromRawString(input)]);
144
147
  expect(result).documentationBundleHasLength(1);
145
148
  assertEither(result, (data) => expect(data).firstDocContains('Group'));
146
149
  assertEither(result, (data) => expect(data).firstDocContains('MyGroup'));
@@ -153,7 +156,7 @@ describe('Generates interface documentation', () => {
153
156
  */
154
157
  public interface MyInterface {}`;
155
158
 
156
- const result = generateDocs([input]);
159
+ const result = generateDocs([apexBundleFromRawString(input)]);
157
160
  expect(result).documentationBundleHasLength(1);
158
161
  assertEither(result, (data) => expect(data).firstDocContains('Author'));
159
162
  assertEither(result, (data) => expect(data).firstDocContains('John Doe'));
@@ -166,7 +169,7 @@ describe('Generates interface documentation', () => {
166
169
  */
167
170
  public interface MyInterface {}`;
168
171
 
169
- const result = generateDocs([input]);
172
+ const result = generateDocs([apexBundleFromRawString(input)]);
170
173
  expect(result).documentationBundleHasLength(1);
171
174
  assertEither(result, (data) => expect(data).firstDocContains('Date'));
172
175
  assertEither(result, (data) => expect(data).firstDocContains('2021-01-01'));
@@ -179,7 +182,7 @@ describe('Generates interface documentation', () => {
179
182
  */
180
183
  public interface MyInterface {}`;
181
184
 
182
- const result = generateDocs([input]);
185
+ const result = generateDocs([apexBundleFromRawString(input)]);
183
186
  expect(result).documentationBundleHasLength(1);
184
187
  assertEither(result, (data) => expect(data).firstDocContains('This is a description'));
185
188
  });
@@ -194,7 +197,7 @@ describe('Generates interface documentation', () => {
194
197
 
195
198
  const input2 = 'public interface InterfaceRef {}';
196
199
 
197
- const result = generateDocs([input1, input2]);
200
+ const result = generateDocs([apexBundleFromRawString(input1), apexBundleFromRawString(input2)]);
198
201
  expect(result).documentationBundleHasLength(2);
199
202
  assertEither(result, (data) =>
200
203
  expect(data).firstDocContains('This is a description with a [InterfaceRef](./InterfaceRef.md) reference'),
@@ -209,7 +212,7 @@ describe('Generates interface documentation', () => {
209
212
  public interface MyInterface {}
210
213
  `;
211
214
 
212
- const result = generateDocs([input]);
215
+ const result = generateDocs([apexBundleFromRawString(input)]);
213
216
  expect(result).documentationBundleHasLength(1);
214
217
  assertEither(result, (data) =>
215
218
  expect(data).firstDocContains(
@@ -228,7 +231,7 @@ describe('Generates interface documentation', () => {
228
231
 
229
232
  const input2 = 'public interface InterfaceRef {}';
230
233
 
231
- const result = generateDocs([input1, input2]);
234
+ const result = generateDocs([apexBundleFromRawString(input1), apexBundleFromRawString(input2)]);
232
235
  expect(result).documentationBundleHasLength(2);
233
236
  assertEither(result, (data) => expect(data).firstDocContains('See'));
234
237
  assertEither(result, (data) => expect(data).firstDocContains('[InterfaceRef](./InterfaceRef.md)'));
@@ -242,7 +245,7 @@ describe('Generates interface documentation', () => {
242
245
  public interface MyInterface {}
243
246
  `;
244
247
 
245
- const result = generateDocs([input]);
248
+ const result = generateDocs([apexBundleFromRawString(input)]);
246
249
  expect(result).documentationBundleHasLength(1);
247
250
  assertEither(result, (data) => expect(data).firstDocContains('See'));
248
251
  assertEither(result, (data) => expect(data).firstDocContains('InterfaceRef'));
@@ -251,7 +254,7 @@ describe('Generates interface documentation', () => {
251
254
  it('displays the namespace if present in the config', () => {
252
255
  const input = 'public interface MyInterface {}';
253
256
 
254
- const result = generateDocs([input], { namespace: 'MyNamespace' });
257
+ const result = generateDocs([apexBundleFromRawString(input)], { namespace: 'MyNamespace' });
255
258
  expect(result).documentationBundleHasLength(1);
256
259
  assertEither(result, (data) => expect(data).firstDocContains('## Namespace'));
257
260
  assertEither(result, (data) => expect(data).firstDocContains('MyNamespace'));
@@ -260,7 +263,7 @@ describe('Generates interface documentation', () => {
260
263
  it('does not display the namespace if not present in the config', () => {
261
264
  const input = 'public interface MyInterface {}';
262
265
 
263
- const result = generateDocs([input]);
266
+ const result = generateDocs([apexBundleFromRawString(input)]);
264
267
  expect(result).documentationBundleHasLength(1);
265
268
  assertEither(result, (data) => expect(data).firstDocContainsNot('## Namespace'));
266
269
  });
@@ -278,7 +281,7 @@ describe('Generates interface documentation', () => {
278
281
  public interface MyInterface {}
279
282
  `;
280
283
 
281
- const result = generateDocs([input]);
284
+ const result = generateDocs([apexBundleFromRawString(input)]);
282
285
  expect(result).documentationBundleHasLength(1);
283
286
  assertEither(result, (data) => expect(data).firstDocContains('```mermaid'));
284
287
  assertEither(result, (data) => expect(data).firstDocContains('graph TD'));
@@ -296,7 +299,7 @@ describe('Generates interface documentation', () => {
296
299
  */
297
300
  public interface MyInterface {}`;
298
301
 
299
- const result = generateDocs([input]);
302
+ const result = generateDocs([apexBundleFromRawString(input)]);
300
303
  expect(result).documentationBundleHasLength(1);
301
304
  assertEither(result, (data) => expect(data).firstDocContains('```apex'));
302
305
  assertEither(result, (data) => expect(data).firstDocContains('public class MyClass'));
@@ -311,7 +314,7 @@ describe('Generates interface documentation', () => {
311
314
  }
312
315
  `;
313
316
 
314
- const result = generateDocs([input]);
317
+ const result = generateDocs([apexBundleFromRawString(input)]);
315
318
  expect(result).documentationBundleHasLength(1);
316
319
  assertEither(result, (data) => expect(data).firstDocContains('## Methods'));
317
320
  });
@@ -331,7 +334,7 @@ describe('Generates interface documentation', () => {
331
334
  }
332
335
  `;
333
336
 
334
- const result = generateDocs([input]);
337
+ const result = generateDocs([apexBundleFromRawString(input)]);
335
338
  expect(result).documentationBundleHasLength(1);
336
339
  assertEither(result, (data) => expect(data).firstDocContains('```mermaid'));
337
340
  assertEither(result, (data) => expect(data).firstDocContains('graph TD'));
@@ -352,7 +355,7 @@ describe('Generates interface documentation', () => {
352
355
  }
353
356
  `;
354
357
 
355
- const result = generateDocs([input]);
358
+ const result = generateDocs([apexBundleFromRawString(input)]);
356
359
  expect(result).documentationBundleHasLength(1);
357
360
  assertEither(result, (data) => expect(data).firstDocContains('```apex'));
358
361
  assertEither(result, (data) => expect(data).firstDocContains('public class MyClass'));
@@ -365,7 +368,7 @@ describe('Generates interface documentation', () => {
365
368
  }
366
369
  `;
367
370
 
368
- const result = generateDocs([input]);
371
+ const result = generateDocs([apexBundleFromRawString(input)]);
369
372
  expect(result).documentationBundleHasLength(1);
370
373
  assertEither(result, (data) => expect(data).firstDocContains('### Signature'));
371
374
  });
@@ -377,7 +380,7 @@ describe('Generates interface documentation', () => {
377
380
  }
378
381
  `;
379
382
 
380
- const result = generateDocs([input]);
383
+ const result = generateDocs([apexBundleFromRawString(input)]);
381
384
  expect(result).documentationBundleHasLength(1);
382
385
  assertEither(result, (data) => expect(data).firstDocContains('### Parameters'));
383
386
  });
@@ -389,7 +392,7 @@ describe('Generates interface documentation', () => {
389
392
  }
390
393
  `;
391
394
 
392
- const result = generateDocs([input]);
395
+ const result = generateDocs([apexBundleFromRawString(input)]);
393
396
  expect(result).documentationBundleHasLength(1);
394
397
  assertEither(result, (data) => expect(data).firstDocContains('### Return Type'));
395
398
  });
@@ -404,7 +407,7 @@ describe('Generates interface documentation', () => {
404
407
  }
405
408
  `;
406
409
 
407
- const result = generateDocs([input]);
410
+ const result = generateDocs([apexBundleFromRawString(input)]);
408
411
  expect(result).documentationBundleHasLength(1);
409
412
  assertEither(result, (data) => expect(data).firstDocContains('### Throws'));
410
413
  });
@@ -420,7 +423,7 @@ describe('Generates interface documentation', () => {
420
423
  public interface AnotherInterface extends MyInterface {}
421
424
  `;
422
425
 
423
- const result = generateDocs([input1, input2]);
426
+ const result = generateDocs([apexBundleFromRawString(input1), apexBundleFromRawString(input2)]);
424
427
  expect(result).documentationBundleHasLength(2);
425
428
  assertEither(result, (data) =>
426
429
  expect(data.docs.find((doc) => doc.typeName === 'AnotherInterface')?.docContents).toContain('Inherited'),
@@ -2,6 +2,7 @@ import { assertEither, extendExpect } from './expect-extensions';
2
2
  import { generateDocs } from '../../core/generate-docs';
3
3
  import { pipe } from 'fp-ts/function';
4
4
  import * as E from 'fp-ts/Either';
5
+ import { apexBundleFromRawString } from './test-helpers';
5
6
 
6
7
  describe('Generates a Reference Guide', () => {
7
8
  beforeAll(() => {
@@ -20,7 +21,7 @@ describe('Generates a Reference Guide', () => {
20
21
  public class MyClass {}
21
22
  `;
22
23
 
23
- const result = generateDocs([input1, input2]);
24
+ const result = generateDocs([apexBundleFromRawString(input1), apexBundleFromRawString(input2)]);
24
25
  expect(result).documentationBundleHasLength(2);
25
26
 
26
27
  assertEither(result, (data) => expect(data.referenceGuide).toContain('[MyEnum](./Miscellaneous/MyEnum.md)'));
@@ -35,7 +36,7 @@ describe('Generates a Reference Guide', () => {
35
36
  }
36
37
  `;
37
38
 
38
- const result = generateDocs([input]);
39
+ const result = generateDocs([apexBundleFromRawString(input)]);
39
40
  expect(result).documentationBundleHasLength(1);
40
41
  assertEither(result, (data) => expect(data.referenceGuide).toContain('## Miscellaneous'));
41
42
  });
@@ -51,7 +52,7 @@ describe('Generates a Reference Guide', () => {
51
52
  }
52
53
  `;
53
54
 
54
- const result = generateDocs([input]);
55
+ const result = generateDocs([apexBundleFromRawString(input)]);
55
56
  expect(result).documentationBundleHasLength(1);
56
57
  assertEither(result, (data) => expect(data.referenceGuide).toContain('## MyGroup'));
57
58
  });
@@ -74,7 +75,7 @@ describe('Generates a Reference Guide', () => {
74
75
  public class MyClass {}
75
76
  `;
76
77
 
77
- const result = generateDocs([input1, input2]);
78
+ const result = generateDocs([apexBundleFromRawString(input1), apexBundleFromRawString(input2)]);
78
79
  expect(result).documentationBundleHasLength(2);
79
80
  pipe(
80
81
  result,
@@ -107,7 +108,7 @@ describe('Generates a Reference Guide', () => {
107
108
  public class MyClass {}
108
109
  `;
109
110
 
110
- const result = generateDocs([input1, input2]);
111
+ const result = generateDocs([apexBundleFromRawString(input1), apexBundleFromRawString(input2)]);
111
112
  expect(result).documentationBundleHasLength(2);
112
113
  assertEither(result, (data) => expect(data.referenceGuide).toContain('## Group1'));
113
114
  assertEither(result, (data) => expect(data.referenceGuide).toContain('MyClass'));
@@ -132,7 +133,7 @@ describe('Generates a Reference Guide', () => {
132
133
  public class MyClass {}
133
134
  `;
134
135
 
135
- const result = generateDocs([input1, input2]);
136
+ const result = generateDocs([apexBundleFromRawString(input1), apexBundleFromRawString(input2)]);
136
137
  expect(result).documentationBundleHasLength(2);
137
138
  assertEither(result, (data) => expect(data.referenceGuide).toContain('This is a description'));
138
139
  });
@@ -156,7 +157,7 @@ describe('Generates a Reference Guide', () => {
156
157
  public class MyClass {}
157
158
  `;
158
159
 
159
- const result = generateDocs([input1, input2]);
160
+ const result = generateDocs([apexBundleFromRawString(input1), apexBundleFromRawString(input2)]);
160
161
  expect(result).documentationBundleHasLength(2);
161
162
  assertEither(result, (data) => expect(data.referenceGuide).toContain('with a [MyClass](./Group2/MyClass.md)'));
162
163
  });
@@ -0,0 +1,9 @@
1
+ import ApexBundle from '../../core/apex-bundle';
2
+
3
+ export function apexBundleFromRawString(raw: string, rawMetadata?: string): ApexBundle {
4
+ return {
5
+ filePath: 'test.cls',
6
+ rawTypeContent: raw,
7
+ rawMetadataContent: rawMetadata ?? null,
8
+ };
9
+ }
@@ -8,11 +8,13 @@ import { Settings, TargetFile } from '../settings';
8
8
  import Transpiler from '../transpiler/transpiler';
9
9
  import { FileWriter } from '../service/file-writer';
10
10
  import ErrorLogger from '../util/error-logger';
11
- import ApexBundle from '../model/apex-bundle';
12
- import Manifest from '../model/manifest';
11
+ import ApexBundle from '../core/apex-bundle';
12
+ import Manifest from '../core/manifest';
13
13
  import { TypesRepository } from '../model/types-repository';
14
14
  import { TypeTranspilerFactory } from '../transpiler/factory';
15
- import { generateMarkdownFiles } from './flows/generate-markdown-files';
15
+ import { generateMarkdownFiles } from './generators/generate-markdown-files';
16
+ import { AllConfigurableOptions } from '../cli/args';
17
+ import { GeneratorChoices } from '../transpiler/generator-choices';
16
18
 
17
19
  /**
18
20
  * Application entry-point to generate documentation out of Apex source files.
@@ -21,8 +23,9 @@ export class Apexdocs {
21
23
  /**
22
24
  * Generates documentation out of Apex source files.
23
25
  */
24
- static generate(): void {
25
- Logger.log('Initializing...');
26
+ static generate(config: AllConfigurableOptions): void {
27
+ Logger.logSingle('Initializing...', false);
28
+ this.initializeSettings(config);
26
29
  const fileBodies = ApexFileReader.processFiles(new DefaultFileSystem());
27
30
 
28
31
  if (Settings.getInstance().targetGenerator === 'plain-markdown') {
@@ -49,6 +52,32 @@ export class Apexdocs {
49
52
  }
50
53
  }
51
54
 
55
+ private static initializeSettings(argv: AllConfigurableOptions) {
56
+ const targetGenerator = argv.targetGenerator as GeneratorChoices;
57
+ Settings.build({
58
+ sourceDirectory: argv.sourceDir,
59
+ scope: argv.scope,
60
+ outputDir: argv.targetDir,
61
+ targetGenerator: targetGenerator,
62
+ indexOnly: argv.indexOnly,
63
+ defaultGroupName: argv.defaultGroupName,
64
+ openApiTitle: argv.openApiTitle,
65
+ title: argv.title,
66
+ namespace: argv.namespace,
67
+ openApiFileName: argv.openApiFileName,
68
+ sortMembersAlphabetically: argv.sortMembersAlphabetically,
69
+ includeMetadata: argv.includeMetadata,
70
+ rootDir: argv.documentationRootDir,
71
+ onAfterProcess: argv.onAfterProcess,
72
+ onBeforeFileWrite: argv.onBeforeFileWrite,
73
+ frontMatterHeader: argv.frontMatterHeader,
74
+ linkingStrategy:
75
+ targetGenerator === 'plain-markdown'
76
+ ? 'path-relative'
77
+ : TypeTranspilerFactory.get(targetGenerator).getLinkingStrategy(),
78
+ });
79
+ }
80
+
52
81
  private static filterByScopes(manifest: Manifest) {
53
82
  let filteredTypes: Type[];
54
83
  let filteredLogMessage;
@@ -1,6 +1,6 @@
1
- import ApexBundle from '../../model/apex-bundle';
1
+ import ApexBundle from '../../core/apex-bundle';
2
2
  import { Settings, TargetFile } from '../../settings';
3
- import { DocumentationBundle, generateDocs } from '../../core/generate-docs';
3
+ import { DocumentationBundle, generateDocs, ReflectionError } from '../../core/generate-docs';
4
4
  import { MarkdownFile } from '../../model/markdown-file';
5
5
  import { FileWriter } from '../../service/file-writer';
6
6
  import { Logger } from '../../util/logger';
@@ -12,21 +12,23 @@ export const generateMarkdownFiles = flow(
12
12
  E.map(convertToMarkdownFiles),
13
13
  E.map(writeFilesToSystem),
14
14
  E.mapLeft((errors) => {
15
- Logger.error(errors.join('\n'));
15
+ const errorMessages = [
16
+ 'Error(s) occurred while parsing files. Please review the following issues:',
17
+ ...errors.map(formatReflectionError),
18
+ ].join('\n');
19
+
20
+ Logger.error(errorMessages);
16
21
  }),
17
22
  );
18
23
 
19
24
  function generateDocumentationBundle(bundles: ApexBundle[]) {
20
- return generateDocs(
21
- bundles.map((file) => file.rawTypeContent),
22
- {
23
- scope: Settings.getInstance().scope,
24
- outputDir: Settings.getInstance().outputDir,
25
- namespace: Settings.getInstance().getNamespace(),
26
- sortMembersAlphabetically: Settings.getInstance().sortMembersAlphabetically(),
27
- defaultGroupName: Settings.getInstance().getDefaultGroupName(),
28
- },
29
- );
25
+ return generateDocs(bundles, {
26
+ scope: Settings.getInstance().scope,
27
+ outputDir: Settings.getInstance().outputDir,
28
+ namespace: Settings.getInstance().getNamespace(),
29
+ sortMembersAlphabetically: Settings.getInstance().sortMembersAlphabetically(),
30
+ defaultGroupName: Settings.getInstance().getDefaultGroupName(),
31
+ });
30
32
  }
31
33
 
32
34
  function convertToMarkdownFiles(docBundle: DocumentationBundle): MarkdownFile[] {
@@ -45,3 +47,7 @@ function writeFilesToSystem(files: MarkdownFile[]) {
45
47
  Logger.logSingle(`${file.name} processed.`, false, 'green', false);
46
48
  });
47
49
  }
50
+
51
+ function formatReflectionError(error: ReflectionError) {
52
+ return `Source file: ${error.file}\n${error.message}\n`;
53
+ }
@@ -0,0 +1,138 @@
1
+ import { Settings } from '../settings';
2
+ import { cosmiconfig, CosmiconfigResult } from 'cosmiconfig';
3
+ import * as yargs from 'yargs';
4
+
5
+ type OnlyConfigurableThroughFile = {
6
+ onAfterProcess: Settings['onAfterProcess'];
7
+ onBeforeFileWrite: Settings['onBeforeFileWrite'];
8
+ frontMatterHeader: Settings['frontMatterHeader'];
9
+ };
10
+
11
+ type YargsArgs = ReturnType<typeof _extractYargs>;
12
+
13
+ type ConfigurableThroughFile = YargsArgs & OnlyConfigurableThroughFile;
14
+
15
+ export type AllConfigurableOptions = Partial<ConfigurableThroughFile> & YargsArgs;
16
+
17
+ /**
18
+ * Extracts configuration from a configuration file or the package.json
19
+ * through cosmiconfig.
20
+ */
21
+ function _extractConfig(): Promise<CosmiconfigResult> {
22
+ return cosmiconfig('apexdocs').search();
23
+ }
24
+
25
+ /**
26
+ * Extracts arguments from the command line.
27
+ * @param config The configuration object from the configuration file, if any.
28
+ */
29
+ function _extractYargs(config?: CosmiconfigResult) {
30
+ return yargs
31
+ .config(config?.config)
32
+ .options({
33
+ sourceDir: {
34
+ type: 'string',
35
+ alias: 's',
36
+ demandOption: true,
37
+ describe: 'The directory location which contains your apex .cls classes.',
38
+ },
39
+ targetDir: {
40
+ type: 'string',
41
+ alias: 't',
42
+ default: './docs/',
43
+ describe: 'The directory location where documentation will be generated to.',
44
+ },
45
+ recursive: {
46
+ type: 'boolean',
47
+ alias: 'r',
48
+ default: true,
49
+ deprecated: 'This option is no longer needed as the recursive search is always on.',
50
+ describe: 'Whether .cls classes will be searched for recursively in the directory provided.',
51
+ },
52
+ scope: {
53
+ type: 'string',
54
+ array: true,
55
+ alias: 'p',
56
+ default: ['global'],
57
+ describe:
58
+ 'A list of scopes to document. Values should be separated by a space, e.g --scope global public namespaceaccessible. ' +
59
+ 'Annotations are supported and should be passed lowercased and without the @ symbol, e.g. namespaceaccessible auraenabled. ' +
60
+ 'Note that this setting is ignored if generating an OpenApi REST specification since that looks for classes annotated with @RestResource.',
61
+ },
62
+ targetGenerator: {
63
+ type: 'string',
64
+ alias: 'g',
65
+ default: 'jekyll',
66
+ choices: ['jekyll', 'docsify', 'plain-markdown', 'openapi'],
67
+ describe:
68
+ 'Define the static file generator for which the documents will be created. ' +
69
+ 'Currently supports jekyll, docsify, plain markdown, and OpenAPI v3.1.0.',
70
+ },
71
+ indexOnly: {
72
+ type: 'boolean',
73
+ default: false,
74
+ describe: 'Defines whether only the index file should be generated.',
75
+ },
76
+ defaultGroupName: {
77
+ type: 'string',
78
+ default: 'Miscellaneous',
79
+ describe: 'Defines the @group name to be used when a file does not specify it.',
80
+ },
81
+ sanitizeHtml: {
82
+ type: 'boolean',
83
+ default: true,
84
+ deprecated: 'This option is no longer needed as the sanitization is always on.',
85
+ describe:
86
+ 'When on, any special character within your ApexDocs is converted into its HTML code representation. ' +
87
+ 'This is specially useful when generic objects are described within the docs, e.g. "List< Foo>", "Map<Foo, Bar>" ' +
88
+ 'because otherwise the content within < and > would be treated as HTML tags and not shown in the output. ' +
89
+ 'Content in @example blocks are never sanitized.',
90
+ },
91
+ openApiTitle: {
92
+ type: 'string',
93
+ default: 'Apex REST Api',
94
+ describe: 'If using "openapi" as the target generator, this allows you to specify the OpenApi title value.',
95
+ },
96
+ title: {
97
+ type: 'string',
98
+ describe: "Allows you to specify the title of the generated documentation's home file.",
99
+ default: 'Classes',
100
+ },
101
+ namespace: {
102
+ type: 'string',
103
+ describe:
104
+ 'The package namespace, if any. If this value is provided the namespace will be added as a prefix to all of the parsed files. ' +
105
+ "If generating an OpenApi definition, it will be added to the file's Server Url.",
106
+ },
107
+ openApiFileName: {
108
+ type: 'string',
109
+ describe: 'If using "openapi" as the target generator, this allows you to specify the name of the output file.',
110
+ default: 'openapi',
111
+ },
112
+ sortMembersAlphabetically: {
113
+ type: 'boolean',
114
+ describe: 'Whether to sort members alphabetically.',
115
+ default: false,
116
+ },
117
+ includeMetadata: {
118
+ type: 'boolean',
119
+ describe: "Whether to include the file's meta.xml information: Whether it is active and and the API version",
120
+ default: false,
121
+ },
122
+ documentationRootDir: {
123
+ type: 'string',
124
+ describe:
125
+ '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.',
126
+ },
127
+ })
128
+ .parseSync();
129
+ }
130
+
131
+ /**
132
+ * Combines the extracted configuration and arguments.
133
+ */
134
+ export async function extractArgs(): Promise<AllConfigurableOptions> {
135
+ const config = await _extractConfig();
136
+ const cliArgs = _extractYargs(config);
137
+ return { ...config?.config, ...cliArgs };
138
+ }