@herodevs/cli 0.1.15 → 0.2.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 +16 -330
- package/dist/commands/{committer/get-all.d.ts → report/committers.d.ts} +3 -3
- package/dist/commands/{committer/get-all.js → report/committers.js} +17 -26
- package/dist/commands/tracker/init.d.ts +8 -0
- package/dist/commands/tracker/init.js +16 -0
- package/dist/commands/tracker/run.d.ts +13 -0
- package/dist/commands/tracker/run.js +38 -0
- package/dist/package.json +25 -11
- package/dist/shared/command/base-command.d.ts +1 -1
- package/dist/shared/lib/version-update.js +11 -26
- package/dist/shared/tracker/default-config.d.ts +3 -0
- package/dist/shared/tracker/default-config.js +19 -0
- package/dist/shared/tracker/initialize.d.ts +1 -0
- package/dist/shared/tracker/initialize.js +15 -0
- package/dist/shared/tracker/models/aggregate-result.d.ts +4 -0
- package/dist/shared/tracker/models/aggregate-result.js +2 -0
- package/dist/shared/tracker/models/category-result.d.ts +7 -0
- package/dist/shared/tracker/models/category-result.js +2 -0
- package/dist/shared/tracker/models/category.d.ts +9 -0
- package/dist/shared/tracker/models/category.js +2 -0
- package/dist/shared/tracker/models/chart-config.d.ts +24 -0
- package/dist/shared/tracker/models/chart-config.js +81 -0
- package/dist/shared/tracker/models/config.d.ts +8 -0
- package/dist/shared/tracker/models/config.js +2 -0
- package/dist/shared/tracker/models/file-result.d.ts +5 -0
- package/dist/shared/tracker/models/file-result.js +2 -0
- package/dist/shared/tracker/models/process-result.d.ts +6 -0
- package/dist/shared/tracker/models/process-result.js +2 -0
- package/dist/shared/tracker/models/result.d.ts +11 -0
- package/dist/shared/tracker/models/result.js +2 -0
- package/dist/shared/tracker/models/total-result.d.ts +4 -0
- package/dist/shared/tracker/models/total-result.js +2 -0
- package/dist/shared/tracker/models/viz-dataset.d.ts +4 -0
- package/dist/shared/tracker/models/viz-dataset.js +2 -0
- package/dist/shared/tracker/models/viz-labels-datasets.d.ts +5 -0
- package/dist/shared/tracker/models/viz-labels-datasets.js +2 -0
- package/dist/shared/tracker/process-category.d.ts +3 -0
- package/dist/shared/tracker/process-category.js +155 -0
- package/dist/shared/tracker/process-config.d.ts +3 -0
- package/dist/shared/tracker/process-config.js +16 -0
- package/dist/shared/tracker/tracker-chart.d.ts +14 -0
- package/dist/shared/tracker/tracker-chart.js +158 -0
- package/dist/shared/tracker/util.d.ts +20 -0
- package/dist/shared/tracker/util.js +92 -0
- package/oclif.manifest.json +41 -31
- package/package.json +25 -11
- package/dist/commands/committer/index.d.ts +0 -9
- package/dist/commands/committer/index.js +0 -15
|
@@ -1,48 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ensureVersionIsUpToDate = exports.isVersionUpToDate = void 0;
|
|
4
|
-
const shell_1 = require("./shell");
|
|
5
4
|
const config_1 = require("../config");
|
|
6
|
-
const
|
|
5
|
+
const getJson = require("get-json");
|
|
7
6
|
const enums_1 = require("../enums");
|
|
8
7
|
const red = (0, enums_1.color)("\u001B[31m" /* Color.FgRed */);
|
|
9
8
|
const yellow = (0, enums_1.color)("\u001B[33m" /* Color.FgYellow */);
|
|
10
|
-
const green = (0, enums_1.color)("\u001B[32m" /* Color.FgGreen */);
|
|
11
|
-
async function wrapCommandToHandleDebugging(command, message, commandInstance) {
|
|
12
|
-
let result = '';
|
|
13
|
-
try {
|
|
14
|
-
result = await (0, shell_1.run)(command);
|
|
15
|
-
}
|
|
16
|
-
catch (ex) {
|
|
17
|
-
console.info('EX', ex);
|
|
18
|
-
// if command fails because debugger is attached, log the message
|
|
19
|
-
if (!!~ex.toString().toLowerCase().indexOf('debugger attached')) {
|
|
20
|
-
commandInstance.log(message);
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
commandInstance.log(command);
|
|
24
|
-
commandInstance.error(ex);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
return result;
|
|
28
|
-
}
|
|
29
9
|
function reconstituteCommandPositionalsAndFlags(command) {
|
|
30
10
|
var _a;
|
|
31
11
|
return [
|
|
32
12
|
...(_a = command.id) === null || _a === void 0 ? void 0 : _a.split(':'),
|
|
33
|
-
...Object.keys(command.flags).map((flag) => `--${flag}='${command.flags[flag]}'`)
|
|
13
|
+
...Object.keys(command.flags).map((flag) => `--${flag}='${command.flags[flag]}'`),
|
|
34
14
|
].join(' ');
|
|
35
15
|
}
|
|
16
|
+
async function getLatestVersion(pkgName) {
|
|
17
|
+
return getJson(`https://registry.npmjs.org/${pkgName}`).then((packageData) => {
|
|
18
|
+
return packageData['dist-tags'].latest;
|
|
19
|
+
});
|
|
20
|
+
}
|
|
36
21
|
async function isVersionUpToDate(command, quietIfSuccessful = false) {
|
|
37
|
-
const
|
|
38
|
-
if (
|
|
22
|
+
const latestVersion = await getLatestVersion(config_1.env.packageName);
|
|
23
|
+
if (latestVersion === config_1.env.packageVersion) {
|
|
39
24
|
if (!quietIfSuccessful) {
|
|
40
|
-
command.log(`${config_1.env.packageName}@${
|
|
25
|
+
command.log(`${config_1.env.packageName}@${latestVersion} is up to date`);
|
|
41
26
|
}
|
|
42
27
|
return true;
|
|
43
28
|
}
|
|
44
29
|
command.log(`${yellow('Your version:', red(`${config_1.env.packageName}@${config_1.env.packageVersion}`), `is not up to date`)}`);
|
|
45
|
-
command.log(`${yellow('Latest version:', red(`${config_1.env.packageName}@${
|
|
30
|
+
command.log(`${yellow('Latest version:', red(`${config_1.env.packageName}@${latestVersion}`))}`);
|
|
46
31
|
return false;
|
|
47
32
|
}
|
|
48
33
|
exports.isVersionUpToDate = isVersionUpToDate;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const defaultConfig = {
|
|
4
|
+
categories: {
|
|
5
|
+
legacy: {
|
|
6
|
+
fileTypes: ['js', 'ts', 'html', 'css', 'scss', 'less'],
|
|
7
|
+
includes: ['./legacy'],
|
|
8
|
+
jsTsPairs: 'js',
|
|
9
|
+
},
|
|
10
|
+
modern: {
|
|
11
|
+
fileTypes: ['ts', 'html', 'css', 'scss', 'less'],
|
|
12
|
+
includes: ['./modern'],
|
|
13
|
+
jsTsPairs: 'ts',
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
ignorePatterns: ['node_modules'],
|
|
17
|
+
outputDir: 'hd-tracker',
|
|
18
|
+
};
|
|
19
|
+
exports.default = defaultConfig;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function initialize(rootDir: string): void;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.initialize = void 0;
|
|
4
|
+
const path_1 = require("path");
|
|
5
|
+
const fs_1 = require("fs");
|
|
6
|
+
const default_config_1 = require("./default-config");
|
|
7
|
+
function initialize(rootDir) {
|
|
8
|
+
const output = JSON.stringify(default_config_1.default, null, 2);
|
|
9
|
+
const dir = (0, path_1.join)(rootDir, "hd-tracker");
|
|
10
|
+
if (!(0, fs_1.existsSync)(dir)) {
|
|
11
|
+
(0, fs_1.mkdirSync)(dir);
|
|
12
|
+
}
|
|
13
|
+
(0, fs_1.writeFileSync)((0, path_1.join)(dir, "config.json"), output);
|
|
14
|
+
}
|
|
15
|
+
exports.initialize = initialize;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export declare class ChartConfig {
|
|
2
|
+
private _cliOptions;
|
|
3
|
+
private _perCategoryAndFileType;
|
|
4
|
+
private _perCategoryTotals;
|
|
5
|
+
private _width;
|
|
6
|
+
private _height;
|
|
7
|
+
private _bg;
|
|
8
|
+
private _title;
|
|
9
|
+
private _xAxisLabel;
|
|
10
|
+
private _yAxisLabel;
|
|
11
|
+
private _overwrite;
|
|
12
|
+
private _outFile;
|
|
13
|
+
get perCategoryAndFileType(): boolean;
|
|
14
|
+
get perCategoryTotals(): boolean;
|
|
15
|
+
get width(): number;
|
|
16
|
+
get height(): number;
|
|
17
|
+
get bg(): string;
|
|
18
|
+
get title(): string;
|
|
19
|
+
get xAxisLabel(): string;
|
|
20
|
+
get yAxisLabel(): string;
|
|
21
|
+
get overwrite(): boolean;
|
|
22
|
+
get outFile(): string;
|
|
23
|
+
constructor(_cliOptions?: ChartConfig);
|
|
24
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ChartConfig = void 0;
|
|
4
|
+
class ChartConfig {
|
|
5
|
+
get perCategoryAndFileType() {
|
|
6
|
+
// if false, use false; false !== undefined
|
|
7
|
+
return this._cliOptions.perCategoryAndFileType !== undefined ?
|
|
8
|
+
this._cliOptions.perCategoryAndFileType :
|
|
9
|
+
this._perCategoryAndFileType;
|
|
10
|
+
}
|
|
11
|
+
get perCategoryTotals() {
|
|
12
|
+
// if false, use false; false !== undefined
|
|
13
|
+
return this._cliOptions.perCategoryTotals !== undefined ?
|
|
14
|
+
this._cliOptions.perCategoryTotals :
|
|
15
|
+
this._perCategoryTotals;
|
|
16
|
+
}
|
|
17
|
+
get width() {
|
|
18
|
+
// if set and non-numeric
|
|
19
|
+
if (this._cliOptions.width !== undefined && isNaN(Number(this._cliOptions.width))) {
|
|
20
|
+
throw Error('--chart.width must be a number');
|
|
21
|
+
}
|
|
22
|
+
// if unset or numeric
|
|
23
|
+
return this._cliOptions.width !== undefined ?
|
|
24
|
+
this._cliOptions.width :
|
|
25
|
+
this._width;
|
|
26
|
+
}
|
|
27
|
+
get height() {
|
|
28
|
+
// if set and non-numeric
|
|
29
|
+
if (this._cliOptions.height !== undefined && isNaN(Number(this._cliOptions.height))) {
|
|
30
|
+
throw Error('--chart.height must be a number');
|
|
31
|
+
}
|
|
32
|
+
// if unset or numeric
|
|
33
|
+
return this._cliOptions.height !== undefined ?
|
|
34
|
+
this._cliOptions.height :
|
|
35
|
+
this._height;
|
|
36
|
+
}
|
|
37
|
+
get bg() {
|
|
38
|
+
return this._cliOptions.bg ?
|
|
39
|
+
this._cliOptions.bg :
|
|
40
|
+
this._bg;
|
|
41
|
+
}
|
|
42
|
+
get title() {
|
|
43
|
+
return this._cliOptions.title ?
|
|
44
|
+
this._cliOptions.title :
|
|
45
|
+
this._title;
|
|
46
|
+
}
|
|
47
|
+
get xAxisLabel() {
|
|
48
|
+
return this._cliOptions.xAxisLabel ?
|
|
49
|
+
this._cliOptions.xAxisLabel :
|
|
50
|
+
this._xAxisLabel;
|
|
51
|
+
}
|
|
52
|
+
get yAxisLabel() {
|
|
53
|
+
return this._cliOptions.yAxisLabel ?
|
|
54
|
+
this._cliOptions.yAxisLabel :
|
|
55
|
+
this._yAxisLabel;
|
|
56
|
+
}
|
|
57
|
+
get overwrite() {
|
|
58
|
+
return this._cliOptions.overwrite !== undefined ?
|
|
59
|
+
this._cliOptions.overwrite :
|
|
60
|
+
this._overwrite;
|
|
61
|
+
}
|
|
62
|
+
get outFile() {
|
|
63
|
+
return this._cliOptions.outFile ?
|
|
64
|
+
this._cliOptions.outFile :
|
|
65
|
+
this._outFile;
|
|
66
|
+
}
|
|
67
|
+
constructor(_cliOptions = {}) {
|
|
68
|
+
this._cliOptions = _cliOptions;
|
|
69
|
+
this._perCategoryAndFileType = false;
|
|
70
|
+
this._perCategoryTotals = true;
|
|
71
|
+
this._width = 1200;
|
|
72
|
+
this._height = 800;
|
|
73
|
+
this._bg = 'white';
|
|
74
|
+
this._title = 'Migration Progress LOC';
|
|
75
|
+
this._xAxisLabel = 'Date';
|
|
76
|
+
this._yAxisLabel = 'Totals';
|
|
77
|
+
this._overwrite = true;
|
|
78
|
+
this._outFile = 'viz.png';
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
exports.ChartConfig = ChartConfig;
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.processCategory = void 0;
|
|
4
|
+
const sloc = require("sloc");
|
|
5
|
+
const fs_1 = require("fs");
|
|
6
|
+
const path_1 = require("path");
|
|
7
|
+
function processCategory(rootDirectory, category, ignorePatterns) {
|
|
8
|
+
console.log(`Processing "${category.name}"...`);
|
|
9
|
+
const allFiles = category.includes.reduce((acc, include) => {
|
|
10
|
+
return [...acc, ...findAllFilesInDirectory((0, path_1.join)(rootDirectory, include))];
|
|
11
|
+
}, []);
|
|
12
|
+
const includedFiles = findIncludedFiles(category, ignorePatterns, allFiles);
|
|
13
|
+
console.log(` ${includedFiles.length} files...`);
|
|
14
|
+
const results = includedFiles.map(getFileStats);
|
|
15
|
+
const resultMap = aggregateResults(results);
|
|
16
|
+
const aggregatedResults = Object.values(resultMap).map((val) => val);
|
|
17
|
+
const totals = aggregatedResults.reduce((totals, curr) => ({
|
|
18
|
+
fileCount: totals.fileCount + curr.fileCount,
|
|
19
|
+
total: totals.total + curr.total,
|
|
20
|
+
source: totals.source + curr.source,
|
|
21
|
+
comment: totals.comment + curr.comment,
|
|
22
|
+
single: totals.single + curr.single,
|
|
23
|
+
block: totals.block + curr.block,
|
|
24
|
+
mixed: totals.mixed + curr.mixed,
|
|
25
|
+
empty: totals.empty + curr.empty,
|
|
26
|
+
todo: totals.todo + curr.todo,
|
|
27
|
+
blockEmpty: totals.blockEmpty + curr.blockEmpty,
|
|
28
|
+
}), {
|
|
29
|
+
fileCount: 0,
|
|
30
|
+
total: 0,
|
|
31
|
+
source: 0,
|
|
32
|
+
comment: 0,
|
|
33
|
+
single: 0,
|
|
34
|
+
block: 0,
|
|
35
|
+
mixed: 0,
|
|
36
|
+
empty: 0,
|
|
37
|
+
todo: 0,
|
|
38
|
+
blockEmpty: 0,
|
|
39
|
+
});
|
|
40
|
+
const final = {
|
|
41
|
+
name: category.name,
|
|
42
|
+
totals: totals,
|
|
43
|
+
fileTypes: aggregatedResults,
|
|
44
|
+
};
|
|
45
|
+
console.log(` ${final.totals.total} total lines`);
|
|
46
|
+
return final;
|
|
47
|
+
}
|
|
48
|
+
exports.processCategory = processCategory;
|
|
49
|
+
function aggregateResults(results) {
|
|
50
|
+
return results.reduce((acc, result) => {
|
|
51
|
+
const fileTypeResults = acc[result.fileType];
|
|
52
|
+
if (!fileTypeResults) {
|
|
53
|
+
acc[result.fileType] = {
|
|
54
|
+
fileType: result.fileType,
|
|
55
|
+
fileCount: 1,
|
|
56
|
+
total: result.total,
|
|
57
|
+
source: result.source,
|
|
58
|
+
comment: result.comment,
|
|
59
|
+
single: result.single,
|
|
60
|
+
block: result.block,
|
|
61
|
+
mixed: result.mixed,
|
|
62
|
+
empty: result.empty,
|
|
63
|
+
todo: result.todo,
|
|
64
|
+
blockEmpty: result.blockEmpty,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
acc[result.fileType] = {
|
|
69
|
+
fileType: result.fileType,
|
|
70
|
+
fileCount: fileTypeResults.fileCount + 1,
|
|
71
|
+
total: fileTypeResults.total + result.total,
|
|
72
|
+
source: fileTypeResults.source + result.source,
|
|
73
|
+
comment: fileTypeResults.comment + result.comment,
|
|
74
|
+
single: fileTypeResults.single + result.single,
|
|
75
|
+
block: fileTypeResults.block + result.block,
|
|
76
|
+
mixed: fileTypeResults.mixed + result.mixed,
|
|
77
|
+
empty: fileTypeResults.empty + result.empty,
|
|
78
|
+
todo: fileTypeResults.todo + result.todo,
|
|
79
|
+
blockEmpty: fileTypeResults.blockEmpty + result.blockEmpty,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
return acc;
|
|
83
|
+
}, {});
|
|
84
|
+
}
|
|
85
|
+
function getFileStats(file) {
|
|
86
|
+
const contents = (0, fs_1.readFileSync)(file).toString('utf-8');
|
|
87
|
+
const fileType = getFileExt(file);
|
|
88
|
+
const stats = sloc(contents, fileType);
|
|
89
|
+
return {
|
|
90
|
+
path: file,
|
|
91
|
+
fileType: fileType,
|
|
92
|
+
...stats,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
function findIncludedFiles(category, ignorePatterns, allFiles) {
|
|
96
|
+
return allFiles
|
|
97
|
+
.filter((file) => {
|
|
98
|
+
var _a;
|
|
99
|
+
const ext = getFileExt(file);
|
|
100
|
+
let shouldBeIncluded = !!category.fileTypes.find((fileType) => fileType === ext);
|
|
101
|
+
if (shouldBeIncluded) {
|
|
102
|
+
ignorePatterns === null || ignorePatterns === void 0 ? void 0 : ignorePatterns.forEach((ignorePattern) => {
|
|
103
|
+
if (file.indexOf(ignorePattern) !== -1) {
|
|
104
|
+
shouldBeIncluded = false;
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
if (shouldBeIncluded) {
|
|
109
|
+
(_a = category.excludes) === null || _a === void 0 ? void 0 : _a.forEach((exclude) => {
|
|
110
|
+
if (file.indexOf(exclude) !== -1) {
|
|
111
|
+
shouldBeIncluded = false;
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
return shouldBeIncluded;
|
|
116
|
+
})
|
|
117
|
+
.filter((file, _index, files) => {
|
|
118
|
+
if (category.jsTsPairs === 'ignore' || category.jsTsPairs === undefined) {
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
const fileExtToKeep = category.jsTsPairs;
|
|
122
|
+
const ext = getFileExt(file);
|
|
123
|
+
const fileExtToDiscard = fileExtToKeep === 'js' ? 'ts' : 'js';
|
|
124
|
+
// if it is the extension to keep
|
|
125
|
+
// or if it is not the one to discard, we keep those files
|
|
126
|
+
if (fileExtToKeep === ext || fileExtToDiscard !== ext) {
|
|
127
|
+
return true;
|
|
128
|
+
}
|
|
129
|
+
// get the counterpart's extension
|
|
130
|
+
const counterpartExt = ext === 'js' ? 'ts' : 'js';
|
|
131
|
+
const parts = file.split('.');
|
|
132
|
+
parts[parts.length - 1] = counterpartExt;
|
|
133
|
+
const counterpartExists = files.filter((f) => f === parts.join('.')).length !== 0;
|
|
134
|
+
if (counterpartExists) {
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
return true;
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
function findAllFilesInDirectory(directory) {
|
|
141
|
+
const results = (0, fs_1.readdirSync)(directory);
|
|
142
|
+
const subfiles = results
|
|
143
|
+
.filter((result) => (0, fs_1.lstatSync)((0, path_1.join)(directory, result)).isDirectory())
|
|
144
|
+
.reduce((acc, subdir) => {
|
|
145
|
+
const files = findAllFilesInDirectory((0, path_1.join)(directory, subdir));
|
|
146
|
+
return [...acc, ...files];
|
|
147
|
+
}, []);
|
|
148
|
+
const files = results
|
|
149
|
+
.filter((result) => (0, fs_1.lstatSync)((0, path_1.join)(directory, result)).isFile())
|
|
150
|
+
.map((fileName) => (0, path_1.join)(directory, fileName));
|
|
151
|
+
return [...files, ...subfiles];
|
|
152
|
+
}
|
|
153
|
+
function getFileExt(file) {
|
|
154
|
+
return (0, path_1.extname)(file).replace(/\./g, '');
|
|
155
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.processConfig = void 0;
|
|
4
|
+
const process_category_1 = require("./process-category");
|
|
5
|
+
const util_1 = require("./util");
|
|
6
|
+
async function processConfig(config, rootDirectory) {
|
|
7
|
+
console.log(`Starting...`);
|
|
8
|
+
const categoryResults = Object.entries(config.categories).map(([name, category]) => (0, process_category_1.processCategory)(rootDirectory, { ...category, name }, config.ignorePatterns || []));
|
|
9
|
+
const commit = await (0, util_1.getGitCommit)();
|
|
10
|
+
return {
|
|
11
|
+
timestamp: commit.timestamp,
|
|
12
|
+
hash: commit.hash,
|
|
13
|
+
categories: categoryResults,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
exports.processConfig = processConfig;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AggregateResult } from './models/aggregate-result';
|
|
2
|
+
import { ChartConfig } from './models/chart-config';
|
|
3
|
+
import { ProcessResult } from './models/process-result';
|
|
4
|
+
export declare class TrackerChart {
|
|
5
|
+
private _config;
|
|
6
|
+
private _allProcessResults;
|
|
7
|
+
private _dateFormat;
|
|
8
|
+
constructor(_config: ChartConfig, _allProcessResults: ProcessResult[], _dateFormat: string);
|
|
9
|
+
private getDataAndLabels;
|
|
10
|
+
private getTotalsPerFileTypePerCategory;
|
|
11
|
+
private getTotalsPerCategory;
|
|
12
|
+
private generateGraphImageFile;
|
|
13
|
+
writeTo(parentDirectory: string, graphablePropertyName?: keyof AggregateResult): Promise<void>;
|
|
14
|
+
}
|