@cparra/apexdocs 3.0.0-beta.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +246 -650
  3. package/dist/cli/generate.js +74 -3095
  4. package/dist/defaults-BcE8DTat.js +13 -0
  5. package/dist/defaults-D07y_bq4.js +40 -0
  6. package/dist/defaults-gPzwP66p.js +14 -0
  7. package/dist/index.d.ts +49 -19
  8. package/dist/index.js +90 -2
  9. package/dist/logger-BEbUIfqN.js +3282 -0
  10. package/dist/logger-BGuf1PnL.js +3281 -0
  11. package/dist/logger-CWBRF2za.js +3284 -0
  12. package/dist/logger-CdBmDEN1.js +3283 -0
  13. package/dist/logger-Ce4QqPFR.js +3278 -0
  14. package/dist/logger-CyEVYaAC.js +3284 -0
  15. package/dist/logger-D7a83ycP.js +3277 -0
  16. package/dist/logger-DGaHeBKk.js +3279 -0
  17. package/dist/logger-Dqhl_lO_.js +3278 -0
  18. package/dist/logger-aySSWi0G.js +3280 -0
  19. package/dist/logger-qLCcAtiy.js +3284 -0
  20. package/examples/README.md +5 -0
  21. package/examples/docsify/README.md +17 -0
  22. package/examples/docsify/apexdocs.config.ts +13 -0
  23. package/examples/docsify/classes/ASampleClass.cls +57 -0
  24. package/examples/docsify/classes/CodeControl.cls +19 -0
  25. package/examples/docsify/classes/SampleClass.cls +95 -0
  26. package/examples/docsify/classes/SampleInterface.cls +17 -0
  27. package/examples/docsify/classes/SomeDto.cls +122 -0
  28. package/examples/docsify/docs/.nojekyll +0 -0
  29. package/examples/docsify/docs/README.md +25 -0
  30. package/examples/docsify/docs/_config.yml +1 -0
  31. package/examples/docsify/docs/index.html +22 -0
  32. package/examples/docsify/docs/miscellaneous/ASampleClass.md +88 -0
  33. package/examples/docsify/docs/miscellaneous/CodeControl.md +107 -0
  34. package/examples/docsify/docs/miscellaneous/SomeDto.md +244 -0
  35. package/examples/docsify/docs/sample-classes/SampleClass.md +171 -0
  36. package/examples/docsify/docs/sample-interfaces/SampleInterface.md +36 -0
  37. package/examples/docsify/package-lock.json +2459 -0
  38. package/examples/docsify/package.json +14 -0
  39. package/examples/imported/.forceignore +12 -0
  40. package/examples/imported/README.md +6 -0
  41. package/examples/imported/config/project-scratch-def.json +5 -0
  42. package/examples/imported/docs/index.md +109 -0
  43. package/examples/imported/docs/miscellaneous/BaseClass.md +13 -0
  44. package/examples/imported/docs/miscellaneous/MultiInheritanceClass.md +69 -0
  45. package/examples/imported/docs/miscellaneous/ParentInterface.md +12 -0
  46. package/examples/imported/docs/miscellaneous/ReferencedEnum.md +5 -0
  47. package/examples/imported/docs/miscellaneous/SampleException.md +21 -0
  48. package/examples/imported/docs/miscellaneous/SampleInterface.md +113 -0
  49. package/examples/imported/docs/miscellaneous/Url.md +308 -0
  50. package/examples/imported/docs/sample-enums/SampleEnum.md +33 -0
  51. package/examples/imported/docs/samplegroup/SampleClass.md +167 -0
  52. package/examples/imported/force-app/classes/BaseClass.cls +3 -0
  53. package/examples/imported/force-app/classes/MultiInheritanceClass.cls +1 -0
  54. package/examples/imported/force-app/classes/ParentInterface.cls +3 -0
  55. package/examples/imported/force-app/classes/ReferencedEnum.cls +3 -0
  56. package/examples/imported/force-app/classes/SampleInterface.cls +50 -0
  57. package/examples/imported/force-app/classes/Url.cls +196 -0
  58. package/examples/imported/package-lock.json +665 -0
  59. package/examples/imported/package.json +6 -0
  60. package/examples/imported/scripts/process-docs.mjs +16 -0
  61. package/examples/imported/sfdx-project.json +12 -0
  62. package/examples/markdown/README.md +7 -0
  63. package/examples/markdown/docs/miscellaneous/Url.md +10 -8
  64. package/examples/markdown/force-app/classes/Url.cls +3 -1
  65. package/examples/markdown-jsconfig/.forceignore +12 -0
  66. package/examples/markdown-jsconfig/README.md +9 -0
  67. package/examples/markdown-jsconfig/apexdocs.config.mjs +22 -0
  68. package/examples/markdown-jsconfig/config/project-scratch-def.json +5 -0
  69. package/examples/markdown-jsconfig/docs/index.md +12 -0
  70. package/examples/markdown-jsconfig/docs/miscellaneous/Url.md +315 -0
  71. package/examples/markdown-jsconfig/force-app/classes/Url.cls +196 -0
  72. package/examples/markdown-jsconfig/package-lock.json +665 -0
  73. package/examples/markdown-jsconfig/package.json +15 -0
  74. package/examples/markdown-jsconfig/sfdx-project.json +12 -0
  75. package/examples/open-api/README.md +5 -0
  76. package/examples/open-api/docs/openapi.json +2 -570
  77. package/examples/vitepress/README.md +25 -0
  78. package/examples/vitepress/apexdocs.config.ts +9 -2
  79. package/examples/vitepress/docs/index.md +11 -11
  80. package/examples/vitepress/docs/miscellaneous/BaseClass.md +1 -1
  81. package/examples/vitepress/docs/miscellaneous/MultiInheritanceClass.md +2 -2
  82. package/examples/vitepress/docs/miscellaneous/SampleException.md +1 -1
  83. package/examples/vitepress/docs/miscellaneous/SampleInterface.md +6 -6
  84. package/examples/vitepress/docs/miscellaneous/Url.md +3 -3
  85. package/examples/vitepress/docs/sample-enums/SampleEnum.md +3 -3
  86. package/examples/vitepress/docs/samplegroup/SampleClass.md +5 -5
  87. package/examples/vitepress/force-app/main/default/classes/feature-a/SampleClass.cls +73 -0
  88. package/examples/vitepress/force-app/main/default/classes/feature-a/SampleEnum.cls +30 -0
  89. package/examples/vitepress/force-app/main/default/classes/feature-a/SampleException.cls +17 -0
  90. package/package.json +3 -3
  91. package/src/application/Apexdocs.ts +16 -19
  92. package/src/application/__tests__/apex-file-reader.spec.ts +108 -67
  93. package/src/application/apex-file-reader.ts +1 -0
  94. package/src/application/generators/openapi.ts +17 -13
  95. package/src/cli/args.ts +12 -3
  96. package/src/cli/commands/markdown.ts +15 -12
  97. package/src/cli/commands/openapi.ts +5 -5
  98. package/src/cli/generate.ts +20 -4
  99. package/src/core/markdown/__test__/generating-class-docs.spec.ts +15 -386
  100. package/src/core/markdown/__test__/generating-docs.spec.ts +378 -0
  101. package/src/core/markdown/__test__/generating-enum-docs.spec.ts +4 -328
  102. package/src/core/markdown/__test__/generating-interface-docs.spec.ts +4 -296
  103. package/src/core/markdown/__test__/generating-reference-guide.spec.ts +17 -1
  104. package/src/core/markdown/__test__/test-helpers.ts +3 -1
  105. package/src/core/markdown/adapters/__tests__/interface-adapter.spec.ts +3 -1
  106. package/src/core/markdown/adapters/renderable-to-page-data.ts +6 -4
  107. package/src/core/markdown/generate-docs.ts +13 -15
  108. package/src/core/markdown/reflection/__test__/filter-scope.spec.ts +290 -0
  109. package/src/core/markdown/reflection/__test__/helpers.ts +18 -0
  110. package/src/core/markdown/reflection/__test__/remove-excluded-tags.spec.ts +200 -0
  111. package/src/core/markdown/reflection/remove-excluded-tags.ts +168 -0
  112. package/src/core/markdown/reflection/{sort-members.ts → sort-types-and-members.ts} +7 -5
  113. package/src/core/markdown/templates/reference-guide.ts +2 -2
  114. package/src/core/openapi/__tests__/open-api-docs-processor.spec.ts +6 -3
  115. package/src/core/openapi/open-api-docs-processor.ts +3 -3
  116. package/src/core/openapi/parser.ts +5 -2
  117. package/src/core/shared/types.d.ts +18 -18
  118. package/src/defaults.ts +15 -3
  119. package/src/index.ts +88 -14
  120. package/src/util/error-logger.ts +36 -36
  121. package/src/util/logger.ts +18 -11
  122. /package/examples/{vitepress/force-app/main/default → imported/force-app}/classes/SampleClass.cls +0 -0
  123. /package/examples/{vitepress/force-app/main/default → imported/force-app}/classes/SampleEnum.cls +0 -0
  124. /package/examples/{vitepress/force-app/main/default → imported/force-app}/classes/SampleException.cls +0 -0
  125. /package/examples/vitepress/force-app/main/default/classes/{SampleInterface.cls → feature-a/SampleInterface.cls} +0 -0
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ const defaults = {
4
+ targetGenerator: "markdown",
5
+ targetDir: "./docs/",
6
+ scope: ["global"],
7
+ defaultGroupName: "Miscellaneous",
8
+ includeMetadata: false,
9
+ sortAlphabetically: false,
10
+ linkingStrategy: "relative"
11
+ };
12
+
13
+ exports.defaults = defaults;
@@ -0,0 +1,40 @@
1
+ 'use strict';
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __defProps = Object.defineProperties;
5
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
6
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
9
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10
+ var __spreadValues = (a, b) => {
11
+ for (var prop in b || (b = {}))
12
+ if (__hasOwnProp.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ if (__getOwnPropSymbols)
15
+ for (var prop of __getOwnPropSymbols(b)) {
16
+ if (__propIsEnum.call(b, prop))
17
+ __defNormalProp(a, prop, b[prop]);
18
+ }
19
+ return a;
20
+ };
21
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
22
+ const commonDefaults = {
23
+ targetDir: "./docs/"
24
+ };
25
+ const markdownDefaults = __spreadProps(__spreadValues({}, commonDefaults), {
26
+ scope: ["global"],
27
+ defaultGroupName: "Miscellaneous",
28
+ includeMetadata: false,
29
+ sortAlphabetically: false,
30
+ linkingStrategy: "relative",
31
+ referenceGuideTitle: "Apex Reference Guide"
32
+ });
33
+ const openApiDefaults = __spreadProps(__spreadValues({}, commonDefaults), {
34
+ fileName: "openapi",
35
+ title: "Apex REST API",
36
+ apiVersion: "1.0.0"
37
+ });
38
+
39
+ exports.markdownDefaults = markdownDefaults;
40
+ exports.openApiDefaults = openApiDefaults;
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ const defaults = {
4
+ targetGenerator: "markdown",
5
+ targetDir: "./docs/",
6
+ scope: ["global"],
7
+ defaultGroupName: "Miscellaneous",
8
+ includeMetadata: false,
9
+ sortAlphabetically: false,
10
+ linkingStrategy: "relative",
11
+ referenceGuideTitle: "Apex Reference Guide"
12
+ };
13
+
14
+ exports.defaults = defaults;
package/dist/index.d.ts CHANGED
@@ -1,15 +1,3 @@
1
- import { SetOptional } from 'type-fest';
2
-
3
- /**
4
- * The configurable hooks that can be used to modify the output of the generator.
5
- */
6
- type ConfigurableHooks = {
7
- transformReferenceGuide: TransformReferenceGuide;
8
- transformDocs: TransformDocs;
9
- transformDocPage: TransformDocPage;
10
- transformReference: TransformReference;
11
- };
12
-
13
1
  type LinkingStrategy =
14
2
  // Links will be generated using relative paths.
15
3
  | 'relative'
@@ -22,17 +10,31 @@ type LinkingStrategy =
22
10
  | 'none';
23
11
 
24
12
  type UserDefinedMarkdownConfig = {
25
- targetGenerator: 'markdown';
26
13
  sourceDir: string;
14
+ targetGenerator: 'markdown';
27
15
  targetDir: string;
28
16
  scope: string[];
29
- defaultGroupName: string;
30
17
  namespace?: string;
31
- sortMembersAlphabetically: boolean;
18
+ defaultGroupName: string;
19
+ sortAlphabetically: boolean;
32
20
  includeMetadata: boolean;
33
21
  linkingStrategy: LinkingStrategy;
22
+ excludeTags: string[];
23
+ referenceGuideTitle: string;
34
24
  } & Partial<ConfigurableHooks>;
35
25
 
26
+ type UserDefinedOpenApiConfig = {
27
+ targetGenerator: 'openapi';
28
+ sourceDir: string;
29
+ targetDir: string;
30
+ fileName: string;
31
+ namespace?: string;
32
+ title: string;
33
+ apiVersion: string;
34
+ };
35
+
36
+ type UserDefinedConfig = UserDefinedMarkdownConfig | UserDefinedOpenApiConfig;
37
+
36
38
  type SourceFileMetadata = {
37
39
  filePath: string;
38
40
  name: string;
@@ -76,7 +78,17 @@ type Skip = {
76
78
  readonly _tag: 'Skip';
77
79
  };
78
80
 
79
- // Configurable Hooks
81
+ // CONFIGURABLE HOOKS
82
+
83
+ /**
84
+ * The configurable hooks that can be used to modify the output of the generator.
85
+ */
86
+ type ConfigurableHooks = {
87
+ transformReferenceGuide: TransformReferenceGuide;
88
+ transformDocs: TransformDocs;
89
+ transformDocPage: TransformDocPage;
90
+ transformReference: TransformReference;
91
+ };
80
92
 
81
93
  type ConfigurableDocPageReference = Omit<DocPageReference, 'source'>;
82
94
 
@@ -110,8 +122,26 @@ type TransformDocPage = (
110
122
  doc: DocPageData,
111
123
  ) => Partial<ConfigurableDocPageData> | Promise<Partial<ConfigurableDocPageData>>;
112
124
 
113
- type ConfigurableMarkdownConfig = Omit<SetOptional<UserDefinedMarkdownConfig, 'targetDir' | 'scope' | 'defaultGroupName' | 'includeMetadata' | 'sortMembersAlphabetically' | 'linkingStrategy'>, 'targetGenerator'>;
114
- declare function defineMarkdownConfig(config: ConfigurableMarkdownConfig): UserDefinedMarkdownConfig;
125
+ type ConfigurableMarkdownConfig = Omit<Partial<UserDefinedMarkdownConfig>, 'targetGenerator'>;
126
+ /**
127
+ * Helper function to define a configuration to generate Markdown documentation.
128
+ * @param config The configuration to use.
129
+ */
130
+ declare function defineMarkdownConfig(config: ConfigurableMarkdownConfig): Partial<UserDefinedMarkdownConfig>;
131
+ type ConfigurableOpenApiConfig = Omit<Partial<UserDefinedOpenApiConfig>, 'targetGenerator'>;
132
+ /**
133
+ * Helper function to define a configuration to generate OpenAPI documentation.
134
+ * @param config The configuration to use.
135
+ */
136
+ declare function defineOpenApiConfig(config: ConfigurableOpenApiConfig): Partial<UserDefinedOpenApiConfig>;
137
+ /**
138
+ * Represents a file to be skipped.
139
+ */
115
140
  declare function skip(): Skip;
141
+ type CallableConfig = Partial<UserDefinedConfig> & {
142
+ sourceDir: string;
143
+ targetGenerator: 'markdown' | 'openapi';
144
+ };
145
+ declare function process(config: CallableConfig): Promise<void>;
116
146
 
117
- export { type ConfigurableHooks, type DocPageData, type DocPageReference, type ReferenceGuidePageData, defineMarkdownConfig, skip };
147
+ export { type ConfigurableDocPageData, type ConfigurableDocPageReference, type ConfigurableHooks, type ConfigurableMarkdownConfig, type ConfigurableOpenApiConfig, type DocPageData, type DocPageReference, type ReferenceGuidePageData, type Skip, type TransformDocPage, type TransformDocs, type TransformReference, type TransformReferenceGuide, defineMarkdownConfig, defineOpenApiConfig, process, skip };
package/dist/index.js CHANGED
@@ -1,6 +1,40 @@
1
1
  'use strict';
2
2
 
3
- var defaults = require('./defaults-DGKfeZq-.js');
3
+ var logger = require('./logger-Ce4QqPFR.js');
4
+ var E = require('fp-ts/Either');
5
+ require('fp-ts/function');
6
+ require('fp-ts/TaskEither');
7
+ require('js-yaml');
8
+ require('path');
9
+ require('fp-ts/Task');
10
+ require('fp-ts/lib/Array');
11
+ require('@cparra/apex-reflection');
12
+ require('fp-ts/Option');
13
+ require('fast-xml-parser');
14
+ require('handlebars');
15
+ require('fp-ts/boolean');
16
+ require('fs');
17
+ require('fp-ts/lib/TaskEither');
18
+ require('chalk');
19
+
20
+ function _interopNamespaceDefault(e) {
21
+ var n = Object.create(null);
22
+ if (e) {
23
+ Object.keys(e).forEach(function (k) {
24
+ if (k !== 'default') {
25
+ var d = Object.getOwnPropertyDescriptor(e, k);
26
+ Object.defineProperty(n, k, d.get ? d : {
27
+ enumerable: true,
28
+ get: function () { return e[k]; }
29
+ });
30
+ }
31
+ });
32
+ }
33
+ n.default = e;
34
+ return Object.freeze(n);
35
+ }
36
+
37
+ var E__namespace = /*#__PURE__*/_interopNamespaceDefault(E);
4
38
 
5
39
  var __defProp = Object.defineProperty;
6
40
  var __defProps = Object.defineProperties;
@@ -21,16 +55,70 @@ var __spreadValues = (a, b) => {
21
55
  return a;
22
56
  };
23
57
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
58
+ var __async = (__this, __arguments, generator) => {
59
+ return new Promise((resolve, reject) => {
60
+ var fulfilled = (value) => {
61
+ try {
62
+ step(generator.next(value));
63
+ } catch (e) {
64
+ reject(e);
65
+ }
66
+ };
67
+ var rejected = (value) => {
68
+ try {
69
+ step(generator.throw(value));
70
+ } catch (e) {
71
+ reject(e);
72
+ }
73
+ };
74
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
75
+ step((generator = generator.apply(__this, __arguments)).next());
76
+ });
77
+ };
24
78
  function defineMarkdownConfig(config) {
25
- return __spreadProps(__spreadValues(__spreadValues({}, defaults.defaults), config), {
79
+ return __spreadProps(__spreadValues(__spreadValues({}, logger.markdownDefaults), config), {
26
80
  targetGenerator: "markdown"
27
81
  });
28
82
  }
83
+ function defineOpenApiConfig(config) {
84
+ return __spreadProps(__spreadValues(__spreadValues({}, logger.openApiDefaults), config), {
85
+ targetGenerator: "openapi"
86
+ });
87
+ }
29
88
  function skip() {
30
89
  return {
31
90
  _tag: "Skip"
32
91
  };
33
92
  }
93
+ function process(config) {
94
+ return __async(this, null, function* () {
95
+ const logger$1 = new logger.NoLogger();
96
+ const configWithDefaults = __spreadValues(__spreadValues({}, getDefault(config)), config);
97
+ if (!configWithDefaults.sourceDir) {
98
+ throw new Error("sourceDir is required");
99
+ }
100
+ const result = yield logger.Apexdocs.generate(configWithDefaults, logger$1);
101
+ E__namespace.match(
102
+ (errors) => {
103
+ throw errors;
104
+ },
105
+ () => {
106
+ }
107
+ )(result);
108
+ });
109
+ }
110
+ function getDefault(config) {
111
+ switch (config.targetGenerator) {
112
+ case "markdown":
113
+ return logger.markdownDefaults;
114
+ case "openapi":
115
+ return logger.openApiDefaults;
116
+ default:
117
+ throw new Error("Unknown target generator");
118
+ }
119
+ }
34
120
 
35
121
  exports.defineMarkdownConfig = defineMarkdownConfig;
122
+ exports.defineOpenApiConfig = defineOpenApiConfig;
123
+ exports.process = process;
36
124
  exports.skip = skip;