github-issue-tower-defence-management 1.107.0 → 1.109.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/CHANGELOG.md +14 -0
- package/README.md +14 -1
- package/bin/adapter/entry-points/cli/index.js +4 -4
- package/bin/adapter/entry-points/cli/index.js.map +1 -1
- package/bin/adapter/entry-points/console/dashboardComposeService.js +1 -0
- package/bin/adapter/entry-points/console/dashboardComposeService.js.map +1 -1
- package/bin/adapter/entry-points/handlers/GetStoryObjectMapUseCaseHandler.js +1 -1
- package/bin/adapter/entry-points/handlers/GetStoryObjectMapUseCaseHandler.js.map +1 -1
- package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js +1 -1
- package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js.map +1 -1
- package/bin/adapter/entry-points/handlers/machineStatusWriter.js +2 -0
- package/bin/adapter/entry-points/handlers/machineStatusWriter.js.map +1 -1
- package/bin/adapter/repositories/GraphqlProjectRepository.js +98 -4
- package/bin/adapter/repositories/GraphqlProjectRepository.js.map +1 -1
- package/bin/adapter/repositories/LocalStorageCacheRepository.js +5 -1
- package/bin/adapter/repositories/LocalStorageCacheRepository.js.map +1 -1
- package/bin/adapter/repositories/LocalStorageRepository.js +3 -0
- package/bin/adapter/repositories/LocalStorageRepository.js.map +1 -1
- package/bin/adapter/repositories/ProcHostMetricsRepository.js +25 -2
- package/bin/adapter/repositories/ProcHostMetricsRepository.js.map +1 -1
- package/bin/domain/usecases/dashboard/ComposeDashboardUseCase.js +12 -6
- package/bin/domain/usecases/dashboard/ComposeDashboardUseCase.js.map +1 -1
- package/package.json +1 -1
- package/src/adapter/entry-points/cli/index.ts +4 -0
- package/src/adapter/entry-points/console/dashboardComposeService.test.ts +8 -1
- package/src/adapter/entry-points/console/dashboardComposeService.ts +1 -0
- package/src/adapter/entry-points/console/webServer.test.ts +4 -1
- package/src/adapter/entry-points/handlers/GetStoryObjectMapUseCaseHandler.test.ts +6 -1
- package/src/adapter/entry-points/handlers/GetStoryObjectMapUseCaseHandler.ts +4 -1
- package/src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.test.ts +6 -1
- package/src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts +1 -0
- package/src/adapter/entry-points/handlers/machineStatusWriter.test.ts +14 -2
- package/src/adapter/entry-points/handlers/machineStatusWriter.ts +3 -0
- package/src/adapter/repositories/GraphqlProjectRepository.diskCache.test.ts +354 -0
- package/src/adapter/repositories/GraphqlProjectRepository.ts +139 -1
- package/src/adapter/repositories/LocalStorageCacheRepository.test.ts +35 -2
- package/src/adapter/repositories/LocalStorageCacheRepository.ts +5 -4
- package/src/adapter/repositories/LocalStorageRepository.test.ts +12 -0
- package/src/adapter/repositories/LocalStorageRepository.ts +3 -0
- package/src/adapter/repositories/ProcHostMetricsRepository.test.ts +26 -0
- package/src/adapter/repositories/ProcHostMetricsRepository.ts +36 -0
- package/src/domain/usecases/dashboard/ComposeDashboardUseCase.test.ts +44 -17
- package/src/domain/usecases/dashboard/ComposeDashboardUseCase.ts +13 -5
- package/types/adapter/entry-points/console/dashboardComposeService.d.ts.map +1 -1
- package/types/adapter/entry-points/handlers/GetStoryObjectMapUseCaseHandler.d.ts.map +1 -1
- package/types/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.d.ts.map +1 -1
- package/types/adapter/entry-points/handlers/machineStatusWriter.d.ts +1 -0
- package/types/adapter/entry-points/handlers/machineStatusWriter.d.ts.map +1 -1
- package/types/adapter/repositories/GraphqlProjectRepository.d.ts +10 -0
- package/types/adapter/repositories/GraphqlProjectRepository.d.ts.map +1 -1
- package/types/adapter/repositories/LocalStorageCacheRepository.d.ts.map +1 -1
- package/types/adapter/repositories/LocalStorageRepository.d.ts +1 -0
- package/types/adapter/repositories/LocalStorageRepository.d.ts.map +1 -1
- package/types/adapter/repositories/ProcHostMetricsRepository.d.ts +10 -1
- package/types/adapter/repositories/ProcHostMetricsRepository.d.ts.map +1 -1
- package/types/domain/usecases/dashboard/ComposeDashboardUseCase.d.ts +2 -1
- package/types/domain/usecases/dashboard/ComposeDashboardUseCase.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalStorageRepository.js","sourceRoot":"","sources":["../../../src/adapter/repositories/LocalStorageRepository.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AAEpB,MAAa,sBAAsB;IAAnC;QACE,UAAK,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,EAAE;YACtC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACpB,YAAE,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC,CAAC;QACF,SAAI,GAAG,CAAC,IAAY,EAAiB,EAAE;YACrC,OAAO,YAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACvC,CAAC,CAAC;QACF,cAAS,GAAG,CAAC,OAAe,EAAY,EAAE;YACxC,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5B,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,OAAO,YAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC,CAAC;QACF,UAAK,GAAG,CAAC,OAAe,EAAE,EAAE;YAC1B,YAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC,CAAC;QACF,WAAM,GAAG,CAAC,IAAY,EAAE,EAAE;YACxB,YAAE,CAAC,MAAM,CAAC,IAAI,EAAE;gBACd,KAAK,EAAE,IAAI;gBACX,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;CAAA;
|
|
1
|
+
{"version":3,"file":"LocalStorageRepository.js","sourceRoot":"","sources":["../../../src/adapter/repositories/LocalStorageRepository.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AAEpB,MAAa,sBAAsB;IAAnC;QACE,UAAK,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,EAAE;YACtC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACpB,YAAE,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC,CAAC;QACF,SAAI,GAAG,CAAC,IAAY,EAAiB,EAAE;YACrC,OAAO,YAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACvC,CAAC,CAAC;QACF,WAAM,GAAG,CAAC,OAAe,EAAE,OAAe,EAAE,EAAE;YAC5C,YAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAClC,CAAC,CAAC;QACF,cAAS,GAAG,CAAC,OAAe,EAAY,EAAE;YACxC,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5B,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,OAAO,YAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC,CAAC;QACF,UAAK,GAAG,CAAC,OAAe,EAAE,EAAE;YAC1B,YAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC,CAAC;QACF,WAAM,GAAG,CAAC,IAAY,EAAE,EAAE;YACxB,YAAE,CAAC,MAAM,CAAC,IAAI,EAAE;gBACd,KAAK,EAAE,IAAI;gBACX,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;CAAA;AA3BD,wDA2BC"}
|
|
@@ -33,10 +33,11 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.ProcHostMetricsRepository = exports.cycleMinutesFromMtimes = exports.parseLoadAverages = exports.cpuUsedPercentFromSamples = exports.parseCpuSample = exports.parseMemoryUsedPercent = void 0;
|
|
36
|
+
exports.ProcHostMetricsRepository = exports.cycleMinutesFromMtimes = exports.parseLoadAverages = exports.parseDiskUsedPercent = exports.cpuUsedPercentFromSamples = exports.parseCpuSample = exports.parseMemoryUsedPercent = void 0;
|
|
37
37
|
const fs = __importStar(require("fs"));
|
|
38
38
|
const path = __importStar(require("path"));
|
|
39
39
|
const DEFAULT_PROC_DIRECTORY = '/proc';
|
|
40
|
+
const DEFAULT_ROOT_PATH = '/';
|
|
40
41
|
const CPU_SAMPLE_INTERVAL_MS = 400;
|
|
41
42
|
const parseMemoryUsedPercent = (meminfoText) => {
|
|
42
43
|
const fields = new Map();
|
|
@@ -96,6 +97,15 @@ const cpuUsedPercentFromSamples = (first, second) => {
|
|
|
96
97
|
return Math.round((busyDelta / totalDelta) * 100);
|
|
97
98
|
};
|
|
98
99
|
exports.cpuUsedPercentFromSamples = cpuUsedPercentFromSamples;
|
|
100
|
+
const parseDiskUsedPercent = (blocks, bfree, bavail) => {
|
|
101
|
+
const total = blocks - bfree + bavail;
|
|
102
|
+
if (total <= 0) {
|
|
103
|
+
throw new Error('disk total must be positive');
|
|
104
|
+
}
|
|
105
|
+
const used = blocks - bfree;
|
|
106
|
+
return Math.round((used / total) * 100);
|
|
107
|
+
};
|
|
108
|
+
exports.parseDiskUsedPercent = parseDiskUsedPercent;
|
|
99
109
|
const parseLoadAverages = (loadavgText) => {
|
|
100
110
|
const parts = loadavgText.trim().split(/\s+/);
|
|
101
111
|
const oneMinute = Number(parts[0]);
|
|
@@ -119,9 +129,18 @@ exports.cycleMinutesFromMtimes = cycleMinutesFromMtimes;
|
|
|
119
129
|
class ProcHostMetricsRepository {
|
|
120
130
|
constructor(procDirectory = DEFAULT_PROC_DIRECTORY, sleep = (milliseconds) => new Promise((resolve) => {
|
|
121
131
|
setTimeout(resolve, milliseconds);
|
|
122
|
-
})) {
|
|
132
|
+
}), readDiskBlocks = (rootPath) => {
|
|
133
|
+
const stats = fs.statfsSync(rootPath);
|
|
134
|
+
return {
|
|
135
|
+
blocks: Number(stats.blocks),
|
|
136
|
+
bfree: Number(stats.bfree),
|
|
137
|
+
bavail: Number(stats.bavail),
|
|
138
|
+
};
|
|
139
|
+
}, rootPath = DEFAULT_ROOT_PATH) {
|
|
123
140
|
this.procDirectory = procDirectory;
|
|
124
141
|
this.sleep = sleep;
|
|
142
|
+
this.readDiskBlocks = readDiskBlocks;
|
|
143
|
+
this.rootPath = rootPath;
|
|
125
144
|
this.readMemoryUsedPercent = () => (0, exports.parseMemoryUsedPercent)(fs.readFileSync(path.join(this.procDirectory, 'meminfo'), 'utf8'));
|
|
126
145
|
this.readCpuUsedPercent = async () => {
|
|
127
146
|
const first = (0, exports.parseCpuSample)(fs.readFileSync(path.join(this.procDirectory, 'stat'), 'utf8'));
|
|
@@ -130,6 +149,10 @@ class ProcHostMetricsRepository {
|
|
|
130
149
|
return (0, exports.cpuUsedPercentFromSamples)(first, second);
|
|
131
150
|
};
|
|
132
151
|
this.readLoadAverages = () => (0, exports.parseLoadAverages)(fs.readFileSync(path.join(this.procDirectory, 'loadavg'), 'utf8'));
|
|
152
|
+
this.readDiskUsedPercent = () => {
|
|
153
|
+
const { blocks, bfree, bavail } = this.readDiskBlocks(this.rootPath);
|
|
154
|
+
return (0, exports.parseDiskUsedPercent)(blocks, bfree, bavail);
|
|
155
|
+
};
|
|
133
156
|
}
|
|
134
157
|
}
|
|
135
158
|
exports.ProcHostMetricsRepository = ProcHostMetricsRepository;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProcHostMetricsRepository.js","sourceRoot":"","sources":["../../../src/adapter/repositories/ProcHostMetricsRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAa7B,MAAM,sBAAsB,GAAG,OAAO,CAAC;AACvC,MAAM,sBAAsB,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"ProcHostMetricsRepository.js","sourceRoot":"","sources":["../../../src/adapter/repositories/ProcHostMetricsRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAa7B,MAAM,sBAAsB,GAAG,OAAO,CAAC;AACvC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAC9B,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAQ5B,MAAM,sBAAsB,GAAG,CAAC,WAAmB,EAAU,EAAE;IACpE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;YACxB,SAAS;QACX,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,IAAI,EAAE,CAAC;QACjD,MAAM,SAAS,GAAG,IAAI;aACnB,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC;aACzB,IAAI,EAAE;aACN,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC7C,IAAI,KAAK,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,GAAG,SAAS,CAAC;IAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;AAC1C,CAAC,CAAC;AA3BW,QAAA,sBAAsB,0BA2BjC;AAEK,MAAM,cAAc,GAAG,CAAC,QAAgB,EAAa,EAAE;IAC5D,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI;iBAChB,IAAI,EAAE;iBACN,KAAK,CAAC,KAAK,CAAC;iBACZ,KAAK,CAAC,CAAC,CAAC;iBACR,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACjC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBACpD,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;YACpE,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;YAC5D,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;AAClD,CAAC,CAAC;AAjBW,QAAA,cAAc,kBAiBzB;AAEK,MAAM,yBAAyB,GAAG,CACvC,KAAgB,EAChB,MAAiB,EACT,EAAE;IACV,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IAC3C,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IACD,MAAM,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IACzC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;AACpD,CAAC,CAAC;AAXW,QAAA,yBAAyB,6BAWpC;AAEK,MAAM,oBAAoB,GAAG,CAClC,MAAc,EACd,KAAa,EACb,MAAc,EACN,EAAE;IACV,MAAM,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;IACtC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC;IAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;AAC1C,CAAC,CAAC;AAXW,QAAA,oBAAoB,wBAW/B;AAEK,MAAM,iBAAiB,GAAG,CAAC,WAAmB,EAAgB,EAAE;IACrE,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,IACE,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC3B,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC5B,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAC/B,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;AAClD,CAAC,CAAC;AAbW,QAAA,iBAAiB,qBAa5B;AAEK,MAAM,sBAAsB,GAAG,CACpC,uBAAiC,EAClB,EAAE;IACjB,IAAI,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CACf,CAAC,uBAAuB,CAAC,CAAC,CAAC,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAC/D,CAAC;AACJ,CAAC,CAAC;AATW,QAAA,sBAAsB,0BASjC;AAEF,MAAa,yBAAyB;IACpC,YACmB,gBAAwB,sBAAsB,EAC9C,QAAiD,CAChE,YAAY,EACZ,EAAE,CACF,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QACtB,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACpC,CAAC,CAAC,EACa,iBAAmD,CAClE,QAAQ,EACR,EAAE;QACF,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACtC,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;YAC5B,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;YAC1B,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;SAC7B,CAAC;IACJ,CAAC,EACgB,WAAmB,iBAAiB;QAjBpC,kBAAa,GAAb,aAAa,CAAiC;QAC9C,UAAK,GAAL,KAAK,CAKlB;QACa,mBAAc,GAAd,cAAc,CAS9B;QACgB,aAAQ,GAAR,QAAQ,CAA4B;QAGvD,0BAAqB,GAAG,GAAW,EAAE,CACnC,IAAA,8BAAsB,EACpB,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,CAClE,CAAC;QAEJ,uBAAkB,GAAG,KAAK,IAAqB,EAAE;YAC/C,MAAM,KAAK,GAAG,IAAA,sBAAc,EAC1B,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAC/D,CAAC;YACF,MAAM,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;YACzC,MAAM,MAAM,GAAG,IAAA,sBAAc,EAC3B,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAC/D,CAAC;YACF,OAAO,IAAA,iCAAyB,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAClD,CAAC,CAAC;QAEF,qBAAgB,GAAG,GAAiB,EAAE,CACpC,IAAA,yBAAiB,EACf,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,CAClE,CAAC;QAEJ,wBAAmB,GAAG,GAAW,EAAE;YACjC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrE,OAAO,IAAA,4BAAoB,EAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACrD,CAAC,CAAC;IA1BC,CAAC;CA2BL;AA/CD,8DA+CC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ComposeDashboardUseCase = exports.formatTokenRowLine = exports.formatProjectRowLine = exports.formatProjectHeaderLine = exports.
|
|
3
|
+
exports.ComposeDashboardUseCase = exports.formatTokenRowLine = exports.formatProjectRowLine = exports.formatProjectHeaderLine = exports.formatMachineStatusLines = exports.formatResetCountdown = exports.roundHalfToEven = exports.PROJECT_ROW_WIDTH_BUDGET = void 0;
|
|
4
4
|
exports.PROJECT_ROW_WIDTH_BUDGET = 32;
|
|
5
5
|
const PROJECT_COLUMNS = [
|
|
6
6
|
{ header: 'unr', key: 'unread' },
|
|
@@ -63,13 +63,16 @@ const formatResetCountdown = (totalSeconds) => {
|
|
|
63
63
|
return `${days}d${padStartZero(String(hours), 2)}h${padStartZero(String(minutes), 2)}`;
|
|
64
64
|
};
|
|
65
65
|
exports.formatResetCountdown = formatResetCountdown;
|
|
66
|
-
const
|
|
66
|
+
const formatMachineStatusLines = (machineStatus) => {
|
|
67
67
|
const memText = machineStatus !== null && machineStatus.memPct !== null
|
|
68
68
|
? `${machineStatus.memPct}%`
|
|
69
69
|
: '?%';
|
|
70
70
|
const cpuText = machineStatus !== null && machineStatus.cpuPct !== null
|
|
71
71
|
? `${machineStatus.cpuPct}%`
|
|
72
72
|
: '?%';
|
|
73
|
+
const diskText = machineStatus !== null && machineStatus.diskPct !== null
|
|
74
|
+
? `${machineStatus.diskPct}%`
|
|
75
|
+
: '?%';
|
|
73
76
|
const load = machineStatus !== null ? machineStatus.load : null;
|
|
74
77
|
const oneMinute = load === null ? '?' : String((0, exports.roundHalfToEven)(load[0]));
|
|
75
78
|
const fiveMinute = load === null ? '?' : String((0, exports.roundHalfToEven)(load[1]));
|
|
@@ -77,9 +80,12 @@ const formatMachineStatusLine = (machineStatus) => {
|
|
|
77
80
|
const cycle = machineStatus !== null && machineStatus.cycleMinutes !== null
|
|
78
81
|
? `cy${machineStatus.cycleMinutes}`
|
|
79
82
|
: 'cy-';
|
|
80
|
-
return
|
|
83
|
+
return [
|
|
84
|
+
`M${memText} C${cpuText} D${diskText} ${cycle}`,
|
|
85
|
+
`LA ${oneMinute} ${fiveMinute} ${fifteenMinute}`,
|
|
86
|
+
];
|
|
81
87
|
};
|
|
82
|
-
exports.
|
|
88
|
+
exports.formatMachineStatusLines = formatMachineStatusLines;
|
|
83
89
|
const capThreeDigits = (value) => value > 999 ? '999' : String(value);
|
|
84
90
|
const formatProjectHeaderLine = () => {
|
|
85
91
|
const head = padEnd('pj', 4, ' ');
|
|
@@ -146,13 +152,13 @@ const wrapLine = (line) => `<tt>${line.replace(/ /g, ' ')}</tt><br>`;
|
|
|
146
152
|
class ComposeDashboardUseCase {
|
|
147
153
|
constructor() {
|
|
148
154
|
this.run = (input) => {
|
|
149
|
-
const
|
|
155
|
+
const statsLines = (0, exports.formatMachineStatusLines)(input.machineStatus);
|
|
150
156
|
const projectLines = [
|
|
151
157
|
(0, exports.formatProjectHeaderLine)(),
|
|
152
158
|
...input.projects.map((project) => (0, exports.formatProjectRowLine)(project)),
|
|
153
159
|
];
|
|
154
160
|
const tokenLines = sortTokens(input.tokens).map((token) => (0, exports.formatTokenRowLine)(token));
|
|
155
|
-
const lines = [
|
|
161
|
+
const lines = [...statsLines, ...projectLines, '', ...tokenLines];
|
|
156
162
|
return lines.map((line) => wrapLine(line)).join('\n') + '\n';
|
|
157
163
|
};
|
|
158
164
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComposeDashboardUseCase.js","sourceRoot":"","sources":["../../../../src/domain/usecases/dashboard/ComposeDashboardUseCase.ts"],"names":[],"mappings":";;;AAGa,QAAA,wBAAwB,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"ComposeDashboardUseCase.js","sourceRoot":"","sources":["../../../../src/domain/usecases/dashboard/ComposeDashboardUseCase.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -295,6 +295,7 @@ program
|
|
|
295
295
|
);
|
|
296
296
|
const projectRepository = new GraphqlProjectRepository(
|
|
297
297
|
...githubRepositoryParams,
|
|
298
|
+
localStorageCacheRepository,
|
|
298
299
|
);
|
|
299
300
|
const apiV3IssueRepository = new ApiV3IssueRepository(
|
|
300
301
|
...githubRepositoryParams,
|
|
@@ -474,6 +475,7 @@ program
|
|
|
474
475
|
);
|
|
475
476
|
const projectRepository = new GraphqlProjectRepository(
|
|
476
477
|
...githubRepositoryParams,
|
|
478
|
+
localStorageCacheRepository,
|
|
477
479
|
);
|
|
478
480
|
const apiV3IssueRepository = new ApiV3IssueRepository(
|
|
479
481
|
...githubRepositoryParams,
|
|
@@ -667,6 +669,7 @@ const runServeWeb = async (options: ServeWebOptions): Promise<void> => {
|
|
|
667
669
|
);
|
|
668
670
|
const projectRepository = new GraphqlProjectRepository(
|
|
669
671
|
...githubRepositoryParams,
|
|
672
|
+
localStorageCacheRepository,
|
|
670
673
|
);
|
|
671
674
|
const apiV3IssueRepository = new ApiV3IssueRepository(
|
|
672
675
|
...githubRepositoryParams,
|
|
@@ -911,6 +914,7 @@ program
|
|
|
911
914
|
);
|
|
912
915
|
const projectRepository = new GraphqlProjectRepository(
|
|
913
916
|
...githubRepositoryParams,
|
|
917
|
+
localStorageCacheRepository,
|
|
914
918
|
);
|
|
915
919
|
const apiV3IssueRepository = new ApiV3IssueRepository(
|
|
916
920
|
...githubRepositoryParams,
|
|
@@ -96,6 +96,7 @@ describe('buildComposeDashboardInput', () => {
|
|
|
96
96
|
JSON.stringify({
|
|
97
97
|
memPct: 55,
|
|
98
98
|
cpuPct: 62,
|
|
99
|
+
diskPct: 89,
|
|
99
100
|
load: [16, 23, 40],
|
|
100
101
|
cycleMinutes: 14,
|
|
101
102
|
capturedAt: 'x',
|
|
@@ -108,6 +109,7 @@ describe('buildComposeDashboardInput', () => {
|
|
|
108
109
|
expect(input.machineStatus).toEqual({
|
|
109
110
|
memPct: 55,
|
|
110
111
|
cpuPct: 62,
|
|
112
|
+
diskPct: 89,
|
|
111
113
|
load: [16, 23, 40],
|
|
112
114
|
cycleMinutes: 14,
|
|
113
115
|
});
|
|
@@ -124,6 +126,7 @@ describe('buildComposeDashboardInput', () => {
|
|
|
124
126
|
JSON.stringify({
|
|
125
127
|
memPct: 1,
|
|
126
128
|
cpuPct: 2,
|
|
129
|
+
diskPct: 3,
|
|
127
130
|
load: [0, 0, 0],
|
|
128
131
|
cycleMinutes: null,
|
|
129
132
|
capturedAt: 'x',
|
|
@@ -262,6 +265,7 @@ describe('composeDashboardText', () => {
|
|
|
262
265
|
JSON.stringify({
|
|
263
266
|
memPct: 55,
|
|
264
267
|
cpuPct: 62,
|
|
268
|
+
diskPct: 89,
|
|
265
269
|
load: [16, 23, 40],
|
|
266
270
|
cycleMinutes: 14,
|
|
267
271
|
capturedAt: 'x',
|
|
@@ -291,7 +295,8 @@ describe('composeDashboardText', () => {
|
|
|
291
295
|
projectCodes: ['um', 'xc'],
|
|
292
296
|
}),
|
|
293
297
|
).toBe(
|
|
294
|
-
'<tt>M55% C62%
|
|
298
|
+
'<tt>M55% C62% D89% cy14</tt><br>\n' +
|
|
299
|
+
'<tt>LA 16 23 40</tt><br>\n' +
|
|
295
300
|
'<tt>pj unr tdo aqc fal prp aws dep</tt><br>\n' +
|
|
296
301
|
'<tt>🟢um 3 1 2 0 0 4 1</tt><br>\n' +
|
|
297
302
|
'<tt> xc -- -- -- -- -- -- --</tt><br>\n' +
|
|
@@ -311,6 +316,7 @@ describe('dashboardComposeFilesPresent', () => {
|
|
|
311
316
|
JSON.stringify({
|
|
312
317
|
memPct: 1,
|
|
313
318
|
cpuPct: 2,
|
|
319
|
+
diskPct: 3,
|
|
314
320
|
load: [0, 0, 0],
|
|
315
321
|
cycleMinutes: null,
|
|
316
322
|
capturedAt: 'x',
|
|
@@ -409,6 +415,7 @@ describe('dashboardComposeFilesPresent', () => {
|
|
|
409
415
|
JSON.stringify({
|
|
410
416
|
memPct: 1,
|
|
411
417
|
cpuPct: 2,
|
|
418
|
+
diskPct: 3,
|
|
412
419
|
load: [0, 0, 0],
|
|
413
420
|
cycleMinutes: null,
|
|
414
421
|
capturedAt: 'x',
|
|
@@ -1155,6 +1155,7 @@ describe('webServer dashboard /tdpm.txt route integration', () => {
|
|
|
1155
1155
|
JSON.stringify({
|
|
1156
1156
|
memPct: 55,
|
|
1157
1157
|
cpuPct: 62,
|
|
1158
|
+
diskPct: 89,
|
|
1158
1159
|
load: [16, 23, 40],
|
|
1159
1160
|
cycleMinutes: 14,
|
|
1160
1161
|
capturedAt: '2026-06-26T00:00:00.000Z',
|
|
@@ -1181,7 +1182,8 @@ describe('webServer dashboard /tdpm.txt route integration', () => {
|
|
|
1181
1182
|
};
|
|
1182
1183
|
|
|
1183
1184
|
const expectedComposed =
|
|
1184
|
-
'<tt>M55% C62%
|
|
1185
|
+
'<tt>M55% C62% D89% cy14</tt><br>\n' +
|
|
1186
|
+
'<tt>LA 16 23 40</tt><br>\n' +
|
|
1185
1187
|
'<tt>pj unr tdo aqc fal prp aws dep</tt><br>\n' +
|
|
1186
1188
|
'<tt>🟢um 3 1 2 0 0 4 1</tt><br>\n' +
|
|
1187
1189
|
'<tt>🟢xc 0 0 0 0 0 2 0</tt><br>\n' +
|
|
@@ -1299,6 +1301,7 @@ describe('webServer dashboard /tdpm.txt route integration', () => {
|
|
|
1299
1301
|
JSON.stringify({
|
|
1300
1302
|
memPct: 55,
|
|
1301
1303
|
cpuPct: 62,
|
|
1304
|
+
diskPct: 89,
|
|
1302
1305
|
load: [16, 23, 40],
|
|
1303
1306
|
cycleMinutes: 14,
|
|
1304
1307
|
capturedAt: '2026-06-26T00:00:00.000Z',
|
|
@@ -98,7 +98,6 @@ describe('GetStoryObjectMapUseCaseHandler', () => {
|
|
|
98
98
|
await handler.handle('config.yml', false);
|
|
99
99
|
|
|
100
100
|
for (const MockedClass of [
|
|
101
|
-
MockedGraphqlProjectRepository,
|
|
102
101
|
MockedApiV3IssueRepository,
|
|
103
102
|
MockedRestIssueRepository,
|
|
104
103
|
MockedGraphqlProjectItemRepository,
|
|
@@ -106,6 +105,12 @@ describe('GetStoryObjectMapUseCaseHandler', () => {
|
|
|
106
105
|
expect(MockedClass).toHaveBeenCalledWith(expect.anything(), 'test-token');
|
|
107
106
|
}
|
|
108
107
|
|
|
108
|
+
expect(MockedGraphqlProjectRepository).toHaveBeenCalledWith(
|
|
109
|
+
expect.anything(),
|
|
110
|
+
'test-token',
|
|
111
|
+
expect.anything(),
|
|
112
|
+
);
|
|
113
|
+
|
|
109
114
|
expect(MockedApiV3CheerioRestIssueRepository).toHaveBeenCalledWith(
|
|
110
115
|
expect.anything(),
|
|
111
116
|
expect.anything(),
|
|
@@ -53,7 +53,10 @@ export class GetStoryObjectMapUseCaseHandler {
|
|
|
53
53
|
typeof BaseGitHubRepository
|
|
54
54
|
> = [localStorageRepository, input.credentials.bot.github.token];
|
|
55
55
|
const projectRepository = {
|
|
56
|
-
...new GraphqlProjectRepository(
|
|
56
|
+
...new GraphqlProjectRepository(
|
|
57
|
+
...githubRepositoryParams,
|
|
58
|
+
localStorageCacheRepository,
|
|
59
|
+
),
|
|
57
60
|
};
|
|
58
61
|
const apiV3IssueRepository = new ApiV3IssueRepository(
|
|
59
62
|
...githubRepositoryParams,
|
|
@@ -202,7 +202,6 @@ describe('HandleScheduledEventUseCaseHandler', () => {
|
|
|
202
202
|
await handler.handle('config.yml', false);
|
|
203
203
|
|
|
204
204
|
for (const MockedClass of [
|
|
205
|
-
MockedGraphqlProjectRepository,
|
|
206
205
|
MockedApiV3IssueRepository,
|
|
207
206
|
MockedRestIssueRepository,
|
|
208
207
|
MockedGraphqlProjectItemRepository,
|
|
@@ -210,6 +209,12 @@ describe('HandleScheduledEventUseCaseHandler', () => {
|
|
|
210
209
|
expect(MockedClass).toHaveBeenCalledWith(expect.anything(), 'test-token');
|
|
211
210
|
}
|
|
212
211
|
|
|
212
|
+
expect(MockedGraphqlProjectRepository).toHaveBeenCalledWith(
|
|
213
|
+
expect.anything(),
|
|
214
|
+
'test-token',
|
|
215
|
+
expect.anything(),
|
|
216
|
+
);
|
|
217
|
+
|
|
213
218
|
expect(MockedApiV3CheerioRestIssueRepository).toHaveBeenCalledWith(
|
|
214
219
|
expect.anything(),
|
|
215
220
|
expect.anything(),
|
|
@@ -246,6 +246,7 @@ export class HandleScheduledEventUseCaseHandler {
|
|
|
246
246
|
> = [localStorageRepository, input.credentials.bot.github.token];
|
|
247
247
|
const projectRepository = new GraphqlProjectRepository(
|
|
248
248
|
...githubRepositoryParams,
|
|
249
|
+
localStorageCacheRepository,
|
|
249
250
|
);
|
|
250
251
|
const apiV3IssueRepository = new ApiV3IssueRepository(
|
|
251
252
|
...githubRepositoryParams,
|
|
@@ -25,7 +25,18 @@ const buildHostMetricsRepository = (
|
|
|
25
25
|
const sleep = async (): Promise<void> => {
|
|
26
26
|
fs.writeFileSync(statPath, 'cpu 660 0 0 440 0 0 0 0 0 0\n');
|
|
27
27
|
};
|
|
28
|
-
|
|
28
|
+
const readDiskBlocks = (): {
|
|
29
|
+
blocks: number;
|
|
30
|
+
bfree: number;
|
|
31
|
+
bavail: number;
|
|
32
|
+
} => ({ blocks: 1100, bfree: 200, bavail: 100 });
|
|
33
|
+
return {
|
|
34
|
+
repository: new ProcHostMetricsRepository(
|
|
35
|
+
procDirectory,
|
|
36
|
+
sleep,
|
|
37
|
+
readDiskBlocks,
|
|
38
|
+
),
|
|
39
|
+
};
|
|
29
40
|
};
|
|
30
41
|
|
|
31
42
|
describe('writeMachineStatus', () => {
|
|
@@ -42,7 +53,7 @@ describe('writeMachineStatus', () => {
|
|
|
42
53
|
fs.rmSync(procDirectory, { recursive: true, force: true });
|
|
43
54
|
});
|
|
44
55
|
|
|
45
|
-
it('writes machine-status.json with mem, cpu, load and cycle minutes', async () => {
|
|
56
|
+
it('writes machine-status.json with mem, cpu, disk, load and cycle minutes', async () => {
|
|
46
57
|
const { repository } = buildHostMetricsRepository(procDirectory);
|
|
47
58
|
const cacheDir = path.join(dir, 'allIssues-PVT');
|
|
48
59
|
fs.mkdirSync(cacheDir, { recursive: true });
|
|
@@ -65,6 +76,7 @@ describe('writeMachineStatus', () => {
|
|
|
65
76
|
const expected: MachineStatusFile = {
|
|
66
77
|
memPct: 55,
|
|
67
78
|
cpuPct: 60,
|
|
79
|
+
diskPct: 90,
|
|
68
80
|
load: [1.5, 0.8, 0.4],
|
|
69
81
|
cycleMinutes: 15,
|
|
70
82
|
capturedAt: '2026-06-26T12:00:00.000Z',
|
|
@@ -15,6 +15,7 @@ export type MachineStatusWriterParams = {
|
|
|
15
15
|
export type MachineStatusFile = {
|
|
16
16
|
memPct: number;
|
|
17
17
|
cpuPct: number;
|
|
18
|
+
diskPct: number;
|
|
18
19
|
load: [number, number, number];
|
|
19
20
|
cycleMinutes: number | null;
|
|
20
21
|
capturedAt: string;
|
|
@@ -61,6 +62,7 @@ export const writeMachineStatus = async (
|
|
|
61
62
|
|
|
62
63
|
const memPct = hostMetricsRepository.readMemoryUsedPercent();
|
|
63
64
|
const cpuPct = await hostMetricsRepository.readCpuUsedPercent();
|
|
65
|
+
const diskPct = hostMetricsRepository.readDiskUsedPercent();
|
|
64
66
|
const load = hostMetricsRepository.readLoadAverages();
|
|
65
67
|
|
|
66
68
|
const cycleMinutes = allIssuesCacheDir
|
|
@@ -70,6 +72,7 @@ export const writeMachineStatus = async (
|
|
|
70
72
|
const file: MachineStatusFile = {
|
|
71
73
|
memPct,
|
|
72
74
|
cpuPct,
|
|
75
|
+
diskPct,
|
|
73
76
|
load: [load.oneMinute, load.fiveMinute, load.fifteenMinute],
|
|
74
77
|
cycleMinutes,
|
|
75
78
|
capturedAt: (params.now ?? new Date()).toISOString(),
|