@cparra/apexdocs 3.0.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -5
- package/package.json +4 -1
- package/.github/workflows/ci.yaml +0 -22
- package/.github/workflows/close_stale.yml +0 -22
- package/.prettierrc.js +0 -7
- package/__mocks__/chalk.js +0 -12
- package/__mocks__/log-update.js +0 -6
- package/eslint.config.mjs +0 -10
- package/examples/README.md +0 -5
- package/examples/docsify/README.md +0 -17
- package/examples/docsify/apexdocs.config.ts +0 -13
- package/examples/docsify/classes/ASampleClass.cls +0 -57
- package/examples/docsify/classes/CodeControl.cls +0 -19
- package/examples/docsify/classes/SampleClass.cls +0 -95
- package/examples/docsify/classes/SampleInterface.cls +0 -17
- package/examples/docsify/classes/SomeDto.cls +0 -122
- package/examples/docsify/docs/.nojekyll +0 -0
- package/examples/docsify/docs/README.md +0 -25
- package/examples/docsify/docs/_config.yml +0 -1
- package/examples/docsify/docs/index.html +0 -22
- package/examples/docsify/docs/miscellaneous/ASampleClass.md +0 -88
- package/examples/docsify/docs/miscellaneous/CodeControl.md +0 -107
- package/examples/docsify/docs/miscellaneous/SomeDto.md +0 -244
- package/examples/docsify/docs/sample-classes/SampleClass.md +0 -171
- package/examples/docsify/docs/sample-interfaces/SampleInterface.md +0 -36
- package/examples/docsify/package-lock.json +0 -2459
- package/examples/docsify/package.json +0 -14
- package/examples/imported/.forceignore +0 -12
- package/examples/imported/README.md +0 -6
- package/examples/imported/config/project-scratch-def.json +0 -5
- package/examples/imported/docs/index.md +0 -109
- package/examples/imported/docs/miscellaneous/BaseClass.md +0 -13
- package/examples/imported/docs/miscellaneous/MultiInheritanceClass.md +0 -69
- package/examples/imported/docs/miscellaneous/ParentInterface.md +0 -12
- package/examples/imported/docs/miscellaneous/ReferencedEnum.md +0 -5
- package/examples/imported/docs/miscellaneous/SampleException.md +0 -21
- package/examples/imported/docs/miscellaneous/SampleInterface.md +0 -113
- package/examples/imported/docs/miscellaneous/Url.md +0 -308
- package/examples/imported/docs/sample-enums/SampleEnum.md +0 -33
- package/examples/imported/docs/samplegroup/SampleClass.md +0 -167
- package/examples/imported/force-app/classes/BaseClass.cls +0 -3
- package/examples/imported/force-app/classes/MultiInheritanceClass.cls +0 -1
- package/examples/imported/force-app/classes/ParentInterface.cls +0 -3
- package/examples/imported/force-app/classes/ReferencedEnum.cls +0 -3
- package/examples/imported/force-app/classes/SampleClass.cls +0 -72
- package/examples/imported/force-app/classes/SampleEnum.cls +0 -30
- package/examples/imported/force-app/classes/SampleException.cls +0 -17
- package/examples/imported/force-app/classes/SampleInterface.cls +0 -50
- package/examples/imported/force-app/classes/Url.cls +0 -196
- package/examples/imported/package-lock.json +0 -665
- package/examples/imported/package.json +0 -6
- package/examples/imported/scripts/process-docs.mjs +0 -16
- package/examples/imported/sfdx-project.json +0 -12
- package/examples/markdown/.forceignore +0 -12
- package/examples/markdown/README.md +0 -7
- package/examples/markdown/config/project-scratch-def.json +0 -5
- package/examples/markdown/docs/index.md +0 -109
- package/examples/markdown/docs/miscellaneous/BaseClass.md +0 -16
- package/examples/markdown/docs/miscellaneous/MultiInheritanceClass.md +0 -72
- package/examples/markdown/docs/miscellaneous/ParentInterface.md +0 -15
- package/examples/markdown/docs/miscellaneous/ReferencedEnum.md +0 -8
- package/examples/markdown/docs/miscellaneous/SampleException.md +0 -24
- package/examples/markdown/docs/miscellaneous/SampleInterface.md +0 -116
- package/examples/markdown/docs/miscellaneous/Url.md +0 -311
- package/examples/markdown/docs/sample-enums/SampleEnum.md +0 -36
- package/examples/markdown/docs/samplegroup/SampleClass.md +0 -170
- package/examples/markdown/force-app/classes/BaseClass.cls +0 -3
- package/examples/markdown/force-app/classes/MultiInheritanceClass.cls +0 -1
- package/examples/markdown/force-app/classes/ParentInterface.cls +0 -3
- package/examples/markdown/force-app/classes/ReferencedEnum.cls +0 -3
- package/examples/markdown/force-app/classes/SampleClass.cls +0 -72
- package/examples/markdown/force-app/classes/SampleEnum.cls +0 -30
- package/examples/markdown/force-app/classes/SampleException.cls +0 -17
- package/examples/markdown/force-app/classes/SampleInterface.cls +0 -50
- package/examples/markdown/force-app/classes/Url.cls +0 -196
- package/examples/markdown/package-lock.json +0 -665
- package/examples/markdown/package.json +0 -20
- package/examples/markdown/sfdx-project.json +0 -12
- package/examples/markdown-jsconfig/.forceignore +0 -12
- package/examples/markdown-jsconfig/README.md +0 -9
- package/examples/markdown-jsconfig/apexdocs.config.mjs +0 -22
- package/examples/markdown-jsconfig/config/project-scratch-def.json +0 -5
- package/examples/markdown-jsconfig/docs/index.md +0 -12
- package/examples/markdown-jsconfig/docs/miscellaneous/Url.md +0 -315
- package/examples/markdown-jsconfig/force-app/classes/Url.cls +0 -196
- package/examples/markdown-jsconfig/package-lock.json +0 -665
- package/examples/markdown-jsconfig/package.json +0 -15
- package/examples/markdown-jsconfig/sfdx-project.json +0 -12
- package/examples/open-api/README.md +0 -5
- package/examples/open-api/config/project-scratch-def.json +0 -13
- package/examples/open-api/docs/openapi.json +0 -14
- package/examples/open-api/force-app/main/default/classes/ChildClass.cls +0 -42
- package/examples/open-api/force-app/main/default/classes/SampleClass.cls +0 -167
- package/examples/open-api/force-app/main/default/restapi/SampleRestResource.cls +0 -195
- package/examples/open-api/force-app/main/default/restapi/SampleRestResourceToSkip.cls +0 -35
- package/examples/open-api/force-app/main/default/restapi/SampleRestResourceWithInnerClass.cls +0 -24
- package/examples/open-api/force-app/main/default/restapi/SampleRestResourceWithoutApexDocs.cls +0 -15
- package/examples/open-api/force-app/main/default/restapi/references/Reference1.cls +0 -9
- package/examples/open-api/force-app/main/default/restapi/references/Reference2.cls +0 -9
- package/examples/open-api/force-app/main/default/restapi/references/Reference3.cls +0 -3
- package/examples/open-api/force-app/main/default/restapi/references/Reference4.cls +0 -3
- package/examples/open-api/force-app/main/default/restapi/references/Reference5.cls +0 -3
- package/examples/open-api/force-app/main/default/restapi/references/Reference6.cls +0 -6
- package/examples/open-api/force-app/main/default/restapi/references/Reference7.cls +0 -3
- package/examples/open-api/package-lock.json +0 -724
- package/examples/open-api/package.json +0 -20
- package/examples/open-api/sfdx-project.json +0 -12
- package/examples/vitepress/.forceignore +0 -12
- package/examples/vitepress/README.md +0 -25
- package/examples/vitepress/apexdocs.config.ts +0 -113
- package/examples/vitepress/config/project-scratch-def.json +0 -13
- package/examples/vitepress/docs/.vitepress/cache/deps/@theme_index.js +0 -259
- package/examples/vitepress/docs/.vitepress/cache/deps/@theme_index.js.map +0 -7
- package/examples/vitepress/docs/.vitepress/cache/deps/_metadata.json +0 -40
- package/examples/vitepress/docs/.vitepress/cache/deps/chunk-574YRH25.js +0 -11474
- package/examples/vitepress/docs/.vitepress/cache/deps/chunk-574YRH25.js.map +0 -7
- package/examples/vitepress/docs/.vitepress/cache/deps/chunk-E5DZZB2I.js +0 -9172
- package/examples/vitepress/docs/.vitepress/cache/deps/chunk-E5DZZB2I.js.map +0 -7
- package/examples/vitepress/docs/.vitepress/cache/deps/package.json +0 -3
- package/examples/vitepress/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js +0 -4339
- package/examples/vitepress/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map +0 -7
- package/examples/vitepress/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js +0 -567
- package/examples/vitepress/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js.map +0 -7
- package/examples/vitepress/docs/.vitepress/cache/deps/vue.js +0 -323
- package/examples/vitepress/docs/.vitepress/cache/deps/vue.js.map +0 -7
- package/examples/vitepress/docs/.vitepress/config.mts +0 -21
- package/examples/vitepress/docs/.vitepress/sidebar.json +0 -119
- package/examples/vitepress/docs/api-examples.md +0 -49
- package/examples/vitepress/docs/index-frontmatter.md +0 -16
- package/examples/vitepress/docs/index.md +0 -56
- package/examples/vitepress/docs/markdown-examples.md +0 -85
- package/examples/vitepress/docs/miscellaneous/BaseClass.md +0 -20
- package/examples/vitepress/docs/miscellaneous/MultiInheritanceClass.md +0 -76
- package/examples/vitepress/docs/miscellaneous/ParentInterface.md +0 -19
- package/examples/vitepress/docs/miscellaneous/ReferencedEnum.md +0 -15
- package/examples/vitepress/docs/miscellaneous/SampleException.md +0 -28
- package/examples/vitepress/docs/miscellaneous/SampleInterface.md +0 -116
- package/examples/vitepress/docs/miscellaneous/Url.md +0 -317
- package/examples/vitepress/docs/sample-enums/SampleEnum.md +0 -40
- package/examples/vitepress/docs/samplegroup/SampleClass.md +0 -174
- package/examples/vitepress/force-app/main/default/classes/BaseClass.cls +0 -3
- package/examples/vitepress/force-app/main/default/classes/MultiInheritanceClass.cls +0 -1
- package/examples/vitepress/force-app/main/default/classes/ParentInterface.cls +0 -3
- package/examples/vitepress/force-app/main/default/classes/ReferencedEnum.cls +0 -5
- package/examples/vitepress/force-app/main/default/classes/Url.cls +0 -198
- package/examples/vitepress/force-app/main/default/classes/feature-a/SampleClass.cls +0 -73
- package/examples/vitepress/force-app/main/default/classes/feature-a/SampleEnum.cls +0 -30
- package/examples/vitepress/force-app/main/default/classes/feature-a/SampleException.cls +0 -17
- package/examples/vitepress/force-app/main/default/classes/feature-a/SampleInterface.cls +0 -46
- package/examples/vitepress/package-lock.json +0 -2574
- package/examples/vitepress/package.json +0 -18
- package/examples/vitepress/sfdx-project.json +0 -12
- package/jest.config.js +0 -10
- package/jest.d.ts +0 -7
- package/src/application/Apexdocs.ts +0 -69
- package/src/application/__tests__/apex-file-reader.spec.ts +0 -128
- package/src/application/apex-file-reader.ts +0 -56
- package/src/application/file-system.ts +0 -69
- package/src/application/file-writer.ts +0 -43
- package/src/application/generators/markdown.ts +0 -45
- package/src/application/generators/openapi.ts +0 -75
- package/src/cli/args.ts +0 -55
- package/src/cli/commands/markdown.ts +0 -56
- package/src/cli/commands/openapi.ts +0 -36
- package/src/cli/generate.ts +0 -32
- package/src/core/__test__/manifest.spec.ts +0 -16
- package/src/core/manifest.ts +0 -90
- package/src/core/markdown/__test__/expect-extensions.ts +0 -32
- package/src/core/markdown/__test__/generating-class-docs.spec.ts +0 -362
- package/src/core/markdown/__test__/generating-docs.spec.ts +0 -378
- package/src/core/markdown/__test__/generating-enum-docs.spec.ts +0 -61
- package/src/core/markdown/__test__/generating-interface-docs.spec.ts +0 -169
- package/src/core/markdown/__test__/generating-reference-guide.spec.ts +0 -196
- package/src/core/markdown/__test__/inheritance-chain.test.ts +0 -54
- package/src/core/markdown/__test__/test-helpers.ts +0 -25
- package/src/core/markdown/adapters/__tests__/documentables.spec.ts +0 -109
- package/src/core/markdown/adapters/__tests__/interface-adapter.spec.ts +0 -150
- package/src/core/markdown/adapters/__tests__/link-generator.spec.ts +0 -130
- package/src/core/markdown/adapters/__tests__/references.spec.ts +0 -136
- package/src/core/markdown/adapters/apex-types.ts +0 -238
- package/src/core/markdown/adapters/documentables.ts +0 -115
- package/src/core/markdown/adapters/fields-and-properties.ts +0 -45
- package/src/core/markdown/adapters/generate-link.ts +0 -82
- package/src/core/markdown/adapters/inline.ts +0 -143
- package/src/core/markdown/adapters/methods-and-constructors.ts +0 -133
- package/src/core/markdown/adapters/reference-guide.ts +0 -37
- package/src/core/markdown/adapters/renderable-bundle.ts +0 -61
- package/src/core/markdown/adapters/renderable-to-page-data.ts +0 -91
- package/src/core/markdown/adapters/type-utils.ts +0 -13
- package/src/core/markdown/adapters/types.d.ts +0 -180
- package/src/core/markdown/generate-docs.ts +0 -210
- package/src/core/markdown/reflection/__test__/filter-scope.spec.ts +0 -290
- package/src/core/markdown/reflection/__test__/helpers.ts +0 -18
- package/src/core/markdown/reflection/__test__/remove-excluded-tags.spec.ts +0 -200
- package/src/core/markdown/reflection/filter-scope.ts +0 -13
- package/src/core/markdown/reflection/inheritance-chain-expanion.ts +0 -22
- package/src/core/markdown/reflection/inheritance-chain.ts +0 -23
- package/src/core/markdown/reflection/inherited-member-expansion.ts +0 -105
- package/src/core/markdown/reflection/reflect-source.ts +0 -123
- package/src/core/markdown/reflection/remove-excluded-tags.ts +0 -168
- package/src/core/markdown/reflection/sort-types-and-members.ts +0 -61
- package/src/core/markdown/templates/class-template.ts +0 -75
- package/src/core/markdown/templates/constructors-partial-template.ts +0 -32
- package/src/core/markdown/templates/documentable-partial-template.ts +0 -26
- package/src/core/markdown/templates/enum-template.ts +0 -12
- package/src/core/markdown/templates/fieldsPartialTemplate.ts +0 -23
- package/src/core/markdown/templates/grouped-members-partial-template.ts +0 -6
- package/src/core/markdown/templates/hookable.ts +0 -7
- package/src/core/markdown/templates/interface-template.ts +0 -16
- package/src/core/markdown/templates/methods-partial-template.ts +0 -43
- package/src/core/markdown/templates/reference-guide.ts +0 -14
- package/src/core/markdown/templates/template.ts +0 -114
- package/src/core/markdown/templates/type-doc-partial.ts +0 -27
- package/src/core/markdown/utils.ts +0 -3
- package/src/core/openApiSettings.ts +0 -41
- package/src/core/openapi/__tests__/manifest-factory.spec.ts +0 -16
- package/src/core/openapi/__tests__/open-api-docs-processor.spec.ts +0 -59
- package/src/core/openapi/__tests__/open-api.spec.ts +0 -22
- package/src/core/openapi/apex-doc-types.ts +0 -26
- package/src/core/openapi/apex-type-wrappers/ClassMirrorWrapper.ts +0 -12
- package/src/core/openapi/apex-type-wrappers/MethodMirrorWrapper.ts +0 -11
- package/src/core/openapi/apex-type-wrappers/__tests__/ClassMirrorWrapper.spec.ts +0 -15
- package/src/core/openapi/file-container.ts +0 -13
- package/src/core/openapi/manifest-factory.ts +0 -16
- package/src/core/openapi/open-api-docs-processor.ts +0 -93
- package/src/core/openapi/open-api-types.ts +0 -119
- package/src/core/openapi/open-api.ts +0 -45
- package/src/core/openapi/openapi-type-file.ts +0 -12
- package/src/core/openapi/parser.ts +0 -163
- package/src/core/openapi/parsers/Builder.ts +0 -40
- package/src/core/openapi/parsers/MethodParser.ts +0 -249
- package/src/core/openapi/parsers/ParameterObjectBuilder.ts +0 -13
- package/src/core/openapi/parsers/ReferenceBuilder.ts +0 -299
- package/src/core/openapi/parsers/RequestBodyBuilder.ts +0 -19
- package/src/core/openapi/parsers/ResponsesBuilder.ts +0 -21
- package/src/core/openapi/parsers/__tests__/MethodParser.spec.ts +0 -44
- package/src/core/openapi/parsers/__tests__/ParameterObjectBuilder.spec.ts +0 -68
- package/src/core/openapi/parsers/__tests__/ReferenceBuilder.spec.ts +0 -751
- package/src/core/openapi/parsers/__tests__/RequestBodyBuilder.spec.ts +0 -64
- package/src/core/openapi/parsers/__tests__/ResponsesBuilder.spec.ts +0 -55
- package/src/core/openapi/transpiler.ts +0 -17
- package/src/core/openapi/types-repository.ts +0 -54
- package/src/core/parse-apex-metadata.ts +0 -30
- package/src/core/shared/types.d.ts +0 -150
- package/src/core/shared/utils.ts +0 -5
- package/src/defaults.ts +0 -21
- package/src/index.ts +0 -110
- package/src/test-helpers/AnnotationBuilder.ts +0 -29
- package/src/test-helpers/ClassMirrorBuilder.ts +0 -69
- package/src/test-helpers/DocCommentAnnotationBuilder.ts +0 -24
- package/src/test-helpers/DocCommentBuilder.ts +0 -36
- package/src/test-helpers/FieldMirrorBuilder.ts +0 -59
- package/src/test-helpers/InterfaceMirrorBuilder.ts +0 -39
- package/src/test-helpers/MethodMirrorBuilder.ts +0 -77
- package/src/test-helpers/SettingsBuilder.ts +0 -17
- package/src/util/error-logger.ts +0 -92
- package/src/util/fp.ts +0 -3
- package/src/util/logger.ts +0 -51
- package/src/util/string-utils.ts +0 -7
- package/tsconfig.json +0 -25
- package/tslint.json +0 -6
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
import { pipe } from 'fp-ts/function';
|
|
2
|
-
import * as TE from 'fp-ts/TaskEither';
|
|
3
|
-
import yaml from 'js-yaml';
|
|
4
|
-
|
|
5
|
-
import { apply } from '#utils/fp';
|
|
6
|
-
import {
|
|
7
|
-
DocPageData,
|
|
8
|
-
DocumentationBundle,
|
|
9
|
-
Frontmatter,
|
|
10
|
-
PostHookDocumentationBundle,
|
|
11
|
-
ReferenceGuidePageData,
|
|
12
|
-
UnparsedSourceFile,
|
|
13
|
-
TransformDocPage,
|
|
14
|
-
TransformDocs,
|
|
15
|
-
TransformReferenceGuide,
|
|
16
|
-
UserDefinedMarkdownConfig,
|
|
17
|
-
DocPageReference,
|
|
18
|
-
TransformReference,
|
|
19
|
-
ParsedFile,
|
|
20
|
-
} from '../shared/types';
|
|
21
|
-
import { parsedFilesToRenderableBundle } from './adapters/renderable-bundle';
|
|
22
|
-
import { reflectBundles } from './reflection/reflect-source';
|
|
23
|
-
import { addInheritanceChainToTypes } from './reflection/inheritance-chain-expanion';
|
|
24
|
-
import { addInheritedMembersToTypes } from './reflection/inherited-member-expansion';
|
|
25
|
-
import { convertToDocumentationBundle } from './adapters/renderable-to-page-data';
|
|
26
|
-
import { filterScope } from './reflection/filter-scope';
|
|
27
|
-
import { Template } from './templates/template';
|
|
28
|
-
import { hookableTemplate } from './templates/hookable';
|
|
29
|
-
import { sortTypesAndMembers } from './reflection/sort-types-and-members';
|
|
30
|
-
import { isSkip } from '../shared/utils';
|
|
31
|
-
import { parsedFilesToReferenceGuide } from './adapters/reference-guide';
|
|
32
|
-
import { removeExcludedTags } from './reflection/remove-excluded-tags';
|
|
33
|
-
|
|
34
|
-
export type MarkdownGeneratorConfig = Omit<
|
|
35
|
-
UserDefinedMarkdownConfig,
|
|
36
|
-
'sourceDir' | 'targetGenerator' | 'includeMetadata'
|
|
37
|
-
> & {
|
|
38
|
-
referenceGuideTemplate: string;
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
export class HookError {
|
|
42
|
-
readonly _tag = 'HookError';
|
|
43
|
-
|
|
44
|
-
constructor(public error: unknown) {}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export function generateDocs(apexBundles: UnparsedSourceFile[], config: MarkdownGeneratorConfig) {
|
|
48
|
-
const filterOutOfScope = apply(filterScope, config.scope);
|
|
49
|
-
const convertToReferences = apply(parsedFilesToReferenceGuide, config);
|
|
50
|
-
const convertToRenderableBundle = apply(parsedFilesToRenderableBundle, config);
|
|
51
|
-
const convertToDocumentationBundleForTemplate = apply(
|
|
52
|
-
convertToDocumentationBundle,
|
|
53
|
-
config.referenceGuideTitle,
|
|
54
|
-
config.referenceGuideTemplate,
|
|
55
|
-
);
|
|
56
|
-
const sort = apply(sortTypesAndMembers, config.sortAlphabetically);
|
|
57
|
-
const removeExcluded = apply(removeExcludedTags, config.excludeTags);
|
|
58
|
-
|
|
59
|
-
return pipe(
|
|
60
|
-
apexBundles,
|
|
61
|
-
reflectBundles,
|
|
62
|
-
TE.map(filterOutOfScope),
|
|
63
|
-
TE.map(addInheritedMembersToTypes),
|
|
64
|
-
TE.map(addInheritanceChainToTypes),
|
|
65
|
-
TE.map(sort),
|
|
66
|
-
TE.map(removeExcluded),
|
|
67
|
-
TE.bindTo('parsedFiles'),
|
|
68
|
-
TE.bind('references', ({ parsedFiles }) => TE.right(convertToReferences(parsedFiles))),
|
|
69
|
-
TE.flatMap(({ parsedFiles, references }) => transformReferenceHook(config)({ references, parsedFiles })),
|
|
70
|
-
TE.map(({ parsedFiles, references }) => convertToRenderableBundle(parsedFiles, references)),
|
|
71
|
-
TE.map(convertToDocumentationBundleForTemplate),
|
|
72
|
-
TE.flatMap(transformDocumentationBundleHook(config)),
|
|
73
|
-
TE.map(postHookCompile),
|
|
74
|
-
);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
function transformReferenceHook(config: MarkdownGeneratorConfig) {
|
|
78
|
-
async function _execute(
|
|
79
|
-
references: Record<string, DocPageReference>,
|
|
80
|
-
parsedFiles: ParsedFile[],
|
|
81
|
-
transformReference?: TransformReference | undefined,
|
|
82
|
-
): Promise<{
|
|
83
|
-
references: Record<string, DocPageReference>;
|
|
84
|
-
parsedFiles: ParsedFile[];
|
|
85
|
-
}> {
|
|
86
|
-
return {
|
|
87
|
-
references: await execTransformReferenceHook(Object.values(references), transformReference),
|
|
88
|
-
parsedFiles,
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
return ({ references, parsedFiles }: { references: Record<string, DocPageReference>; parsedFiles: ParsedFile[] }) =>
|
|
93
|
-
TE.tryCatch(
|
|
94
|
-
() => _execute(references, parsedFiles, config.transformReference),
|
|
95
|
-
(error) => new HookError(error),
|
|
96
|
-
);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
function transformDocumentationBundleHook(config: MarkdownGeneratorConfig) {
|
|
100
|
-
return (bundle: DocumentationBundle) =>
|
|
101
|
-
TE.tryCatch(
|
|
102
|
-
() => documentationBundleHook(bundle, config),
|
|
103
|
-
(error) => new HookError(error),
|
|
104
|
-
);
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
// Configurable hooks
|
|
108
|
-
function passThroughHook<T>(value: T): T {
|
|
109
|
-
return value;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
const execTransformReferenceHook = async (
|
|
113
|
-
references: DocPageReference[],
|
|
114
|
-
hook: TransformReference = passThroughHook,
|
|
115
|
-
): Promise<Record<string, DocPageReference>> => {
|
|
116
|
-
const hooked = references.map<Promise<DocPageReference>>(async (reference) => {
|
|
117
|
-
const hookedResult = await hook(reference);
|
|
118
|
-
return {
|
|
119
|
-
...reference,
|
|
120
|
-
...hookedResult,
|
|
121
|
-
};
|
|
122
|
-
});
|
|
123
|
-
const awaited = await Promise.all(hooked);
|
|
124
|
-
|
|
125
|
-
return awaited.reduce<Record<string, DocPageReference>>((acc, reference) => {
|
|
126
|
-
acc[reference.source.name] = reference;
|
|
127
|
-
return acc;
|
|
128
|
-
}, {});
|
|
129
|
-
};
|
|
130
|
-
|
|
131
|
-
const documentationBundleHook = async (
|
|
132
|
-
bundle: DocumentationBundle,
|
|
133
|
-
config: MarkdownGeneratorConfig,
|
|
134
|
-
): Promise<PostHookDocumentationBundle> => {
|
|
135
|
-
return {
|
|
136
|
-
referenceGuide: await transformReferenceGuide(bundle.referenceGuide, config.transformReferenceGuide),
|
|
137
|
-
docs: await transformDocs(bundle.docs, config.transformDocs, config.transformDocPage),
|
|
138
|
-
};
|
|
139
|
-
};
|
|
140
|
-
|
|
141
|
-
const transformReferenceGuide = async (
|
|
142
|
-
referenceGuide: ReferenceGuidePageData,
|
|
143
|
-
hook: TransformReferenceGuide = passThroughHook,
|
|
144
|
-
) => {
|
|
145
|
-
const result = await hook(referenceGuide);
|
|
146
|
-
if (isSkip(result)) {
|
|
147
|
-
return result;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
return {
|
|
151
|
-
...referenceGuide,
|
|
152
|
-
...(await hook(referenceGuide)),
|
|
153
|
-
};
|
|
154
|
-
};
|
|
155
|
-
|
|
156
|
-
const transformDocs = async (
|
|
157
|
-
docs: DocPageData[],
|
|
158
|
-
transformDocsHook: TransformDocs = passThroughHook,
|
|
159
|
-
transformDocPageHook: TransformDocPage = passThroughHook,
|
|
160
|
-
): Promise<Awaited<DocPageData[]>> => {
|
|
161
|
-
const transformed = await transformDocsHook(docs);
|
|
162
|
-
return Promise.all(transformed.map((doc) => transformDocPage(doc, transformDocPageHook)));
|
|
163
|
-
};
|
|
164
|
-
|
|
165
|
-
const transformDocPage = async (doc: DocPageData, hook: TransformDocPage = passThroughHook) => {
|
|
166
|
-
return {
|
|
167
|
-
...doc,
|
|
168
|
-
...(await hook(doc)),
|
|
169
|
-
};
|
|
170
|
-
};
|
|
171
|
-
|
|
172
|
-
function postHookCompile(bundle: PostHookDocumentationBundle) {
|
|
173
|
-
return {
|
|
174
|
-
referenceGuide: isSkip(bundle.referenceGuide)
|
|
175
|
-
? bundle.referenceGuide
|
|
176
|
-
: {
|
|
177
|
-
...bundle.referenceGuide,
|
|
178
|
-
content: Template.getInstance().compile({
|
|
179
|
-
source: {
|
|
180
|
-
frontmatter: toFrontmatterString(bundle.referenceGuide.frontmatter),
|
|
181
|
-
content: bundle.referenceGuide.content,
|
|
182
|
-
},
|
|
183
|
-
template: hookableTemplate,
|
|
184
|
-
}),
|
|
185
|
-
},
|
|
186
|
-
docs: bundle.docs.map((doc) => ({
|
|
187
|
-
...doc,
|
|
188
|
-
content: Template.getInstance().compile({
|
|
189
|
-
source: {
|
|
190
|
-
frontmatter: toFrontmatterString(doc.frontmatter),
|
|
191
|
-
content: doc.content,
|
|
192
|
-
},
|
|
193
|
-
template: hookableTemplate,
|
|
194
|
-
}),
|
|
195
|
-
})),
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
function toFrontmatterString(frontmatter: Frontmatter): string {
|
|
200
|
-
if (typeof frontmatter === 'string') {
|
|
201
|
-
return frontmatter;
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
if (!frontmatter) {
|
|
205
|
-
return '';
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
const yamlString = yaml.dump(frontmatter);
|
|
209
|
-
return `---\n${yamlString}---\n`;
|
|
210
|
-
}
|
|
@@ -1,290 +0,0 @@
|
|
|
1
|
-
import { ClassMirror, EnumMirror, InterfaceMirror } from '@cparra/apex-reflection';
|
|
2
|
-
import { filterScope } from '../filter-scope';
|
|
3
|
-
import { parsedFileFromRawString } from './helpers';
|
|
4
|
-
|
|
5
|
-
describe('When filtering scope', () => {
|
|
6
|
-
it('filters out files with the @ignore annotation', () => {
|
|
7
|
-
const properties: [string, number][] = [
|
|
8
|
-
[
|
|
9
|
-
`
|
|
10
|
-
/**
|
|
11
|
-
* @ignore
|
|
12
|
-
*/
|
|
13
|
-
global class MyClass {}
|
|
14
|
-
`,
|
|
15
|
-
0,
|
|
16
|
-
],
|
|
17
|
-
['global class MyClass {}', 1],
|
|
18
|
-
];
|
|
19
|
-
|
|
20
|
-
for (const [input, expected] of properties) {
|
|
21
|
-
const parsedFile = parsedFileFromRawString(input);
|
|
22
|
-
|
|
23
|
-
const result = filterScope(['global'], [parsedFile]);
|
|
24
|
-
|
|
25
|
-
expect(result).toHaveLength(expected);
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
describe('when scoping a class', () => {
|
|
30
|
-
it('filters out methods tagged with @ignore', () => {
|
|
31
|
-
const properties: [string, number][] = [
|
|
32
|
-
[
|
|
33
|
-
`
|
|
34
|
-
global class MyClass {
|
|
35
|
-
/**
|
|
36
|
-
* @ignore
|
|
37
|
-
*/
|
|
38
|
-
global void myMethod() {}
|
|
39
|
-
}
|
|
40
|
-
`,
|
|
41
|
-
0,
|
|
42
|
-
],
|
|
43
|
-
[
|
|
44
|
-
`
|
|
45
|
-
global class MyClass {
|
|
46
|
-
global void myMethod() {}
|
|
47
|
-
}
|
|
48
|
-
`,
|
|
49
|
-
1,
|
|
50
|
-
],
|
|
51
|
-
];
|
|
52
|
-
|
|
53
|
-
for (const [input, expected] of properties) {
|
|
54
|
-
const parsedFile = parsedFileFromRawString(input);
|
|
55
|
-
|
|
56
|
-
const result = filterScope(['global'], [parsedFile]);
|
|
57
|
-
|
|
58
|
-
expect((result[0].type as ClassMirror).methods).toHaveLength(expected);
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
it('filters out properties tagged with @ignore', () => {
|
|
63
|
-
const properties: [string, number][] = [
|
|
64
|
-
[
|
|
65
|
-
`
|
|
66
|
-
global class MyClass {
|
|
67
|
-
/**
|
|
68
|
-
* @ignore
|
|
69
|
-
*/
|
|
70
|
-
global Integer myProperty { get; set; }
|
|
71
|
-
}
|
|
72
|
-
`,
|
|
73
|
-
0,
|
|
74
|
-
],
|
|
75
|
-
[
|
|
76
|
-
`
|
|
77
|
-
global class MyClass {
|
|
78
|
-
global Integer myProperty { get; set; }
|
|
79
|
-
}
|
|
80
|
-
`,
|
|
81
|
-
1,
|
|
82
|
-
],
|
|
83
|
-
];
|
|
84
|
-
|
|
85
|
-
for (const [input, expected] of properties) {
|
|
86
|
-
const parsedFile = parsedFileFromRawString(input);
|
|
87
|
-
|
|
88
|
-
const result = filterScope(['global'], [parsedFile]);
|
|
89
|
-
|
|
90
|
-
expect((result[0].type as ClassMirror).properties).toHaveLength(expected);
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
it('filters out fields tagged with @ignore', () => {
|
|
95
|
-
const properties: [string, number][] = [
|
|
96
|
-
[
|
|
97
|
-
`
|
|
98
|
-
global class MyClass {
|
|
99
|
-
/**
|
|
100
|
-
* @ignore
|
|
101
|
-
*/
|
|
102
|
-
global Integer myField;
|
|
103
|
-
}
|
|
104
|
-
`,
|
|
105
|
-
0,
|
|
106
|
-
],
|
|
107
|
-
[
|
|
108
|
-
`
|
|
109
|
-
global class MyClass {
|
|
110
|
-
global Integer myField;
|
|
111
|
-
}
|
|
112
|
-
`,
|
|
113
|
-
1,
|
|
114
|
-
],
|
|
115
|
-
];
|
|
116
|
-
|
|
117
|
-
for (const [input, expected] of properties) {
|
|
118
|
-
const parsedFile = parsedFileFromRawString(input);
|
|
119
|
-
|
|
120
|
-
const result = filterScope(['global'], [parsedFile]);
|
|
121
|
-
|
|
122
|
-
expect((result[0].type as ClassMirror).fields).toHaveLength(expected);
|
|
123
|
-
}
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
it('filters out inner classes tagged with @ignore', () => {
|
|
127
|
-
const properties: [string, number][] = [
|
|
128
|
-
[
|
|
129
|
-
`
|
|
130
|
-
global class MyClass {
|
|
131
|
-
/**
|
|
132
|
-
* @ignore
|
|
133
|
-
*/
|
|
134
|
-
global class InnerClass {}
|
|
135
|
-
}
|
|
136
|
-
`,
|
|
137
|
-
0,
|
|
138
|
-
],
|
|
139
|
-
[
|
|
140
|
-
`
|
|
141
|
-
global class MyClass {
|
|
142
|
-
global class InnerClass {}
|
|
143
|
-
}
|
|
144
|
-
`,
|
|
145
|
-
1,
|
|
146
|
-
],
|
|
147
|
-
];
|
|
148
|
-
|
|
149
|
-
for (const [input, expected] of properties) {
|
|
150
|
-
const parsedFile = parsedFileFromRawString(input);
|
|
151
|
-
|
|
152
|
-
const result = filterScope(['global'], [parsedFile]);
|
|
153
|
-
|
|
154
|
-
expect((result[0].type as ClassMirror).classes).toHaveLength(expected);
|
|
155
|
-
}
|
|
156
|
-
});
|
|
157
|
-
|
|
158
|
-
it('filters out inner interfaces tagged with @ignore', () => {
|
|
159
|
-
const properties: [string, number][] = [
|
|
160
|
-
[
|
|
161
|
-
`
|
|
162
|
-
global class MyClass {
|
|
163
|
-
/**
|
|
164
|
-
* @ignore
|
|
165
|
-
*/
|
|
166
|
-
global interface InnerInterface {}
|
|
167
|
-
}
|
|
168
|
-
`,
|
|
169
|
-
0,
|
|
170
|
-
],
|
|
171
|
-
[
|
|
172
|
-
`
|
|
173
|
-
global class MyClass {
|
|
174
|
-
global interface InnerInterface {}
|
|
175
|
-
}
|
|
176
|
-
`,
|
|
177
|
-
1,
|
|
178
|
-
],
|
|
179
|
-
];
|
|
180
|
-
|
|
181
|
-
for (const [input, expected] of properties) {
|
|
182
|
-
const parsedFile = parsedFileFromRawString(input);
|
|
183
|
-
|
|
184
|
-
const result = filterScope(['global'], [parsedFile]);
|
|
185
|
-
|
|
186
|
-
expect((result[0].type as ClassMirror).interfaces).toHaveLength(expected);
|
|
187
|
-
}
|
|
188
|
-
});
|
|
189
|
-
|
|
190
|
-
it('filters out inner enums tagged with @ignore', () => {
|
|
191
|
-
const properties: [string, number][] = [
|
|
192
|
-
[
|
|
193
|
-
`
|
|
194
|
-
global class MyClass {
|
|
195
|
-
/**
|
|
196
|
-
* @ignore
|
|
197
|
-
*/
|
|
198
|
-
global enum InnerEnum {}
|
|
199
|
-
}
|
|
200
|
-
`,
|
|
201
|
-
0,
|
|
202
|
-
],
|
|
203
|
-
[
|
|
204
|
-
`
|
|
205
|
-
global class MyClass {
|
|
206
|
-
global enum InnerEnum {}
|
|
207
|
-
}
|
|
208
|
-
`,
|
|
209
|
-
1,
|
|
210
|
-
],
|
|
211
|
-
];
|
|
212
|
-
|
|
213
|
-
for (const [input, expected] of properties) {
|
|
214
|
-
const parsedFile = parsedFileFromRawString(input);
|
|
215
|
-
|
|
216
|
-
const result = filterScope(['global'], [parsedFile]);
|
|
217
|
-
|
|
218
|
-
expect((result[0].type as ClassMirror).enums).toHaveLength(expected);
|
|
219
|
-
}
|
|
220
|
-
});
|
|
221
|
-
});
|
|
222
|
-
|
|
223
|
-
describe('when scoping an interface', () => {
|
|
224
|
-
it('filters out methods tagged with @ignore', () => {
|
|
225
|
-
const properties: [string, number][] = [
|
|
226
|
-
[
|
|
227
|
-
`
|
|
228
|
-
global interface MyInterface {
|
|
229
|
-
/**
|
|
230
|
-
* @ignore
|
|
231
|
-
*/
|
|
232
|
-
void myMethod();
|
|
233
|
-
}
|
|
234
|
-
`,
|
|
235
|
-
0,
|
|
236
|
-
],
|
|
237
|
-
[
|
|
238
|
-
`
|
|
239
|
-
global interface MyInterface {
|
|
240
|
-
void myMethod();
|
|
241
|
-
}
|
|
242
|
-
`,
|
|
243
|
-
1,
|
|
244
|
-
],
|
|
245
|
-
];
|
|
246
|
-
|
|
247
|
-
for (const [input, expected] of properties) {
|
|
248
|
-
const parsedFile = parsedFileFromRawString(input);
|
|
249
|
-
|
|
250
|
-
const result = filterScope(['global'], [parsedFile]);
|
|
251
|
-
|
|
252
|
-
expect((result[0].type as InterfaceMirror).methods).toHaveLength(expected);
|
|
253
|
-
}
|
|
254
|
-
});
|
|
255
|
-
});
|
|
256
|
-
|
|
257
|
-
describe('when scoping an enum', () => {
|
|
258
|
-
it('never filters out enum values, even if tagged with @ignore', () => {
|
|
259
|
-
const properties: [string, number][] = [
|
|
260
|
-
[
|
|
261
|
-
`
|
|
262
|
-
global enum MyEnum {
|
|
263
|
-
/**
|
|
264
|
-
* @ignore
|
|
265
|
-
*/
|
|
266
|
-
VALUE
|
|
267
|
-
}
|
|
268
|
-
`,
|
|
269
|
-
1,
|
|
270
|
-
],
|
|
271
|
-
[
|
|
272
|
-
`
|
|
273
|
-
global enum MyEnum {
|
|
274
|
-
VALUE
|
|
275
|
-
}
|
|
276
|
-
`,
|
|
277
|
-
1,
|
|
278
|
-
],
|
|
279
|
-
];
|
|
280
|
-
|
|
281
|
-
for (const [input, expected] of properties) {
|
|
282
|
-
const parsedFile = parsedFileFromRawString(input);
|
|
283
|
-
|
|
284
|
-
const result = filterScope(['global'], [parsedFile]);
|
|
285
|
-
|
|
286
|
-
expect((result[0].type as EnumMirror).values).toHaveLength(expected);
|
|
287
|
-
}
|
|
288
|
-
});
|
|
289
|
-
});
|
|
290
|
-
});
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { ParsedFile } from '../../../shared/types';
|
|
2
|
-
import { reflect } from '@cparra/apex-reflection';
|
|
3
|
-
|
|
4
|
-
export function parsedFileFromRawString(raw: string): ParsedFile {
|
|
5
|
-
const { error, typeMirror } = reflect(raw);
|
|
6
|
-
if (error) {
|
|
7
|
-
throw new Error(error.message);
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
return {
|
|
11
|
-
source: {
|
|
12
|
-
filePath: 'test.cls',
|
|
13
|
-
name: typeMirror!.name,
|
|
14
|
-
type: typeMirror!.type_name,
|
|
15
|
-
},
|
|
16
|
-
type: typeMirror!,
|
|
17
|
-
};
|
|
18
|
-
}
|
|
@@ -1,200 +0,0 @@
|
|
|
1
|
-
import { parsedFileFromRawString } from './helpers';
|
|
2
|
-
import { removeExcludedTags } from '../remove-excluded-tags';
|
|
3
|
-
import { ClassMirror, InterfaceMirror } from '@cparra/apex-reflection';
|
|
4
|
-
|
|
5
|
-
describe('when removing excluded tags', () => {
|
|
6
|
-
describe('from any type', () => {
|
|
7
|
-
it('removes annotations', () => {
|
|
8
|
-
const tagsToExclude = ['group'];
|
|
9
|
-
const content = `
|
|
10
|
-
/**
|
|
11
|
-
* @group MyGroup
|
|
12
|
-
* @custom myCustomTag
|
|
13
|
-
*/
|
|
14
|
-
global class MyClass {}
|
|
15
|
-
`;
|
|
16
|
-
const parsedFile = parsedFileFromRawString(content);
|
|
17
|
-
|
|
18
|
-
const result = removeExcludedTags(tagsToExclude, [parsedFile]);
|
|
19
|
-
|
|
20
|
-
expect(result[0].type.docComment?.annotations).toHaveLength(1);
|
|
21
|
-
expect(result[0].type.docComment?.annotations[0].name).toBe('custom');
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
it('removes example annotations', () => {
|
|
25
|
-
const tagsToExclude = ['example'];
|
|
26
|
-
const content = `
|
|
27
|
-
/**
|
|
28
|
-
* @example
|
|
29
|
-
* This is my example
|
|
30
|
-
* public void myMethod() {}
|
|
31
|
-
*/
|
|
32
|
-
global class MyClass {}
|
|
33
|
-
`;
|
|
34
|
-
const parsedFile = parsedFileFromRawString(content);
|
|
35
|
-
|
|
36
|
-
const result = removeExcludedTags(tagsToExclude, [parsedFile]);
|
|
37
|
-
|
|
38
|
-
expect(result[0].type.docComment?.exampleAnnotation).toBeNull();
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
it('removes params annotations', () => {
|
|
42
|
-
const tagsToExclude = ['param'];
|
|
43
|
-
const content = `
|
|
44
|
-
/**
|
|
45
|
-
* @param myParam
|
|
46
|
-
* public void myMethod() {}
|
|
47
|
-
*/
|
|
48
|
-
global class MyClass {}
|
|
49
|
-
`;
|
|
50
|
-
const parsedFile = parsedFileFromRawString(content);
|
|
51
|
-
|
|
52
|
-
const result = removeExcludedTags(tagsToExclude, [parsedFile]);
|
|
53
|
-
|
|
54
|
-
expect(result[0].type.docComment?.paramAnnotations).toHaveLength(0);
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
it('removes the return annotation', () => {
|
|
58
|
-
const tagsToExclude = ['return'];
|
|
59
|
-
const content = `
|
|
60
|
-
/**
|
|
61
|
-
* @return myReturn
|
|
62
|
-
* public void myMethod() {}
|
|
63
|
-
*/
|
|
64
|
-
global class MyClass {}
|
|
65
|
-
`;
|
|
66
|
-
const parsedFile = parsedFileFromRawString(content);
|
|
67
|
-
|
|
68
|
-
const result = removeExcludedTags(tagsToExclude, [parsedFile]);
|
|
69
|
-
|
|
70
|
-
expect(result[0].type.docComment?.returnAnnotation).toBeNull();
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
it('removes the throws annotations', () => {
|
|
74
|
-
const tagsToExclude = ['throws'];
|
|
75
|
-
const content = `
|
|
76
|
-
/**
|
|
77
|
-
* @throws MyException
|
|
78
|
-
* public void myMethod() {}
|
|
79
|
-
*/
|
|
80
|
-
global class MyClass {}
|
|
81
|
-
`;
|
|
82
|
-
const parsedFile = parsedFileFromRawString(content);
|
|
83
|
-
|
|
84
|
-
const result = removeExcludedTags(tagsToExclude, [parsedFile]);
|
|
85
|
-
|
|
86
|
-
expect(result[0].type.docComment?.throwsAnnotations).toHaveLength(0);
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
it('removes the exception annotations', () => {
|
|
90
|
-
const tagsToExclude = ['exception'];
|
|
91
|
-
const content = `
|
|
92
|
-
/**
|
|
93
|
-
* @exception MyException
|
|
94
|
-
* public void myMethod() {}
|
|
95
|
-
*/
|
|
96
|
-
global class MyClass {}
|
|
97
|
-
`;
|
|
98
|
-
const parsedFile = parsedFileFromRawString(content);
|
|
99
|
-
|
|
100
|
-
const result = removeExcludedTags(tagsToExclude, [parsedFile]);
|
|
101
|
-
|
|
102
|
-
expect(result[0].type.docComment?.throwsAnnotations).toHaveLength(0);
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
it('removes descriptions', () => {
|
|
106
|
-
const tagsToExclude = ['description'];
|
|
107
|
-
const content = `
|
|
108
|
-
/**
|
|
109
|
-
* @description This is my description
|
|
110
|
-
* public void myMethod() {}
|
|
111
|
-
*/
|
|
112
|
-
global class MyClass {}
|
|
113
|
-
`;
|
|
114
|
-
const parsedFile = parsedFileFromRawString(content);
|
|
115
|
-
|
|
116
|
-
const result = removeExcludedTags(tagsToExclude, [parsedFile]);
|
|
117
|
-
|
|
118
|
-
expect(result[0].type.docComment?.description).toBe('');
|
|
119
|
-
expect(result[0].type.docComment?.descriptionLines).toHaveLength(0);
|
|
120
|
-
});
|
|
121
|
-
});
|
|
122
|
-
|
|
123
|
-
describe('from an interface', () => {
|
|
124
|
-
it('removes annotations from methods', () => {
|
|
125
|
-
const tagsToExclude = ['throws'];
|
|
126
|
-
const content = `
|
|
127
|
-
global interface MyInterface {
|
|
128
|
-
/**
|
|
129
|
-
* @throws MyException
|
|
130
|
-
*/
|
|
131
|
-
void myMethod();
|
|
132
|
-
}
|
|
133
|
-
`;
|
|
134
|
-
const parsedFile = parsedFileFromRawString(content);
|
|
135
|
-
|
|
136
|
-
const result = removeExcludedTags(tagsToExclude, [parsedFile]);
|
|
137
|
-
|
|
138
|
-
expect((result[0].type as InterfaceMirror).methods[0].docComment?.throwsAnnotations).toHaveLength(0);
|
|
139
|
-
});
|
|
140
|
-
});
|
|
141
|
-
|
|
142
|
-
describe('from a class', () => {
|
|
143
|
-
it('removes annotations from members', () => {
|
|
144
|
-
const tagsToExclude = ['throws'];
|
|
145
|
-
const content = `
|
|
146
|
-
global class MyClass {
|
|
147
|
-
/**
|
|
148
|
-
* @throws MyException
|
|
149
|
-
*/
|
|
150
|
-
String myProperty {get; set;}
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
* @throws MyException
|
|
154
|
-
*/
|
|
155
|
-
String myField;
|
|
156
|
-
/**
|
|
157
|
-
* @throws MyException
|
|
158
|
-
*/
|
|
159
|
-
void myMethod() {}
|
|
160
|
-
|
|
161
|
-
/**
|
|
162
|
-
* @throws MyException
|
|
163
|
-
*/
|
|
164
|
-
MyClass() {}
|
|
165
|
-
|
|
166
|
-
/**
|
|
167
|
-
* @throws MyException
|
|
168
|
-
*/
|
|
169
|
-
public enum MyEnum {}
|
|
170
|
-
|
|
171
|
-
/**
|
|
172
|
-
* @throws MyException
|
|
173
|
-
*/
|
|
174
|
-
interface MyInnerInterface {}
|
|
175
|
-
|
|
176
|
-
/**
|
|
177
|
-
* @throws MyException
|
|
178
|
-
*/
|
|
179
|
-
class MyInnerClass {}
|
|
180
|
-
}
|
|
181
|
-
`;
|
|
182
|
-
const parsedFile = parsedFileFromRawString(content);
|
|
183
|
-
|
|
184
|
-
const result = removeExcludedTags(tagsToExclude, [parsedFile]);
|
|
185
|
-
|
|
186
|
-
const classMirror = result[0].type as ClassMirror;
|
|
187
|
-
expect(classMirror.methods[0].docComment?.throwsAnnotations).toHaveLength(0);
|
|
188
|
-
expect(classMirror.properties[0].docComment?.throwsAnnotations).toHaveLength(0);
|
|
189
|
-
expect(classMirror.fields[0].docComment?.throwsAnnotations).toHaveLength(0);
|
|
190
|
-
expect(classMirror.constructors[0].docComment?.throwsAnnotations).toHaveLength(0);
|
|
191
|
-
expect(classMirror.enums[0].docComment?.throwsAnnotations).toHaveLength(0);
|
|
192
|
-
expect(classMirror.interfaces[0].docComment?.throwsAnnotations).toHaveLength(0);
|
|
193
|
-
expect(classMirror.classes[0].docComment?.throwsAnnotations).toHaveLength(0);
|
|
194
|
-
});
|
|
195
|
-
});
|
|
196
|
-
});
|
|
197
|
-
|
|
198
|
-
// fields
|
|
199
|
-
// inner interfaces
|
|
200
|
-
// inner classes
|