@cparra/apexdocs 2.25.0-alpha.9 → 2.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (430) hide show
  1. package/.eslintrc.js +12 -0
  2. package/README.md +12 -73
  3. package/apexdocs.config.ts +13 -0
  4. package/docs/.nojekyll +0 -0
  5. package/docs/README.md +1 -0
  6. package/docs/index.html +22 -0
  7. package/docs/restapi.json +589 -0
  8. package/docs/types/Classes/nspc.AnotherInterface.md +22 -0
  9. package/docs/types/Classes/nspc.ChildClass.md +97 -0
  10. package/docs/types/Main/nspc.GroupedClass.md +10 -0
  11. package/docs/types/Main/nspc.SampleClass.md +190 -0
  12. package/docs/types/Misc-Group/nspc.EscapedAnnotations.md +4 -0
  13. package/docs/types/Misc-Group/nspc.GrandparentClass.md +13 -0
  14. package/docs/types/Misc-Group/nspc.InterfaceWithInheritance.md +29 -0
  15. package/docs/types/Misc-Group/nspc.MemberGrouping.md +13 -0
  16. package/docs/types/Misc-Group/nspc.ParentClass.md +37 -0
  17. package/docs/types/Misc-Group/nspc.Reference1.md +18 -0
  18. package/docs/types/Misc-Group/nspc.Reference2.md +12 -0
  19. package/docs/types/Misc-Group/nspc.Reference3.md +7 -0
  20. package/docs/types/Misc-Group/nspc.Reference4.md +7 -0
  21. package/docs/types/Misc-Group/nspc.Reference5.md +7 -0
  22. package/docs/types/Misc-Group/nspc.Reference6.md +9 -0
  23. package/docs/types/Misc-Group/nspc.Reference7.md +7 -0
  24. package/docs/types/Misc-Group/nspc.SampleClassWithoutModifier.md +11 -0
  25. package/docs/types/Misc-Group/nspc.SampleRestResource.md +211 -0
  26. package/docs/types/Misc-Group/nspc.SampleRestResourceWithInnerClass.md +34 -0
  27. package/docs/types/Misc-Group/nspc.SampleRestResourceWithoutApexDocs.md +14 -0
  28. package/docs/types/README.md +97 -0
  29. package/docs/types/Sample-Interfaces/nspc.SampleInterface.md +23 -0
  30. package/examples/includes/header.md +3 -0
  31. package/jest.config.js +1 -6
  32. package/lib/application/Apexdocs.d.ts +13 -0
  33. package/lib/application/Apexdocs.js +77 -0
  34. package/lib/application/Apexdocs.js.map +1 -0
  35. package/lib/cli/generate.d.ts +2 -0
  36. package/lib/cli/generate.js +131 -0
  37. package/lib/cli/generate.js.map +1 -0
  38. package/lib/index.d.ts +1 -0
  39. package/lib/index.js +18 -0
  40. package/lib/index.js.map +1 -0
  41. package/lib/model/apex-bundle.d.ts +6 -0
  42. package/lib/model/apex-bundle.js +11 -0
  43. package/lib/model/apex-bundle.js.map +1 -0
  44. package/lib/model/apex-type-wrappers/ClassMirrorWrapper.d.ts +7 -0
  45. package/lib/model/apex-type-wrappers/ClassMirrorWrapper.js +14 -0
  46. package/lib/model/apex-type-wrappers/ClassMirrorWrapper.js.map +1 -0
  47. package/lib/model/apex-type-wrappers/MethodMirrorWrapper.d.ts +7 -0
  48. package/lib/model/apex-type-wrappers/MethodMirrorWrapper.js +12 -0
  49. package/lib/model/apex-type-wrappers/MethodMirrorWrapper.js.map +1 -0
  50. package/lib/model/inheritance.d.ts +8 -0
  51. package/lib/model/inheritance.js +3 -0
  52. package/lib/model/inheritance.js.map +1 -0
  53. package/lib/model/manifest-diff.d.ts +27 -0
  54. package/lib/model/manifest-diff.js +69 -0
  55. package/lib/model/manifest-diff.js.map +1 -0
  56. package/lib/model/manifest.d.ts +22 -0
  57. package/lib/model/manifest.js +47 -0
  58. package/lib/model/manifest.js.map +1 -0
  59. package/lib/model/markdown-file.d.ts +16 -0
  60. package/lib/model/markdown-file.js +107 -0
  61. package/lib/model/markdown-file.js.map +1 -0
  62. package/lib/model/markdown-generation-util/doc-comment-annotation-util.d.ts +8 -0
  63. package/lib/model/markdown-generation-util/doc-comment-annotation-util.js +44 -0
  64. package/lib/model/markdown-generation-util/doc-comment-annotation-util.js.map +1 -0
  65. package/lib/model/markdown-generation-util/field-declaration-util.d.ts +3 -0
  66. package/lib/model/markdown-generation-util/field-declaration-util.js +55 -0
  67. package/lib/model/markdown-generation-util/field-declaration-util.js.map +1 -0
  68. package/lib/model/markdown-generation-util/index.d.ts +3 -0
  69. package/lib/model/markdown-generation-util/index.js +20 -0
  70. package/lib/model/markdown-generation-util/index.js.map +1 -0
  71. package/lib/model/markdown-generation-util/method-declaration-util.d.ts +4 -0
  72. package/lib/model/markdown-generation-util/method-declaration-util.js +115 -0
  73. package/lib/model/markdown-generation-util/method-declaration-util.js.map +1 -0
  74. package/lib/model/markdown-generation-util/type-declaration-util.d.ts +3 -0
  75. package/lib/model/markdown-generation-util/type-declaration-util.js +82 -0
  76. package/lib/model/markdown-generation-util/type-declaration-util.js.map +1 -0
  77. package/lib/model/markdown-home-file.d.ts +11 -0
  78. package/lib/model/markdown-home-file.js +54 -0
  79. package/lib/model/markdown-home-file.js.map +1 -0
  80. package/lib/model/markdown-type-file.d.ts +26 -0
  81. package/lib/model/markdown-type-file.js +134 -0
  82. package/lib/model/markdown-type-file.js.map +1 -0
  83. package/lib/model/openapi/apex-doc-types.d.ts +19 -0
  84. package/lib/model/openapi/apex-doc-types.js +5 -0
  85. package/lib/model/openapi/apex-doc-types.js.map +1 -0
  86. package/lib/model/openapi/open-api-types.d.ts +93 -0
  87. package/lib/model/openapi/open-api-types.js +3 -0
  88. package/lib/model/openapi/open-api-types.js.map +1 -0
  89. package/lib/model/openapi/open-api.d.ts +16 -0
  90. package/lib/model/openapi/open-api.js +34 -0
  91. package/lib/model/openapi/open-api.js.map +1 -0
  92. package/lib/model/openapi/openapi-type-file.d.ts +7 -0
  93. package/lib/model/openapi/openapi-type-file.js +17 -0
  94. package/lib/model/openapi/openapi-type-file.js.map +1 -0
  95. package/lib/model/outputFile.d.ts +10 -0
  96. package/lib/model/outputFile.js +29 -0
  97. package/lib/model/outputFile.js.map +1 -0
  98. package/lib/model/types-repository.d.ts +16 -0
  99. package/lib/model/types-repository.js +54 -0
  100. package/lib/model/types-repository.js.map +1 -0
  101. package/lib/service/apex-file-reader.d.ts +14 -0
  102. package/lib/service/apex-file-reader.js +46 -0
  103. package/lib/service/apex-file-reader.js.map +1 -0
  104. package/lib/service/file-system.d.ts +14 -0
  105. package/lib/service/file-system.js +25 -0
  106. package/lib/service/file-system.js.map +1 -0
  107. package/lib/service/file-writer.d.ts +6 -0
  108. package/lib/service/file-writer.js +34 -0
  109. package/lib/service/file-writer.js.map +1 -0
  110. package/lib/service/manifest-factory.d.ts +10 -0
  111. package/lib/service/manifest-factory.js +14 -0
  112. package/lib/service/manifest-factory.js.map +1 -0
  113. package/lib/service/metadata-processor.d.ts +3 -0
  114. package/lib/service/metadata-processor.js +17 -0
  115. package/lib/service/metadata-processor.js.map +1 -0
  116. package/lib/service/parser.d.ts +21 -0
  117. package/lib/service/parser.js +135 -0
  118. package/lib/service/parser.js.map +1 -0
  119. package/lib/service/state.d.ts +9 -0
  120. package/lib/service/state.js +20 -0
  121. package/lib/service/state.js.map +1 -0
  122. package/lib/service/walkers/class-walker.d.ts +4 -0
  123. package/lib/service/walkers/class-walker.js +33 -0
  124. package/lib/service/walkers/class-walker.js.map +1 -0
  125. package/lib/service/walkers/enum-walker.d.ts +4 -0
  126. package/lib/service/walkers/enum-walker.js +11 -0
  127. package/lib/service/walkers/enum-walker.js.map +1 -0
  128. package/lib/service/walkers/interface-walker.d.ts +4 -0
  129. package/lib/service/walkers/interface-walker.js +15 -0
  130. package/lib/service/walkers/interface-walker.js.map +1 -0
  131. package/lib/service/walkers/walker-factory.d.ts +5 -0
  132. package/lib/service/walkers/walker-factory.js +21 -0
  133. package/lib/service/walkers/walker-factory.js.map +1 -0
  134. package/lib/service/walkers/walker.d.ts +19 -0
  135. package/lib/service/walkers/walker.js +17 -0
  136. package/lib/service/walkers/walker.js.map +1 -0
  137. package/lib/settings.d.ts +64 -0
  138. package/lib/settings.js +89 -0
  139. package/lib/settings.js.map +1 -0
  140. package/lib/test-helpers/AnnotationBuilder.d.ts +12 -0
  141. package/lib/test-helpers/AnnotationBuilder.js +31 -0
  142. package/lib/test-helpers/AnnotationBuilder.js.map +1 -0
  143. package/lib/test-helpers/ClassMirrorBuilder.d.ts +18 -0
  144. package/lib/test-helpers/ClassMirrorBuilder.js +54 -0
  145. package/lib/test-helpers/ClassMirrorBuilder.js.map +1 -0
  146. package/lib/test-helpers/DocCommentAnnotationBuilder.d.ts +8 -0
  147. package/lib/test-helpers/DocCommentAnnotationBuilder.js +26 -0
  148. package/lib/test-helpers/DocCommentAnnotationBuilder.js.map +1 -0
  149. package/lib/test-helpers/DocCommentBuilder.d.ts +12 -0
  150. package/lib/test-helpers/DocCommentBuilder.js +38 -0
  151. package/lib/test-helpers/DocCommentBuilder.js.map +1 -0
  152. package/lib/test-helpers/FieldMirrorBuilder.d.ts +18 -0
  153. package/lib/test-helpers/FieldMirrorBuilder.js +54 -0
  154. package/lib/test-helpers/FieldMirrorBuilder.js.map +1 -0
  155. package/lib/test-helpers/MethodMirrorBuilder.d.ts +10 -0
  156. package/lib/test-helpers/MethodMirrorBuilder.js +37 -0
  157. package/lib/test-helpers/MethodMirrorBuilder.js.map +1 -0
  158. package/lib/test-helpers/SettingsBuilder.d.ts +8 -0
  159. package/lib/test-helpers/SettingsBuilder.js +27 -0
  160. package/lib/test-helpers/SettingsBuilder.js.map +1 -0
  161. package/lib/transpiler/factory.d.ts +6 -0
  162. package/lib/transpiler/factory.js +32 -0
  163. package/lib/transpiler/factory.js.map +1 -0
  164. package/lib/transpiler/file-container.d.ts +6 -0
  165. package/lib/transpiler/file-container.js +16 -0
  166. package/lib/transpiler/file-container.js.map +1 -0
  167. package/lib/transpiler/generator-choices.d.ts +1 -0
  168. package/lib/transpiler/generator-choices.js +3 -0
  169. package/lib/transpiler/generator-choices.js.map +1 -0
  170. package/lib/transpiler/markdown/class-file-generatorHelper.d.ts +8 -0
  171. package/lib/transpiler/markdown/class-file-generatorHelper.js +56 -0
  172. package/lib/transpiler/markdown/class-file-generatorHelper.js.map +1 -0
  173. package/lib/transpiler/markdown/docsify/docsify-docs-processor.d.ts +6 -0
  174. package/lib/transpiler/markdown/docsify/docsify-docs-processor.js +13 -0
  175. package/lib/transpiler/markdown/docsify/docsify-docs-processor.js.map +1 -0
  176. package/lib/transpiler/markdown/jekyll/jekyll-docsProcessor.d.ts +11 -0
  177. package/lib/transpiler/markdown/jekyll/jekyll-docsProcessor.js +51 -0
  178. package/lib/transpiler/markdown/jekyll/jekyll-docsProcessor.js.map +1 -0
  179. package/lib/transpiler/markdown/markdown-transpiler-base.d.ts +11 -0
  180. package/lib/transpiler/markdown/markdown-transpiler-base.js +24 -0
  181. package/lib/transpiler/markdown/markdown-transpiler-base.js.map +1 -0
  182. package/lib/transpiler/markdown/plain-markdown/plain-docsProcessor.d.ts +6 -0
  183. package/lib/transpiler/markdown/plain-markdown/plain-docsProcessor.js +14 -0
  184. package/lib/transpiler/markdown/plain-markdown/plain-docsProcessor.js.map +1 -0
  185. package/lib/transpiler/openapi/open-api-docs-processor.d.ts +13 -0
  186. package/lib/transpiler/openapi/open-api-docs-processor.js +75 -0
  187. package/lib/transpiler/openapi/open-api-docs-processor.js.map +1 -0
  188. package/lib/transpiler/openapi/parsers/Builder.d.ts +16 -0
  189. package/lib/transpiler/openapi/parsers/Builder.js +30 -0
  190. package/lib/transpiler/openapi/parsers/Builder.js.map +1 -0
  191. package/lib/transpiler/openapi/parsers/MethodParser.d.ts +20 -0
  192. package/lib/transpiler/openapi/parsers/MethodParser.js +167 -0
  193. package/lib/transpiler/openapi/parsers/MethodParser.js.map +1 -0
  194. package/lib/transpiler/openapi/parsers/ParameterObjectBuilder.d.ts +7 -0
  195. package/lib/transpiler/openapi/parsers/ParameterObjectBuilder.js +11 -0
  196. package/lib/transpiler/openapi/parsers/ParameterObjectBuilder.js.map +1 -0
  197. package/lib/transpiler/openapi/parsers/ReferenceBuilder.d.ts +39 -0
  198. package/lib/transpiler/openapi/parsers/ReferenceBuilder.js +226 -0
  199. package/lib/transpiler/openapi/parsers/ReferenceBuilder.js.map +1 -0
  200. package/lib/transpiler/openapi/parsers/RequestBodyBuilder.d.ts +10 -0
  201. package/lib/transpiler/openapi/parsers/RequestBodyBuilder.js +20 -0
  202. package/lib/transpiler/openapi/parsers/RequestBodyBuilder.js.map +1 -0
  203. package/lib/transpiler/openapi/parsers/ResponsesBuilder.d.ts +7 -0
  204. package/lib/transpiler/openapi/parsers/ResponsesBuilder.js +22 -0
  205. package/lib/transpiler/openapi/parsers/ResponsesBuilder.js.map +1 -0
  206. package/lib/transpiler/processor-type-transpiler.d.ts +10 -0
  207. package/lib/transpiler/processor-type-transpiler.js +9 -0
  208. package/lib/transpiler/processor-type-transpiler.js.map +1 -0
  209. package/lib/transpiler/transpiler.d.ts +5 -0
  210. package/lib/transpiler/transpiler.js +27 -0
  211. package/lib/transpiler/transpiler.js.map +1 -0
  212. package/lib/util/error-logger.d.ts +8 -0
  213. package/lib/util/error-logger.js +90 -0
  214. package/lib/util/error-logger.js.map +1 -0
  215. package/lib/util/logger.d.ts +21 -0
  216. package/lib/util/logger.js +58 -0
  217. package/lib/util/logger.js.map +1 -0
  218. package/lib/util/string-utils.d.ts +2 -0
  219. package/lib/util/string-utils.js +15 -0
  220. package/lib/util/string-utils.js.map +1 -0
  221. package/package.json +36 -35
  222. package/src/application/Apexdocs.ts +70 -17
  223. package/src/cli/generate.ts +131 -10
  224. package/src/index.ts +1 -36
  225. package/src/model/__tests__/manifest-diff.spec.ts +147 -0
  226. package/src/model/apex-bundle.ts +3 -0
  227. package/src/{core/openapi → model}/apex-type-wrappers/__tests__/ClassMirrorWrapper.spec.ts +3 -3
  228. package/src/model/inheritance.ts +7 -0
  229. package/src/model/manifest-diff.ts +94 -0
  230. package/src/model/manifest.ts +74 -0
  231. package/src/model/markdown-file.ts +121 -0
  232. package/src/model/markdown-generation-util/doc-comment-annotation-util.ts +50 -0
  233. package/src/model/markdown-generation-util/field-declaration-util.ts +71 -0
  234. package/src/model/markdown-generation-util/index.ts +3 -0
  235. package/src/model/markdown-generation-util/method-declaration-util.ts +166 -0
  236. package/src/model/markdown-generation-util/type-declaration-util.ts +91 -0
  237. package/src/model/markdown-home-file.ts +58 -0
  238. package/src/model/markdown-type-file.ts +165 -0
  239. package/src/{core → model}/openapi/open-api-types.ts +2 -2
  240. package/src/model/openapi/openapi-type-file.ts +14 -0
  241. package/src/model/outputFile.ts +29 -0
  242. package/src/{core/openapi → model}/types-repository.ts +9 -0
  243. package/src/service/__tests__/apex-file-reader.spec.ts +92 -0
  244. package/src/{core/openapi → service}/__tests__/manifest-factory.spec.ts +2 -1
  245. package/src/service/apex-file-reader.ts +51 -0
  246. package/src/service/file-writer.ts +34 -0
  247. package/src/{core/openapi → service}/manifest-factory.ts +3 -3
  248. package/src/service/metadata-processor.ts +16 -0
  249. package/src/{core/openapi → service}/parser.ts +9 -9
  250. package/src/service/state.ts +24 -0
  251. package/src/service/walkers/class-walker.ts +30 -0
  252. package/src/service/walkers/enum-walker.ts +7 -0
  253. package/src/service/walkers/interface-walker.ts +12 -0
  254. package/src/service/walkers/walker-factory.ts +19 -0
  255. package/src/service/walkers/walker.ts +42 -0
  256. package/src/settings.ts +147 -0
  257. package/src/test-helpers/ClassMirrorBuilder.ts +1 -14
  258. package/src/test-helpers/FieldMirrorBuilder.ts +1 -1
  259. package/src/test-helpers/MethodMirrorBuilder.ts +6 -46
  260. package/src/test-helpers/SettingsBuilder.ts +4 -1
  261. package/src/transpiler/factory.ts +33 -0
  262. package/src/transpiler/file-container.ts +13 -0
  263. package/src/transpiler/generator-choices.ts +1 -0
  264. package/src/transpiler/markdown/class-file-generatorHelper.ts +58 -0
  265. package/src/transpiler/markdown/docsify/docsify-docs-processor.ts +12 -0
  266. package/src/transpiler/markdown/jekyll/jekyll-docsProcessor.ts +50 -0
  267. package/src/transpiler/markdown/markdown-transpiler-base.ts +28 -0
  268. package/src/transpiler/markdown/plain-markdown/plain-docsProcessor.ts +12 -0
  269. package/src/{core → transpiler}/openapi/__tests__/open-api-docs-processor.spec.ts +1 -1
  270. package/src/{core → transpiler}/openapi/open-api-docs-processor.ts +10 -9
  271. package/src/{core → transpiler}/openapi/parsers/Builder.ts +3 -3
  272. package/src/{core → transpiler}/openapi/parsers/MethodParser.ts +6 -6
  273. package/src/{core → transpiler}/openapi/parsers/ParameterObjectBuilder.ts +2 -2
  274. package/src/{core → transpiler}/openapi/parsers/ReferenceBuilder.ts +6 -7
  275. package/src/{core → transpiler}/openapi/parsers/RequestBodyBuilder.ts +2 -2
  276. package/src/{core → transpiler}/openapi/parsers/ResponsesBuilder.ts +2 -2
  277. package/src/{core → transpiler}/openapi/parsers/__tests__/MethodParser.spec.ts +1 -1
  278. package/src/{core → transpiler}/openapi/parsers/__tests__/ParameterObjectBuilder.spec.ts +2 -2
  279. package/src/{core → transpiler}/openapi/parsers/__tests__/ReferenceBuilder.spec.ts +2 -2
  280. package/src/{core → transpiler}/openapi/parsers/__tests__/RequestBodyBuilder.spec.ts +2 -2
  281. package/src/{core → transpiler}/openapi/parsers/__tests__/ResponsesBuilder.spec.ts +1 -1
  282. package/src/transpiler/processor-type-transpiler.ts +18 -0
  283. package/src/{core/openapi → transpiler}/transpiler.ts +6 -2
  284. package/src/util/error-logger.ts +4 -4
  285. package/src/util/logger.ts +6 -6
  286. package/src/util/string-utils.ts +4 -0
  287. package/tsconfig.json +3 -8
  288. package/.github/workflows/ci.yaml +0 -22
  289. package/__mocks__/chalk.js +0 -12
  290. package/__mocks__/log-update.js +0 -6
  291. package/dist/cli/generate.js +0 -2964
  292. package/dist/defaults-DUwru49Q.js +0 -12
  293. package/dist/defaults-SH0Rsi5E.js +0 -11
  294. package/dist/index.d.ts +0 -100
  295. package/dist/index.js +0 -36
  296. package/eslint.config.mjs +0 -10
  297. package/examples/plain-markdown/.forceignore +0 -12
  298. package/examples/plain-markdown/config/project-scratch-def.json +0 -5
  299. package/examples/plain-markdown/docs/index.md +0 -109
  300. package/examples/plain-markdown/docs/miscellaneous/BaseClass.md +0 -16
  301. package/examples/plain-markdown/docs/miscellaneous/MultiInheritanceClass.md +0 -72
  302. package/examples/plain-markdown/docs/miscellaneous/ParentInterface.md +0 -15
  303. package/examples/plain-markdown/docs/miscellaneous/ReferencedEnum.md +0 -8
  304. package/examples/plain-markdown/docs/miscellaneous/SampleException.md +0 -24
  305. package/examples/plain-markdown/docs/miscellaneous/SampleInterface.md +0 -112
  306. package/examples/plain-markdown/docs/miscellaneous/Url.md +0 -309
  307. package/examples/plain-markdown/docs/sample-enums/SampleEnum.md +0 -36
  308. package/examples/plain-markdown/docs/samplegroup/SampleClass.md +0 -170
  309. package/examples/plain-markdown/force-app/classes/BaseClass.cls +0 -3
  310. package/examples/plain-markdown/force-app/classes/MultiInheritanceClass.cls +0 -1
  311. package/examples/plain-markdown/force-app/classes/ParentInterface.cls +0 -3
  312. package/examples/plain-markdown/force-app/classes/ReferencedEnum.cls +0 -3
  313. package/examples/plain-markdown/force-app/classes/SampleClass.cls +0 -72
  314. package/examples/plain-markdown/force-app/classes/SampleEnum.cls +0 -30
  315. package/examples/plain-markdown/force-app/classes/SampleException.cls +0 -17
  316. package/examples/plain-markdown/force-app/classes/SampleInterface.cls +0 -46
  317. package/examples/plain-markdown/force-app/classes/Url.cls +0 -194
  318. package/examples/plain-markdown/package-lock.json +0 -665
  319. package/examples/plain-markdown/package.json +0 -20
  320. package/examples/plain-markdown/sfdx-project.json +0 -12
  321. package/examples/vitepress/.forceignore +0 -12
  322. package/examples/vitepress/apexdocs.config.ts +0 -106
  323. package/examples/vitepress/config/project-scratch-def.json +0 -13
  324. package/examples/vitepress/docs/.vitepress/cache/deps/@theme_index.js +0 -259
  325. package/examples/vitepress/docs/.vitepress/cache/deps/@theme_index.js.map +0 -7
  326. package/examples/vitepress/docs/.vitepress/cache/deps/_metadata.json +0 -40
  327. package/examples/vitepress/docs/.vitepress/cache/deps/chunk-574YRH25.js +0 -11474
  328. package/examples/vitepress/docs/.vitepress/cache/deps/chunk-574YRH25.js.map +0 -7
  329. package/examples/vitepress/docs/.vitepress/cache/deps/chunk-E5DZZB2I.js +0 -9172
  330. package/examples/vitepress/docs/.vitepress/cache/deps/chunk-E5DZZB2I.js.map +0 -7
  331. package/examples/vitepress/docs/.vitepress/cache/deps/package.json +0 -3
  332. package/examples/vitepress/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js +0 -4339
  333. package/examples/vitepress/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map +0 -7
  334. package/examples/vitepress/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js +0 -567
  335. package/examples/vitepress/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js.map +0 -7
  336. package/examples/vitepress/docs/.vitepress/cache/deps/vue.js +0 -323
  337. package/examples/vitepress/docs/.vitepress/cache/deps/vue.js.map +0 -7
  338. package/examples/vitepress/docs/.vitepress/config.mts +0 -21
  339. package/examples/vitepress/docs/.vitepress/sidebar.json +0 -119
  340. package/examples/vitepress/docs/api-examples.md +0 -49
  341. package/examples/vitepress/docs/index-frontmatter.md +0 -16
  342. package/examples/vitepress/docs/index.md +0 -56
  343. package/examples/vitepress/docs/markdown-examples.md +0 -85
  344. package/examples/vitepress/docs/miscellaneous/BaseClass.md +0 -20
  345. package/examples/vitepress/docs/miscellaneous/MultiInheritanceClass.md +0 -76
  346. package/examples/vitepress/docs/miscellaneous/ParentInterface.md +0 -19
  347. package/examples/vitepress/docs/miscellaneous/ReferencedEnum.md +0 -15
  348. package/examples/vitepress/docs/miscellaneous/SampleException.md +0 -28
  349. package/examples/vitepress/docs/miscellaneous/SampleInterface.md +0 -116
  350. package/examples/vitepress/docs/miscellaneous/Url.md +0 -317
  351. package/examples/vitepress/docs/sample-enums/SampleEnum.md +0 -40
  352. package/examples/vitepress/docs/samplegroup/SampleClass.md +0 -174
  353. package/examples/vitepress/force-app/main/default/classes/BaseClass.cls +0 -3
  354. package/examples/vitepress/force-app/main/default/classes/MultiInheritanceClass.cls +0 -1
  355. package/examples/vitepress/force-app/main/default/classes/ParentInterface.cls +0 -3
  356. package/examples/vitepress/force-app/main/default/classes/ReferencedEnum.cls +0 -5
  357. package/examples/vitepress/force-app/main/default/classes/SampleClass.cls +0 -72
  358. package/examples/vitepress/force-app/main/default/classes/SampleEnum.cls +0 -30
  359. package/examples/vitepress/force-app/main/default/classes/SampleException.cls +0 -17
  360. package/examples/vitepress/force-app/main/default/classes/SampleInterface.cls +0 -46
  361. package/examples/vitepress/force-app/main/default/classes/Url.cls +0 -198
  362. package/examples/vitepress/package-lock.json +0 -2574
  363. package/examples/vitepress/package.json +0 -18
  364. package/examples/vitepress/sfdx-project.json +0 -12
  365. package/jest.d.ts +0 -7
  366. package/src/application/__tests__/apex-file-reader.spec.ts +0 -104
  367. package/src/application/apex-file-reader.ts +0 -42
  368. package/src/application/file-writer.ts +0 -21
  369. package/src/application/generators/markdown.ts +0 -58
  370. package/src/application/generators/openapi.ts +0 -56
  371. package/src/cli/args.ts +0 -43
  372. package/src/cli/commands/markdown.ts +0 -58
  373. package/src/core/manifest.ts +0 -90
  374. package/src/core/markdown/__test__/expect-extensions.ts +0 -32
  375. package/src/core/markdown/__test__/generating-class-docs.spec.ts +0 -735
  376. package/src/core/markdown/__test__/generating-enum-docs.spec.ts +0 -385
  377. package/src/core/markdown/__test__/generating-interface-docs.spec.ts +0 -461
  378. package/src/core/markdown/__test__/generating-reference-guide.spec.ts +0 -180
  379. package/src/core/markdown/__test__/inheritance-chain.test.ts +0 -54
  380. package/src/core/markdown/__test__/test-helpers.ts +0 -22
  381. package/src/core/markdown/adapters/__tests__/documentables.spec.ts +0 -109
  382. package/src/core/markdown/adapters/__tests__/interface-adapter.spec.ts +0 -147
  383. package/src/core/markdown/adapters/__tests__/references.spec.ts +0 -136
  384. package/src/core/markdown/adapters/apex-types.ts +0 -238
  385. package/src/core/markdown/adapters/documentables.ts +0 -116
  386. package/src/core/markdown/adapters/fields-and-properties.ts +0 -45
  387. package/src/core/markdown/adapters/inline.ts +0 -143
  388. package/src/core/markdown/adapters/methods-and-constructors.ts +0 -133
  389. package/src/core/markdown/adapters/reference-guide.ts +0 -35
  390. package/src/core/markdown/adapters/renderable-bundle.ts +0 -68
  391. package/src/core/markdown/adapters/renderable-to-page-data.ts +0 -89
  392. package/src/core/markdown/adapters/type-utils.ts +0 -13
  393. package/src/core/markdown/adapters/types.d.ts +0 -180
  394. package/src/core/markdown/generate-docs.ts +0 -215
  395. package/src/core/markdown/reflection/error-handling.ts +0 -37
  396. package/src/core/markdown/reflection/filter-scope.ts +0 -13
  397. package/src/core/markdown/reflection/inheritance-chain-expanion.ts +0 -22
  398. package/src/core/markdown/reflection/inheritance-chain.ts +0 -23
  399. package/src/core/markdown/reflection/inherited-member-expansion.ts +0 -105
  400. package/src/core/markdown/reflection/reflect-source.ts +0 -45
  401. package/src/core/markdown/reflection/sort-members.ts +0 -59
  402. package/src/core/markdown/templates/class-template.ts +0 -75
  403. package/src/core/markdown/templates/constructors-partial-template.ts +0 -32
  404. package/src/core/markdown/templates/documentable-partial-template.ts +0 -26
  405. package/src/core/markdown/templates/enum-template.ts +0 -12
  406. package/src/core/markdown/templates/fieldsPartialTemplate.ts +0 -23
  407. package/src/core/markdown/templates/grouped-members-partial-template.ts +0 -6
  408. package/src/core/markdown/templates/hookable.ts +0 -7
  409. package/src/core/markdown/templates/interface-template.ts +0 -16
  410. package/src/core/markdown/templates/methods-partial-template.ts +0 -43
  411. package/src/core/markdown/templates/reference-guide.ts +0 -14
  412. package/src/core/markdown/templates/template.ts +0 -114
  413. package/src/core/markdown/templates/type-doc-partial.ts +0 -27
  414. package/src/core/markdown/utils.ts +0 -3
  415. package/src/core/openapi/file-container.ts +0 -13
  416. package/src/core/openapi/openapi-type-file.ts +0 -12
  417. package/src/core/parse-apex-metadata.ts +0 -14
  418. package/src/core/settings.ts +0 -56
  419. package/src/core/shared/types.d.ts +0 -130
  420. package/src/core/shared/utils.ts +0 -5
  421. package/src/defaults.ts +0 -8
  422. package/src/test-helpers/InterfaceMirrorBuilder.ts +0 -39
  423. package/src/util/fp.ts +0 -3
  424. /package/src/{core/__test__ → model/__tests__}/manifest.spec.ts +0 -0
  425. /package/src/{core/openapi → model}/apex-type-wrappers/ClassMirrorWrapper.ts +0 -0
  426. /package/src/{core/openapi → model}/apex-type-wrappers/MethodMirrorWrapper.ts +0 -0
  427. /package/src/{core → model}/openapi/__tests__/open-api.spec.ts +0 -0
  428. /package/src/{core → model}/openapi/apex-doc-types.ts +0 -0
  429. /package/src/{core → model}/openapi/open-api.ts +0 -0
  430. /package/src/{application → service}/file-system.ts +0 -0
