@cparra/apexdocs 3.0.0-rc.0 → 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 (107) hide show
  1. package/README.md +50 -571
  2. package/dist/cli/generate.js +73 -3094
  3. package/dist/defaults-BcE8DTat.js +13 -0
  4. package/dist/defaults-D07y_bq4.js +40 -0
  5. package/dist/defaults-gPzwP66p.js +14 -0
  6. package/dist/index.d.ts +35 -3
  7. package/dist/index.js +90 -2
  8. package/dist/logger-BEbUIfqN.js +3282 -0
  9. package/dist/logger-BGuf1PnL.js +3281 -0
  10. package/dist/logger-CWBRF2za.js +3284 -0
  11. package/dist/logger-CdBmDEN1.js +3283 -0
  12. package/dist/logger-Ce4QqPFR.js +3278 -0
  13. package/dist/logger-CyEVYaAC.js +3284 -0
  14. package/dist/logger-D7a83ycP.js +3277 -0
  15. package/dist/logger-DGaHeBKk.js +3279 -0
  16. package/dist/logger-Dqhl_lO_.js +3278 -0
  17. package/dist/logger-aySSWi0G.js +3280 -0
  18. package/dist/logger-qLCcAtiy.js +3284 -0
  19. package/examples/README.md +5 -0
  20. package/examples/docsify/README.md +17 -0
  21. package/examples/docsify/apexdocs.config.ts +13 -0
  22. package/examples/docsify/classes/ASampleClass.cls +57 -0
  23. package/examples/docsify/classes/CodeControl.cls +19 -0
  24. package/examples/docsify/classes/SampleClass.cls +95 -0
  25. package/examples/docsify/classes/SampleInterface.cls +17 -0
  26. package/examples/docsify/classes/SomeDto.cls +122 -0
  27. package/examples/docsify/docs/.nojekyll +0 -0
  28. package/examples/docsify/docs/README.md +25 -0
  29. package/examples/docsify/docs/_config.yml +1 -0
  30. package/examples/docsify/docs/index.html +22 -0
  31. package/examples/docsify/docs/miscellaneous/ASampleClass.md +88 -0
  32. package/examples/docsify/docs/miscellaneous/CodeControl.md +107 -0
  33. package/examples/docsify/docs/miscellaneous/SomeDto.md +244 -0
  34. package/examples/docsify/docs/sample-classes/SampleClass.md +171 -0
  35. package/examples/docsify/docs/sample-interfaces/SampleInterface.md +36 -0
  36. package/examples/docsify/package-lock.json +2459 -0
  37. package/examples/docsify/package.json +14 -0
  38. package/examples/imported/.forceignore +12 -0
  39. package/examples/imported/README.md +6 -0
  40. package/examples/imported/config/project-scratch-def.json +5 -0
  41. package/examples/imported/docs/index.md +109 -0
  42. package/examples/imported/docs/miscellaneous/BaseClass.md +13 -0
  43. package/examples/imported/docs/miscellaneous/MultiInheritanceClass.md +69 -0
  44. package/examples/imported/docs/miscellaneous/ParentInterface.md +12 -0
  45. package/examples/imported/docs/miscellaneous/ReferencedEnum.md +5 -0
  46. package/examples/imported/docs/miscellaneous/SampleException.md +21 -0
  47. package/examples/imported/docs/miscellaneous/SampleInterface.md +113 -0
  48. package/examples/imported/docs/miscellaneous/Url.md +308 -0
  49. package/examples/imported/docs/sample-enums/SampleEnum.md +33 -0
  50. package/examples/imported/docs/samplegroup/SampleClass.md +167 -0
  51. package/examples/imported/force-app/classes/BaseClass.cls +3 -0
  52. package/examples/imported/force-app/classes/MultiInheritanceClass.cls +1 -0
  53. package/examples/imported/force-app/classes/ParentInterface.cls +3 -0
  54. package/examples/imported/force-app/classes/ReferencedEnum.cls +3 -0
  55. package/examples/imported/force-app/classes/SampleClass.cls +72 -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-jsconfig/README.md +9 -0
  64. package/examples/markdown-jsconfig/apexdocs.config.mjs +1 -0
  65. package/examples/markdown-jsconfig/docs/index.md +1 -1
  66. package/examples/open-api/README.md +5 -0
  67. package/examples/open-api/docs/openapi.json +2 -570
  68. package/examples/vitepress/README.md +25 -0
  69. package/examples/vitepress/apexdocs.config.ts +2 -0
  70. package/examples/vitepress/force-app/main/default/classes/{SampleClass.cls → feature-a/SampleClass.cls} +1 -0
  71. package/examples/vitepress/force-app/main/default/classes/feature-a/SampleEnum.cls +30 -0
  72. package/examples/vitepress/force-app/main/default/classes/feature-a/SampleException.cls +17 -0
  73. package/package.json +2 -2
  74. package/src/application/Apexdocs.ts +16 -19
  75. package/src/application/__tests__/apex-file-reader.spec.ts +108 -67
  76. package/src/application/apex-file-reader.ts +1 -0
  77. package/src/application/generators/openapi.ts +17 -13
  78. package/src/cli/args.ts +12 -3
  79. package/src/cli/commands/markdown.ts +14 -9
  80. package/src/cli/commands/openapi.ts +5 -5
  81. package/src/cli/generate.ts +20 -4
  82. package/src/core/markdown/__test__/generating-class-docs.spec.ts +14 -257
  83. package/src/core/markdown/__test__/generating-docs.spec.ts +271 -4
  84. package/src/core/markdown/__test__/generating-enum-docs.spec.ts +4 -264
  85. package/src/core/markdown/__test__/generating-interface-docs.spec.ts +4 -232
  86. package/src/core/markdown/__test__/generating-reference-guide.spec.ts +17 -1
  87. package/src/core/markdown/__test__/test-helpers.ts +3 -1
  88. package/src/core/markdown/adapters/__tests__/interface-adapter.spec.ts +3 -1
  89. package/src/core/markdown/adapters/renderable-to-page-data.ts +6 -4
  90. package/src/core/markdown/generate-docs.ts +13 -15
  91. package/src/core/markdown/reflection/__test__/filter-scope.spec.ts +2 -18
  92. package/src/core/markdown/reflection/__test__/helpers.ts +18 -0
  93. package/src/core/markdown/reflection/__test__/remove-excluded-tags.spec.ts +200 -0
  94. package/src/core/markdown/reflection/remove-excluded-tags.ts +168 -0
  95. package/src/core/markdown/reflection/{sort-members.ts → sort-types-and-members.ts} +7 -5
  96. package/src/core/markdown/templates/reference-guide.ts +2 -2
  97. package/src/core/openapi/__tests__/open-api-docs-processor.spec.ts +6 -3
  98. package/src/core/openapi/open-api-docs-processor.ts +3 -3
  99. package/src/core/openapi/parser.ts +5 -2
  100. package/src/core/shared/types.d.ts +4 -2
  101. package/src/defaults.ts +15 -3
  102. package/src/index.ts +65 -4
  103. package/src/util/error-logger.ts +36 -36
  104. package/src/util/logger.ts +18 -11
  105. /package/examples/{vitepress/force-app/main/default → imported/force-app}/classes/SampleEnum.cls +0 -0
  106. /package/examples/{vitepress/force-app/main/default → imported/force-app}/classes/SampleException.cls +0 -0
  107. /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
