@cparra/apexdocs 3.0.0-alpha.4 → 3.0.0-alpha.6
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 +69 -68
- package/package.json +2 -2
- package/src/application/Apexdocs.ts +4 -3
- package/src/application/generators/markdown.ts +4 -3
- package/src/application/generators/openapi.ts +3 -4
- package/src/core/openapi/open-api-docs-processor.ts +1 -1
- package/src/util/logger.ts +17 -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');
|
|
@@ -1526,7 +1526,7 @@ var __spreadValues$7 = (a, b) => {
|
|
|
1526
1526
|
return a;
|
|
1527
1527
|
};
|
|
1528
1528
|
var __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b));
|
|
1529
|
-
var __async$
|
|
1529
|
+
var __async$3 = (__this, __arguments, generator) => {
|
|
1530
1530
|
return new Promise((resolve, reject) => {
|
|
1531
1531
|
var fulfilled = (value) => {
|
|
1532
1532
|
try {
|
|
@@ -1578,7 +1578,7 @@ function generateDocs(apexBundles, config) {
|
|
|
1578
1578
|
}
|
|
1579
1579
|
function transformReferenceHook(config) {
|
|
1580
1580
|
function _execute(references, parsedFiles, transformReference) {
|
|
1581
|
-
return __async$
|
|
1581
|
+
return __async$3(this, null, function* () {
|
|
1582
1582
|
return {
|
|
1583
1583
|
references: yield execTransformReferenceHook(Object.values(references), transformReference),
|
|
1584
1584
|
parsedFiles
|
|
@@ -1599,8 +1599,8 @@ function transformDocumentationBundleHook(config) {
|
|
|
1599
1599
|
function passThroughHook(value) {
|
|
1600
1600
|
return value;
|
|
1601
1601
|
}
|
|
1602
|
-
const execTransformReferenceHook = (_0, ..._1) => __async$
|
|
1603
|
-
const hooked = references.map((reference) => __async$
|
|
1602
|
+
const execTransformReferenceHook = (_0, ..._1) => __async$3(void 0, [_0, ..._1], function* (references, hook = passThroughHook) {
|
|
1603
|
+
const hooked = references.map((reference) => __async$3(void 0, null, function* () {
|
|
1604
1604
|
const hookedResult = yield hook(reference);
|
|
1605
1605
|
return __spreadValues$7(__spreadValues$7({}, reference), hookedResult);
|
|
1606
1606
|
}));
|
|
@@ -1610,24 +1610,24 @@ const execTransformReferenceHook = (_0, ..._1) => __async$2(void 0, [_0, ..._1],
|
|
|
1610
1610
|
return acc;
|
|
1611
1611
|
}, {});
|
|
1612
1612
|
});
|
|
1613
|
-
const documentationBundleHook = (bundle, config) => __async$
|
|
1613
|
+
const documentationBundleHook = (bundle, config) => __async$3(void 0, null, function* () {
|
|
1614
1614
|
return {
|
|
1615
1615
|
referenceGuide: yield transformReferenceGuide(bundle.referenceGuide, config.transformReferenceGuide),
|
|
1616
1616
|
docs: yield transformDocs(bundle.docs, config.transformDocs, config.transformDocPage)
|
|
1617
1617
|
};
|
|
1618
1618
|
});
|
|
1619
|
-
const transformReferenceGuide = (_0, ..._1) => __async$
|
|
1619
|
+
const transformReferenceGuide = (_0, ..._1) => __async$3(void 0, [_0, ..._1], function* (referenceGuide, hook = passThroughHook) {
|
|
1620
1620
|
const result = yield hook(referenceGuide);
|
|
1621
1621
|
if (isSkip(result)) {
|
|
1622
1622
|
return result;
|
|
1623
1623
|
}
|
|
1624
1624
|
return __spreadValues$7(__spreadValues$7({}, referenceGuide), yield hook(referenceGuide));
|
|
1625
1625
|
});
|
|
1626
|
-
const transformDocs = (_0, ..._1) => __async$
|
|
1626
|
+
const transformDocs = (_0, ..._1) => __async$3(void 0, [_0, ..._1], function* (docs, transformDocsHook = passThroughHook, transformDocPageHook = passThroughHook) {
|
|
1627
1627
|
const transformed = yield transformDocsHook(docs);
|
|
1628
1628
|
return Promise.all(transformed.map((doc) => transformDocPage(doc, transformDocPageHook)));
|
|
1629
1629
|
});
|
|
1630
|
-
const transformDocPage = (_0, ..._1) => __async$
|
|
1630
|
+
const transformDocPage = (_0, ..._1) => __async$3(void 0, [_0, ..._1], function* (doc, hook = passThroughHook) {
|
|
1631
1631
|
return __spreadValues$7(__spreadValues$7({}, doc), yield hook(doc));
|
|
1632
1632
|
});
|
|
1633
1633
|
function postHookCompile(bundle) {
|
|
@@ -1718,52 +1718,33 @@ 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}
|
|
1734
|
-
`;
|
|
1735
|
-
} else {
|
|
1736
|
-
logMessage = `${chalk.red((/* @__PURE__ */ new Date()).toLocaleString() + ": ")}${text}
|
|
1730
|
+
const logMessage = `${this.getChalkFn(color)((/* @__PURE__ */ new Date()).toLocaleString() + ": ")}${text}
|
|
1737
1731
|
`;
|
|
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
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
this.spinnerInterval = setInterval(() => {
|
|
1753
|
-
this.logSingle("Processing...", true, "green", true);
|
|
1754
|
-
}, 80);
|
|
1737
|
+
// TODO: This isn't really working and I don't think its worth it. Let's just completely remove the ora dependency.
|
|
1738
|
+
static startSpinner(text) {
|
|
1739
|
+
this.spinner.text = text;
|
|
1740
|
+
this.spinner.start();
|
|
1755
1741
|
}
|
|
1756
|
-
static
|
|
1757
|
-
|
|
1758
|
-
clearInterval(this.spinnerInterval);
|
|
1759
|
-
this.spinnerInterval = null;
|
|
1760
|
-
this.clear();
|
|
1761
|
-
}
|
|
1742
|
+
static succeedSpinner(text) {
|
|
1743
|
+
this.spinner.succeed(text);
|
|
1762
1744
|
}
|
|
1763
1745
|
}
|
|
1764
1746
|
Logger.currentFrame = 0;
|
|
1765
|
-
Logger.
|
|
1766
|
-
Logger.spinnerInterval = null;
|
|
1747
|
+
Logger.spinner = ora();
|
|
1767
1748
|
|
|
1768
1749
|
const referenceGuideTemplate = `
|
|
1769
1750
|
# Apex Reference Guide
|
|
@@ -1799,23 +1780,45 @@ var __spreadValues$5 = (a, b) => {
|
|
|
1799
1780
|
return a;
|
|
1800
1781
|
};
|
|
1801
1782
|
var __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));
|
|
1802
|
-
|
|
1803
|
-
return
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
Logger.error(error.error);
|
|
1810
|
-
return;
|
|
1783
|
+
var __async$2 = (__this, __arguments, generator) => {
|
|
1784
|
+
return new Promise((resolve, reject) => {
|
|
1785
|
+
var fulfilled = (value) => {
|
|
1786
|
+
try {
|
|
1787
|
+
step(generator.next(value));
|
|
1788
|
+
} catch (e) {
|
|
1789
|
+
reject(e);
|
|
1811
1790
|
}
|
|
1812
|
-
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1791
|
+
};
|
|
1792
|
+
var rejected = (value) => {
|
|
1793
|
+
try {
|
|
1794
|
+
step(generator.throw(value));
|
|
1795
|
+
} catch (e) {
|
|
1796
|
+
reject(e);
|
|
1797
|
+
}
|
|
1798
|
+
};
|
|
1799
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
1800
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
1801
|
+
});
|
|
1802
|
+
};
|
|
1803
|
+
function generate(bundles, config) {
|
|
1804
|
+
return __async$2(this, null, function* () {
|
|
1805
|
+
return _function.pipe(
|
|
1806
|
+
generateDocumentationBundle(bundles, config),
|
|
1807
|
+
TE__namespace.map((files) => writeFilesToSystem(files, config.targetDir)),
|
|
1808
|
+
TE__namespace.mapLeft((error) => {
|
|
1809
|
+
if (error._tag === "HookError") {
|
|
1810
|
+
Logger.error("Error(s) occurred while processing hooks. Please review the following issues:");
|
|
1811
|
+
Logger.error(error.error);
|
|
1812
|
+
return;
|
|
1813
|
+
}
|
|
1814
|
+
const errorMessages = [
|
|
1815
|
+
"Error(s) occurred while parsing files. Please review the following issues:",
|
|
1816
|
+
...error.errors.map(formatReflectionError)
|
|
1817
|
+
].join("\n");
|
|
1818
|
+
Logger.error(errorMessages);
|
|
1819
|
+
})
|
|
1820
|
+
)();
|
|
1821
|
+
});
|
|
1819
1822
|
}
|
|
1820
1823
|
function generateDocumentationBundle(bundles, config) {
|
|
1821
1824
|
return generateDocs(bundles, __spreadProps$5(__spreadValues$5({}, config), {
|
|
@@ -1826,8 +1829,7 @@ function writeFilesToSystem(files, outputDir) {
|
|
|
1826
1829
|
FileWriter.write(
|
|
1827
1830
|
[files.referenceGuide, ...files.docs].filter((file) => !isSkip(file)),
|
|
1828
1831
|
outputDir,
|
|
1829
|
-
(
|
|
1830
|
-
Logger.logSingle(`${file.outputDocPath} processed.`, false, "green", false);
|
|
1832
|
+
() => {
|
|
1831
1833
|
}
|
|
1832
1834
|
);
|
|
1833
1835
|
}
|
|
@@ -2737,7 +2739,7 @@ class OpenApiDocsProcessor {
|
|
|
2737
2739
|
}
|
|
2738
2740
|
onProcess(type) {
|
|
2739
2741
|
var _a, _b;
|
|
2740
|
-
Logger.logSingle(`Processing ${type.name}`,
|
|
2742
|
+
Logger.logSingle(`Processing ${type.name}`, "green");
|
|
2741
2743
|
const endpointPath = this.getEndpointPath(type);
|
|
2742
2744
|
if (!endpointPath) {
|
|
2743
2745
|
return;
|
|
@@ -2785,7 +2787,7 @@ function openApi(fileBodies, config) {
|
|
|
2785
2787
|
Transpiler.generate(filteredTypes, processor);
|
|
2786
2788
|
const generatedFiles = processor.fileBuilder().files();
|
|
2787
2789
|
FileWriter.write(generatedFiles, config.targetDir, (file) => {
|
|
2788
|
-
Logger.logSingle(`${file.outputDocPath} processed.`,
|
|
2790
|
+
Logger.logSingle(`${file.outputDocPath} processed.`, "green");
|
|
2789
2791
|
});
|
|
2790
2792
|
ErrorLogger.logErrors(filteredTypes);
|
|
2791
2793
|
}
|
|
@@ -2807,9 +2809,8 @@ function filterByScopes(manifest) {
|
|
|
2807
2809
|
"httpput"
|
|
2808
2810
|
]);
|
|
2809
2811
|
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);
|
|
2812
|
+
Logger.logSingle(filteredLogMessage, "green");
|
|
2813
|
+
Logger.logSingle(`Creating documentation for ${filteredTypes.length} file(s)`, "green");
|
|
2813
2814
|
return filteredTypes;
|
|
2814
2815
|
}
|
|
2815
2816
|
|
|
@@ -2889,8 +2890,8 @@ class Apexdocs {
|
|
|
2889
2890
|
*/
|
|
2890
2891
|
static generate(config) {
|
|
2891
2892
|
return __async$1(this, null, function* () {
|
|
2892
|
-
Logger.logSingle("Initializing..."
|
|
2893
|
-
Logger.startSpinner();
|
|
2893
|
+
Logger.logSingle("Initializing...");
|
|
2894
|
+
Logger.startSpinner("Processing files...");
|
|
2894
2895
|
try {
|
|
2895
2896
|
const fileBodies = ApexFileReader.processFiles(new DefaultFileSystem(), config.sourceDir, config.includeMetadata);
|
|
2896
2897
|
switch (config.targetGenerator) {
|
|
@@ -2902,7 +2903,7 @@ class Apexdocs {
|
|
|
2902
2903
|
break;
|
|
2903
2904
|
}
|
|
2904
2905
|
} finally {
|
|
2905
|
-
Logger.
|
|
2906
|
+
Logger.succeedSpinner("Files processed.");
|
|
2906
2907
|
}
|
|
2907
2908
|
});
|
|
2908
2909
|
}
|
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.6",
|
|
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
|
}
|
|
@@ -13,7 +13,7 @@ import { referenceGuideTemplate } from '../../core/markdown/templates/reference-
|
|
|
13
13
|
import * as TE from 'fp-ts/TaskEither';
|
|
14
14
|
import { isSkip } from '../../core/shared/utils';
|
|
15
15
|
|
|
16
|
-
export default function generate(bundles: UnparsedSourceFile[], config: UserDefinedMarkdownConfig) {
|
|
16
|
+
export default async function generate(bundles: UnparsedSourceFile[], config: UserDefinedMarkdownConfig) {
|
|
17
17
|
return pipe(
|
|
18
18
|
generateDocumentationBundle(bundles, config),
|
|
19
19
|
TE.map((files) => writeFilesToSystem(files, config.targetDir)),
|
|
@@ -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,33 @@ 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
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
this.
|
|
64
|
-
this.logSingle('Processing...', true, 'green', true);
|
|
65
|
-
}, 80);
|
|
47
|
+
// TODO: This isn't really working and I don't think its worth it. Let's just completely remove the ora dependency.
|
|
48
|
+
|
|
49
|
+
public static startSpinner(text: string) {
|
|
50
|
+
this.spinner.text = text;
|
|
51
|
+
this.spinner.start();
|
|
66
52
|
}
|
|
67
53
|
|
|
68
|
-
public static
|
|
69
|
-
|
|
70
|
-
clearInterval(this.spinnerInterval);
|
|
71
|
-
this.spinnerInterval = null;
|
|
72
|
-
this.clear();
|
|
73
|
-
}
|
|
54
|
+
public static succeedSpinner(text: string) {
|
|
55
|
+
this.spinner.succeed(text);
|
|
74
56
|
}
|
|
75
57
|
}
|