@nu-art/build-and-install 0.204.17 → 0.204.19
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/package.json +1 -1
- package/phases/phases.js +18 -0
- package/screen/ProjectScreen.d.ts +1 -0
- package/screen/ProjectScreen.js +3 -0
- package/screen/RunningProcessLogs.d.ts +14 -0
- package/screen/RunningProcessLogs.js +76 -0
- package/console/Console_PackagesView.d.ts +0 -8
- package/console/Console_PackagesView.js +0 -65
package/package.json
CHANGED
package/phases/phases.js
CHANGED
|
@@ -585,6 +585,7 @@ exports.Phase_CompileWatch = {
|
|
|
585
585
|
});
|
|
586
586
|
}
|
|
587
587
|
};
|
|
588
|
+
// const runningAppsLogs = new RunningProcessLogs();
|
|
588
589
|
let counter = 0;
|
|
589
590
|
exports.Phase_Launch = {
|
|
590
591
|
type: 'package',
|
|
@@ -594,21 +595,38 @@ exports.Phase_Launch = {
|
|
|
594
595
|
filter: async (pkg) => { var _a; return !!((_a = pkg.name.match(new RegExp(params_1.RuntimeParams.launch))) === null || _a === void 0 ? void 0 : _a[0]) && (pkg.type === 'firebase-functions-app' || pkg.type === 'firebase-hosting-app'); },
|
|
595
596
|
action: async (pkg) => {
|
|
596
597
|
const projectScreen = ProjectScreen_1.MemKey_ProjectScreen.get();
|
|
598
|
+
// if (projectScreen.isEnabled()) {
|
|
599
|
+
// projectScreen.disable();
|
|
600
|
+
// runningAppsLogs.enable();
|
|
601
|
+
// }
|
|
602
|
+
const logClient = new ts_common_1.LogClient_MemBuffer(pkg.name);
|
|
603
|
+
logClient.setForTerminal();
|
|
604
|
+
logClient.setComposer((tag, level) => {
|
|
605
|
+
ts_common_1._logger_finalDate.setTime(Date.now() - ts_common_1._logger_timezoneOffset);
|
|
606
|
+
const date = ts_common_1._logger_finalDate.toISOString().replace(/T/, '_').replace(/Z/, '').substring(0, 23).split('_')[1];
|
|
607
|
+
return `${date} ${(0, ts_common_1._logger_getPrefix)(level)}: `;
|
|
608
|
+
});
|
|
609
|
+
logClient.setFilter((level, tag) => {
|
|
610
|
+
return tag === pkg.name;
|
|
611
|
+
});
|
|
597
612
|
projectScreen.updateOrCreatePackage(pkg.name, 'Launching...');
|
|
598
613
|
if (pkg.type === 'firebase-functions-app') {
|
|
599
614
|
await (0, ts_common_1.sleep)(1000 * counter++);
|
|
600
615
|
const allPorts = Array.from({ length: 10 }, (_, i) => `${pkg.envConfig.basePort + i}`);
|
|
601
616
|
const command = nvm_1.NVM.createInteractiveCommando(basic_1.Cli_Basic)
|
|
617
|
+
.setUID(pkg.name)
|
|
602
618
|
.cd(pkg.path)
|
|
603
619
|
.append(`nvm use`)
|
|
604
620
|
.append(`array=($(lsof -ti:${allPorts.join(',')}))`)
|
|
605
621
|
.append(`((\${#array[@]} > 0)) && kill -9 "\${array[@]}"`);
|
|
606
622
|
command.append(`firebase emulators:start --export-on-exit --import=.trash/data ${runInDebug ? `--inspect-functions ${pkg.envConfig.ssl}` : ''}`);
|
|
623
|
+
// runningAppsLogs.registerApp(pkg.name, logClient);
|
|
607
624
|
return command
|
|
608
625
|
.execute();
|
|
609
626
|
}
|
|
610
627
|
if (pkg.type === 'firebase-hosting-app')
|
|
611
628
|
return nvm_1.NVM.createInteractiveCommando(basic_1.Cli_Basic)
|
|
629
|
+
.setUID(pkg.name)
|
|
612
630
|
.cd(pkg.path)
|
|
613
631
|
.append(`array=($(lsof -ti:${[pkg.envConfig.basePort - 1].join(',')}))`)
|
|
614
632
|
.append(`((\${#array[@]} > 0)) && kill -9 "\${array[@]}"`)
|
package/screen/ProjectScreen.js
CHANGED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { LogClient_MemBuffer } from '@nu-art/ts-common';
|
|
2
|
+
import { ConsoleScreen } from '@nu-art/commando/console/ConsoleScreen';
|
|
3
|
+
export declare class RunningProcessLogs extends ConsoleScreen<{
|
|
4
|
+
logs: {
|
|
5
|
+
key: string;
|
|
6
|
+
logClient: LogClient_MemBuffer;
|
|
7
|
+
}[];
|
|
8
|
+
}> {
|
|
9
|
+
constructor();
|
|
10
|
+
registerApp(appKey: string, logClient: LogClient_MemBuffer): void;
|
|
11
|
+
unregisterApp(appKey: string): void;
|
|
12
|
+
private recalculateWidgets;
|
|
13
|
+
protected render(): void;
|
|
14
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RunningProcessLogs = void 0;
|
|
4
|
+
const ts_common_1 = require("@nu-art/ts-common");
|
|
5
|
+
const ConsoleScreen_1 = require("@nu-art/commando/console/ConsoleScreen");
|
|
6
|
+
class RunningProcessLogs extends ConsoleScreen_1.ConsoleScreen {
|
|
7
|
+
constructor() {
|
|
8
|
+
super({
|
|
9
|
+
smartCSR: true,
|
|
10
|
+
title: 'Runtime-Logs',
|
|
11
|
+
keyBinding: [
|
|
12
|
+
{
|
|
13
|
+
keys: ['C-c'],
|
|
14
|
+
callback: () => process.exit(0)
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
});
|
|
18
|
+
this.state = { logs: [] };
|
|
19
|
+
}
|
|
20
|
+
registerApp(appKey, logClient) {
|
|
21
|
+
const logs = this.state.logs;
|
|
22
|
+
const foundLog = logs.find(log => log.key === appKey);
|
|
23
|
+
if (foundLog)
|
|
24
|
+
throw new ts_common_1.BadImplementationException(`already have log for appkey: ${appKey}`);
|
|
25
|
+
logs.push({ key: appKey, logClient });
|
|
26
|
+
this.recalculateWidgets(logs);
|
|
27
|
+
logClient.setLogAppendedListener(() => {
|
|
28
|
+
this.render();
|
|
29
|
+
// might have a leak.. need to remove the listener at some point
|
|
30
|
+
});
|
|
31
|
+
this.setState({ logs });
|
|
32
|
+
}
|
|
33
|
+
unregisterApp(appKey) {
|
|
34
|
+
const foundLog = this.state.logs.find(log => log.key === appKey);
|
|
35
|
+
if (!foundLog)
|
|
36
|
+
throw new ts_common_1.BadImplementationException(`Could not find log for appkey: ${appKey}`);
|
|
37
|
+
const logs = this.state.logs;
|
|
38
|
+
(0, ts_common_1.removeItemFromArray)(logs, foundLog);
|
|
39
|
+
this.recalculateWidgets(logs);
|
|
40
|
+
this.setState({ logs });
|
|
41
|
+
}
|
|
42
|
+
recalculateWidgets(logs) {
|
|
43
|
+
this.clearScreen(false);
|
|
44
|
+
const totalApps = logs.length;
|
|
45
|
+
const fraction = 100 / totalApps;
|
|
46
|
+
logs.forEach((log, index) => {
|
|
47
|
+
const top = `${(index * fraction).toFixed(0)}%`;
|
|
48
|
+
const height = `${fraction.toFixed(0)}%`;
|
|
49
|
+
this.createWidget('log', {
|
|
50
|
+
top: top,
|
|
51
|
+
left: 0,
|
|
52
|
+
width: '100%',
|
|
53
|
+
height: height,
|
|
54
|
+
label: ` Log for ${log.key} `,
|
|
55
|
+
border: { type: 'line' },
|
|
56
|
+
scrollable: true,
|
|
57
|
+
scrollbar: {
|
|
58
|
+
ch: ' ',
|
|
59
|
+
track: {
|
|
60
|
+
bg: 'grey'
|
|
61
|
+
},
|
|
62
|
+
style: {
|
|
63
|
+
inverse: true
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
mouse: true
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
render() {
|
|
71
|
+
this.state.logs.forEach((log, i) => {
|
|
72
|
+
this.widgets[i].setContent(log.logClient.buffers[0]);
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
exports.RunningProcessLogs = RunningProcessLogs;
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.Console_PackagesView = void 0;
|
|
27
|
-
// @ts-ignore
|
|
28
|
-
const blessed = __importStar(require("neo-blessed"));
|
|
29
|
-
class Console_PackagesView {
|
|
30
|
-
// private readonly testBox1: blessed.Widgets.BoxElement;
|
|
31
|
-
// private readonly testBox2: blessed.Widgets.BoxElement;
|
|
32
|
-
// private readonly packageTable: blessed.Widgets.TableElement;
|
|
33
|
-
constructor(title) {
|
|
34
|
-
this.render = () => {
|
|
35
|
-
this.renderTitle();
|
|
36
|
-
this.screen.render();
|
|
37
|
-
};
|
|
38
|
-
this.title = title;
|
|
39
|
-
this.screen = blessed.screen({
|
|
40
|
-
smartCSR: true,
|
|
41
|
-
title: 'Build and install',
|
|
42
|
-
});
|
|
43
|
-
// Create the UI components
|
|
44
|
-
this.titleView = blessed.box({
|
|
45
|
-
parent: this.screen,
|
|
46
|
-
top: 1,
|
|
47
|
-
left: 'center',
|
|
48
|
-
width: '30%',
|
|
49
|
-
height: 3,
|
|
50
|
-
border: { type: 'line' },
|
|
51
|
-
content: '',
|
|
52
|
-
tags: true,
|
|
53
|
-
style: {
|
|
54
|
-
border: { fg: 'green' },
|
|
55
|
-
fg: 'black',
|
|
56
|
-
},
|
|
57
|
-
valign: 'middle',
|
|
58
|
-
align: 'center'
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
renderTitle() {
|
|
62
|
-
this.titleView.setContent(this.title);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
exports.Console_PackagesView = Console_PackagesView;
|