@@ -14,13 +14,27 @@ type UserDefinedMarkdownConfig = {
14
14
  targetGenerator: 'markdown';
15
15
  targetDir: string;
16
16
  scope: string[];
17
- defaultGroupName: string;
18
17
  namespace?: string;
19
- sortMembersAlphabetically: boolean;
18
+ defaultGroupName: string;
19
+ sortAlphabetically: boolean;
20
20
  includeMetadata: boolean;
21
21
  linkingStrategy: LinkingStrategy;
22
+ excludeTags: string[];
23
+ referenceGuideTitle: string;
22
24
  } & Partial<ConfigurableHooks>;
23
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
+
24
38
  type SourceFileMetadata = {
25
39
  filePath: string;
26
40
  name: string;
@@ -109,7 +123,25 @@ type TransformDocPage = (
109
123
  ) => Partial<ConfigurableDocPageData> | Promise<Partial<ConfigurableDocPageData>>;
110
124
 
111
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
+ */
112
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
+ */
113
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>;
114
146
 
115
- export { type ConfigurableDocPageData, type ConfigurableDocPageReference, type ConfigurableHooks, type DocPageData, type DocPageReference, type ReferenceGuidePageData, type Skip, type TransformDocPage, type TransformDocs, type TransformReference, type TransformReferenceGuide, 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;