@cparra/apexdocs 2.25.0 → 3.0.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 (431) hide show
  1. package/.github/workflows/ci.yaml +22 -0
  2. package/README.md +73 -12
  3. package/__mocks__/chalk.js +12 -0
  4. package/__mocks__/log-update.js +6 -0
  5. package/dist/cli/generate.js +3181 -0
  6. package/dist/defaults-DGKfeZq-.js +13 -0
  7. package/dist/index.d.ts +117 -0
  8. package/dist/index.js +36 -0
  9. package/eslint.config.mjs +10 -0
  10. package/examples/markdown/.forceignore +12 -0
  11. package/examples/markdown/config/project-scratch-def.json +5 -0
  12. package/examples/markdown/docs/index.md +109 -0
  13. package/examples/markdown/docs/miscellaneous/BaseClass.md +16 -0
  14. package/examples/markdown/docs/miscellaneous/MultiInheritanceClass.md +72 -0
  15. package/examples/markdown/docs/miscellaneous/ParentInterface.md +15 -0
  16. package/examples/markdown/docs/miscellaneous/ReferencedEnum.md +8 -0
  17. package/examples/markdown/docs/miscellaneous/SampleException.md +24 -0
  18. package/examples/markdown/docs/miscellaneous/SampleInterface.md +116 -0
  19. package/examples/markdown/docs/miscellaneous/Url.md +309 -0
  20. package/examples/markdown/docs/sample-enums/SampleEnum.md +36 -0
  21. package/examples/markdown/docs/samplegroup/SampleClass.md +170 -0
  22. package/examples/markdown/force-app/classes/BaseClass.cls +3 -0
  23. package/examples/markdown/force-app/classes/MultiInheritanceClass.cls +1 -0
  24. package/examples/markdown/force-app/classes/ParentInterface.cls +3 -0
  25. package/examples/markdown/force-app/classes/ReferencedEnum.cls +3 -0
  26. package/examples/markdown/force-app/classes/SampleClass.cls +72 -0
  27. package/examples/markdown/force-app/classes/SampleEnum.cls +30 -0
  28. package/examples/markdown/force-app/classes/SampleException.cls +17 -0
  29. package/examples/markdown/force-app/classes/SampleInterface.cls +50 -0
  30. package/examples/markdown/force-app/classes/Url.cls +194 -0
  31. package/examples/markdown/package-lock.json +665 -0
  32. package/examples/markdown/package.json +20 -0
  33. package/examples/markdown/sfdx-project.json +12 -0
  34. package/examples/vitepress/.forceignore +12 -0
  35. package/examples/vitepress/apexdocs.config.ts +106 -0
  36. package/examples/vitepress/config/project-scratch-def.json +13 -0
  37. package/examples/vitepress/docs/.vitepress/cache/deps/@theme_index.js +259 -0
  38. package/examples/vitepress/docs/.vitepress/cache/deps/@theme_index.js.map +7 -0
  39. package/examples/vitepress/docs/.vitepress/cache/deps/_metadata.json +40 -0
  40. package/examples/vitepress/docs/.vitepress/cache/deps/chunk-574YRH25.js +11474 -0
  41. package/examples/vitepress/docs/.vitepress/cache/deps/chunk-574YRH25.js.map +7 -0
  42. package/examples/vitepress/docs/.vitepress/cache/deps/chunk-E5DZZB2I.js +9172 -0
  43. package/examples/vitepress/docs/.vitepress/cache/deps/chunk-E5DZZB2I.js.map +7 -0
  44. package/examples/vitepress/docs/.vitepress/cache/deps/package.json +3 -0
  45. package/examples/vitepress/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js +4339 -0
  46. package/examples/vitepress/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map +7 -0
  47. package/examples/vitepress/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js +567 -0
  48. package/examples/vitepress/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js.map +7 -0
  49. package/examples/vitepress/docs/.vitepress/cache/deps/vue.js +323 -0
  50. package/examples/vitepress/docs/.vitepress/cache/deps/vue.js.map +7 -0
  51. package/examples/vitepress/docs/.vitepress/config.mts +21 -0
  52. package/examples/vitepress/docs/.vitepress/sidebar.json +119 -0
  53. package/examples/vitepress/docs/api-examples.md +49 -0
  54. package/examples/vitepress/docs/index-frontmatter.md +16 -0
  55. package/examples/vitepress/docs/index.md +56 -0
  56. package/examples/vitepress/docs/markdown-examples.md +85 -0
  57. package/examples/vitepress/docs/miscellaneous/BaseClass.md +20 -0
  58. package/examples/vitepress/docs/miscellaneous/MultiInheritanceClass.md +76 -0
  59. package/examples/vitepress/docs/miscellaneous/ParentInterface.md +19 -0
  60. package/examples/vitepress/docs/miscellaneous/ReferencedEnum.md +15 -0
  61. package/examples/vitepress/docs/miscellaneous/SampleException.md +28 -0
  62. package/examples/vitepress/docs/miscellaneous/SampleInterface.md +116 -0
  63. package/examples/vitepress/docs/miscellaneous/Url.md +317 -0
  64. package/examples/vitepress/docs/sample-enums/SampleEnum.md +40 -0
  65. package/examples/vitepress/docs/samplegroup/SampleClass.md +174 -0
  66. package/examples/vitepress/force-app/main/default/classes/BaseClass.cls +3 -0
  67. package/examples/vitepress/force-app/main/default/classes/MultiInheritanceClass.cls +1 -0
  68. package/examples/vitepress/force-app/main/default/classes/ParentInterface.cls +3 -0
  69. package/examples/vitepress/force-app/main/default/classes/ReferencedEnum.cls +5 -0
  70. package/examples/vitepress/force-app/main/default/classes/SampleClass.cls +72 -0
  71. package/examples/vitepress/force-app/main/default/classes/SampleEnum.cls +30 -0
  72. package/examples/vitepress/force-app/main/default/classes/SampleException.cls +17 -0
  73. package/examples/vitepress/force-app/main/default/classes/SampleInterface.cls +46 -0
  74. package/examples/vitepress/force-app/main/default/classes/Url.cls +198 -0
  75. package/examples/vitepress/package-lock.json +2574 -0
  76. package/examples/vitepress/package.json +18 -0
  77. package/examples/vitepress/sfdx-project.json +12 -0
  78. package/jest.config.js +6 -1
  79. package/jest.d.ts +7 -0
  80. package/package.json +34 -36
  81. package/src/application/Apexdocs.ts +58 -68
  82. package/src/application/__tests__/apex-file-reader.spec.ts +104 -0
  83. package/src/application/apex-file-reader.ts +55 -0
  84. package/src/application/file-system.ts +69 -0
  85. package/src/application/file-writer.ts +43 -0
  86. package/src/application/generators/markdown.ts +45 -0
  87. package/src/application/generators/openapi.ts +60 -0
  88. package/src/cli/args.ts +43 -0
  89. package/src/cli/commands/markdown.ts +53 -0
  90. package/src/cli/generate.ts +10 -131
  91. package/src/core/manifest.ts +90 -0
  92. package/src/core/markdown/__test__/expect-extensions.ts +32 -0
  93. package/src/core/markdown/__test__/generating-class-docs.spec.ts +733 -0
  94. package/src/core/markdown/__test__/generating-enum-docs.spec.ts +385 -0
  95. package/src/core/markdown/__test__/generating-interface-docs.spec.ts +461 -0
  96. package/src/core/markdown/__test__/generating-reference-guide.spec.ts +180 -0
  97. package/src/core/markdown/__test__/inheritance-chain.test.ts +54 -0
  98. package/src/core/markdown/__test__/test-helpers.ts +23 -0
  99. package/src/core/markdown/adapters/__tests__/documentables.spec.ts +109 -0
  100. package/src/core/markdown/adapters/__tests__/interface-adapter.spec.ts +148 -0
  101. package/src/core/markdown/adapters/__tests__/link-generator.spec.ts +130 -0
  102. package/src/core/markdown/adapters/__tests__/references.spec.ts +136 -0
  103. package/src/core/markdown/adapters/apex-types.ts +238 -0
  104. package/src/core/markdown/adapters/documentables.ts +115 -0
  105. package/src/core/markdown/adapters/fields-and-properties.ts +45 -0
  106. package/src/core/markdown/adapters/generate-link.ts +82 -0
  107. package/src/core/markdown/adapters/inline.ts +143 -0
  108. package/src/core/markdown/adapters/methods-and-constructors.ts +133 -0
  109. package/src/core/markdown/adapters/reference-guide.ts +37 -0
  110. package/src/core/markdown/adapters/renderable-bundle.ts +61 -0
  111. package/src/core/markdown/adapters/renderable-to-page-data.ts +89 -0
  112. package/src/core/markdown/adapters/type-utils.ts +13 -0
  113. package/src/core/markdown/adapters/types.d.ts +180 -0
  114. package/src/core/markdown/generate-docs.ts +212 -0
  115. package/src/core/markdown/reflection/filter-scope.ts +13 -0
  116. package/src/core/markdown/reflection/inheritance-chain-expanion.ts +22 -0
  117. package/src/core/markdown/reflection/inheritance-chain.ts +23 -0
  118. package/src/core/markdown/reflection/inherited-member-expansion.ts +105 -0
  119. package/src/core/markdown/reflection/reflect-source.ts +123 -0
  120. package/src/core/markdown/reflection/sort-members.ts +59 -0
  121. package/src/core/markdown/templates/class-template.ts +75 -0
  122. package/src/core/markdown/templates/constructors-partial-template.ts +32 -0
  123. package/src/core/markdown/templates/documentable-partial-template.ts +26 -0
  124. package/src/core/markdown/templates/enum-template.ts +12 -0
  125. package/src/core/markdown/templates/fieldsPartialTemplate.ts +23 -0
  126. package/src/core/markdown/templates/grouped-members-partial-template.ts +6 -0
  127. package/src/core/markdown/templates/hookable.ts +7 -0
  128. package/src/core/markdown/templates/interface-template.ts +16 -0
  129. package/src/core/markdown/templates/methods-partial-template.ts +43 -0
  130. package/src/core/markdown/templates/reference-guide.ts +14 -0
  131. package/src/core/markdown/templates/template.ts +114 -0
  132. package/src/core/markdown/templates/type-doc-partial.ts +27 -0
  133. package/src/core/markdown/utils.ts +3 -0
  134. package/src/{service → core/openapi}/__tests__/manifest-factory.spec.ts +1 -2
  135. package/src/{transpiler → core}/openapi/__tests__/open-api-docs-processor.spec.ts +1 -1
  136. package/src/{model → core/openapi}/apex-type-wrappers/__tests__/ClassMirrorWrapper.spec.ts +3 -3
  137. package/src/core/openapi/file-container.ts +13 -0
  138. package/src/{service → core/openapi}/manifest-factory.ts +3 -3
  139. package/src/{transpiler → core}/openapi/open-api-docs-processor.ts +10 -11
  140. package/src/{model → core}/openapi/open-api-types.ts +2 -2
  141. package/src/core/openapi/openapi-type-file.ts +12 -0
  142. package/src/{service → core/openapi}/parser.ts +7 -21
  143. package/src/{transpiler → core}/openapi/parsers/Builder.ts +3 -3
  144. package/src/{transpiler → core}/openapi/parsers/MethodParser.ts +6 -6
  145. package/src/{transpiler → core}/openapi/parsers/ParameterObjectBuilder.ts +2 -2
  146. package/src/{transpiler → core}/openapi/parsers/ReferenceBuilder.ts +7 -6
  147. package/src/{transpiler → core}/openapi/parsers/RequestBodyBuilder.ts +2 -2
  148. package/src/{transpiler → core}/openapi/parsers/ResponsesBuilder.ts +2 -2
  149. package/src/{transpiler → core}/openapi/parsers/__tests__/MethodParser.spec.ts +1 -1
  150. package/src/{transpiler → core}/openapi/parsers/__tests__/ParameterObjectBuilder.spec.ts +2 -2
  151. package/src/{transpiler → core}/openapi/parsers/__tests__/ReferenceBuilder.spec.ts +2 -2
  152. package/src/{transpiler → core}/openapi/parsers/__tests__/RequestBodyBuilder.spec.ts +2 -2
  153. package/src/{transpiler → core}/openapi/parsers/__tests__/ResponsesBuilder.spec.ts +1 -1
  154. package/src/{transpiler → core/openapi}/transpiler.ts +2 -6
  155. package/src/{model → core/openapi}/types-repository.ts +0 -9
  156. package/src/core/parse-apex-metadata.ts +30 -0
  157. package/src/core/settings.ts +56 -0
  158. package/src/core/shared/types.d.ts +147 -0
  159. package/src/core/shared/utils.ts +5 -0
  160. package/src/defaults.ts +9 -0
  161. package/src/index.ts +36 -1
  162. package/src/test-helpers/ClassMirrorBuilder.ts +14 -1
  163. package/src/test-helpers/FieldMirrorBuilder.ts +1 -1
  164. package/src/test-helpers/InterfaceMirrorBuilder.ts +39 -0
  165. package/src/test-helpers/MethodMirrorBuilder.ts +46 -6
  166. package/src/test-helpers/SettingsBuilder.ts +1 -4
  167. package/src/util/error-logger.ts +4 -4
  168. package/src/util/fp.ts +3 -0
  169. package/src/util/logger.ts +12 -25
  170. package/src/util/string-utils.ts +0 -4
  171. package/tsconfig.json +8 -3
  172. package/.eslintrc.js +0 -12
  173. package/apexdocs.config.ts +0 -13
  174. package/docs/.nojekyll +0 -0
  175. package/docs/README.md +0 -1
  176. package/docs/index.html +0 -22
  177. package/docs/restapi.json +0 -589
  178. package/docs/types/Classes/nspc.AnotherInterface.md +0 -22
  179. package/docs/types/Classes/nspc.ChildClass.md +0 -97
  180. package/docs/types/Main/nspc.GroupedClass.md +0 -10
  181. package/docs/types/Main/nspc.SampleClass.md +0 -190
  182. package/docs/types/Misc-Group/nspc.EscapedAnnotations.md +0 -4
  183. package/docs/types/Misc-Group/nspc.GrandparentClass.md +0 -13
  184. package/docs/types/Misc-Group/nspc.InterfaceWithInheritance.md +0 -29
  185. package/docs/types/Misc-Group/nspc.MemberGrouping.md +0 -13
  186. package/docs/types/Misc-Group/nspc.ParentClass.md +0 -37
  187. package/docs/types/Misc-Group/nspc.Reference1.md +0 -18
  188. package/docs/types/Misc-Group/nspc.Reference2.md +0 -12
  189. package/docs/types/Misc-Group/nspc.Reference3.md +0 -7
  190. package/docs/types/Misc-Group/nspc.Reference4.md +0 -7
  191. package/docs/types/Misc-Group/nspc.Reference5.md +0 -7
  192. package/docs/types/Misc-Group/nspc.Reference6.md +0 -9
  193. package/docs/types/Misc-Group/nspc.Reference7.md +0 -7
  194. package/docs/types/Misc-Group/nspc.SampleClassWithoutModifier.md +0 -11
  195. package/docs/types/Misc-Group/nspc.SampleRestResource.md +0 -211
  196. package/docs/types/Misc-Group/nspc.SampleRestResourceWithInnerClass.md +0 -34
  197. package/docs/types/Misc-Group/nspc.SampleRestResourceWithoutApexDocs.md +0 -14
  198. package/docs/types/README.md +0 -97
  199. package/docs/types/Sample-Interfaces/nspc.SampleInterface.md +0 -23
  200. package/examples/includes/header.md +0 -3
  201. package/lib/application/Apexdocs.d.ts +0 -13
  202. package/lib/application/Apexdocs.js +0 -77
  203. package/lib/application/Apexdocs.js.map +0 -1
  204. package/lib/cli/generate.d.ts +0 -2
  205. package/lib/cli/generate.js +0 -131
  206. package/lib/cli/generate.js.map +0 -1
  207. package/lib/index.d.ts +0 -1
  208. package/lib/index.js +0 -18
  209. package/lib/index.js.map +0 -1
  210. package/lib/model/apex-bundle.d.ts +0 -6
  211. package/lib/model/apex-bundle.js +0 -11
  212. package/lib/model/apex-bundle.js.map +0 -1
  213. package/lib/model/apex-type-wrappers/ClassMirrorWrapper.d.ts +0 -7
  214. package/lib/model/apex-type-wrappers/ClassMirrorWrapper.js +0 -14
  215. package/lib/model/apex-type-wrappers/ClassMirrorWrapper.js.map +0 -1
  216. package/lib/model/apex-type-wrappers/MethodMirrorWrapper.d.ts +0 -7
  217. package/lib/model/apex-type-wrappers/MethodMirrorWrapper.js +0 -12
  218. package/lib/model/apex-type-wrappers/MethodMirrorWrapper.js.map +0 -1
  219. package/lib/model/inheritance.d.ts +0 -8
  220. package/lib/model/inheritance.js +0 -3
  221. package/lib/model/inheritance.js.map +0 -1
  222. package/lib/model/manifest-diff.d.ts +0 -27
  223. package/lib/model/manifest-diff.js +0 -69
  224. package/lib/model/manifest-diff.js.map +0 -1
  225. package/lib/model/manifest.d.ts +0 -22
  226. package/lib/model/manifest.js +0 -47
  227. package/lib/model/manifest.js.map +0 -1
  228. package/lib/model/markdown-file.d.ts +0 -16
  229. package/lib/model/markdown-file.js +0 -107
  230. package/lib/model/markdown-file.js.map +0 -1
  231. package/lib/model/markdown-generation-util/doc-comment-annotation-util.d.ts +0 -8
  232. package/lib/model/markdown-generation-util/doc-comment-annotation-util.js +0 -44
  233. package/lib/model/markdown-generation-util/doc-comment-annotation-util.js.map +0 -1
  234. package/lib/model/markdown-generation-util/field-declaration-util.d.ts +0 -3
  235. package/lib/model/markdown-generation-util/field-declaration-util.js +0 -55
  236. package/lib/model/markdown-generation-util/field-declaration-util.js.map +0 -1
  237. package/lib/model/markdown-generation-util/index.d.ts +0 -3
  238. package/lib/model/markdown-generation-util/index.js +0 -20
  239. package/lib/model/markdown-generation-util/index.js.map +0 -1
  240. package/lib/model/markdown-generation-util/method-declaration-util.d.ts +0 -4
  241. package/lib/model/markdown-generation-util/method-declaration-util.js +0 -115
  242. package/lib/model/markdown-generation-util/method-declaration-util.js.map +0 -1
  243. package/lib/model/markdown-generation-util/type-declaration-util.d.ts +0 -3
  244. package/lib/model/markdown-generation-util/type-declaration-util.js +0 -82
  245. package/lib/model/markdown-generation-util/type-declaration-util.js.map +0 -1
  246. package/lib/model/markdown-home-file.d.ts +0 -11
  247. package/lib/model/markdown-home-file.js +0 -54
  248. package/lib/model/markdown-home-file.js.map +0 -1
  249. package/lib/model/markdown-type-file.d.ts +0 -26
  250. package/lib/model/markdown-type-file.js +0 -134
  251. package/lib/model/markdown-type-file.js.map +0 -1
  252. package/lib/model/openapi/apex-doc-types.d.ts +0 -19
  253. package/lib/model/openapi/apex-doc-types.js +0 -5
  254. package/lib/model/openapi/apex-doc-types.js.map +0 -1
  255. package/lib/model/openapi/open-api-types.d.ts +0 -93
  256. package/lib/model/openapi/open-api-types.js +0 -3
  257. package/lib/model/openapi/open-api-types.js.map +0 -1
  258. package/lib/model/openapi/open-api.d.ts +0 -16
  259. package/lib/model/openapi/open-api.js +0 -34
  260. package/lib/model/openapi/open-api.js.map +0 -1
  261. package/lib/model/openapi/openapi-type-file.d.ts +0 -7
  262. package/lib/model/openapi/openapi-type-file.js +0 -17
  263. package/lib/model/openapi/openapi-type-file.js.map +0 -1
  264. package/lib/model/outputFile.d.ts +0 -10
  265. package/lib/model/outputFile.js +0 -29
  266. package/lib/model/outputFile.js.map +0 -1
  267. package/lib/model/types-repository.d.ts +0 -16
  268. package/lib/model/types-repository.js +0 -54
  269. package/lib/model/types-repository.js.map +0 -1
  270. package/lib/service/apex-file-reader.d.ts +0 -14
  271. package/lib/service/apex-file-reader.js +0 -46
  272. package/lib/service/apex-file-reader.js.map +0 -1
  273. package/lib/service/file-system.d.ts +0 -14
  274. package/lib/service/file-system.js +0 -25
  275. package/lib/service/file-system.js.map +0 -1
  276. package/lib/service/file-writer.d.ts +0 -6
  277. package/lib/service/file-writer.js +0 -34
  278. package/lib/service/file-writer.js.map +0 -1
  279. package/lib/service/manifest-factory.d.ts +0 -10
  280. package/lib/service/manifest-factory.js +0 -14
  281. package/lib/service/manifest-factory.js.map +0 -1
  282. package/lib/service/metadata-processor.d.ts +0 -3
  283. package/lib/service/metadata-processor.js +0 -17
  284. package/lib/service/metadata-processor.js.map +0 -1
  285. package/lib/service/parser.d.ts +0 -21
  286. package/lib/service/parser.js +0 -135
  287. package/lib/service/parser.js.map +0 -1
  288. package/lib/service/state.d.ts +0 -9
  289. package/lib/service/state.js +0 -20
  290. package/lib/service/state.js.map +0 -1
  291. package/lib/service/walkers/class-walker.d.ts +0 -4
  292. package/lib/service/walkers/class-walker.js +0 -33
  293. package/lib/service/walkers/class-walker.js.map +0 -1
  294. package/lib/service/walkers/enum-walker.d.ts +0 -4
  295. package/lib/service/walkers/enum-walker.js +0 -11
  296. package/lib/service/walkers/enum-walker.js.map +0 -1
  297. package/lib/service/walkers/interface-walker.d.ts +0 -4
  298. package/lib/service/walkers/interface-walker.js +0 -15
  299. package/lib/service/walkers/interface-walker.js.map +0 -1
  300. package/lib/service/walkers/walker-factory.d.ts +0 -5
  301. package/lib/service/walkers/walker-factory.js +0 -21
  302. package/lib/service/walkers/walker-factory.js.map +0 -1
  303. package/lib/service/walkers/walker.d.ts +0 -19
  304. package/lib/service/walkers/walker.js +0 -17
  305. package/lib/service/walkers/walker.js.map +0 -1
  306. package/lib/settings.d.ts +0 -64
  307. package/lib/settings.js +0 -89
  308. package/lib/settings.js.map +0 -1
  309. package/lib/test-helpers/AnnotationBuilder.d.ts +0 -12
  310. package/lib/test-helpers/AnnotationBuilder.js +0 -31
  311. package/lib/test-helpers/AnnotationBuilder.js.map +0 -1
  312. package/lib/test-helpers/ClassMirrorBuilder.d.ts +0 -18
  313. package/lib/test-helpers/ClassMirrorBuilder.js +0 -54
  314. package/lib/test-helpers/ClassMirrorBuilder.js.map +0 -1
  315. package/lib/test-helpers/DocCommentAnnotationBuilder.d.ts +0 -8
  316. package/lib/test-helpers/DocCommentAnnotationBuilder.js +0 -26
  317. package/lib/test-helpers/DocCommentAnnotationBuilder.js.map +0 -1
  318. package/lib/test-helpers/DocCommentBuilder.d.ts +0 -12
  319. package/lib/test-helpers/DocCommentBuilder.js +0 -38
  320. package/lib/test-helpers/DocCommentBuilder.js.map +0 -1
  321. package/lib/test-helpers/FieldMirrorBuilder.d.ts +0 -18
  322. package/lib/test-helpers/FieldMirrorBuilder.js +0 -54
  323. package/lib/test-helpers/FieldMirrorBuilder.js.map +0 -1
  324. package/lib/test-helpers/MethodMirrorBuilder.d.ts +0 -10
  325. package/lib/test-helpers/MethodMirrorBuilder.js +0 -37
  326. package/lib/test-helpers/MethodMirrorBuilder.js.map +0 -1
  327. package/lib/test-helpers/SettingsBuilder.d.ts +0 -8
  328. package/lib/test-helpers/SettingsBuilder.js +0 -27
  329. package/lib/test-helpers/SettingsBuilder.js.map +0 -1
  330. package/lib/transpiler/factory.d.ts +0 -6
  331. package/lib/transpiler/factory.js +0 -32
  332. package/lib/transpiler/factory.js.map +0 -1
  333. package/lib/transpiler/file-container.d.ts +0 -6
  334. package/lib/transpiler/file-container.js +0 -16
  335. package/lib/transpiler/file-container.js.map +0 -1
  336. package/lib/transpiler/generator-choices.d.ts +0 -1
  337. package/lib/transpiler/generator-choices.js +0 -3
  338. package/lib/transpiler/generator-choices.js.map +0 -1
  339. package/lib/transpiler/markdown/class-file-generatorHelper.d.ts +0 -8
  340. package/lib/transpiler/markdown/class-file-generatorHelper.js +0 -56
  341. package/lib/transpiler/markdown/class-file-generatorHelper.js.map +0 -1
  342. package/lib/transpiler/markdown/docsify/docsify-docs-processor.d.ts +0 -6
  343. package/lib/transpiler/markdown/docsify/docsify-docs-processor.js +0 -13
  344. package/lib/transpiler/markdown/docsify/docsify-docs-processor.js.map +0 -1
  345. package/lib/transpiler/markdown/jekyll/jekyll-docsProcessor.d.ts +0 -11
  346. package/lib/transpiler/markdown/jekyll/jekyll-docsProcessor.js +0 -51
  347. package/lib/transpiler/markdown/jekyll/jekyll-docsProcessor.js.map +0 -1
  348. package/lib/transpiler/markdown/markdown-transpiler-base.d.ts +0 -11
  349. package/lib/transpiler/markdown/markdown-transpiler-base.js +0 -24
  350. package/lib/transpiler/markdown/markdown-transpiler-base.js.map +0 -1
  351. package/lib/transpiler/markdown/plain-markdown/plain-docsProcessor.d.ts +0 -6
  352. package/lib/transpiler/markdown/plain-markdown/plain-docsProcessor.js +0 -14
  353. package/lib/transpiler/markdown/plain-markdown/plain-docsProcessor.js.map +0 -1
  354. package/lib/transpiler/openapi/open-api-docs-processor.d.ts +0 -13
  355. package/lib/transpiler/openapi/open-api-docs-processor.js +0 -75
  356. package/lib/transpiler/openapi/open-api-docs-processor.js.map +0 -1
  357. package/lib/transpiler/openapi/parsers/Builder.d.ts +0 -16
  358. package/lib/transpiler/openapi/parsers/Builder.js +0 -30
  359. package/lib/transpiler/openapi/parsers/Builder.js.map +0 -1
  360. package/lib/transpiler/openapi/parsers/MethodParser.d.ts +0 -20
  361. package/lib/transpiler/openapi/parsers/MethodParser.js +0 -167
  362. package/lib/transpiler/openapi/parsers/MethodParser.js.map +0 -1
  363. package/lib/transpiler/openapi/parsers/ParameterObjectBuilder.d.ts +0 -7
  364. package/lib/transpiler/openapi/parsers/ParameterObjectBuilder.js +0 -11
  365. package/lib/transpiler/openapi/parsers/ParameterObjectBuilder.js.map +0 -1
  366. package/lib/transpiler/openapi/parsers/ReferenceBuilder.d.ts +0 -39
  367. package/lib/transpiler/openapi/parsers/ReferenceBuilder.js +0 -226
  368. package/lib/transpiler/openapi/parsers/ReferenceBuilder.js.map +0 -1
  369. package/lib/transpiler/openapi/parsers/RequestBodyBuilder.d.ts +0 -10
  370. package/lib/transpiler/openapi/parsers/RequestBodyBuilder.js +0 -20
  371. package/lib/transpiler/openapi/parsers/RequestBodyBuilder.js.map +0 -1
  372. package/lib/transpiler/openapi/parsers/ResponsesBuilder.d.ts +0 -7
  373. package/lib/transpiler/openapi/parsers/ResponsesBuilder.js +0 -22
  374. package/lib/transpiler/openapi/parsers/ResponsesBuilder.js.map +0 -1
  375. package/lib/transpiler/processor-type-transpiler.d.ts +0 -10
  376. package/lib/transpiler/processor-type-transpiler.js +0 -9
  377. package/lib/transpiler/processor-type-transpiler.js.map +0 -1
  378. package/lib/transpiler/transpiler.d.ts +0 -5
  379. package/lib/transpiler/transpiler.js +0 -27
  380. package/lib/transpiler/transpiler.js.map +0 -1
  381. package/lib/util/error-logger.d.ts +0 -8
  382. package/lib/util/error-logger.js +0 -90
  383. package/lib/util/error-logger.js.map +0 -1
  384. package/lib/util/logger.d.ts +0 -21
  385. package/lib/util/logger.js +0 -58
  386. package/lib/util/logger.js.map +0 -1
  387. package/lib/util/string-utils.d.ts +0 -2
  388. package/lib/util/string-utils.js +0 -15
  389. package/lib/util/string-utils.js.map +0 -1
  390. package/src/model/__tests__/manifest-diff.spec.ts +0 -147
  391. package/src/model/apex-bundle.ts +0 -3
  392. package/src/model/inheritance.ts +0 -7
  393. package/src/model/manifest-diff.ts +0 -94
  394. package/src/model/manifest.ts +0 -74
  395. package/src/model/markdown-file.ts +0 -121
  396. package/src/model/markdown-generation-util/doc-comment-annotation-util.ts +0 -50
  397. package/src/model/markdown-generation-util/field-declaration-util.ts +0 -71
  398. package/src/model/markdown-generation-util/index.ts +0 -3
  399. package/src/model/markdown-generation-util/method-declaration-util.ts +0 -166
  400. package/src/model/markdown-generation-util/type-declaration-util.ts +0 -91
  401. package/src/model/markdown-home-file.ts +0 -58
  402. package/src/model/markdown-type-file.ts +0 -165
  403. package/src/model/openapi/openapi-type-file.ts +0 -14
  404. package/src/model/outputFile.ts +0 -29
  405. package/src/service/__tests__/apex-file-reader.spec.ts +0 -92
  406. package/src/service/apex-file-reader.ts +0 -51
  407. package/src/service/file-system.ts +0 -33
  408. package/src/service/file-writer.ts +0 -34
  409. package/src/service/metadata-processor.ts +0 -16
  410. package/src/service/state.ts +0 -24
  411. package/src/service/walkers/class-walker.ts +0 -30
  412. package/src/service/walkers/enum-walker.ts +0 -7
  413. package/src/service/walkers/interface-walker.ts +0 -12
  414. package/src/service/walkers/walker-factory.ts +0 -19
  415. package/src/service/walkers/walker.ts +0 -42
  416. package/src/settings.ts +0 -147
  417. package/src/transpiler/factory.ts +0 -33
  418. package/src/transpiler/file-container.ts +0 -13
  419. package/src/transpiler/generator-choices.ts +0 -1
  420. package/src/transpiler/markdown/class-file-generatorHelper.ts +0 -58
  421. package/src/transpiler/markdown/docsify/docsify-docs-processor.ts +0 -12
  422. package/src/transpiler/markdown/jekyll/jekyll-docsProcessor.ts +0 -50
  423. package/src/transpiler/markdown/markdown-transpiler-base.ts +0 -28
  424. package/src/transpiler/markdown/plain-markdown/plain-docsProcessor.ts +0 -12
  425. package/src/transpiler/processor-type-transpiler.ts +0 -18
  426. /package/src/{model/__tests__ → core/__test__}/manifest.spec.ts +0 -0
  427. /package/src/{model → core}/openapi/__tests__/open-api.spec.ts +0 -0
  428. /package/src/{model → core}/openapi/apex-doc-types.ts +0 -0
  429. /package/src/{model → core/openapi}/apex-type-wrappers/ClassMirrorWrapper.ts +0 -0
  430. /package/src/{model → core/openapi}/apex-type-wrappers/MethodMirrorWrapper.ts +0 -0
  431. /package/src/{model → core}/openapi/open-api.ts +0 -0