@@ -1,18 +0,0 @@
1
- {
2
- "name": "vitepress-example",
3
- "scripts": {
4
- "docs:clean": "rimraf --glob 'docs/!(.vitepress|index-frontmatter.md|api-examples.md|markdown-examples.md)'",
5
- "apexdocs:build": "npm run docs:clean && ts-node ../../src/cli/generate.ts markdown",
6
- "docs:build": "vitepress build docs",
7
- "docs:gen": "npm run docs:clean && npm run docs:build",
8
- "docs:dev": "vitepress dev docs",
9
- "docs:preview": "vitepress preview docs"
10
- },
11
- "devDependencies": {
12
- "ts-node": "^10.9.2",
13
- "vitepress": "^1.3.1"
14
- },
15
- "dependencies": {
16
- "rimraf": "^5.0.7"
17
- }
18
- }
@@ -1,12 +0,0 @@
1
- {
2
- "packageDirectories": [
3
- {
4
- "path": "force-app",
5
- "default": true
6
- }
7
- ],
8
- "name": "vitepress",
9
- "namespace": "",
10
- "sfdcLoginUrl": "https://login.salesforce.com",
11
- "sourceApiVersion": "61.0"
12
- }
package/jest.d.ts DELETED
@@ -1,7 +0,0 @@
1
- declare namespace jest {
2
- interface Matchers<R> {
3
- documentationBundleHasLength(length: number): R;
4
- firstDocContains(content: string): R;
5
- firstDocContainsNot(content: string): R;
6
- }
7
- }
@@ -1,104 +0,0 @@
1
- import { Settings, SettingsConfig } from '../../core/settings';
2
- import { ApexFileReader } from '../apex-file-reader';
3
-
4
- describe('File Reader', () => {
5
- beforeEach(() => {
6
- Settings.build({
7
- sourceDirectory: '',
8
- recursive: true,
9
- scope: [],
10
- outputDir: '',
11
- targetGenerator: 'markdown',
12
- indexOnly: false,
13
- defaultGroupName: 'Misc',
14
- sanitizeHtml: true,
15
- openApiFileName: 'openapi',
16
- title: 'Classes',
17
- includeMetadata: false,
18
- } as SettingsConfig);
19
- });
20
-
21
- it('returns an empty list when there are no files in the directory', () => {
22
- const result = ApexFileReader.processFiles(
23
- {
24
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
25
- isDirectory(_: string): boolean {
26
- return false;
27
- },
28
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
29
- joinPath(_: string): string {
30
- return '';
31
- },
32
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
33
- readDirectory(_: string): string[] {
34
- return [];
35
- },
36
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
37
- readFile(_: string): string {
38
- return '';
39
- },
40
- exists(): boolean {
41
- return true;
42
- },
43
- },
44
- '',
45
- false,
46
- );
47
- expect(result.length).toBe(0);
48
- });
49
-
50
- it('returns an empty list when there are no Apex files in the directory', () => {
51
- const result = ApexFileReader.processFiles(
52
- {
53
- isDirectory(): boolean {
54
- return false;
55
- },
56
- joinPath(): string {
57
- return '';
58
- },
59
- readDirectory(): string[] {
60
- return ['SomeFile.md'];
61
- },
62
- readFile(): string {
63
- return '';
64
- },
65
- exists(): boolean {
66
- return true;
67
- },
68
- },
69
- '',
70
- false,
71
- );
72
- expect(result.length).toBe(0);
73
- });
74
-
75
- it('returns the file contents for an Apex file', () => {
76
- const result = ApexFileReader.processFiles(
77
- {
78
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
79
- isDirectory(_: string): boolean {
80
- return false;
81
- },
82
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
83
- joinPath(_: string): string {
84
- return '';
85
- },
86
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
87
- readDirectory(_: string): string[] {
88
- return ['SomeApexFile.cls'];
89
- },
90
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
91
- readFile(_: string): string {
92
- return 'public class MyClass{}';
93
- },
94
- exists(): boolean {
95
- return true;
96
- },
97
- },
98
- '',
99
- false,
100
- );
101
- expect(result.length).toBe(1);
102
- expect(result[0].content).toBe('public class MyClass{}');
103
- });
104
- });
@@ -1,42 +0,0 @@
1
- import { FileSystem } from './file-system';
2
- import { UnparsedSourceFile } from '../core/shared/types';
3
-
4
- const APEX_FILE_EXTENSION = '.cls';
5
-
6
- /**
7
- * Reads from .cls files and returns their raw body.
8
- */
9
- export class ApexFileReader {
10
- /**
11
- * Reads from .cls files and returns their raw body.
12
- */
13
- static processFiles(fileSystem: FileSystem, rootPath: string, includeMetadata: boolean): UnparsedSourceFile[] {
14
- let bundles: UnparsedSourceFile[] = [];
15
-
16
- const directoryContents = fileSystem.readDirectory(rootPath);
17
- directoryContents.forEach((filePath) => {
18
- const currentPath = fileSystem.joinPath(rootPath, filePath);
19
- if (fileSystem.isDirectory(currentPath)) {
20
- bundles = bundles.concat(this.processFiles(fileSystem, currentPath, includeMetadata));
21
- }
22
-
23
- if (!this.isApexFile(filePath)) {
24
- return;
25
- }
26
-
27
- const rawTypeContent = fileSystem.readFile(currentPath);
28
- const metadataPath = fileSystem.joinPath(rootPath, `${filePath}-meta.xml`);
29
- let rawMetadataContent = null;
30
- if (includeMetadata) {
31
- rawMetadataContent = fileSystem.exists(metadataPath) ? fileSystem.readFile(metadataPath) : null;
32
- }
33
-
34
- bundles.push({ filePath: currentPath, content: rawTypeContent, metadataContent: rawMetadataContent });
35
- });
36
- return bundles;
37
- }
38
-
39
- private static isApexFile(currentFile: string): boolean {
40
- return currentFile.endsWith(APEX_FILE_EXTENSION);
41
- }
42
- }
@@ -1,21 +0,0 @@
1
- import * as fs from 'fs';
2
- import * as path from 'path';
3
- import { PageData } from '../core/shared/types';
4
-
5
- export class FileWriter {
6
- static write(files: PageData[], outputDir: string, onWriteCallback: (file: PageData) => void) {
7
- files.forEach((file) => {
8
- const { filePath, content } = this.getTargetLocation(file, outputDir);
9
- fs.mkdirSync(path.dirname(filePath), { recursive: true });
10
- fs.writeFileSync(filePath, content, 'utf8');
11
- onWriteCallback(file);
12
- });
13
- }
14
-
15
- private static getTargetLocation(file: PageData, outputDir: string): PageData {
16
- return {
17
- ...file,
18
- filePath: path.join(outputDir, file.filePath),
19
- };
20
- }
21
- }
@@ -1,58 +0,0 @@
1
- import { generateDocs } from '../../core/markdown/generate-docs';
2
- import { FileWriter } from '../file-writer';
3
- import { Logger } from '#utils/logger';
4
- import { pipe } from 'fp-ts/function';
5
- import {
6
- PageData,
7
- PostHookDocumentationBundle,
8
- UnparsedSourceFile,
9
- UserDefinedMarkdownConfig,
10
- } from '../../core/shared/types';
11
- import { ReflectionError } from '../../core/markdown/reflection/error-handling';
12
- import { referenceGuideTemplate } from '../../core/markdown/templates/reference-guide';
13
- import * as TE from 'fp-ts/TaskEither';
14
- import { isSkip } from '../../core/shared/utils';
15
-
16
- export default function generate(bundles: UnparsedSourceFile[], config: UserDefinedMarkdownConfig) {
17
- return pipe(
18
- generateDocumentationBundle(bundles, config),
19
- TE.map((files) => writeFilesToSystem(files, config.targetDir)),
20
- TE.mapLeft((error) => {
21
- if (error._tag === 'HookError') {
22
- Logger.error('Error(s) occurred while processing hooks. Please review the following issues:');
23
- Logger.error(error.error);
24
- return;
25
- }
26
-
27
- const errorMessages = [
28
- 'Error(s) occurred while parsing files. Please review the following issues:',
29
- ...error.errors.map(formatReflectionError),
30
- ].join('\n');
31
-
32
- Logger.error(errorMessages);
33
- }),
34
- )();
35
- }
36
-
37
- function generateDocumentationBundle(bundles: UnparsedSourceFile[], config: UserDefinedMarkdownConfig) {
38
- return generateDocs(bundles, {
39
- ...config,
40
- referenceGuideTemplate: referenceGuideTemplate,
41
- });
42
- }
43
-
44
- function writeFilesToSystem(files: PostHookDocumentationBundle, outputDir: string) {
45
- FileWriter.write(
46
- [files.referenceGuide, ...files.docs]
47
- // Filter out any files that should be skipped
48
- .filter((file) => !isSkip(file)) as PageData[],
49
- outputDir,
50
- (file: PageData) => {
51
- Logger.logSingle(`${file.filePath} processed.`, false, 'green', false);
52
- },
53
- );
54
- }
55
-
56
- function formatReflectionError(error: ReflectionError) {
57
- return `Source file: ${error.file}\n${error.message}\n`;
58
- }
@@ -1,56 +0,0 @@
1
- import { createManifest } from '../../core/openapi/manifest-factory';
2
- import { RawBodyParser } from '../../core/openapi/parser';
3
- import { TypesRepository } from '../../core/openapi/types-repository';
4
- import Transpiler from '../../core/openapi/transpiler';
5
- import { FileWriter } from '../file-writer';
6
- import { Logger } from '#utils/logger';
7
- import ErrorLogger from '#utils/error-logger';
8
- import { reflect, ReflectionResult } from '@cparra/apex-reflection';
9
- import Manifest from '../../core/manifest';
10
- import { PageData, UnparsedSourceFile, UserDefinedOpenApiConfig } from '../../core/shared/types';
11
- import { OpenApiDocsProcessor } from '../../core/openapi/open-api-docs-processor';
12
-
13
- export default function openApi(fileBodies: UnparsedSourceFile[], config: UserDefinedOpenApiConfig) {
14
- const manifest = createManifest(new RawBodyParser(fileBodies), reflectionWithLogger);
15
- TypesRepository.getInstance().populateAll(manifest.types);
16
- const filteredTypes = filterByScopes(manifest);
17
- const processor = new OpenApiDocsProcessor();
18
- Transpiler.generate(filteredTypes, processor);
19
- const generatedFiles = processor.fileBuilder().files();
20
-
21
- FileWriter.write(generatedFiles, config.targetDir, (file: PageData) => {
22
- Logger.logSingle(`${file.filePath} processed.`, false, 'green', false);
23
- });
24
-
25
- // Error logging
26
- ErrorLogger.logErrors(filteredTypes);
27
- }
28
-
29
- function reflectionWithLogger(apexBundle: UnparsedSourceFile): ReflectionResult {
30
- const result = reflect(apexBundle.content);
31
- if (result.error) {
32
- Logger.error(`${apexBundle.filePath} - Parsing error ${result.error?.message}`);
33
- }
34
- return result;
35
- }
36
-
37
- function filterByScopes(manifest: Manifest) {
38
- // If we are dealing with an OpenApi generator, we ignore the passed in access modifiers, and instead
39
- // we only keep classes annotated as @RestResource
40
- const filteredTypes = manifest.filteredByAccessModifierAndAnnotations([
41
- 'restresource',
42
- 'httpdelete',
43
- 'httpget',
44
- 'httppatch',
45
- 'httppost',
46
- 'httpput',
47
- ]);
48
- const filteredLogMessage = `Filtered ${
49
- manifest.types.length - filteredTypes.length
50
- } file(s), only keeping classes annotated as @RestResource.`;
51
- Logger.clear();
52
-
53
- Logger.logSingle(filteredLogMessage, false, 'green', false);
54
- Logger.logSingle(`Creating documentation for ${filteredTypes.length} file(s)`, false, 'green', false);
55
- return filteredTypes;
56
- }
package/src/cli/args.ts DELETED
@@ -1,43 +0,0 @@
1
- import { cosmiconfig, CosmiconfigResult } from 'cosmiconfig';
2
- import * as yargs from 'yargs';
3
- import { UserDefinedMarkdownConfig } from '../core/shared/types';
4
- import { TypeScriptLoader } from 'cosmiconfig-typescript-loader';
5
- import { markdownOptions } from './commands/markdown';
6
-
7
- /**
8
- * Extracts configuration from a configuration file or the package.json
9
- * through cosmiconfig.
10
- */
11
- function _extractConfig(): Promise<CosmiconfigResult> {
12
- return cosmiconfig('apexdocs', {
13
- loaders: {
14
- '.ts': TypeScriptLoader(),
15
- },
16
- }).search();
17
- }
18
-
19
- /**
20
- * Extracts arguments from the command line.
21
- * @param config The configuration object from the configuration file, if any.
22
- */
23
- function _extractYargs(config?: CosmiconfigResult) {
24
- return yargs
25
- .config(config?.config)
26
- .command('markdown', 'Generate documentation from Apex classes as a Markdown site.', (yargs) =>
27
- yargs.options(markdownOptions),
28
- )
29
- .command('openapi', 'Generate an OpenApi REST specification from Apex classes.')
30
- .demandCommand()
31
- .parseSync();
32
- }
33
-
34
- /**
35
- * Combines the extracted configuration and arguments.
36
- */
37
- export async function extractArgs(): Promise<UserDefinedMarkdownConfig> {
38
- const config = await _extractConfig();
39
- const cliArgs = _extractYargs(config);
40
- const commandName = cliArgs._[0];
41
-
42
- return { ...config?.config, ...cliArgs, targetGenerator: commandName as 'markdown' | 'openapi' };
43
- }
@@ -1,58 +0,0 @@
1
- import { Options } from 'yargs';
2
- import { defaults } from '../../defaults';
3
-
4
- export const markdownOptions: { [key: string]: Options } = {
5
- sourceDir: {
6
- type: 'string',
7
- alias: 's',
8
- demandOption: true,
9
- describe: 'The directory location which contains your apex .cls classes.',
10
- },
11
- targetDir: {
12
- type: 'string',
13
- alias: 't',
14
- default: defaults.targetDir,
15
- describe: 'The directory location where documentation will be generated to.',
16
- },
17
- scope: {
18
- type: 'string',
19
- array: true,
20
- alias: 'p',
21
- default: defaults.scope,
22
- describe:
23
- 'A list of scopes to document. Values should be separated by a space, e.g --scope global public namespaceaccessible. ' +
24
- 'Annotations are supported and should be passed lowercased and without the @ symbol, e.g. namespaceaccessible auraenabled. ' +
25
- 'Note that this setting is ignored if generating an OpenApi REST specification since that looks for classes annotated with @RestResource.',
26
- },
27
- defaultGroupName: {
28
- type: 'string',
29
- default: defaults.defaultGroupName,
30
- describe: 'Defines the @group name to be used when a file does not specify it.',
31
- },
32
- openApiTitle: {
33
- type: 'string',
34
- default: 'Apex REST Api',
35
- describe: 'If using "openapi" as the target generator, this allows you to specify the OpenApi title value.',
36
- },
37
- namespace: {
38
- type: 'string',
39
- describe:
40
- 'The package namespace, if any. If this value is provided the namespace will be added as a prefix to all of the parsed files. ' +
41
- "If generating an OpenApi definition, it will be added to the file's Server Url.",
42
- },
43
- openApiFileName: {
44
- type: 'string',
45
- describe: 'If using "openapi" as the target generator, this allows you to specify the name of the output file.',
46
- default: 'openapi',
47
- },
48
- sortMembersAlphabetically: {
49
- type: 'boolean',
50
- describe: 'Whether to sort members alphabetically.',
51
- default: defaults.sortMembersAlphabetically,
52
- },
53
- includeMetadata: {
54
- type: 'boolean',
55
- describe: "Whether to include the file's meta.xml information: Whether it is active and and the API version",
56
- default: defaults.includeMetadata,
57
- },
58
- };
@@ -1,90 +0,0 @@
1
- import {
2
- Annotation,
3
- ClassMirror,
4
- DocComment,
5
- DocCommentAnnotation,
6
- EnumMirror,
7
- InterfaceMirror,
8
- Type,
9
- } from '@cparra/apex-reflection';
10
-
11
- type AccessAndDocAware = { access_modifier: string; annotations: Annotation[]; docComment?: DocComment };
12
-
13
- /**
14
- * Represents the full library of Apex top-level types (classes, enums, and interface) for a Salesforce project.
15
- */
16
- export default class Manifest {
17
- /**
18
- * Constructs a new Manifest object.
19
- * @param types List of types to be wrapped by this object.
20
- * @param isForInnerTypes Whether this manifest represent an inner type or not.
21
- */
22
- constructor(
23
- public types: Type[],
24
- public isForInnerTypes: boolean = false,
25
- ) {}
26
-
27
- filteredByAccessModifierAndAnnotations(modifiers: string[]): Type[] {
28
- const filteredTypes = Manifest.filterAccessibleModifier(this.types, modifiers);
29
- const typesToReturn: Type[] = [];
30
- for (const filteredType of filteredTypes) {
31
- typesToReturn.push(Manifest.filterSingleType(filteredType, modifiers, this.isForInnerTypes));
32
- }
33
-
34
- return typesToReturn;
35
- }
36
-
37
- static filterSingleType(currentType: Type, modifiers: string[], isForInnerTypes: boolean): Type {
38
- if (currentType.type_name === 'enum') {
39
- // Ignoring enum values is not supported.
40
- return currentType;
41
- }
42
-
43
- if (currentType.type_name === 'interface') {
44
- const currentInterface = currentType as InterfaceMirror;
45
- return {
46
- ...currentType,
47
- methods: this.filterAccessibleModifier(currentInterface.methods, modifiers),
48
- } as InterfaceMirror;
49
- }
50
-
51
- const currentClass = currentType as ClassMirror;
52
- const filteredClass = {
53
- ...currentType,
54
- methods: this.filterAccessibleModifier(currentClass.methods, modifiers),
55
- properties: this.filterAccessibleModifier(currentClass.properties, modifiers),
56
- fields: this.filterAccessibleModifier(currentClass.fields, modifiers),
57
- constructors: this.filterAccessibleModifier(currentClass.constructors, modifiers),
58
- } as ClassMirror;
59
-
60
- if (!isForInnerTypes) {
61
- return {
62
- ...filteredClass,
63
- enums: this.filterAccessibleModifier(currentClass.enums, modifiers) as EnumMirror[],
64
- interfaces: this.filterAccessibleModifier(currentClass.interfaces, modifiers) as InterfaceMirror[],
65
- classes: new Manifest(currentClass.classes, true).filteredByAccessModifierAndAnnotations(
66
- modifiers,
67
- ) as ClassMirror[],
68
- };
69
- }
70
-
71
- return filteredClass;
72
- }
73
-
74
- static filterAccessibleModifier<T extends AccessAndDocAware>(accessAndDocAware: T[], modifiers: string[]): T[] {
75
- return accessAndDocAware.filter((type) => this.shouldFilterType(type, modifiers));
76
- }
77
-
78
- static shouldFilterType(accessAndDocAware: AccessAndDocAware, modifiers: string[]) {
79
- const hasIgnoreDocAnnotation = accessAndDocAware.docComment?.annotations.some(
80
- (annotation: DocCommentAnnotation) => annotation.name.toLowerCase() === 'ignore',
81
- );
82
- if (hasIgnoreDocAnnotation) {
83
- return false;
84
- }
85
- return (
86
- modifiers.includes(accessAndDocAware.access_modifier) ||
87
- accessAndDocAware.annotations.some((annotation: Annotation) => modifiers.includes(annotation.type.toLowerCase()))
88
- );
89
- }
90
- }
@@ -1,32 +0,0 @@
1
- import * as E from 'fp-ts/Either';
2
- import { DocumentationBundle } from '../../shared/types';
3
-
4
- export function extendExpect() {
5
- expect.extend({
6
- documentationBundleHasLength(received: E.Either<string[], DocumentationBundle>, length: number) {
7
- return {
8
- pass: E.isRight(received) && received.right.docs.length === length,
9
- message: () => `Expected documentation bundle to have length ${length}`,
10
- };
11
- },
12
- firstDocContains(doc: DocumentationBundle, content: string) {
13
- return {
14
- pass: doc.docs[0].content.includes(content),
15
- message: () => `Expected documentation to contain ${content}. Got ${doc.docs[0].content}`,
16
- };
17
- },
18
- firstDocContainsNot(doc: DocumentationBundle, content: string) {
19
- return {
20
- pass: !doc.docs[0].content.includes(content),
21
- message: () => `Expected documentation to not contain ${content}. Got ${doc.docs[0].content}`,
22
- };
23
- },
24
- });
25
- }
26
-
27
- export function assertEither<T, U>(result: E.Either<T, U>, assertion: (data: U) => void): void {
28
- E.match<T, U, void>(
29
- (error) => fail(error),
30
- (data) => assertion(data),
31
- )(result);
32
- }