@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.
- package/.github/workflows/ci.yaml +22 -0
- package/README.md +73 -12
- package/__mocks__/chalk.js +12 -0
- package/__mocks__/log-update.js +6 -0
- package/dist/cli/generate.js +3181 -0
- package/dist/defaults-DGKfeZq-.js +13 -0
- package/dist/index.d.ts +117 -0
- package/dist/index.js +36 -0
- package/eslint.config.mjs +10 -0
- package/examples/markdown/.forceignore +12 -0
- package/examples/markdown/config/project-scratch-def.json +5 -0
- package/examples/markdown/docs/index.md +109 -0
- package/examples/markdown/docs/miscellaneous/BaseClass.md +16 -0
- package/examples/markdown/docs/miscellaneous/MultiInheritanceClass.md +72 -0
- package/examples/markdown/docs/miscellaneous/ParentInterface.md +15 -0
- package/examples/markdown/docs/miscellaneous/ReferencedEnum.md +8 -0
- package/examples/markdown/docs/miscellaneous/SampleException.md +24 -0
- package/examples/markdown/docs/miscellaneous/SampleInterface.md +116 -0
- package/examples/markdown/docs/miscellaneous/Url.md +309 -0
- package/examples/markdown/docs/sample-enums/SampleEnum.md +36 -0
- package/examples/markdown/docs/samplegroup/SampleClass.md +170 -0
- package/examples/markdown/force-app/classes/BaseClass.cls +3 -0
- package/examples/markdown/force-app/classes/MultiInheritanceClass.cls +1 -0
- package/examples/markdown/force-app/classes/ParentInterface.cls +3 -0
- package/examples/markdown/force-app/classes/ReferencedEnum.cls +3 -0
- package/examples/markdown/force-app/classes/SampleClass.cls +72 -0
- package/examples/markdown/force-app/classes/SampleEnum.cls +30 -0
- package/examples/markdown/force-app/classes/SampleException.cls +17 -0
- package/examples/markdown/force-app/classes/SampleInterface.cls +50 -0
- package/examples/markdown/force-app/classes/Url.cls +194 -0
- package/examples/markdown/package-lock.json +665 -0
- package/examples/markdown/package.json +20 -0
- package/examples/markdown/sfdx-project.json +12 -0
- package/examples/vitepress/.forceignore +12 -0
- package/examples/vitepress/apexdocs.config.ts +106 -0
- package/examples/vitepress/config/project-scratch-def.json +13 -0
- package/examples/vitepress/docs/.vitepress/cache/deps/@theme_index.js +259 -0
- package/examples/vitepress/docs/.vitepress/cache/deps/@theme_index.js.map +7 -0
- package/examples/vitepress/docs/.vitepress/cache/deps/_metadata.json +40 -0
- package/examples/vitepress/docs/.vitepress/cache/deps/chunk-574YRH25.js +11474 -0
- package/examples/vitepress/docs/.vitepress/cache/deps/chunk-574YRH25.js.map +7 -0
- package/examples/vitepress/docs/.vitepress/cache/deps/chunk-E5DZZB2I.js +9172 -0
- package/examples/vitepress/docs/.vitepress/cache/deps/chunk-E5DZZB2I.js.map +7 -0
- package/examples/vitepress/docs/.vitepress/cache/deps/package.json +3 -0
- package/examples/vitepress/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js +4339 -0
- package/examples/vitepress/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map +7 -0
- package/examples/vitepress/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js +567 -0
- package/examples/vitepress/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js.map +7 -0
- package/examples/vitepress/docs/.vitepress/cache/deps/vue.js +323 -0
- package/examples/vitepress/docs/.vitepress/cache/deps/vue.js.map +7 -0
- package/examples/vitepress/docs/.vitepress/config.mts +21 -0
- package/examples/vitepress/docs/.vitepress/sidebar.json +119 -0
- package/examples/vitepress/docs/api-examples.md +49 -0
- package/examples/vitepress/docs/index-frontmatter.md +16 -0
- package/examples/vitepress/docs/index.md +56 -0
- package/examples/vitepress/docs/markdown-examples.md +85 -0
- package/examples/vitepress/docs/miscellaneous/BaseClass.md +20 -0
- package/examples/vitepress/docs/miscellaneous/MultiInheritanceClass.md +76 -0
- package/examples/vitepress/docs/miscellaneous/ParentInterface.md +19 -0
- package/examples/vitepress/docs/miscellaneous/ReferencedEnum.md +15 -0
- package/examples/vitepress/docs/miscellaneous/SampleException.md +28 -0
- package/examples/vitepress/docs/miscellaneous/SampleInterface.md +116 -0
- package/examples/vitepress/docs/miscellaneous/Url.md +317 -0
- package/examples/vitepress/docs/sample-enums/SampleEnum.md +40 -0
- package/examples/vitepress/docs/samplegroup/SampleClass.md +174 -0
- package/examples/vitepress/force-app/main/default/classes/BaseClass.cls +3 -0
- package/examples/vitepress/force-app/main/default/classes/MultiInheritanceClass.cls +1 -0
- package/examples/vitepress/force-app/main/default/classes/ParentInterface.cls +3 -0
- package/examples/vitepress/force-app/main/default/classes/ReferencedEnum.cls +5 -0
- package/examples/vitepress/force-app/main/default/classes/SampleClass.cls +72 -0
- package/examples/vitepress/force-app/main/default/classes/SampleEnum.cls +30 -0
- package/examples/vitepress/force-app/main/default/classes/SampleException.cls +17 -0
- package/examples/vitepress/force-app/main/default/classes/SampleInterface.cls +46 -0
- package/examples/vitepress/force-app/main/default/classes/Url.cls +198 -0
- package/examples/vitepress/package-lock.json +2574 -0
- package/examples/vitepress/package.json +18 -0
- package/examples/vitepress/sfdx-project.json +12 -0
- package/jest.config.js +6 -1
- package/jest.d.ts +7 -0
- package/package.json +34 -36
- package/src/application/Apexdocs.ts +58 -68
- package/src/application/__tests__/apex-file-reader.spec.ts +104 -0
- package/src/application/apex-file-reader.ts +55 -0
- package/src/application/file-system.ts +69 -0
- package/src/application/file-writer.ts +43 -0
- package/src/application/generators/markdown.ts +45 -0
- package/src/application/generators/openapi.ts +60 -0
- package/src/cli/args.ts +43 -0
- package/src/cli/commands/markdown.ts +53 -0
- package/src/cli/generate.ts +10 -131
- package/src/core/manifest.ts +90 -0
- package/src/core/markdown/__test__/expect-extensions.ts +32 -0
- package/src/core/markdown/__test__/generating-class-docs.spec.ts +733 -0
- package/src/core/markdown/__test__/generating-enum-docs.spec.ts +385 -0
- package/src/core/markdown/__test__/generating-interface-docs.spec.ts +461 -0
- package/src/core/markdown/__test__/generating-reference-guide.spec.ts +180 -0
- package/src/core/markdown/__test__/inheritance-chain.test.ts +54 -0
- package/src/core/markdown/__test__/test-helpers.ts +23 -0
- package/src/core/markdown/adapters/__tests__/documentables.spec.ts +109 -0
- package/src/core/markdown/adapters/__tests__/interface-adapter.spec.ts +148 -0
- package/src/core/markdown/adapters/__tests__/link-generator.spec.ts +130 -0
- package/src/core/markdown/adapters/__tests__/references.spec.ts +136 -0
- package/src/core/markdown/adapters/apex-types.ts +238 -0
- package/src/core/markdown/adapters/documentables.ts +115 -0
- package/src/core/markdown/adapters/fields-and-properties.ts +45 -0
- package/src/core/markdown/adapters/generate-link.ts +82 -0
- package/src/core/markdown/adapters/inline.ts +143 -0
- package/src/core/markdown/adapters/methods-and-constructors.ts +133 -0
- package/src/core/markdown/adapters/reference-guide.ts +37 -0
- package/src/core/markdown/adapters/renderable-bundle.ts +61 -0
- package/src/core/markdown/adapters/renderable-to-page-data.ts +89 -0
- package/src/core/markdown/adapters/type-utils.ts +13 -0
- package/src/core/markdown/adapters/types.d.ts +180 -0
- package/src/core/markdown/generate-docs.ts +212 -0
- package/src/core/markdown/reflection/filter-scope.ts +13 -0
- package/src/core/markdown/reflection/inheritance-chain-expanion.ts +22 -0
- package/src/core/markdown/reflection/inheritance-chain.ts +23 -0
- package/src/core/markdown/reflection/inherited-member-expansion.ts +105 -0
- package/src/core/markdown/reflection/reflect-source.ts +123 -0
- package/src/core/markdown/reflection/sort-members.ts +59 -0
- package/src/core/markdown/templates/class-template.ts +75 -0
- package/src/core/markdown/templates/constructors-partial-template.ts +32 -0
- package/src/core/markdown/templates/documentable-partial-template.ts +26 -0
- package/src/core/markdown/templates/enum-template.ts +12 -0
- package/src/core/markdown/templates/fieldsPartialTemplate.ts +23 -0
- package/src/core/markdown/templates/grouped-members-partial-template.ts +6 -0
- package/src/core/markdown/templates/hookable.ts +7 -0
- package/src/core/markdown/templates/interface-template.ts +16 -0
- package/src/core/markdown/templates/methods-partial-template.ts +43 -0
- package/src/core/markdown/templates/reference-guide.ts +14 -0
- package/src/core/markdown/templates/template.ts +114 -0
- package/src/core/markdown/templates/type-doc-partial.ts +27 -0
- package/src/core/markdown/utils.ts +3 -0
- package/src/{service → core/openapi}/__tests__/manifest-factory.spec.ts +1 -2
- package/src/{transpiler → core}/openapi/__tests__/open-api-docs-processor.spec.ts +1 -1
- package/src/{model → core/openapi}/apex-type-wrappers/__tests__/ClassMirrorWrapper.spec.ts +3 -3
- package/src/core/openapi/file-container.ts +13 -0
- package/src/{service → core/openapi}/manifest-factory.ts +3 -3
- package/src/{transpiler → core}/openapi/open-api-docs-processor.ts +10 -11
- package/src/{model → core}/openapi/open-api-types.ts +2 -2
- package/src/core/openapi/openapi-type-file.ts +12 -0
- package/src/{service → core/openapi}/parser.ts +7 -21
- package/src/{transpiler → core}/openapi/parsers/Builder.ts +3 -3
- package/src/{transpiler → core}/openapi/parsers/MethodParser.ts +6 -6
- package/src/{transpiler → core}/openapi/parsers/ParameterObjectBuilder.ts +2 -2
- package/src/{transpiler → core}/openapi/parsers/ReferenceBuilder.ts +7 -6
- package/src/{transpiler → core}/openapi/parsers/RequestBodyBuilder.ts +2 -2
- package/src/{transpiler → core}/openapi/parsers/ResponsesBuilder.ts +2 -2
- package/src/{transpiler → core}/openapi/parsers/__tests__/MethodParser.spec.ts +1 -1
- package/src/{transpiler → core}/openapi/parsers/__tests__/ParameterObjectBuilder.spec.ts +2 -2
- package/src/{transpiler → core}/openapi/parsers/__tests__/ReferenceBuilder.spec.ts +2 -2
- package/src/{transpiler → core}/openapi/parsers/__tests__/RequestBodyBuilder.spec.ts +2 -2
- package/src/{transpiler → core}/openapi/parsers/__tests__/ResponsesBuilder.spec.ts +1 -1
- package/src/{transpiler → core/openapi}/transpiler.ts +2 -6
- package/src/{model → core/openapi}/types-repository.ts +0 -9
- package/src/core/parse-apex-metadata.ts +30 -0
- package/src/core/settings.ts +56 -0
- package/src/core/shared/types.d.ts +147 -0
- package/src/core/shared/utils.ts +5 -0
- package/src/defaults.ts +9 -0
- package/src/index.ts +36 -1
- package/src/test-helpers/ClassMirrorBuilder.ts +14 -1
- package/src/test-helpers/FieldMirrorBuilder.ts +1 -1
- package/src/test-helpers/InterfaceMirrorBuilder.ts +39 -0
- package/src/test-helpers/MethodMirrorBuilder.ts +46 -6
- package/src/test-helpers/SettingsBuilder.ts +1 -4
- package/src/util/error-logger.ts +4 -4
- package/src/util/fp.ts +3 -0
- package/src/util/logger.ts +12 -25
- package/src/util/string-utils.ts +0 -4
- package/tsconfig.json +8 -3
- package/.eslintrc.js +0 -12
- package/apexdocs.config.ts +0 -13
- package/docs/.nojekyll +0 -0
- package/docs/README.md +0 -1
- package/docs/index.html +0 -22
- package/docs/restapi.json +0 -589
- package/docs/types/Classes/nspc.AnotherInterface.md +0 -22
- package/docs/types/Classes/nspc.ChildClass.md +0 -97
- package/docs/types/Main/nspc.GroupedClass.md +0 -10
- package/docs/types/Main/nspc.SampleClass.md +0 -190
- package/docs/types/Misc-Group/nspc.EscapedAnnotations.md +0 -4
- package/docs/types/Misc-Group/nspc.GrandparentClass.md +0 -13
- package/docs/types/Misc-Group/nspc.InterfaceWithInheritance.md +0 -29
- package/docs/types/Misc-Group/nspc.MemberGrouping.md +0 -13
- package/docs/types/Misc-Group/nspc.ParentClass.md +0 -37
- package/docs/types/Misc-Group/nspc.Reference1.md +0 -18
- package/docs/types/Misc-Group/nspc.Reference2.md +0 -12
- package/docs/types/Misc-Group/nspc.Reference3.md +0 -7
- package/docs/types/Misc-Group/nspc.Reference4.md +0 -7
- package/docs/types/Misc-Group/nspc.Reference5.md +0 -7
- package/docs/types/Misc-Group/nspc.Reference6.md +0 -9
- package/docs/types/Misc-Group/nspc.Reference7.md +0 -7
- package/docs/types/Misc-Group/nspc.SampleClassWithoutModifier.md +0 -11
- package/docs/types/Misc-Group/nspc.SampleRestResource.md +0 -211
- package/docs/types/Misc-Group/nspc.SampleRestResourceWithInnerClass.md +0 -34
- package/docs/types/Misc-Group/nspc.SampleRestResourceWithoutApexDocs.md +0 -14
- package/docs/types/README.md +0 -97
- package/docs/types/Sample-Interfaces/nspc.SampleInterface.md +0 -23
- package/examples/includes/header.md +0 -3
- package/lib/application/Apexdocs.d.ts +0 -13
- package/lib/application/Apexdocs.js +0 -77
- package/lib/application/Apexdocs.js.map +0 -1
- package/lib/cli/generate.d.ts +0 -2
- package/lib/cli/generate.js +0 -131
- package/lib/cli/generate.js.map +0 -1
- package/lib/index.d.ts +0 -1
- package/lib/index.js +0 -18
- package/lib/index.js.map +0 -1
- package/lib/model/apex-bundle.d.ts +0 -6
- package/lib/model/apex-bundle.js +0 -11
- package/lib/model/apex-bundle.js.map +0 -1
- package/lib/model/apex-type-wrappers/ClassMirrorWrapper.d.ts +0 -7
- package/lib/model/apex-type-wrappers/ClassMirrorWrapper.js +0 -14
- package/lib/model/apex-type-wrappers/ClassMirrorWrapper.js.map +0 -1
- package/lib/model/apex-type-wrappers/MethodMirrorWrapper.d.ts +0 -7
- package/lib/model/apex-type-wrappers/MethodMirrorWrapper.js +0 -12
- package/lib/model/apex-type-wrappers/MethodMirrorWrapper.js.map +0 -1
- package/lib/model/inheritance.d.ts +0 -8
- package/lib/model/inheritance.js +0 -3
- package/lib/model/inheritance.js.map +0 -1
- package/lib/model/manifest-diff.d.ts +0 -27
- package/lib/model/manifest-diff.js +0 -69
- package/lib/model/manifest-diff.js.map +0 -1
- package/lib/model/manifest.d.ts +0 -22
- package/lib/model/manifest.js +0 -47
- package/lib/model/manifest.js.map +0 -1
- package/lib/model/markdown-file.d.ts +0 -16
- package/lib/model/markdown-file.js +0 -107
- package/lib/model/markdown-file.js.map +0 -1
- package/lib/model/markdown-generation-util/doc-comment-annotation-util.d.ts +0 -8
- package/lib/model/markdown-generation-util/doc-comment-annotation-util.js +0 -44
- package/lib/model/markdown-generation-util/doc-comment-annotation-util.js.map +0 -1
- package/lib/model/markdown-generation-util/field-declaration-util.d.ts +0 -3
- package/lib/model/markdown-generation-util/field-declaration-util.js +0 -55
- package/lib/model/markdown-generation-util/field-declaration-util.js.map +0 -1
- package/lib/model/markdown-generation-util/index.d.ts +0 -3
- package/lib/model/markdown-generation-util/index.js +0 -20
- package/lib/model/markdown-generation-util/index.js.map +0 -1
- package/lib/model/markdown-generation-util/method-declaration-util.d.ts +0 -4
- package/lib/model/markdown-generation-util/method-declaration-util.js +0 -115
- package/lib/model/markdown-generation-util/method-declaration-util.js.map +0 -1
- package/lib/model/markdown-generation-util/type-declaration-util.d.ts +0 -3
- package/lib/model/markdown-generation-util/type-declaration-util.js +0 -82
- package/lib/model/markdown-generation-util/type-declaration-util.js.map +0 -1
- package/lib/model/markdown-home-file.d.ts +0 -11
- package/lib/model/markdown-home-file.js +0 -54
- package/lib/model/markdown-home-file.js.map +0 -1
- package/lib/model/markdown-type-file.d.ts +0 -26
- package/lib/model/markdown-type-file.js +0 -134
- package/lib/model/markdown-type-file.js.map +0 -1
- package/lib/model/openapi/apex-doc-types.d.ts +0 -19
- package/lib/model/openapi/apex-doc-types.js +0 -5
- package/lib/model/openapi/apex-doc-types.js.map +0 -1
- package/lib/model/openapi/open-api-types.d.ts +0 -93
- package/lib/model/openapi/open-api-types.js +0 -3
- package/lib/model/openapi/open-api-types.js.map +0 -1
- package/lib/model/openapi/open-api.d.ts +0 -16
- package/lib/model/openapi/open-api.js +0 -34
- package/lib/model/openapi/open-api.js.map +0 -1
- package/lib/model/openapi/openapi-type-file.d.ts +0 -7
- package/lib/model/openapi/openapi-type-file.js +0 -17
- package/lib/model/openapi/openapi-type-file.js.map +0 -1
- package/lib/model/outputFile.d.ts +0 -10
- package/lib/model/outputFile.js +0 -29
- package/lib/model/outputFile.js.map +0 -1
- package/lib/model/types-repository.d.ts +0 -16
- package/lib/model/types-repository.js +0 -54
- package/lib/model/types-repository.js.map +0 -1
- package/lib/service/apex-file-reader.d.ts +0 -14
- package/lib/service/apex-file-reader.js +0 -46
- package/lib/service/apex-file-reader.js.map +0 -1
- package/lib/service/file-system.d.ts +0 -14
- package/lib/service/file-system.js +0 -25
- package/lib/service/file-system.js.map +0 -1
- package/lib/service/file-writer.d.ts +0 -6
- package/lib/service/file-writer.js +0 -34
- package/lib/service/file-writer.js.map +0 -1
- package/lib/service/manifest-factory.d.ts +0 -10
- package/lib/service/manifest-factory.js +0 -14
- package/lib/service/manifest-factory.js.map +0 -1
- package/lib/service/metadata-processor.d.ts +0 -3
- package/lib/service/metadata-processor.js +0 -17
- package/lib/service/metadata-processor.js.map +0 -1
- package/lib/service/parser.d.ts +0 -21
- package/lib/service/parser.js +0 -135
- package/lib/service/parser.js.map +0 -1
- package/lib/service/state.d.ts +0 -9
- package/lib/service/state.js +0 -20
- package/lib/service/state.js.map +0 -1
- package/lib/service/walkers/class-walker.d.ts +0 -4
- package/lib/service/walkers/class-walker.js +0 -33
- package/lib/service/walkers/class-walker.js.map +0 -1
- package/lib/service/walkers/enum-walker.d.ts +0 -4
- package/lib/service/walkers/enum-walker.js +0 -11
- package/lib/service/walkers/enum-walker.js.map +0 -1
- package/lib/service/walkers/interface-walker.d.ts +0 -4
- package/lib/service/walkers/interface-walker.js +0 -15
- package/lib/service/walkers/interface-walker.js.map +0 -1
- package/lib/service/walkers/walker-factory.d.ts +0 -5
- package/lib/service/walkers/walker-factory.js +0 -21
- package/lib/service/walkers/walker-factory.js.map +0 -1
- package/lib/service/walkers/walker.d.ts +0 -19
- package/lib/service/walkers/walker.js +0 -17
- package/lib/service/walkers/walker.js.map +0 -1
- package/lib/settings.d.ts +0 -64
- package/lib/settings.js +0 -89
- package/lib/settings.js.map +0 -1
- package/lib/test-helpers/AnnotationBuilder.d.ts +0 -12
- package/lib/test-helpers/AnnotationBuilder.js +0 -31
- package/lib/test-helpers/AnnotationBuilder.js.map +0 -1
- package/lib/test-helpers/ClassMirrorBuilder.d.ts +0 -18
- package/lib/test-helpers/ClassMirrorBuilder.js +0 -54
- package/lib/test-helpers/ClassMirrorBuilder.js.map +0 -1
- package/lib/test-helpers/DocCommentAnnotationBuilder.d.ts +0 -8
- package/lib/test-helpers/DocCommentAnnotationBuilder.js +0 -26
- package/lib/test-helpers/DocCommentAnnotationBuilder.js.map +0 -1
- package/lib/test-helpers/DocCommentBuilder.d.ts +0 -12
- package/lib/test-helpers/DocCommentBuilder.js +0 -38
- package/lib/test-helpers/DocCommentBuilder.js.map +0 -1
- package/lib/test-helpers/FieldMirrorBuilder.d.ts +0 -18
- package/lib/test-helpers/FieldMirrorBuilder.js +0 -54
- package/lib/test-helpers/FieldMirrorBuilder.js.map +0 -1
- package/lib/test-helpers/MethodMirrorBuilder.d.ts +0 -10
- package/lib/test-helpers/MethodMirrorBuilder.js +0 -37
- package/lib/test-helpers/MethodMirrorBuilder.js.map +0 -1
- package/lib/test-helpers/SettingsBuilder.d.ts +0 -8
- package/lib/test-helpers/SettingsBuilder.js +0 -27
- package/lib/test-helpers/SettingsBuilder.js.map +0 -1
- package/lib/transpiler/factory.d.ts +0 -6
- package/lib/transpiler/factory.js +0 -32
- package/lib/transpiler/factory.js.map +0 -1
- package/lib/transpiler/file-container.d.ts +0 -6
- package/lib/transpiler/file-container.js +0 -16
- package/lib/transpiler/file-container.js.map +0 -1
- package/lib/transpiler/generator-choices.d.ts +0 -1
- package/lib/transpiler/generator-choices.js +0 -3
- package/lib/transpiler/generator-choices.js.map +0 -1
- package/lib/transpiler/markdown/class-file-generatorHelper.d.ts +0 -8
- package/lib/transpiler/markdown/class-file-generatorHelper.js +0 -56
- package/lib/transpiler/markdown/class-file-generatorHelper.js.map +0 -1
- package/lib/transpiler/markdown/docsify/docsify-docs-processor.d.ts +0 -6
- package/lib/transpiler/markdown/docsify/docsify-docs-processor.js +0 -13
- package/lib/transpiler/markdown/docsify/docsify-docs-processor.js.map +0 -1
- package/lib/transpiler/markdown/jekyll/jekyll-docsProcessor.d.ts +0 -11
- package/lib/transpiler/markdown/jekyll/jekyll-docsProcessor.js +0 -51
- package/lib/transpiler/markdown/jekyll/jekyll-docsProcessor.js.map +0 -1
- package/lib/transpiler/markdown/markdown-transpiler-base.d.ts +0 -11
- package/lib/transpiler/markdown/markdown-transpiler-base.js +0 -24
- package/lib/transpiler/markdown/markdown-transpiler-base.js.map +0 -1
- package/lib/transpiler/markdown/plain-markdown/plain-docsProcessor.d.ts +0 -6
- package/lib/transpiler/markdown/plain-markdown/plain-docsProcessor.js +0 -14
- package/lib/transpiler/markdown/plain-markdown/plain-docsProcessor.js.map +0 -1
- package/lib/transpiler/openapi/open-api-docs-processor.d.ts +0 -13
- package/lib/transpiler/openapi/open-api-docs-processor.js +0 -75
- package/lib/transpiler/openapi/open-api-docs-processor.js.map +0 -1
- package/lib/transpiler/openapi/parsers/Builder.d.ts +0 -16
- package/lib/transpiler/openapi/parsers/Builder.js +0 -30
- package/lib/transpiler/openapi/parsers/Builder.js.map +0 -1
- package/lib/transpiler/openapi/parsers/MethodParser.d.ts +0 -20
- package/lib/transpiler/openapi/parsers/MethodParser.js +0 -167
- package/lib/transpiler/openapi/parsers/MethodParser.js.map +0 -1
- package/lib/transpiler/openapi/parsers/ParameterObjectBuilder.d.ts +0 -7
- package/lib/transpiler/openapi/parsers/ParameterObjectBuilder.js +0 -11
- package/lib/transpiler/openapi/parsers/ParameterObjectBuilder.js.map +0 -1
- package/lib/transpiler/openapi/parsers/ReferenceBuilder.d.ts +0 -39
- package/lib/transpiler/openapi/parsers/ReferenceBuilder.js +0 -226
- package/lib/transpiler/openapi/parsers/ReferenceBuilder.js.map +0 -1
- package/lib/transpiler/openapi/parsers/RequestBodyBuilder.d.ts +0 -10
- package/lib/transpiler/openapi/parsers/RequestBodyBuilder.js +0 -20
- package/lib/transpiler/openapi/parsers/RequestBodyBuilder.js.map +0 -1
- package/lib/transpiler/openapi/parsers/ResponsesBuilder.d.ts +0 -7
- package/lib/transpiler/openapi/parsers/ResponsesBuilder.js +0 -22
- package/lib/transpiler/openapi/parsers/ResponsesBuilder.js.map +0 -1
- package/lib/transpiler/processor-type-transpiler.d.ts +0 -10
- package/lib/transpiler/processor-type-transpiler.js +0 -9
- package/lib/transpiler/processor-type-transpiler.js.map +0 -1
- package/lib/transpiler/transpiler.d.ts +0 -5
- package/lib/transpiler/transpiler.js +0 -27
- package/lib/transpiler/transpiler.js.map +0 -1
- package/lib/util/error-logger.d.ts +0 -8
- package/lib/util/error-logger.js +0 -90
- package/lib/util/error-logger.js.map +0 -1
- package/lib/util/logger.d.ts +0 -21
- package/lib/util/logger.js +0 -58
- package/lib/util/logger.js.map +0 -1
- package/lib/util/string-utils.d.ts +0 -2
- package/lib/util/string-utils.js +0 -15
- package/lib/util/string-utils.js.map +0 -1
- package/src/model/__tests__/manifest-diff.spec.ts +0 -147
- package/src/model/apex-bundle.ts +0 -3
- package/src/model/inheritance.ts +0 -7
- package/src/model/manifest-diff.ts +0 -94
- package/src/model/manifest.ts +0 -74
- package/src/model/markdown-file.ts +0 -121
- package/src/model/markdown-generation-util/doc-comment-annotation-util.ts +0 -50
- package/src/model/markdown-generation-util/field-declaration-util.ts +0 -71
- package/src/model/markdown-generation-util/index.ts +0 -3
- package/src/model/markdown-generation-util/method-declaration-util.ts +0 -166
- package/src/model/markdown-generation-util/type-declaration-util.ts +0 -91
- package/src/model/markdown-home-file.ts +0 -58
- package/src/model/markdown-type-file.ts +0 -165
- package/src/model/openapi/openapi-type-file.ts +0 -14
- package/src/model/outputFile.ts +0 -29
- package/src/service/__tests__/apex-file-reader.spec.ts +0 -92
- package/src/service/apex-file-reader.ts +0 -51
- package/src/service/file-system.ts +0 -33
- package/src/service/file-writer.ts +0 -34
- package/src/service/metadata-processor.ts +0 -16
- package/src/service/state.ts +0 -24
- package/src/service/walkers/class-walker.ts +0 -30
- package/src/service/walkers/enum-walker.ts +0 -7
- package/src/service/walkers/interface-walker.ts +0 -12
- package/src/service/walkers/walker-factory.ts +0 -19
- package/src/service/walkers/walker.ts +0 -42
- package/src/settings.ts +0 -147
- package/src/transpiler/factory.ts +0 -33
- package/src/transpiler/file-container.ts +0 -13
- package/src/transpiler/generator-choices.ts +0 -1
- package/src/transpiler/markdown/class-file-generatorHelper.ts +0 -58
- package/src/transpiler/markdown/docsify/docsify-docs-processor.ts +0 -12
- package/src/transpiler/markdown/jekyll/jekyll-docsProcessor.ts +0 -50
- package/src/transpiler/markdown/markdown-transpiler-base.ts +0 -28
- package/src/transpiler/markdown/plain-markdown/plain-docsProcessor.ts +0 -12
- package/src/transpiler/processor-type-transpiler.ts +0 -18
- /package/src/{model/__tests__ → core/__test__}/manifest.spec.ts +0 -0
- /package/src/{model → core}/openapi/__tests__/open-api.spec.ts +0 -0
- /package/src/{model → core}/openapi/apex-doc-types.ts +0 -0
- /package/src/{model → core/openapi}/apex-type-wrappers/ClassMirrorWrapper.ts +0 -0
- /package/src/{model → core/openapi}/apex-type-wrappers/MethodMirrorWrapper.ts +0 -0
- /package/src/{model → core}/openapi/open-api.ts +0 -0
|
@@ -0,0 +1,60 @@
|
|
|
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 { Logger } from '#utils/logger';
|
|
6
|
+
import ErrorLogger from '#utils/error-logger';
|
|
7
|
+
import { reflect, ReflectionResult } from '@cparra/apex-reflection';
|
|
8
|
+
import Manifest from '../../core/manifest';
|
|
9
|
+
import { PageData, UnparsedSourceFile, UserDefinedOpenApiConfig } from '../../core/shared/types';
|
|
10
|
+
import { OpenApiDocsProcessor } from '../../core/openapi/open-api-docs-processor';
|
|
11
|
+
import { writeFiles } from '../file-writer';
|
|
12
|
+
import { pipe } from 'fp-ts/function';
|
|
13
|
+
import * as TE from 'fp-ts/TaskEither';
|
|
14
|
+
|
|
15
|
+
export default function openApi(fileBodies: UnparsedSourceFile[], config: UserDefinedOpenApiConfig) {
|
|
16
|
+
const manifest = createManifest(new RawBodyParser(fileBodies), reflectionWithLogger);
|
|
17
|
+
TypesRepository.getInstance().populateAll(manifest.types);
|
|
18
|
+
const filteredTypes = filterByScopes(manifest);
|
|
19
|
+
const processor = new OpenApiDocsProcessor();
|
|
20
|
+
Transpiler.generate(filteredTypes, processor);
|
|
21
|
+
const generatedFiles = processor.fileBuilder().files();
|
|
22
|
+
|
|
23
|
+
pipe(
|
|
24
|
+
writeFiles(generatedFiles, config.targetDir, (file: PageData) => {
|
|
25
|
+
Logger.logSingle(`${file.outputDocPath} processed.`, 'green');
|
|
26
|
+
}),
|
|
27
|
+
TE.mapError((error) => Logger.error(error)),
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
// Logs any errors that the types might have in their doc comment's error field
|
|
31
|
+
ErrorLogger.logErrors(filteredTypes);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function reflectionWithLogger(apexBundle: UnparsedSourceFile): ReflectionResult {
|
|
35
|
+
const result = reflect(apexBundle.content);
|
|
36
|
+
if (result.error) {
|
|
37
|
+
Logger.error(`${apexBundle.filePath} - Parsing error ${result.error?.message}`);
|
|
38
|
+
}
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function filterByScopes(manifest: Manifest) {
|
|
43
|
+
// If we are dealing with an OpenApi generator, we ignore the passed in access modifiers, and instead
|
|
44
|
+
// we only keep classes annotated as @RestResource
|
|
45
|
+
const filteredTypes = manifest.filteredByAccessModifierAndAnnotations([
|
|
46
|
+
'restresource',
|
|
47
|
+
'httpdelete',
|
|
48
|
+
'httpget',
|
|
49
|
+
'httppatch',
|
|
50
|
+
'httppost',
|
|
51
|
+
'httpput',
|
|
52
|
+
]);
|
|
53
|
+
const filteredLogMessage = `Filtered ${
|
|
54
|
+
manifest.types.length - filteredTypes.length
|
|
55
|
+
} file(s), only keeping classes annotated as @RestResource.`;
|
|
56
|
+
|
|
57
|
+
Logger.logSingle(filteredLogMessage, 'green');
|
|
58
|
+
Logger.logSingle(`Creating documentation for ${filteredTypes.length} file(s)`, 'green');
|
|
59
|
+
return filteredTypes;
|
|
60
|
+
}
|
package/src/cli/args.ts
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
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.') // TODO: Add OpenApi specific options
|
|
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
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
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
|
+
},
|
|
26
|
+
defaultGroupName: {
|
|
27
|
+
type: 'string',
|
|
28
|
+
default: defaults.defaultGroupName,
|
|
29
|
+
describe: 'Defines the @group name to be used when a file does not specify it.',
|
|
30
|
+
},
|
|
31
|
+
namespace: {
|
|
32
|
+
type: 'string',
|
|
33
|
+
describe:
|
|
34
|
+
'The package namespace, if any. If this value is provided the namespace will be added as a prefix to all of the parsed files. ' +
|
|
35
|
+
"If generating an OpenApi definition, it will be added to the file's Server Url.",
|
|
36
|
+
},
|
|
37
|
+
sortMembersAlphabetically: {
|
|
38
|
+
type: 'boolean',
|
|
39
|
+
describe: 'Whether to sort members alphabetically.',
|
|
40
|
+
default: defaults.sortMembersAlphabetically,
|
|
41
|
+
},
|
|
42
|
+
includeMetadata: {
|
|
43
|
+
type: 'boolean',
|
|
44
|
+
describe: "Whether to include the file's meta.xml information: Whether it is active and and the API version",
|
|
45
|
+
default: defaults.includeMetadata,
|
|
46
|
+
},
|
|
47
|
+
linkingStrategy: {
|
|
48
|
+
type: 'string',
|
|
49
|
+
describe: 'The strategy to use when linking to other documentation pages.',
|
|
50
|
+
choices: ['relative', 'no-link', 'none'],
|
|
51
|
+
default: defaults.linkingStrategy,
|
|
52
|
+
},
|
|
53
|
+
};
|
package/src/cli/generate.ts
CHANGED
|
@@ -1,137 +1,16 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import * as yargs from 'yargs';
|
|
3
|
-
|
|
4
|
-
import { Settings } from '../settings';
|
|
5
2
|
import { Apexdocs } from '../application/Apexdocs';
|
|
6
|
-
import {
|
|
7
|
-
import { cosmiconfig } from 'cosmiconfig';
|
|
8
|
-
|
|
9
|
-
const result = cosmiconfig('apexdocs').search();
|
|
10
|
-
result.then((config) => {
|
|
11
|
-
yargs.config(config?.config);
|
|
12
|
-
let argv = yargs.options({
|
|
13
|
-
sourceDir: {
|
|
14
|
-
type: 'string',
|
|
15
|
-
alias: 's',
|
|
16
|
-
demandOption: true,
|
|
17
|
-
describe: 'The directory location which contains your apex .cls classes.',
|
|
18
|
-
},
|
|
19
|
-
targetDir: {
|
|
20
|
-
type: 'string',
|
|
21
|
-
alias: 't',
|
|
22
|
-
default: './docs/',
|
|
23
|
-
describe: 'The directory location where documentation will be generated to.',
|
|
24
|
-
},
|
|
25
|
-
recursive: {
|
|
26
|
-
type: 'boolean',
|
|
27
|
-
alias: 'r',
|
|
28
|
-
default: true,
|
|
29
|
-
describe: 'Whether .cls classes will be searched for recursively in the directory provided.',
|
|
30
|
-
},
|
|
31
|
-
scope: {
|
|
32
|
-
type: 'array',
|
|
33
|
-
alias: 'p',
|
|
34
|
-
default: ['global'],
|
|
35
|
-
describe:
|
|
36
|
-
'A list of scopes to document. Values should be separated by a space, e.g --scope global public namespaceaccessible. ' +
|
|
37
|
-
'Annotations are supported and should be passed lowercased and without the @ symbol, e.g. namespaceaccessible auraenabled. ' +
|
|
38
|
-
'Note that this setting is ignored if generating an OpenApi REST specification since that looks for classes annotated with @RestResource.',
|
|
39
|
-
},
|
|
40
|
-
targetGenerator: {
|
|
41
|
-
type: 'string',
|
|
42
|
-
alias: 'g',
|
|
43
|
-
default: 'jekyll',
|
|
44
|
-
choices: ['jekyll', 'docsify', 'plain-markdown', 'openapi'],
|
|
45
|
-
describe:
|
|
46
|
-
'Define the static file generator for which the documents will be created. ' +
|
|
47
|
-
'Currently supports jekyll, docsify, plain markdown, and OpenAPI v3.1.0.',
|
|
48
|
-
},
|
|
49
|
-
indexOnly: {
|
|
50
|
-
type: 'boolean',
|
|
51
|
-
default: false,
|
|
52
|
-
describe: 'Defines whether only the index file should be generated.',
|
|
53
|
-
},
|
|
54
|
-
defaultGroupName: {
|
|
55
|
-
type: 'string',
|
|
56
|
-
default: 'Miscellaneous',
|
|
57
|
-
describe: 'Defines the @group name to be used when a file does not specify it.',
|
|
58
|
-
},
|
|
59
|
-
sanitizeHtml: {
|
|
60
|
-
type: 'boolean',
|
|
61
|
-
default: true,
|
|
62
|
-
describe:
|
|
63
|
-
'When on, any special character within your ApexDocs is converted into its HTML code representation. ' +
|
|
64
|
-
'This is specially useful when generic objects are described within the docs, e.g. "List< Foo>", "Map<Foo, Bar>" ' +
|
|
65
|
-
'because otherwise the content within < and > would be treated as HTML tags and not shown in the output. ' +
|
|
66
|
-
'Content in @example blocks are never sanitized.',
|
|
67
|
-
},
|
|
68
|
-
openApiTitle: {
|
|
69
|
-
type: 'string',
|
|
70
|
-
default: 'Apex REST Api',
|
|
71
|
-
describe: 'If using "openapi" as the target generator, this allows you to specify the OpenApi title value.',
|
|
72
|
-
},
|
|
73
|
-
title: {
|
|
74
|
-
type: 'string',
|
|
75
|
-
describe: "If this allows you to specify the title of the generated documentation's home file.",
|
|
76
|
-
default: 'Classes',
|
|
77
|
-
},
|
|
78
|
-
namespace: {
|
|
79
|
-
type: 'string',
|
|
80
|
-
describe:
|
|
81
|
-
'The package namespace, if any. If this value is provided the namespace will be added as a prefix to all of the parsed files. ' +
|
|
82
|
-
"If generating an OpenApi definition, it will be added to the file's Server Url.",
|
|
83
|
-
},
|
|
84
|
-
openApiFileName: {
|
|
85
|
-
type: 'string',
|
|
86
|
-
describe: 'If using "openapi" as the target generator, this allows you to specify the name of the output file.',
|
|
87
|
-
default: 'openapi',
|
|
88
|
-
},
|
|
89
|
-
sortMembersAlphabetically: {
|
|
90
|
-
type: 'boolean',
|
|
91
|
-
describe: 'Whether to sort members alphabetically.',
|
|
92
|
-
default: false,
|
|
93
|
-
},
|
|
94
|
-
includeMetadata: {
|
|
95
|
-
type: 'boolean',
|
|
96
|
-
describe: "Whether to include the file's meta.xml information: Whether it is active and and the API version",
|
|
97
|
-
default: false,
|
|
98
|
-
},
|
|
99
|
-
documentationRootDir: {
|
|
100
|
-
type: 'string',
|
|
101
|
-
describe:
|
|
102
|
-
'Allows you to specify the root documentation directory where the files are being generated. This can be helpful when embedding the generated docs into an existing site so that the links are generated correctly.',
|
|
103
|
-
},
|
|
104
|
-
}).argv;
|
|
105
|
-
|
|
106
|
-
if (config) {
|
|
107
|
-
argv = { ...config.config, ...argv };
|
|
108
|
-
}
|
|
3
|
+
import { extractArgs } from './args';
|
|
109
4
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
recursive: argv.recursive,
|
|
113
|
-
scope: argv.scope,
|
|
114
|
-
outputDir: argv.targetDir,
|
|
115
|
-
targetGenerator: argv.targetGenerator as GeneratorChoices,
|
|
116
|
-
indexOnly: argv.indexOnly,
|
|
117
|
-
defaultGroupName: argv.defaultGroupName,
|
|
118
|
-
sanitizeHtml: argv.sanitizeHtml,
|
|
119
|
-
openApiTitle: argv.openApiTitle,
|
|
120
|
-
title: argv.title,
|
|
121
|
-
namespace: argv.namespace,
|
|
122
|
-
openApiFileName: argv.openApiFileName,
|
|
123
|
-
sortMembersAlphabetically: argv.sortMembersAlphabetically,
|
|
124
|
-
includeMetadata: argv.includeMetadata,
|
|
125
|
-
rootDir: argv.documentationRootDir,
|
|
126
|
-
onAfterProcess: config?.config?.onAfterProcess,
|
|
127
|
-
onBeforeFileWrite: config?.config?.onBeforeFileWrite,
|
|
128
|
-
frontMatterHeader: config?.config?.frontMatterHeader,
|
|
129
|
-
});
|
|
130
|
-
|
|
131
|
-
try {
|
|
132
|
-
Apexdocs.generate();
|
|
133
|
-
} catch (error) {
|
|
5
|
+
function main() {
|
|
6
|
+
function catchError(error: Error) {
|
|
134
7
|
console.error(error);
|
|
135
8
|
process.exit(1);
|
|
136
9
|
}
|
|
137
|
-
|
|
10
|
+
|
|
11
|
+
extractArgs()
|
|
12
|
+
.then((config) => Apexdocs.generate(config).catch(catchError))
|
|
13
|
+
.catch(catchError);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
main();
|
|
@@ -0,0 +1,90 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
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
|
+
}
|