@@ -1,7 +1,7 @@
1
1
  import { RequestBodyBuilder } from '../RequestBodyBuilder';
2
2
  import { Reference } from '../ReferenceBuilder';
3
- import { ReferenceObject } from '../../../../model/openapi/open-api-types';
4
- import { ApexDocHttpRequestBody } from '../../../../model/openapi/apex-doc-types';
3
+ import { ReferenceObject } from '../../../../core/openapi/open-api-types';
4
+ import { ApexDocHttpRequestBody } from '../../../../core/openapi/apex-doc-types';
5
5
 
6
6
  jest.mock('../ReferenceBuilder', () => {
7
7
  return {
@@ -1,6 +1,6 @@
1
1
  import { ResponsesBuilder } from '../ResponsesBuilder';
2
2
  import { Reference } from '../ReferenceBuilder';
3
- import { ApexDocHttpResponse } from '../../../../model/openapi/apex-doc-types';
3
+ import { ApexDocHttpResponse } from '../../../../core/openapi/apex-doc-types';
4
4
 
5
5
  jest.mock('../ReferenceBuilder', () => {
6
6
  return {
@@ -1,24 +1,20 @@
1
1
  import { Type } from '@cparra/apex-reflection';
2
- import ProcessorTypeTranspiler from './processor-type-transpiler';
3
2
  import { Settings } from '../settings';
4
- import State from '../service/state';
3
+ import { OpenApiDocsProcessor } from './open-api-docs-processor';
5
4
 
6
5
  export default class Transpiler {
7
- static generate(types: Type[], processor: ProcessorTypeTranspiler): void {
6
+ static generate(types: Type[], processor: OpenApiDocsProcessor): void {
8
7
  const sortedTypes = types.sort((apexTypeA, apexTypeB) => {
9
8
  if (apexTypeA.name < apexTypeB.name) return -1;
10
9
  if (apexTypeA.name > apexTypeB.name) return 1;
11
10
  return 0;
12
11
  });
13
12
 
14
- processor.onBeforeProcess?.(sortedTypes);
15
-
16
13
  if (Settings.getInstance().indexOnly) {
17
14
  return;
18
15
  }
19
16
 
20
17
  sortedTypes.forEach((currentType) => {
21
- State.getInstance().setTypeBeingProcessed(currentType);
22
18
  processor.onProcess(currentType);
23
19
  });
24
20
  processor.onAfterProcess?.(sortedTypes);
@@ -4,7 +4,6 @@ export type TypeBundle = { type: Type; isChild: boolean; parentType?: Type };
4
4
 
5
5
  export class TypesRepository {
6
6
  private static instance: TypesRepository;
7
- private scopedTypes: Type[] = [];
8
7
  private allTypes: Type[] = [];
9
8
 
10
9
  public static getInstance(): TypesRepository {
@@ -52,12 +51,4 @@ export class TypesRepository {
52
51
  }
53
52
  return { type: foundType, isChild: false };
54
53
  }
55
-
56
- public populateScoped(types: Type[]) {
57
- this.scopedTypes = types;
58
- }
59
-
60
- public getFromScopedByName(typeName: string): Type | undefined {
61
- return this.scopedTypes.find((currentType: Type) => currentType.name === typeName);
62
- }
63
54
  }
@@ -0,0 +1,30 @@
1
+ import { XMLParser } from 'fast-xml-parser';
2
+ import * as E from 'fp-ts/Either';
3
+ import { pipe } from 'fp-ts/function';
4
+
5
+ type ApexMetadata = {
6
+ ApexClass: ApexClassMetadata;
7
+ };
8
+
9
+ type ApexClassMetadata = {
10
+ apiVersion: string;
11
+ status?: string;
12
+ };
13
+
14
+ export function parseApexMetadata(input: string) {
15
+ return pipe(input, parse, E.map(toMap));
16
+ }
17
+
18
+ function parse(input: string): E.Either<Error, ApexMetadata> {
19
+ return E.tryCatch(() => new XMLParser().parse(input), E.toError);
20
+ }
21
+
22
+ function toMap(metadata: ApexMetadata): Map<string, string> {
23
+ const map = new Map<string, string>();
24
+ map.set('apiVersion', String(metadata.ApexClass.apiVersion));
25
+ if (metadata.ApexClass.status) {
26
+ map.set('status', String(metadata.ApexClass.status));
27
+ }
28
+
29
+ return map;
30
+ }
@@ -0,0 +1,56 @@
1
+ import { Generator } from './shared/types';
2
+
3
+ export interface SettingsConfig {
4
+ sourceDirectory: string;
5
+ scope: string[];
6
+ outputDir: string;
7
+ targetGenerator: Generator;
8
+ indexOnly: boolean;
9
+ defaultGroupName: string;
10
+ openApiTitle?: string;
11
+ namespace?: string;
12
+ openApiFileName: string;
13
+ includeMetadata: boolean;
14
+ sortMembersAlphabetically?: boolean;
15
+ }
16
+
17
+ export class Settings {
18
+ private static instance: Settings;
19
+
20
+ private constructor(public config: SettingsConfig) {}
21
+
22
+ public static build(config: SettingsConfig) {
23
+ Settings.instance = new Settings(config);
24
+ }
25
+
26
+ public static getInstance(): Settings {
27
+ if (!Settings.instance) {
28
+ throw new Error('Settings has not been initialized');
29
+ }
30
+ return Settings.instance;
31
+ }
32
+
33
+ get scope(): string[] {
34
+ return this.config.scope;
35
+ }
36
+
37
+ get targetGenerator(): Generator {
38
+ return this.config.targetGenerator;
39
+ }
40
+
41
+ get indexOnly(): boolean {
42
+ return this.config.indexOnly;
43
+ }
44
+
45
+ public getOpenApiTitle(): string | undefined {
46
+ return this.config.openApiTitle;
47
+ }
48
+
49
+ public getNamespace(): string | undefined {
50
+ return this.config.namespace;
51
+ }
52
+
53
+ public openApiFileName(): string {
54
+ return this.config.openApiFileName;
55
+ }
56
+ }
@@ -0,0 +1,147 @@
1
+ import { Type } from '@cparra/apex-reflection';
2
+
3
+ export type Generator = 'markdown' | 'openapi';
4
+
5
+ /**
6
+ * The configurable hooks that can be used to modify the output of the generator.
7
+ */
8
+ export type ConfigurableHooks = {
9
+ transformReferenceGuide: TransformReferenceGuide;
10
+ transformDocs: TransformDocs;
11
+ transformDocPage: TransformDocPage;
12
+ transformReference: TransformReference;
13
+ };
14
+
15
+ type LinkingStrategy =
16
+ // Links will be generated using relative paths.
17
+ | 'relative'
18
+ // No links will be generated.
19
+ // If the reference is found, the display name will be used.
20
+ // Otherwise, the name
21
+ // of the reference itself will be used.
22
+ | 'no-link'
23
+ // No logic will be applied, the reference path will be used as is.
24
+ | 'none';
25
+
26
+ export type UserDefinedMarkdownConfig = {
27
+ targetGenerator: 'markdown';
28
+ sourceDir: string;
29
+ targetDir: string;
30
+ scope: string[];
31
+ defaultGroupName: string;
32
+ namespace?: string;
33
+ sortMembersAlphabetically: boolean;
34
+ includeMetadata: boolean;
35
+ linkingStrategy: LinkingStrategy;
36
+ } & Partial<ConfigurableHooks>;
37
+
38
+ export type UserDefinedOpenApiConfig = {
39
+ targetGenerator: 'openapi';
40
+ sourceDir: string;
41
+ targetDir: string;
42
+ includeMetadata: boolean;
43
+ };
44
+
45
+ export type UserDefinedConfig = UserDefinedMarkdownConfig | UserDefinedOpenApiConfig;
46
+
47
+ export type UnparsedSourceFile = {
48
+ filePath: string;
49
+ content: string;
50
+ metadataContent: string | null;
51
+ };
52
+
53
+ export type SourceFileMetadata = {
54
+ filePath: string;
55
+ name: string;
56
+ type: 'interface' | 'class' | 'enum';
57
+ };
58
+
59
+ export type ParsedFile = {
60
+ source: SourceFileMetadata;
61
+ type: Type;
62
+ };
63
+
64
+ export type DocPageReference = {
65
+ source: SourceFileMetadata;
66
+ // The name under which the type should be displayed in the documentation.
67
+ // By default, this will match the source.name, but it can be configured by the user.
68
+ displayName: string;
69
+ // The location where the file will be written.
70
+ outputDocPath: string;
71
+ // The path to the file relative to the documentation root directory. This is used when linking to the file.
72
+ // Usually the value will be the same as outputDocPath. However, some site generators may have a different way of
73
+ // organizing the files, so this allows for the flexibility of having a path from linking that is different from
74
+ // the path where the file is written.
75
+ referencePath: string;
76
+ };
77
+
78
+ type Frontmatter = string | Record<string, unknown> | null;
79
+
80
+ export type ReferenceGuidePageData = {
81
+ frontmatter: Frontmatter;
82
+ content: string;
83
+ outputDocPath: string;
84
+ };
85
+
86
+ export type DocPageData = {
87
+ source: SourceFileMetadata;
88
+ group: string | null;
89
+ outputDocPath: string;
90
+ frontmatter: Frontmatter;
91
+ content: string;
92
+ };
93
+
94
+ export type OpenApiPageData = Omit<DocPageData, 'source'>;
95
+
96
+ export type PageData = DocPageData | OpenApiPageData | ReferenceGuidePageData;
97
+
98
+ export type DocumentationBundle = {
99
+ referenceGuide: ReferenceGuidePageData;
100
+ docs: DocPageData[];
101
+ };
102
+
103
+ /**
104
+ * Represents a file to be skipped.
105
+ */
106
+ export type Skip = {
107
+ readonly _tag: 'Skip';
108
+ };
109
+
110
+ export type PostHookDocumentationBundle = {
111
+ referenceGuide: ReferenceGuidePageData | Skip;
112
+ docs: DocPageData[];
113
+ };
114
+
115
+ // Configurable Hooks
116
+
117
+ type ConfigurableDocPageReference = Omit<DocPageReference, 'source'>;
118
+
119
+ type ConfigurableDocPageData = Omit<DocPageData, 'source' | 'outputDocPath'>;
120
+
121
+ /**
122
+ * Allows changing where the files are written to.
123
+ */
124
+ export type TransformReference = (
125
+ reference: DocPageReference,
126
+ ) => Partial<ConfigurableDocPageReference> | Promise<ConfigurableDocPageReference>;
127
+
128
+ /**
129
+ * Allows changing the frontmatter and content of the reference guide, or even if creating a reference
130
+ * guide will be skipped altogether.
131
+ */
132
+ export type TransformReferenceGuide = (
133
+ referenceGuide: ReferenceGuidePageData,
134
+ ) => Partial<ReferenceGuidePageData> | Skip | Promise<Partial<ReferenceGuidePageData> | Skip>;
135
+
136
+ /**
137
+ * The main purpose if for allowing for doc pages to be skipped, but it can also be used to change the frontmatter
138
+ * and content of the doc pages.
139
+ */
140
+ export type TransformDocs = (docs: DocPageData[]) => DocPageData[] | Promise<DocPageData[]>;
141
+
142
+ /**
143
+ * Allows changing the frontmatter and content of the doc pages.
144
+ */
145
+ export type TransformDocPage = (
146
+ doc: DocPageData,
147
+ ) => Partial<ConfigurableDocPageData> | Promise<Partial<ConfigurableDocPageData>>;
@@ -0,0 +1,5 @@
1
+ import { Skip } from './types';
2
+
3
+ export function isSkip(value: unknown): value is Skip {
4
+ return Object.prototype.hasOwnProperty.call(value, '_tag') && (value as Skip)._tag === 'Skip';
5
+ }
@@ -0,0 +1,9 @@
1
+ export const defaults = {
2
+ targetGenerator: 'markdown' as const,
3
+ targetDir: './docs/',
4
+ scope: ['global'],
5
+ defaultGroupName: 'Miscellaneous',
6
+ includeMetadata: false,
7
+ sortMembersAlphabetically: false,
8
+ linkingStrategy: 'relative' as const,
9
+ };
package/src/index.ts CHANGED
@@ -1 +1,36 @@
1
- export * from './service/manifest-factory';
1
+ import { SetOptional } from 'type-fest';
2
+ import type {
3
+ ConfigurableHooks,
4
+ Skip,
5
+ UserDefinedMarkdownConfig,
6
+ ReferenceGuidePageData,
7
+ DocPageData,
8
+ DocPageReference,
9
+ } from './core/shared/types';
10
+ import { defaults } from './defaults';
11
+
12
+ type ConfigurableMarkdownConfig = Omit<
13
+ SetOptional<
14
+ UserDefinedMarkdownConfig,
15
+ 'targetDir' | 'scope' | 'defaultGroupName' | 'includeMetadata' | 'sortMembersAlphabetically' | 'linkingStrategy'
16
+ >,
17
+ 'targetGenerator'
18
+ >;
19
+
20
+ function defineMarkdownConfig(config: ConfigurableMarkdownConfig): UserDefinedMarkdownConfig {
21
+ return {
22
+ ...defaults,
23
+ ...config,
24
+ targetGenerator: 'markdown',
25
+ };
26
+ }
27
+
28
+ function skip(): Skip {
29
+ return {
30
+ _tag: 'Skip',
31
+ };
32
+ }
33
+
34
+ // Exports
35
+
36
+ export { defineMarkdownConfig, skip, ConfigurableHooks, ReferenceGuidePageData, DocPageData, DocPageReference };
@@ -10,6 +10,8 @@ export class ClassMirrorBuilder {
10
10
  private docComment?: DocComment;
11
11
  private methods: MethodMirror[] = [];
12
12
  private fields: FieldMirror[] = [];
13
+ private innerClasses: ClassMirror[] = [];
14
+ private extendedClass: string | undefined;
13
15
 
14
16
  withName(name: string): ClassMirrorBuilder {
15
17
  this.name = name;
@@ -36,6 +38,16 @@ export class ClassMirrorBuilder {
36
38
  return this;
37
39
  }
38
40
 
41
+ addInnerClass(innerClass: ClassMirror): ClassMirrorBuilder {
42
+ this.innerClasses.push(innerClass);
43
+ return this;
44
+ }
45
+
46
+ withExtendedClass(extendedClass: string): ClassMirrorBuilder {
47
+ this.extendedClass = extendedClass;
48
+ return this;
49
+ }
50
+
39
51
  build(): ClassMirror {
40
52
  return {
41
53
  annotations: this.annotations,
@@ -48,9 +60,10 @@ export class ClassMirrorBuilder {
48
60
  constructors: [],
49
61
  enums: [],
50
62
  interfaces: [],
51
- classes: [],
63
+ classes: this.innerClasses,
52
64
  access_modifier: 'public',
53
65
  docComment: this.docComment,
66
+ extended_class: this.extendedClass,
54
67
  };
55
68
  }
56
69
  }
@@ -1,5 +1,5 @@
1
1
  import { DocComment, FieldMirror } from '@cparra/apex-reflection';
2
- import { ReferencedType } from '@cparra/apex-reflection/index';
2
+ import { ReferencedType } from '@cparra/apex-reflection';
3
3
 
4
4
  type MemberModifier = 'static' | 'webservice' | 'final' | 'override' | 'testmethod' | 'transient';
5
5
 
@@ -0,0 +1,39 @@
1
+ import { Annotation, DocComment, InterfaceMirror, MethodMirror } from '@cparra/apex-reflection';
2
+
3
+ /**
4
+ * Builder class to create Interface objects.
5
+ * For testing purposes only.
6
+ */
7
+ export class InterfaceMirrorBuilder {
8
+ private name = 'SampleClass';
9
+ private annotations: Annotation[] = [];
10
+ private docComment?: DocComment;
11
+ private methods: MethodMirror[] = [];
12
+
13
+ withName(name: string): InterfaceMirrorBuilder {
14
+ this.name = name;
15
+ return this;
16
+ }
17
+
18
+ addAnnotation(annotation: Annotation): InterfaceMirrorBuilder {
19
+ this.annotations.push(annotation);
20
+ return this;
21
+ }
22
+
23
+ addMethod(method: MethodMirror): InterfaceMirrorBuilder {
24
+ this.methods.push(method);
25
+ return this;
26
+ }
27
+
28
+ build(): InterfaceMirror {
29
+ return {
30
+ annotations: this.annotations,
31
+ name: this.name,
32
+ type_name: 'interface',
33
+ methods: this.methods,
34
+ access_modifier: 'public',
35
+ docComment: this.docComment,
36
+ extended_interfaces: [],
37
+ };
38
+ }
39
+ }
@@ -1,9 +1,16 @@
1
- import { Annotation, DocComment, MethodMirror } from '@cparra/apex-reflection';
1
+ import { Annotation, DocComment, MethodMirror, ParameterMirror } from '@cparra/apex-reflection';
2
+
3
+ type Parameter = ParameterMirror;
2
4
 
3
5
  export class MethodMirrorBuilder {
4
6
  private name = 'sampleMethod';
5
7
  private annotations: Annotation[] = [];
6
8
  private docComment?: DocComment;
9
+ private typeReference: { type: string; rawDeclaration: string } = {
10
+ type: 'void',
11
+ rawDeclaration: 'void',
12
+ };
13
+ private parameters: Parameter[] = [];
7
14
 
8
15
  withName(name: string): MethodMirrorBuilder {
9
16
  this.name = name;
@@ -20,18 +27,51 @@ export class MethodMirrorBuilder {
20
27
  return this;
21
28
  }
22
29
 
30
+ withTypeReference(param: { type: string; rawDeclaration: string }) {
31
+ this.typeReference = param;
32
+ return this;
33
+ }
34
+
35
+ addParameter(parameter: Parameter): MethodMirrorBuilder {
36
+ this.parameters.push(parameter);
37
+ return this;
38
+ }
39
+
23
40
  build(): MethodMirror {
24
41
  return {
25
42
  access_modifier: 'public',
26
43
  annotations: this.annotations,
27
44
  name: this.name,
28
45
  memberModifiers: [],
29
- typeReference: {
30
- type: 'void',
31
- rawDeclaration: 'void',
32
- },
33
- parameters: [],
46
+ typeReference: this.typeReference,
47
+ parameters: this.parameters,
34
48
  docComment: this.docComment,
35
49
  };
36
50
  }
37
51
  }
52
+
53
+ export class ParameterBuilder {
54
+ private name = 'param';
55
+ private typeReference: { type: string; rawDeclaration: string } = {
56
+ type: 'String',
57
+ rawDeclaration: 'String',
58
+ };
59
+
60
+ withName(name: string): ParameterBuilder {
61
+ this.name = name;
62
+ return this;
63
+ }
64
+
65
+ withTypeReference(param: { type: string; rawDeclaration: string }) {
66
+ this.typeReference = param;
67
+ return this;
68
+ }
69
+
70
+ build(): Parameter {
71
+ return {
72
+ memberModifiers: [],
73
+ name: this.name,
74
+ typeReference: this.typeReference,
75
+ };
76
+ }
77
+ }
@@ -1,4 +1,4 @@
1
- import { SettingsConfig } from '../settings';
1
+ import { SettingsConfig } from '../core/settings';
2
2
 
3
3
  /**
4
4
  * Builder class to create SettingsConfig objects.
@@ -8,16 +8,13 @@ export class SettingsBuilder {
8
8
  build(): SettingsConfig {
9
9
  return {
10
10
  sourceDirectory: './',
11
- recursive: true,
12
11
  scope: [],
13
12
  outputDir: './',
14
13
  targetGenerator: 'openapi',
15
14
  indexOnly: false,
16
15
  defaultGroupName: 'Misc',
17
- sanitizeHtml: true,
18
16
  openApiTitle: 'Apex API',
19
17
  openApiFileName: 'openapi',
20
- title: 'Classes',
21
18
  includeMetadata: false,
22
19
  };
23
20
  }
@@ -8,7 +8,7 @@ export default class ErrorLogger {
8
8
  });
9
9
  }
10
10
 
11
- private static logErrorsForSingleType(currentType: Type, parentType?: Type): void {
11
+ private static logErrorsForSingleType(currentType: Type): void {
12
12
  this.logTypeErrors(currentType);
13
13
 
14
14
  if (currentType.type_name === 'class') {
@@ -67,15 +67,15 @@ export default class ErrorLogger {
67
67
  });
68
68
 
69
69
  classMirror.enums.forEach((currentEnum) => {
70
- this.logErrorsForSingleType(currentEnum, classMirror);
70
+ this.logErrorsForSingleType(currentEnum);
71
71
  });
72
72
 
73
73
  classMirror.interfaces.forEach((currentInterface) => {
74
- this.logErrorsForSingleType(currentInterface, classMirror);
74
+ this.logErrorsForSingleType(currentInterface);
75
75
  });
76
76
 
77
77
  classMirror.classes.forEach((currentClass) => {
78
- this.logErrorsForSingleType(currentClass, classMirror);
78
+ this.logErrorsForSingleType(currentClass);
79
79
  });
80
80
  }
81
81
 
package/src/util/fp.ts ADDED
@@ -0,0 +1,3 @@
1
+ export function apply<T extends unknown[], U extends unknown[], R>(fn: (...args: [...T, ...U]) => R, ...front: T) {
2
+ return (...tailArgs: U) => fn(...front, ...tailArgs);
3
+ }
@@ -1,13 +1,9 @@
1
- import * as chalk from 'chalk';
2
- import * as logUpdate from 'log-update';
3
-
1
+ import chalk from 'chalk';
4
2
  /**
5
3
  * Logs messages to the console.
6
4
  */
7
5
  export class Logger {
8
- static currentFrame = -1;
9
-
10
- static frames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
6
+ static currentFrame = 0;
11
7
 
12
8
  /**
13
9
  * Logs a message with optional arguments.
@@ -26,32 +22,23 @@ export class Logger {
26
22
  * @param message The error message to log.
27
23
  * @param args Optional arguments.
28
24
  */
29
- public static error(message: string, ...args: string[]) {
30
- this.logSingle(message, false, 'red', false);
31
- args.forEach((arg) => {
32
- this.logSingle(message, false, 'red', false);
25
+ public static error(message: unknown, ...args: string[]) {
26
+ this.logSingle(message, 'red');
27
+ args.forEach(() => {
28
+ this.logSingle(message, 'red');
33
29
  });
34
30
  }
35
31
 
36
- public static logSingle(text: string, showSpinner = true, color: 'green' | 'red' = 'green', overrideConsole = true) {
32
+ public static logSingle(text: unknown, color: 'green' | 'red' = 'green') {
37
33
  if (this.currentFrame > 9) {
38
34
  this.currentFrame = 0;
39
35
  }
40
- const spinner = showSpinner ? `${this.frames[this.currentFrame++]}` : '';
41
- let logMessage;
42
- if (color === 'green') {
43
- logMessage = `${chalk.green(new Date().toLocaleString() + ': ')}${text}\n`;
44
- } else {
45
- logMessage = `${chalk.red(new Date().toLocaleString() + ': ')}${text}\n`;
46
- }
47
- if (overrideConsole) {
48
- logUpdate(`${spinner} ${logMessage}`);
49
- } else {
50
- process.stdout.write(`${spinner} ${logMessage}`);
51
- }
36
+
37
+ const logMessage = `${this.getChalkFn(color)(new Date().toLocaleString() + ': ')}${text}\n`;
38
+ process.stdout.write(logMessage);
52
39
  }
53
40
 
54
- public static clear() {
55
- logUpdate.clear();
41
+ private static getChalkFn(color: 'green' | 'red') {
42
+ return color === 'green' ? chalk.green : chalk.red;
56
43
  }
57
44
  }
@@ -1,7 +1,3 @@
1
- export function truncate(str: string, n: number) {
2
- return str.length > n ? str.substr(0, n - 1) + '&hellip;' : str;
3
- }
4
-
5
1
  export const camel2title = (camelCase: string) =>
6
2
  camelCase
7
3
  .replace(/\//g, ' ')
package/tsconfig.json CHANGED
@@ -3,15 +3,20 @@
3
3
  "target": "es6",
4
4
  "module": "commonjs",
5
5
  "declaration": true,
6
- "outDir": "./lib",
6
+ "outDir": "./dist",
7
7
  "strict": true,
8
8
  "sourceMap": true,
9
+ "esModuleInterop": true,
9
10
  "lib": [
10
11
  "ES2021"
11
- ]
12
+ ],
13
+ "baseUrl": "./",
14
+ "paths": {
15
+ "#utils/*": ["src/util/*"],
16
+ }
12
17
  },
13
18
  "include": [
14
- "src"
19
+ "src", "jest.d.ts"
15
20
  ],
16
21
  "exclude": [
17
22
  "node_modules",
package/.eslintrc.js DELETED
@@ -1,12 +0,0 @@
1
- module.exports = {
2
- parser: '@typescript-eslint/parser',
3
- parserOptions: {
4
- ecmaVersion: 2020,
5
- sourceType: 'module',
6
- },
7
- extends: [
8
- 'plugin:@typescript-eslint/recommended',
9
- 'plugin:prettier/recommended',
10
- ],
11
- rules: {},
12
- };