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