@cparra/apexdocs 3.0.0-alpha.4 → 3.0.0-alpha.5
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/dist/cli/generate.js +22 -44
- package/package.json +2 -2
- package/src/application/Apexdocs.ts +4 -3
- package/src/application/generators/markdown.ts +3 -2
- package/src/application/generators/openapi.ts +3 -4
- package/src/core/openapi/open-api-docs-processor.ts +1 -1
- package/src/util/logger.ts +15 -35
package/dist/cli/generate.js
CHANGED
|
@@ -13,7 +13,7 @@ var Handlebars = require('handlebars');
|
|
|
13
13
|
var defaults = require('../defaults-DGKfeZq-.js');
|
|
14
14
|
var fs = require('fs');
|
|
15
15
|
var chalk = require('chalk');
|
|
16
|
-
var
|
|
16
|
+
var ora = require('ora');
|
|
17
17
|
var cosmiconfig = require('cosmiconfig');
|
|
18
18
|
var yargs = require('yargs');
|
|
19
19
|
var cosmiconfigTypescriptLoader = require('cosmiconfig-typescript-loader');
|
|
@@ -1718,52 +1718,32 @@ class Logger {
|
|
|
1718
1718
|
* @param args Optional arguments.
|
|
1719
1719
|
*/
|
|
1720
1720
|
static error(message, ...args) {
|
|
1721
|
-
this.logSingle(message,
|
|
1721
|
+
this.logSingle(message, "red");
|
|
1722
1722
|
args.forEach(() => {
|
|
1723
|
-
this.logSingle(message,
|
|
1723
|
+
this.logSingle(message, "red");
|
|
1724
1724
|
});
|
|
1725
1725
|
}
|
|
1726
|
-
static logSingle(text,
|
|
1726
|
+
static logSingle(text, color = "green") {
|
|
1727
1727
|
if (this.currentFrame > 9) {
|
|
1728
1728
|
this.currentFrame = 0;
|
|
1729
1729
|
}
|
|
1730
|
-
const
|
|
1731
|
-
let logMessage;
|
|
1732
|
-
if (color === "green") {
|
|
1733
|
-
logMessage = `${chalk.green((/* @__PURE__ */ new Date()).toLocaleString() + ": ")}${text}
|
|
1730
|
+
const logMessage = `${this.getChalkFn(color)((/* @__PURE__ */ new Date()).toLocaleString() + ": ")}${text}
|
|
1734
1731
|
`;
|
|
1735
|
-
|
|
1736
|
-
logMessage = `${chalk.red((/* @__PURE__ */ new Date()).toLocaleString() + ": ")}${text}
|
|
1737
|
-
`;
|
|
1738
|
-
}
|
|
1739
|
-
if (overrideConsole) {
|
|
1740
|
-
logUpdate(`${spinner} ${logMessage}`);
|
|
1741
|
-
} else {
|
|
1742
|
-
process.stdout.write(`${spinner} ${logMessage}`);
|
|
1743
|
-
}
|
|
1732
|
+
process.stdout.write(logMessage);
|
|
1744
1733
|
}
|
|
1745
|
-
static
|
|
1746
|
-
|
|
1734
|
+
static getChalkFn(color) {
|
|
1735
|
+
return color === "green" ? chalk.green : chalk.red;
|
|
1747
1736
|
}
|
|
1748
|
-
static startSpinner() {
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
}
|
|
1752
|
-
this.spinnerInterval = setInterval(() => {
|
|
1753
|
-
this.logSingle("Processing...", true, "green", true);
|
|
1754
|
-
}, 80);
|
|
1737
|
+
static startSpinner(text) {
|
|
1738
|
+
this.spinner.text = text;
|
|
1739
|
+
this.spinner.start();
|
|
1755
1740
|
}
|
|
1756
|
-
static
|
|
1757
|
-
|
|
1758
|
-
clearInterval(this.spinnerInterval);
|
|
1759
|
-
this.spinnerInterval = null;
|
|
1760
|
-
this.clear();
|
|
1761
|
-
}
|
|
1741
|
+
static succeedSpinner(text) {
|
|
1742
|
+
this.spinner.succeed(text);
|
|
1762
1743
|
}
|
|
1763
1744
|
}
|
|
1764
1745
|
Logger.currentFrame = 0;
|
|
1765
|
-
Logger.
|
|
1766
|
-
Logger.spinnerInterval = null;
|
|
1746
|
+
Logger.spinner = ora();
|
|
1767
1747
|
|
|
1768
1748
|
const referenceGuideTemplate = `
|
|
1769
1749
|
# Apex Reference Guide
|
|
@@ -1826,8 +1806,7 @@ function writeFilesToSystem(files, outputDir) {
|
|
|
1826
1806
|
FileWriter.write(
|
|
1827
1807
|
[files.referenceGuide, ...files.docs].filter((file) => !isSkip(file)),
|
|
1828
1808
|
outputDir,
|
|
1829
|
-
(
|
|
1830
|
-
Logger.logSingle(`${file.outputDocPath} processed.`, false, "green", false);
|
|
1809
|
+
() => {
|
|
1831
1810
|
}
|
|
1832
1811
|
);
|
|
1833
1812
|
}
|
|
@@ -2737,7 +2716,7 @@ class OpenApiDocsProcessor {
|
|
|
2737
2716
|
}
|
|
2738
2717
|
onProcess(type) {
|
|
2739
2718
|
var _a, _b;
|
|
2740
|
-
Logger.logSingle(`Processing ${type.name}`,
|
|
2719
|
+
Logger.logSingle(`Processing ${type.name}`, "green");
|
|
2741
2720
|
const endpointPath = this.getEndpointPath(type);
|
|
2742
2721
|
if (!endpointPath) {
|
|
2743
2722
|
return;
|
|
@@ -2785,7 +2764,7 @@ function openApi(fileBodies, config) {
|
|
|
2785
2764
|
Transpiler.generate(filteredTypes, processor);
|
|
2786
2765
|
const generatedFiles = processor.fileBuilder().files();
|
|
2787
2766
|
FileWriter.write(generatedFiles, config.targetDir, (file) => {
|
|
2788
|
-
Logger.logSingle(`${file.outputDocPath} processed.`,
|
|
2767
|
+
Logger.logSingle(`${file.outputDocPath} processed.`, "green");
|
|
2789
2768
|
});
|
|
2790
2769
|
ErrorLogger.logErrors(filteredTypes);
|
|
2791
2770
|
}
|
|
@@ -2807,9 +2786,8 @@ function filterByScopes(manifest) {
|
|
|
2807
2786
|
"httpput"
|
|
2808
2787
|
]);
|
|
2809
2788
|
const filteredLogMessage = `Filtered ${manifest.types.length - filteredTypes.length} file(s), only keeping classes annotated as @RestResource.`;
|
|
2810
|
-
Logger.
|
|
2811
|
-
Logger.logSingle(
|
|
2812
|
-
Logger.logSingle(`Creating documentation for ${filteredTypes.length} file(s)`, false, "green", false);
|
|
2789
|
+
Logger.logSingle(filteredLogMessage, "green");
|
|
2790
|
+
Logger.logSingle(`Creating documentation for ${filteredTypes.length} file(s)`, "green");
|
|
2813
2791
|
return filteredTypes;
|
|
2814
2792
|
}
|
|
2815
2793
|
|
|
@@ -2889,8 +2867,8 @@ class Apexdocs {
|
|
|
2889
2867
|
*/
|
|
2890
2868
|
static generate(config) {
|
|
2891
2869
|
return __async$1(this, null, function* () {
|
|
2892
|
-
Logger.logSingle("Initializing..."
|
|
2893
|
-
Logger.startSpinner();
|
|
2870
|
+
Logger.logSingle("Initializing...");
|
|
2871
|
+
Logger.startSpinner("Processing files...");
|
|
2894
2872
|
try {
|
|
2895
2873
|
const fileBodies = ApexFileReader.processFiles(new DefaultFileSystem(), config.sourceDir, config.includeMetadata);
|
|
2896
2874
|
switch (config.targetGenerator) {
|
|
@@ -2902,7 +2880,7 @@ class Apexdocs {
|
|
|
2902
2880
|
break;
|
|
2903
2881
|
}
|
|
2904
2882
|
} finally {
|
|
2905
|
-
Logger.
|
|
2883
|
+
Logger.succeedSpinner("Files processed.");
|
|
2906
2884
|
}
|
|
2907
2885
|
});
|
|
2908
2886
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cparra/apexdocs",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.5",
|
|
4
4
|
"description": "Library with CLI capabilities to generate documentation for Salesforce Apex classes.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"apex",
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"fp-ts": "^2.16.8",
|
|
69
69
|
"handlebars": "^4.7.8",
|
|
70
70
|
"js-yaml": "^4.1.0",
|
|
71
|
-
"
|
|
71
|
+
"ora": "^5.4.1",
|
|
72
72
|
"type-fest": "^4.23.0",
|
|
73
73
|
"yargs": "^17.7.2"
|
|
74
74
|
},
|
|
@@ -14,8 +14,8 @@ export class Apexdocs {
|
|
|
14
14
|
* Generates documentation out of Apex source files.
|
|
15
15
|
*/
|
|
16
16
|
static async generate(config: UserDefinedConfig): Promise<void> {
|
|
17
|
-
Logger.logSingle('Initializing...'
|
|
18
|
-
Logger.startSpinner();
|
|
17
|
+
Logger.logSingle('Initializing...');
|
|
18
|
+
Logger.startSpinner('Processing files...');
|
|
19
19
|
|
|
20
20
|
try {
|
|
21
21
|
const fileBodies = ApexFileReader.processFiles(new DefaultFileSystem(), config.sourceDir, config.includeMetadata);
|
|
@@ -29,7 +29,8 @@ export class Apexdocs {
|
|
|
29
29
|
break;
|
|
30
30
|
}
|
|
31
31
|
} finally {
|
|
32
|
-
|
|
32
|
+
// TODO: Allow for failures
|
|
33
|
+
Logger.succeedSpinner('Files processed.');
|
|
33
34
|
}
|
|
34
35
|
}
|
|
35
36
|
}
|
|
@@ -47,8 +47,9 @@ function writeFilesToSystem(files: PostHookDocumentationBundle, outputDir: strin
|
|
|
47
47
|
// Filter out any files that should be skipped
|
|
48
48
|
.filter((file) => !isSkip(file)) as PageData[],
|
|
49
49
|
outputDir,
|
|
50
|
-
(
|
|
51
|
-
|
|
50
|
+
() => {
|
|
51
|
+
// TODO: Don't do this here, send things back up.
|
|
52
|
+
//Logger.logSingle(`${file.outputDocPath} processed.`, 'green');
|
|
52
53
|
},
|
|
53
54
|
);
|
|
54
55
|
}
|
|
@@ -19,7 +19,7 @@ export default function openApi(fileBodies: UnparsedSourceFile[], config: UserDe
|
|
|
19
19
|
const generatedFiles = processor.fileBuilder().files();
|
|
20
20
|
|
|
21
21
|
FileWriter.write(generatedFiles, config.targetDir, (file: PageData) => {
|
|
22
|
-
Logger.logSingle(`${file.outputDocPath} processed.`,
|
|
22
|
+
Logger.logSingle(`${file.outputDocPath} processed.`, 'green');
|
|
23
23
|
});
|
|
24
24
|
|
|
25
25
|
// Error logging
|
|
@@ -48,9 +48,8 @@ function filterByScopes(manifest: Manifest) {
|
|
|
48
48
|
const filteredLogMessage = `Filtered ${
|
|
49
49
|
manifest.types.length - filteredTypes.length
|
|
50
50
|
} file(s), only keeping classes annotated as @RestResource.`;
|
|
51
|
-
Logger.clear();
|
|
52
51
|
|
|
53
|
-
Logger.logSingle(filteredLogMessage,
|
|
54
|
-
Logger.logSingle(`Creating documentation for ${filteredTypes.length} file(s)`,
|
|
52
|
+
Logger.logSingle(filteredLogMessage, 'green');
|
|
53
|
+
Logger.logSingle(`Creating documentation for ${filteredTypes.length} file(s)`, 'green');
|
|
55
54
|
return filteredTypes;
|
|
56
55
|
}
|
|
@@ -25,7 +25,7 @@ export class OpenApiDocsProcessor {
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
onProcess(type: Type): void {
|
|
28
|
-
Logger.logSingle(`Processing ${type.name}`,
|
|
28
|
+
Logger.logSingle(`Processing ${type.name}`, 'green');
|
|
29
29
|
|
|
30
30
|
const endpointPath = this.getEndpointPath(type);
|
|
31
31
|
if (!endpointPath) {
|
package/src/util/logger.ts
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
-
import
|
|
3
|
-
|
|
2
|
+
import ora from 'ora';
|
|
4
3
|
/**
|
|
5
4
|
* Logs messages to the console.
|
|
6
5
|
*/
|
|
7
6
|
export class Logger {
|
|
8
7
|
static currentFrame = 0;
|
|
9
|
-
|
|
10
|
-
static frames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
|
|
11
|
-
static spinnerInterval: NodeJS.Timeout | null = null;
|
|
8
|
+
static spinner = ora();
|
|
12
9
|
|
|
13
10
|
/**
|
|
14
11
|
* Logs a message with optional arguments.
|
|
@@ -28,48 +25,31 @@ export class Logger {
|
|
|
28
25
|
* @param args Optional arguments.
|
|
29
26
|
*/
|
|
30
27
|
public static error(message: unknown, ...args: string[]) {
|
|
31
|
-
this.logSingle(message,
|
|
28
|
+
this.logSingle(message, 'red');
|
|
32
29
|
args.forEach(() => {
|
|
33
|
-
this.logSingle(message,
|
|
30
|
+
this.logSingle(message, 'red');
|
|
34
31
|
});
|
|
35
32
|
}
|
|
36
33
|
|
|
37
|
-
public static logSingle(text: unknown,
|
|
34
|
+
public static logSingle(text: unknown, color: 'green' | 'red' = 'green') {
|
|
38
35
|
if (this.currentFrame > 9) {
|
|
39
36
|
this.currentFrame = 0;
|
|
40
37
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
logMessage = `${chalk.green(new Date().toLocaleString() + ': ')}${text}\n`;
|
|
45
|
-
} else {
|
|
46
|
-
logMessage = `${chalk.red(new Date().toLocaleString() + ': ')}${text}\n`;
|
|
47
|
-
}
|
|
48
|
-
if (overrideConsole) {
|
|
49
|
-
logUpdate(`${spinner} ${logMessage}`);
|
|
50
|
-
} else {
|
|
51
|
-
process.stdout.write(`${spinner} ${logMessage}`);
|
|
52
|
-
}
|
|
38
|
+
|
|
39
|
+
const logMessage = `${this.getChalkFn(color)(new Date().toLocaleString() + ': ')}${text}\n`;
|
|
40
|
+
process.stdout.write(logMessage);
|
|
53
41
|
}
|
|
54
42
|
|
|
55
|
-
|
|
56
|
-
|
|
43
|
+
private static getChalkFn(color: 'green' | 'red') {
|
|
44
|
+
return color === 'green' ? chalk.green : chalk.red;
|
|
57
45
|
}
|
|
58
46
|
|
|
59
|
-
public static startSpinner() {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
}
|
|
63
|
-
this.spinnerInterval = setInterval(() => {
|
|
64
|
-
this.logSingle('Processing...', true, 'green', true);
|
|
65
|
-
}, 80);
|
|
47
|
+
public static startSpinner(text: string) {
|
|
48
|
+
this.spinner.text = text;
|
|
49
|
+
this.spinner.start();
|
|
66
50
|
}
|
|
67
51
|
|
|
68
|
-
public static
|
|
69
|
-
|
|
70
|
-
clearInterval(this.spinnerInterval);
|
|
71
|
-
this.spinnerInterval = null;
|
|
72
|
-
this.clear();
|
|
73
|
-
}
|
|
52
|
+
public static succeedSpinner(text: string) {
|
|
53
|
+
this.spinner.succeed(text);
|
|
74
54
|
}
|
|
75
55
|
}
|