topkat-utils 1.2.50 → 1.2.52
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/backend.js +1 -0
- package/backend.ts +76 -0
- package/dist/backend.d.ts +25 -0
- package/dist/backend.js +74 -0
- package/dist/backend.js.map +1 -0
- package/dist/src/string-utils.js +1 -1
- package/dist/src/string-utils.js.map +1 -1
- package/package.json +1 -1
- package/src/string-utils.ts +1 -1
- package/tsconfig.json +2 -1
package/backend.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('./dist/backend')
|
package/backend.ts
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import { C } from './src/logger-utils'
|
|
4
|
+
import { exec } from 'child_process'
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @param {String} command cli command to execute
|
|
9
|
+
* @param {Obect} config
|
|
10
|
+
* * logOutputStream
|
|
11
|
+
* * stringOrRegexpToSearchForConsideringDone => when the output contain this string or matches this regexp, process is considered done. Else it will wait for exit
|
|
12
|
+
* * timeout => timeout before killing process in seconds
|
|
13
|
+
* * execOptions => see nodeJs exec command
|
|
14
|
+
* * keyCodeToSend => { a: 1000, b: 2000 } keyCode: afterNMs; Eg: key a will be triggered after N milliseconds
|
|
15
|
+
* * errorHandle (log: log the error as an error) (throw: throw the error)
|
|
16
|
+
* * streamConsoleOutput: output => { } callback for streaming output
|
|
17
|
+
*/
|
|
18
|
+
export async function execWaitForOutput(
|
|
19
|
+
command: string,
|
|
20
|
+
config = {} as Partial<{
|
|
21
|
+
logOutputStream: boolean
|
|
22
|
+
stringOrRegexpToSearchForConsideringDone: string
|
|
23
|
+
nbSecondsBeforeKillingProcess: number
|
|
24
|
+
keyCodeToSend: { [keyCode: string]: number },
|
|
25
|
+
errorHandle: 'log' | 'error'
|
|
26
|
+
streamConsoleOutput: (outputStr: string) => any,
|
|
27
|
+
execOptions: {cwd?: string, [seeNodeJsDocOnExec: string]: any}
|
|
28
|
+
}>
|
|
29
|
+
): Promise<string | undefined> {
|
|
30
|
+
|
|
31
|
+
let outputStream = ''
|
|
32
|
+
let execOptions
|
|
33
|
+
|
|
34
|
+
const { nbSecondsBeforeKillingProcess = 20, streamConsoleOutput = () => true, errorHandle = 'throw', logOutputStream = true, stringOrRegexpToSearchForConsideringDone, keyCodeToSend = {} } = config
|
|
35
|
+
|
|
36
|
+
try {
|
|
37
|
+
return await new Promise((res, reject) => {
|
|
38
|
+
const to = setTimeout(() => {
|
|
39
|
+
C.error(`Exec timeout for ${command}`)
|
|
40
|
+
reject(`Exec timeout for ${command}`)
|
|
41
|
+
}, nbSecondsBeforeKillingProcess * 1000)
|
|
42
|
+
const resolve = () => {
|
|
43
|
+
clearTimeout(to)
|
|
44
|
+
res(outputStream)
|
|
45
|
+
}
|
|
46
|
+
const process2 = exec(command, execOptions)
|
|
47
|
+
const stdCallback = data => {
|
|
48
|
+
if (logOutputStream) C.log(data)
|
|
49
|
+
streamConsoleOutput(data)
|
|
50
|
+
outputStream += data
|
|
51
|
+
if (stringOrRegexpToSearchForConsideringDone) {
|
|
52
|
+
const regexp = typeof stringOrRegexpToSearchForConsideringDone === 'string' ? new RegExp(stringOrRegexpToSearchForConsideringDone) : stringOrRegexpToSearchForConsideringDone
|
|
53
|
+
if (regexp.test(data)) resolve()
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
const exitCallback = exitCode => {
|
|
57
|
+
if (exitCode === 0) resolve()
|
|
58
|
+
else if (stringOrRegexpToSearchForConsideringDone || typeof exitCode === 'number' && exitCode !== 0) reject(exitCode)
|
|
59
|
+
else resolve()
|
|
60
|
+
}
|
|
61
|
+
process2.stderr?.on('data', stdCallback)
|
|
62
|
+
process2.stdout?.on('data', stdCallback)
|
|
63
|
+
process2.on('exit', exitCallback)
|
|
64
|
+
process2.on('close', exitCallback)
|
|
65
|
+
for (const keyCode in keyCodeToSend) {
|
|
66
|
+
setTimeout(() => {
|
|
67
|
+
process2.stdin?.write(keyCode)
|
|
68
|
+
if (logOutputStream) C.log('Sending charcode to stdin: ' + keyCode)
|
|
69
|
+
}, keyCodeToSend[keyCode])
|
|
70
|
+
}
|
|
71
|
+
})
|
|
72
|
+
} catch (error) {
|
|
73
|
+
if (errorHandle === 'log') C.error(`Something went wrong using this command: ${command}\nPlease check this log:\n${outputStream}`)
|
|
74
|
+
else throw `Something went wrong using this command: ${command}\nPlease check this log:\n${outputStream}`
|
|
75
|
+
}
|
|
76
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {String} command cli command to execute
|
|
3
|
+
* @param {Obect} config
|
|
4
|
+
* * logOutputStream
|
|
5
|
+
* * stringOrRegexpToSearchForConsideringDone => when the output contain this string or matches this regexp, process is considered done. Else it will wait for exit
|
|
6
|
+
* * timeout => timeout before killing process in seconds
|
|
7
|
+
* * execOptions => see nodeJs exec command
|
|
8
|
+
* * keyCodeToSend => { a: 1000, b: 2000 } keyCode: afterNMs; Eg: key a will be triggered after N milliseconds
|
|
9
|
+
* * errorHandle (log: log the error as an error) (throw: throw the error)
|
|
10
|
+
* * streamConsoleOutput: output => { } callback for streaming output
|
|
11
|
+
*/
|
|
12
|
+
export declare function execWaitForOutput(command: string, config?: Partial<{
|
|
13
|
+
logOutputStream: boolean;
|
|
14
|
+
stringOrRegexpToSearchForConsideringDone: string;
|
|
15
|
+
nbSecondsBeforeKillingProcess: number;
|
|
16
|
+
keyCodeToSend: {
|
|
17
|
+
[keyCode: string]: number;
|
|
18
|
+
};
|
|
19
|
+
errorHandle: 'log' | 'error';
|
|
20
|
+
streamConsoleOutput: (outputStr: string) => any;
|
|
21
|
+
execOptions: {
|
|
22
|
+
[seeNodeJsDocOnExec: string]: any;
|
|
23
|
+
cwd?: string | undefined;
|
|
24
|
+
};
|
|
25
|
+
}>): Promise<string | undefined>;
|
package/dist/backend.js
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.execWaitForOutput = void 0;
|
|
4
|
+
const logger_utils_1 = require("./src/logger-utils");
|
|
5
|
+
const child_process_1 = require("child_process");
|
|
6
|
+
/**
|
|
7
|
+
* @param {String} command cli command to execute
|
|
8
|
+
* @param {Obect} config
|
|
9
|
+
* * logOutputStream
|
|
10
|
+
* * stringOrRegexpToSearchForConsideringDone => when the output contain this string or matches this regexp, process is considered done. Else it will wait for exit
|
|
11
|
+
* * timeout => timeout before killing process in seconds
|
|
12
|
+
* * execOptions => see nodeJs exec command
|
|
13
|
+
* * keyCodeToSend => { a: 1000, b: 2000 } keyCode: afterNMs; Eg: key a will be triggered after N milliseconds
|
|
14
|
+
* * errorHandle (log: log the error as an error) (throw: throw the error)
|
|
15
|
+
* * streamConsoleOutput: output => { } callback for streaming output
|
|
16
|
+
*/
|
|
17
|
+
async function execWaitForOutput(command, config = {}) {
|
|
18
|
+
let outputStream = '';
|
|
19
|
+
let execOptions;
|
|
20
|
+
const { nbSecondsBeforeKillingProcess = 20, streamConsoleOutput = () => true, errorHandle = 'throw', logOutputStream = true, stringOrRegexpToSearchForConsideringDone, keyCodeToSend = {} } = config;
|
|
21
|
+
try {
|
|
22
|
+
return await new Promise((res, reject) => {
|
|
23
|
+
var _a, _b;
|
|
24
|
+
const to = setTimeout(() => {
|
|
25
|
+
logger_utils_1.C.error(`Exec timeout for ${command}`);
|
|
26
|
+
reject(`Exec timeout for ${command}`);
|
|
27
|
+
}, nbSecondsBeforeKillingProcess * 1000);
|
|
28
|
+
const resolve = () => {
|
|
29
|
+
clearTimeout(to);
|
|
30
|
+
res(outputStream);
|
|
31
|
+
};
|
|
32
|
+
const process2 = (0, child_process_1.exec)(command, execOptions);
|
|
33
|
+
const stdCallback = data => {
|
|
34
|
+
if (logOutputStream)
|
|
35
|
+
logger_utils_1.C.log(data);
|
|
36
|
+
streamConsoleOutput(data);
|
|
37
|
+
outputStream += data;
|
|
38
|
+
if (stringOrRegexpToSearchForConsideringDone) {
|
|
39
|
+
const regexp = typeof stringOrRegexpToSearchForConsideringDone === 'string' ? new RegExp(stringOrRegexpToSearchForConsideringDone) : stringOrRegexpToSearchForConsideringDone;
|
|
40
|
+
if (regexp.test(data))
|
|
41
|
+
resolve();
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
const exitCallback = exitCode => {
|
|
45
|
+
if (exitCode === 0)
|
|
46
|
+
resolve();
|
|
47
|
+
else if (stringOrRegexpToSearchForConsideringDone || typeof exitCode === 'number' && exitCode !== 0)
|
|
48
|
+
reject(exitCode);
|
|
49
|
+
else
|
|
50
|
+
resolve();
|
|
51
|
+
};
|
|
52
|
+
(_a = process2.stderr) === null || _a === void 0 ? void 0 : _a.on('data', stdCallback);
|
|
53
|
+
(_b = process2.stdout) === null || _b === void 0 ? void 0 : _b.on('data', stdCallback);
|
|
54
|
+
process2.on('exit', exitCallback);
|
|
55
|
+
process2.on('close', exitCallback);
|
|
56
|
+
for (const keyCode in keyCodeToSend) {
|
|
57
|
+
setTimeout(() => {
|
|
58
|
+
var _a;
|
|
59
|
+
(_a = process2.stdin) === null || _a === void 0 ? void 0 : _a.write(keyCode);
|
|
60
|
+
if (logOutputStream)
|
|
61
|
+
logger_utils_1.C.log('Sending charcode to stdin: ' + keyCode);
|
|
62
|
+
}, keyCodeToSend[keyCode]);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
if (errorHandle === 'log')
|
|
68
|
+
logger_utils_1.C.error(`Something went wrong using this command: ${command}\nPlease check this log:\n${outputStream}`);
|
|
69
|
+
else
|
|
70
|
+
throw `Something went wrong using this command: ${command}\nPlease check this log:\n${outputStream}`;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
exports.execWaitForOutput = execWaitForOutput;
|
|
74
|
+
//# sourceMappingURL=backend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend.js","sourceRoot":"","sources":["../backend.ts"],"names":[],"mappings":"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"}
|
package/dist/src/string-utils.js
CHANGED
|
@@ -10,7 +10,7 @@ const getWordBits = (wb) => Array.isArray(wb[0]) ? wb[0] : wb;
|
|
|
10
10
|
/**Eg: camelCase */
|
|
11
11
|
function camelCase(...wordBits) {
|
|
12
12
|
const wordBitsReal = getWordBits(wordBits);
|
|
13
|
-
return wordBitsReal.filter(e => e).map((w, i) => i === 0 ? w : capitalize1st(w, true)).join('');
|
|
13
|
+
return wordBitsReal.filter(e => e).map((w, i) => i === 0 ? w.toLowerCase() : capitalize1st(w, true)).join('');
|
|
14
14
|
}
|
|
15
15
|
exports.camelCase = camelCase;
|
|
16
16
|
/**Eg: snake_case
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"string-utils.js","sourceRoot":"","sources":["../../src/string-utils.ts"],"names":[],"mappings":";;;AAAA,0CAA0C;AAC1C,eAAe;AACf,0CAA0C;AAC1C,+CAAqD;AAErD,mCAA+B;AAE/B,MAAM,WAAW,GAAG,CAAC,EAAyB,EAAY,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAS,CAAA;AAErG,mBAAmB;AACnB,SAAgB,SAAS,CAAC,GAAG,QAA+B;IACxD,MAAM,YAAY,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAA;IAC1C,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"string-utils.js","sourceRoot":"","sources":["../../src/string-utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/string-utils.ts
CHANGED
|
@@ -10,7 +10,7 @@ const getWordBits = (wb: string[] | [string[]]): string[] => Array.isArray(wb[0]
|
|
|
10
10
|
/**Eg: camelCase */
|
|
11
11
|
export function camelCase(...wordBits: string[] | [string[]]): string {
|
|
12
12
|
const wordBitsReal = getWordBits(wordBits)
|
|
13
|
-
return wordBitsReal.filter(e => e).map((w, i) => i === 0 ? w : capitalize1st(w, true)).join('')
|
|
13
|
+
return wordBitsReal.filter(e => e).map((w, i) => i === 0 ? w.toLowerCase() : capitalize1st(w, true)).join('')
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
/**Eg: snake_case
|