@grnsft/if 1.0.0 → 1.0.1
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/build/if-check/index.js +3 -3
- package/build/if-check/util/helpers.js +4 -4
- package/build/if-check/util/npm.d.ts +1 -1
- package/build/if-check/util/npm.js +29 -16
- package/build/if-run/lib/compute.js +22 -5
- package/package.json +3 -2
- package/manifests/regroup.yml +0 -49
- package/manifests/test.yml +0 -524
package/build/if-check/index.js
CHANGED
|
@@ -42,7 +42,7 @@ const IfCheck = async () => {
|
|
|
42
42
|
if (commandArgs.manifest) {
|
|
43
43
|
const manifest = commandArgs.manifest;
|
|
44
44
|
try {
|
|
45
|
-
await (0, npm_1.executeCommands)(manifest
|
|
45
|
+
await (0, npm_1.executeCommands)(manifest);
|
|
46
46
|
}
|
|
47
47
|
catch (error) {
|
|
48
48
|
const fileName = path.basename(manifest);
|
|
@@ -67,7 +67,7 @@ const IfCheck = async () => {
|
|
|
67
67
|
const fileRelativePath = path.relative(process.env.CURRENT_DIR || process.cwd(), file);
|
|
68
68
|
console.log(IF_CHECK_EXECUTING(fileRelativePath));
|
|
69
69
|
try {
|
|
70
|
-
await (0, npm_1.executeCommands)(file
|
|
70
|
+
await (0, npm_1.executeCommands)(file);
|
|
71
71
|
}
|
|
72
72
|
catch (error) {
|
|
73
73
|
const fileName = path.basename(file);
|
|
@@ -95,4 +95,4 @@ IfCheck().catch(error => {
|
|
|
95
95
|
process.exit(2);
|
|
96
96
|
}
|
|
97
97
|
});
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaWYtY2hlY2svaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxvQ0FBb0M7QUFDcEMsMkNBQTZCO0FBRTdCLDBDQUFtRTtBQUNuRSw4REFBd0Q7QUFDeEQsa0RBQTZDO0FBRTdDLDRDQUFvRDtBQUNwRCxzQ0FBNkM7QUFDN0Msb0NBQTJDO0FBRTNDLHFDQUFpQztBQUVqQyxNQUFNLEVBQ0osUUFBUSxFQUNSLDhCQUE4QixFQUM5Qiw4QkFBOEIsRUFDOUIsb0JBQW9CLEVBQ3BCLGtCQUFrQixHQUNuQixHQUFHLGdCQUFPLENBQUM7QUFFWixNQUFNLE9BQU8sR0FBRyxLQUFLLElBQUksRUFBRTtJQUN6Qix5RUFBeUU7SUFDekUsMEJBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUUxQyxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUEsdUJBQWdCLEdBQUUsQ0FBQztJQUU3QyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxJQUFJLENBQUMsQ0FBQztJQUU3QixJQUFJLFdBQVcsQ0FBQyxRQUFRLEVBQUU7UUFDeEIsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQztRQUV0QyxJQUFJO1lBQ0YsTUFBTSxJQUFBLHFCQUFlLEVBQUMsUUFBUSxDQUFDLENBQUM7U0FDakM7UUFBQyxPQUFPLEtBQVUsRUFBRTtZQUNuQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sWUFBWSxHQUFHLFFBQVE7aUJBQzFCLE9BQU8sQ0FBQyxRQUFRLEVBQUUsTUFBTSxRQUFRLEVBQUUsQ0FBQztpQkFDbkMsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMxQixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRS9DLElBQUEsOEJBQW9CLEVBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBRXRDLE1BQU0sSUFBQSx1QkFBa0IsRUFBQyxHQUFHLGVBQWUsZUFBZSxDQUFDLENBQUM7WUFDNUQsTUFBTSxJQUFBLHVCQUFrQixFQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3hDO0tBQ0Y7U0FBTTtRQUNMLE1BQU0sVUFBVSxHQUFHLEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFDLENBQUM7UUFDM0MsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQztRQUN4QyxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUEsaUJBQVksRUFBQyxTQUFVLENBQUMsQ0FBQztRQUU3QyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3RCLE9BQU8sQ0FBQyxHQUFHLENBQUMsOEJBQThCLENBQUMsQ0FBQztZQUM1QyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2pCO1FBRUQsSUFBSSxLQUFLLEVBQUUsTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1lBQzlCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FDcEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUN4QyxJQUFJLENBQ0wsQ0FBQztZQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1lBRWxELElBQUk7Z0JBQ0YsTUFBTSxJQUFBLHFCQUFlLEVBQUMsSUFBSSxDQUFDLENBQUM7YUFDN0I7WUFBQyxPQUFPLEtBQVUsRUFBRTtnQkFDbkIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDckMsTUFBTSxZQUFZLEdBQUcsSUFBSTtxQkFDdEIsT0FBTyxDQUFDLFFBQVEsRUFBRSxNQUFNLFFBQVEsRUFBRSxDQUFDO3FCQUNuQyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUUxQixNQUFNLGNBQWMsR0FBRyxJQUFBLDhCQUFvQixFQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDN0QsVUFBVSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDL0QsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUVuQixNQUFNLElBQUEsdUJBQWtCLEVBQUMsWUFBWSxDQUFDLENBQUM7YUFDeEM7U0FDRjtRQUVELElBQUksVUFBVSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUU7WUFDeEIsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7WUFFekQsT0FBTyxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1lBQzVDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDbEUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNqQjtLQUNGO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO0lBQ3RCLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRTtRQUMxQixlQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDakI7QUFDSCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb2Nlc3MtZXhpdCAqL1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtnZXRZYW1sRmlsZXMsIHJlbW92ZUZpbGVJZkV4aXN0c30gZnJvbSAnLi4vY29tbW9uL3V0aWwvZnMnO1xuaW1wb3J0IHtkZWJ1Z0xvZ2dlcn0gZnJvbSAnLi4vY29tbW9uL3V0aWwvZGVidWctbG9nZ2VyJztcbmltcG9ydCB7bG9nZ2VyfSBmcm9tICcuLi9jb21tb24vdXRpbC9sb2dnZXInO1xuXG5pbXBvcnQge2xvZ1N0ZG91dEZhaWxNZXNzYWdlfSBmcm9tICcuL3V0aWwvaGVscGVycyc7XG5pbXBvcnQge3BhcnNlSWZDaGVja0FyZ3N9IGZyb20gJy4vdXRpbC9hcmdzJztcbmltcG9ydCB7ZXhlY3V0ZUNvbW1hbmRzfSBmcm9tICcuL3V0aWwvbnBtJztcblxuaW1wb3J0IHtTVFJJTkdTfSBmcm9tICcuL2NvbmZpZyc7XG5cbmNvbnN0IHtcbiAgQ0hFQ0tJTkcsXG4gIERJUkVDVE9SWV9ZQU1MX0ZJTEVTX05PVF9GT1VORCxcbiAgSUZfQ0hFQ0tfVkVSSUZJQ0FUSU9OX0ZBSUxVUkVTLFxuICBJRl9DSEVDS19TVU1NQVJZX0xPRyxcbiAgSUZfQ0hFQ0tfRVhFQ1VUSU5HLFxufSA9IFNUUklOR1M7XG5cbmNvbnN0IElmQ2hlY2sgPSBhc3luYyAoKSA9PiB7XG4gIC8vIENhbGwgdGhpcyBmdW5jdGlvbiB3aXRoIGZhbHNlIHBhcmFtZXRlciB0byBwcmV2ZW50IGxvZyBkZWJ1ZyBtZXNzYWdlcy5cbiAgZGVidWdMb2dnZXIub3ZlcnJpZGVDb25zb2xlTWV0aG9kcyhmYWxzZSk7XG5cbiAgY29uc3QgY29tbWFuZEFyZ3MgPSBhd2FpdCBwYXJzZUlmQ2hlY2tBcmdzKCk7XG5cbiAgY29uc29sZS5sb2coYCR7Q0hFQ0tJTkd9XFxuYCk7XG5cbiAgaWYgKGNvbW1hbmRBcmdzLm1hbmlmZXN0KSB7XG4gICAgY29uc3QgbWFuaWZlc3QgPSBjb21tYW5kQXJncy5tYW5pZmVzdDtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBleGVjdXRlQ29tbWFuZHMobWFuaWZlc3QpO1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGNvbnN0IGZpbGVOYW1lID0gcGF0aC5iYXNlbmFtZShtYW5pZmVzdCk7XG4gICAgICBjb25zdCBleGVjdXRlZEZpbGUgPSBtYW5pZmVzdFxuICAgICAgICAucmVwbGFjZShmaWxlTmFtZSwgYHJlLSR7ZmlsZU5hbWV9YClcbiAgICAgICAgLnJlcGxhY2UoJ3ltbCcsICd5YW1sJyk7XG4gICAgICBjb25zdCBtYW5pZmVzdERpclBhdGggPSBwYXRoLmRpcm5hbWUobWFuaWZlc3QpO1xuXG4gICAgICBsb2dTdGRvdXRGYWlsTWVzc2FnZShlcnJvciwgZmlsZU5hbWUpO1xuXG4gICAgICBhd2FpdCByZW1vdmVGaWxlSWZFeGlzdHMoYCR7bWFuaWZlc3REaXJQYXRofS9wYWNrYWdlLmpzb25gKTtcbiAgICAgIGF3YWl0IHJlbW92ZUZpbGVJZkV4aXN0cyhleGVjdXRlZEZpbGUpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBmYWlsZWRMb2dzID0ge2NvdW50OiAwLCBtZXNzYWdlOiAnJ307XG4gICAgY29uc3QgZGlyZWN0b3J5ID0gY29tbWFuZEFyZ3MuZGlyZWN0b3J5O1xuICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgZ2V0WWFtbEZpbGVzKGRpcmVjdG9yeSEpO1xuXG4gICAgaWYgKGZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc29sZS5sb2coRElSRUNUT1JZX1lBTUxfRklMRVNfTk9UX0ZPVU5EKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBmb3IgYXdhaXQgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgIGNvbnN0IGZpbGVSZWxhdGl2ZVBhdGggPSBwYXRoLnJlbGF0aXZlKFxuICAgICAgICBwcm9jZXNzLmVudi5DVVJSRU5UX0RJUiB8fCBwcm9jZXNzLmN3ZCgpLFxuICAgICAgICBmaWxlXG4gICAgICApO1xuICAgICAgY29uc29sZS5sb2coSUZfQ0hFQ0tfRVhFQ1VUSU5HKGZpbGVSZWxhdGl2ZVBhdGgpKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZXhlY3V0ZUNvbW1hbmRzKGZpbGUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICBjb25zdCBmaWxlTmFtZSA9IHBhdGguYmFzZW5hbWUoZmlsZSk7XG4gICAgICAgIGNvbnN0IGV4ZWN1dGVkRmlsZSA9IGZpbGVcbiAgICAgICAgICAucmVwbGFjZShmaWxlTmFtZSwgYHJlLSR7ZmlsZU5hbWV9YClcbiAgICAgICAgICAucmVwbGFjZSgneW1sJywgJ3lhbWwnKTtcblxuICAgICAgICBjb25zdCBmYWlsZWRGaWxlc0xvZyA9IGxvZ1N0ZG91dEZhaWxNZXNzYWdlKGVycm9yLCBmaWxlTmFtZSk7XG4gICAgICAgIGZhaWxlZExvZ3MubWVzc2FnZSA9IGZhaWxlZExvZ3MubWVzc2FnZS5jb25jYXQoZmFpbGVkRmlsZXNMb2cpO1xuICAgICAgICBmYWlsZWRMb2dzLmNvdW50Kys7XG5cbiAgICAgICAgYXdhaXQgcmVtb3ZlRmlsZUlmRXhpc3RzKGV4ZWN1dGVkRmlsZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGZhaWxlZExvZ3MuY291bnQgPiAwKSB7XG4gICAgICBjb25zdCBwYXNzZWRGaWxlc0NvdW50ID0gZmlsZXMubGVuZ3RoIC0gZmFpbGVkTG9ncy5jb3VudDtcblxuICAgICAgY29uc29sZS5sb2coSUZfQ0hFQ0tfVkVSSUZJQ0FUSU9OX0ZBSUxVUkVTKTtcbiAgICAgIGNvbnNvbGUubG9nKGZhaWxlZExvZ3MubWVzc2FnZSk7XG4gICAgICBjb25zb2xlLmxvZyhJRl9DSEVDS19TVU1NQVJZX0xPRyhwYXNzZWRGaWxlc0NvdW50LCBmaWxlcy5sZW5ndGgpKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4gIH1cbn07XG5cbklmQ2hlY2soKS5jYXRjaChlcnJvciA9PiB7XG4gIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgbG9nZ2VyLmVycm9yKGVycm9yKTtcbiAgICBwcm9jZXNzLmV4aXQoMik7XG4gIH1cbn0pO1xuIl19
|
|
@@ -8,11 +8,11 @@ const { IF_CHECK_FAILED, IF_CHECK_SUMMARY_ERROR_MESSAGE } = config_1.STRINGS;
|
|
|
8
8
|
*/
|
|
9
9
|
const logStdoutFailMessage = (error, fileName) => {
|
|
10
10
|
console.log(IF_CHECK_FAILED(fileName));
|
|
11
|
-
const stdout = error.stdout;
|
|
12
|
-
const logs = stdout.split('\n\n')
|
|
13
|
-
const failMessage = logs[logs.length - 1];
|
|
11
|
+
const stdout = error.stdout?.toString();
|
|
12
|
+
const logs = stdout ? stdout.split('\n\n') : `${error.message}\n`;
|
|
13
|
+
const failMessage = Array.isArray(logs) ? logs[logs.length - 1] : logs;
|
|
14
14
|
console.log(failMessage);
|
|
15
15
|
return IF_CHECK_SUMMARY_ERROR_MESSAGE(fileName, failMessage);
|
|
16
16
|
};
|
|
17
17
|
exports.logStdoutFailMessage = logStdoutFailMessage;
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pZi1jaGVjay91dGlsL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsc0NBQWtDO0FBRWxDLE1BQU0sRUFBQyxlQUFlLEVBQUUsOEJBQThCLEVBQUMsR0FBRyxnQkFBTyxDQUFDO0FBRWxFOztHQUVHO0FBQ0ksTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQVUsRUFBRSxRQUFnQixFQUFFLEVBQUU7SUFDbkUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUV2QyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBQ3hDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxJQUFJLENBQUM7SUFDbEUsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUV2RSxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pCLE9BQU8sOEJBQThCLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQy9ELENBQUMsQ0FBQztBQVRXLFFBQUEsb0JBQW9CLHdCQVMvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U1RSSU5HU30gZnJvbSAnLi4vY29uZmlnJztcblxuY29uc3Qge0lGX0NIRUNLX0ZBSUxFRCwgSUZfQ0hFQ0tfU1VNTUFSWV9FUlJPUl9NRVNTQUdFfSA9IFNUUklOR1M7XG5cbi8qKlxuICogTG9ncyB0aGUgZmFpbHVyZSBtZXNzYWdlIGZyb20gdGhlIHN0ZG91dCBvZiBhbiBlcnJvci5cbiAqL1xuZXhwb3J0IGNvbnN0IGxvZ1N0ZG91dEZhaWxNZXNzYWdlID0gKGVycm9yOiBhbnksIGZpbGVOYW1lOiBzdHJpbmcpID0+IHtcbiAgY29uc29sZS5sb2coSUZfQ0hFQ0tfRkFJTEVEKGZpbGVOYW1lKSk7XG5cbiAgY29uc3Qgc3Rkb3V0ID0gZXJyb3Iuc3Rkb3V0Py50b1N0cmluZygpO1xuICBjb25zdCBsb2dzID0gc3Rkb3V0ID8gc3Rkb3V0LnNwbGl0KCdcXG5cXG4nKSA6IGAke2Vycm9yLm1lc3NhZ2V9XFxuYDtcbiAgY29uc3QgZmFpbE1lc3NhZ2UgPSBBcnJheS5pc0FycmF5KGxvZ3MpID8gbG9nc1tsb2dzLmxlbmd0aCAtIDFdIDogbG9ncztcblxuICBjb25zb2xlLmxvZyhmYWlsTWVzc2FnZSk7XG4gIHJldHVybiBJRl9DSEVDS19TVU1NQVJZX0VSUk9SX01FU1NBR0UoZmlsZU5hbWUsIGZhaWxNZXNzYWdlKTtcbn07XG4iXX0=
|
|
@@ -36,16 +36,22 @@ const escapeShellArg = (str) => str.replace(/([`$\\&;|*?<>])/g, '\\$1');
|
|
|
36
36
|
/**
|
|
37
37
|
* Executes a series of npm commands based on the provided manifest file.
|
|
38
38
|
*/
|
|
39
|
-
const executeCommands = async (manifest
|
|
39
|
+
const executeCommands = async (manifest) => {
|
|
40
|
+
// Determine if the npm command should be run globally
|
|
40
41
|
const isGlobal = !!process.env.npm_config_global;
|
|
42
|
+
// Get the directory path and file name of the manifest
|
|
41
43
|
const manifestDirPath = path.dirname(manifest);
|
|
42
44
|
const manifestFileName = (0, fs_1.getFileName)(manifest);
|
|
45
|
+
// Create a path for the executed manifest file
|
|
43
46
|
const executedManifest = path.join(manifestDirPath, `re-${manifestFileName}`);
|
|
47
|
+
// Determine the prefix flag if the CURRENT_DIR environment variable is set and different from the current working directory
|
|
44
48
|
const prefixFlag = process.env.CURRENT_DIR && process.env.CURRENT_DIR !== process.cwd()
|
|
45
49
|
? `--prefix=${path.relative(process.env.CURRENT_DIR, process.cwd())}`
|
|
46
50
|
: '';
|
|
51
|
+
// Escape shell characters in the manifest paths
|
|
47
52
|
const sanitizedManifest = escapeShellArg(manifest);
|
|
48
53
|
const sanitizedExecutedManifest = escapeShellArg(executedManifest);
|
|
54
|
+
// Construct the if-env command
|
|
49
55
|
const ifEnvCommand = [
|
|
50
56
|
isGlobal ? 'if-env' : 'npm',
|
|
51
57
|
...(isGlobal ? [] : ['run', 'if-env']),
|
|
@@ -54,6 +60,7 @@ const executeCommands = async (manifest, cwd) => {
|
|
|
54
60
|
'-m',
|
|
55
61
|
sanitizedManifest,
|
|
56
62
|
];
|
|
63
|
+
// Construct the if-run command
|
|
57
64
|
const ifRunCommand = [
|
|
58
65
|
isGlobal ? 'if-run' : 'npm',
|
|
59
66
|
...(isGlobal ? [] : ['run', 'if-run']),
|
|
@@ -64,7 +71,9 @@ const executeCommands = async (manifest, cwd) => {
|
|
|
64
71
|
'-o',
|
|
65
72
|
sanitizedExecutedManifest,
|
|
66
73
|
];
|
|
74
|
+
// Construct the tty command to check if the process is running in a TTY context
|
|
67
75
|
const ttyCommand = ['node', '-p', 'Boolean(process.stdout.isTTY)'];
|
|
76
|
+
// Construct the if-diff command
|
|
68
77
|
const ifDiffCommand = [
|
|
69
78
|
isGlobal ? 'if-diff' : 'npm',
|
|
70
79
|
...(isGlobal ? [] : ['run', 'if-diff']),
|
|
@@ -75,31 +84,35 @@ const executeCommands = async (manifest, cwd) => {
|
|
|
75
84
|
'-t',
|
|
76
85
|
sanitizedManifest,
|
|
77
86
|
];
|
|
78
|
-
|
|
87
|
+
const executionOptions = {
|
|
79
88
|
cwd: process.env.CURRENT_DIR || process.cwd(),
|
|
89
|
+
};
|
|
90
|
+
// Execute the if-env command
|
|
91
|
+
(0, child_process_1.execFileSync)(ifEnvCommand[0], ifEnvCommand.slice(1), {
|
|
92
|
+
...executionOptions,
|
|
80
93
|
shell: true,
|
|
81
94
|
});
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
(0, child_process_1.execFileSync)(ttyCommand[0], ttyCommand.slice(1),
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
cwd: process.env.CURRENT_DIR || process.cwd(),
|
|
90
|
-
});
|
|
95
|
+
// Execute the if-run command
|
|
96
|
+
(0, child_process_1.execFileSync)(ifRunCommand[0], ifRunCommand.slice(1), executionOptions);
|
|
97
|
+
// Execute the tty command to check if the process is running in a TTY context
|
|
98
|
+
(0, child_process_1.execFileSync)(ttyCommand[0], ttyCommand.slice(1), executionOptions);
|
|
99
|
+
// Get the result of the tty command
|
|
100
|
+
const ttyResult = (0, child_process_1.execFileSync)(ttyCommand[0], ttyCommand.slice(1), executionOptions);
|
|
101
|
+
// Determine if the process is running in a TTY context
|
|
91
102
|
const tty = ttyResult && ttyResult.toString().trim();
|
|
103
|
+
// Construct the full command to execute if-diff, optionally piping through tty
|
|
92
104
|
const fullCommand = `${tty === 'true' ? 'tty |' : ''} ${ifDiffCommand.join(' ')}`;
|
|
105
|
+
// Execute the full command
|
|
93
106
|
(0, child_process_1.execFileSync)(fullCommand, {
|
|
94
|
-
|
|
107
|
+
...executionOptions,
|
|
95
108
|
stdio: 'inherit',
|
|
96
109
|
shell: true,
|
|
97
110
|
});
|
|
98
|
-
if
|
|
99
|
-
|
|
100
|
-
|
|
111
|
+
// Remove the package.json file if it exists
|
|
112
|
+
await (0, fs_1.removeFileIfExists)(`${manifestDirPath}/package.json`);
|
|
113
|
+
// Remove the executed manifest file if it exists
|
|
101
114
|
await (0, fs_1.removeFileIfExists)(`${executedManifest}.yaml`);
|
|
102
115
|
console.log(IF_CHECK_VERIFIED(path.basename(manifest)));
|
|
103
116
|
};
|
|
104
117
|
exports.executeCommands = executeCommands;
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2lmLWNoZWNrL3V0aWwvbnBtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0RBQWtDO0FBQ2xDLGlEQUEyQztBQUMzQyw2Q0FBcUU7QUFDckUsc0NBQWtDO0FBRWxDLE1BQU0sRUFBQyxpQkFBaUIsRUFBQyxHQUFHLGdCQUFPLENBQUM7QUFFcEM7O0dBRUc7QUFDSCxNQUFNLGNBQWMsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUVoRjs7R0FFRztBQUNJLE1BQU0sZUFBZSxHQUFHLEtBQUssRUFBRSxRQUFnQixFQUFFLEVBQUU7SUFDeEQsc0RBQXNEO0lBQ3RELE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDO0lBQ2pELHVEQUF1RDtJQUN2RCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sZ0JBQWdCLEdBQUcsSUFBQSxnQkFBVyxFQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9DLCtDQUErQztJQUMvQyxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBRTlFLDRIQUE0SDtJQUM1SCxNQUFNLFVBQVUsR0FDZCxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsS0FBSyxPQUFPLENBQUMsR0FBRyxFQUFFO1FBQ2xFLENBQUMsQ0FBQyxZQUFZLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFZLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFD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RyxJQUFBLDRCQUFZLEVBQzVCLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFDYixVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUNuQixnQkFBZ0IsQ0FDakIsQ0FBQztJQUVGLHVEQUF1RDtJQUN2RCxNQUFNLEdBQUcsR0FBRyxTQUFTLElBQUksU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JELCtFQUErRTtJQUMvRSxNQUFNLFdBQVcsR0FBRyxHQUFHLEdBQUcsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQ3hFLEdBQUcsQ0FDSixFQUFFLENBQUM7SUFFSiwyQkFBMkI7SUFDM0IsSUFBQSw0QkFBWSxFQUFDLFdBQVcsRUFBRTtRQUN4QixHQUFHLGdCQUFnQjtRQUNuQixLQUFLLEVBQUUsU0FBUztRQUNoQixLQUFLLEVBQUUsSUFBSTtLQUNaLENBQUMsQ0FBQztJQUVILDRDQUE0QztJQUM1QyxNQUFNLElBQUEsdUJBQWtCLEVBQUMsR0FBRyxlQUFlLGVBQWUsQ0FBQyxDQUFDO0lBQzVELGlEQUFpRDtJQUNqRCxNQUFNLElBQUEsdUJBQWtCLEVBQUMsR0FBRyxnQkFBZ0IsT0FBTyxDQUFDLENBQUM7SUFFckQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxRCxDQUFDLENBQUM7QUFuR1csUUFBQSxlQUFlLG1CQW1HMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQge2V4ZWNGaWxlU3luY30gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQge2dldEZpbGVOYW1lLCByZW1vdmVGaWxlSWZFeGlzdHN9IGZyb20gJy4uLy4uL2NvbW1vbi91dGlsL2ZzJztcbmltcG9ydCB7U1RSSU5HU30gZnJvbSAnLi4vY29uZmlnJztcblxuY29uc3Qge0lGX0NIRUNLX1ZFUklGSUVEfSA9IFNUUklOR1M7XG5cbi8qKlxuICogRXNjYXBlcyBzaGVsbCBjaGFyYWN0ZXJzIHRoYXQgY291bGQgYmUgZGFuZ2Vyb3VzIGluIGEgY29tbWFuZC5cbiAqL1xuY29uc3QgZXNjYXBlU2hlbGxBcmcgPSAoc3RyOiBzdHJpbmcpID0+IHN0ci5yZXBsYWNlKC8oW2AkXFxcXCY7fCo/PD5dKS9nLCAnXFxcXCQxJyk7XG5cbi8qKlxuICogRXhlY3V0ZXMgYSBzZXJpZXMgb2YgbnBtIGNvbW1hbmRzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBtYW5pZmVzdCBmaWxlLlxuICovXG5leHBvcnQgY29uc3QgZXhlY3V0ZUNvbW1hbmRzID0gYXN5bmMgKG1hbmlmZXN0OiBzdHJpbmcpID0+IHtcbiAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBucG0gY29tbWFuZCBzaG91bGQgYmUgcnVuIGdsb2JhbGx5XG4gIGNvbnN0IGlzR2xvYmFsID0gISFwcm9jZXNzLmVudi5ucG1fY29uZmlnX2dsb2JhbDtcbiAgLy8gR2V0IHRoZSBkaXJlY3RvcnkgcGF0aCBhbmQgZmlsZSBuYW1lIG9mIHRoZSBtYW5pZmVzdFxuICBjb25zdCBtYW5pZmVzdERpclBhdGggPSBwYXRoLmRpcm5hbWUobWFuaWZlc3QpO1xuICBjb25zdCBtYW5pZmVzdEZpbGVOYW1lID0gZ2V0RmlsZU5hbWUobWFuaWZlc3QpO1xuICAvLyBDcmVhdGUgYSBwYXRoIGZvciB0aGUgZXhlY3V0ZWQgbWFuaWZlc3QgZmlsZVxuICBjb25zdCBleGVjdXRlZE1hbmlmZXN0ID0gcGF0aC5qb2luKG1hbmlmZXN0RGlyUGF0aCwgYHJlLSR7bWFuaWZlc3RGaWxlTmFtZX1gKTtcblxuICAvLyBEZXRlcm1pbmUgdGhlIHByZWZpeCBmbGFnIGlmIHRoZSBDVVJSRU5UX0RJUiBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQgYW5kIGRpZmZlcmVudCBmcm9tIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5XG4gIGNvbnN0IHByZWZpeEZsYWcgPVxuICAgIHByb2Nlc3MuZW52LkNVUlJFTlRfRElSICYmIHByb2Nlc3MuZW52LkNVUlJFTlRfRElSICE9PSBwcm9jZXNzLmN3ZCgpXG4gICAgICA/IGAtLXByZWZpeD0ke3BhdGgucmVsYXRpdmUocHJvY2Vzcy5lbnYuQ1VSUkVOVF9ESVIhLCBwcm9jZXNzLmN3ZCgpKX1gXG4gICAgICA6ICcnO1xuXG4gIC8vIEVzY2FwZSBzaGVsbCBjaGFyYWN0ZXJzIGluIHRoZSBtYW5pZmVzdCBwYXRoc1xuICBjb25zdCBzYW5pdGl6ZWRNYW5pZmVzdCA9IGVzY2FwZVNoZWxsQXJnKG1hbmlmZXN0KTtcbiAgY29uc3Qgc2FuaXRpemVkRXhlY3V0ZWRNYW5pZmVzdCA9IGVzY2FwZVNoZWxsQXJnKGV4ZWN1dGVkTWFuaWZlc3QpO1xuXG4gIC8vIENvbnN0cnVjdCB0aGUgaWYtZW52IGNvbW1hbmRcbiAgY29uc3QgaWZFbnZDb21tYW5kID0gW1xuICAgIGlzR2xvYmFsID8gJ2lmLWVudicgOiAnbnBtJyxcbiAgICAuLi4oaXNHbG9iYWwgPyBbXSA6IFsncnVuJywgJ2lmLWVudiddKSxcbiAgICBpc0dsb2JhbCA/ICcnIDogJy0tJyxcbiAgICAuLi4ocHJlZml4RmxhZyA9PT0gJycgPyBbXSA6IFtwcmVmaXhGbGFnXSksXG4gICAgJy1tJyxcbiAgICBzYW5pdGl6ZWRNYW5pZmVzdCxcbiAgXTtcblxuICAvLyBDb25zdHJ1Y3QgdGhlIGlmLXJ1biBjb21tYW5kXG4gIGNvbnN0IGlmUnVuQ29tbWFuZCA9IFtcbiAgICBpc0dsb2JhbCA/ICdpZi1ydW4nIDogJ25wbScsXG4gICAgLi4uKGlzR2xvYmFsID8gW10gOiBbJ3J1bicsICdpZi1ydW4nXSksXG4gICAgaXNHbG9iYWwgPyAnJyA6ICctLScsXG4gICAgLi4uKHByZWZpeEZsYWcgPT09ICcnID8gW10gOiBbcHJlZml4RmxhZ10pLFxuICAgICctbScsXG4gICAgc2FuaXRpemVkTWFuaWZlc3QsXG4gICAgJy1vJyxcbiAgICBzYW5pdGl6ZWRFeGVjdXRlZE1hbmlmZXN0LFxuICBdO1xuXG4gIC8vIENvbnN0cnVjdCB0aGUgdHR5IGNvbW1hbmQgdG8gY2hlY2sgaWYgdGhlIHByb2Nlc3MgaXMgcnVubmluZyBpbiBhIFRUWSBjb250ZXh0XG4gIGNvbnN0IHR0eUNvbW1hbmQgPSBbJ25vZGUnLCAnLXAnLCAnQm9vbGVhbihwcm9jZXNzLnN0ZG91dC5pc1RUWSknXTtcblxuICAvLyBDb25zdHJ1Y3QgdGhlIGlmLWRpZmYgY29tbWFuZFxuICBjb25zdCBpZkRpZmZDb21tYW5kID0gW1xuICAgIGlzR2xvYmFsID8gJ2lmLWRpZmYnIDogJ25wbScsXG4gICAgLi4uKGlzR2xvYmFsID8gW10gOiBbJ3J1bicsICdpZi1kaWZmJ10pLFxuICAgIGlzR2xvYmFsID8gJycgOiAnLS0nLFxuICAgIC4uLihwcmVmaXhGbGFnID09PSAnJyA/IFtdIDogW3ByZWZpeEZsYWddKSxcbiAgICAnLXMnLFxuICAgIGAke3Nhbml0aXplZEV4ZWN1dGVkTWFuaWZlc3R9LnlhbWxgLFxuICAgICctdCcsXG4gICAgc2FuaXRpemVkTWFuaWZlc3QsXG4gIF07XG5cbiAgY29uc3QgZXhlY3V0aW9uT3B0aW9ucyA9IHtcbiAgICBjd2Q6IHByb2Nlc3MuZW52LkNVUlJFTlRfRElSIHx8IHByb2Nlc3MuY3dkKCksXG4gIH07XG5cbiAgLy8gRXhlY3V0ZSB0aGUgaWYtZW52IGNvbW1hbmRcbiAgZXhlY0ZpbGVTeW5jKGlmRW52Q29tbWFuZFswXSwgaWZFbnZDb21tYW5kLnNsaWNlKDEpLCB7XG4gICAgLi4uZXhlY3V0aW9uT3B0aW9ucyxcbiAgICBzaGVsbDogdHJ1ZSxcbiAgfSk7XG5cbiAgLy8gRXhlY3V0ZSB0aGUgaWYtcnVuIGNvbW1hbmRcbiAgZXhlY0ZpbGVTeW5jKGlmUnVuQ29tbWFuZFswXSwgaWZSdW5Db21tYW5kLnNsaWNlKDEpLCBleGVjdXRpb25PcHRpb25zKTtcblxuICAvLyBFeGVjdXRlIHRoZSB0dHkgY29tbWFuZCB0byBjaGVjayBpZiB0aGUgcHJvY2VzcyBpcyBydW5uaW5nIGluIGEgVFRZIGNvbnRleHRcbiAgZXhlY0ZpbGVTeW5jKHR0eUNvbW1hbmRbMF0sIHR0eUNvbW1hbmQuc2xpY2UoMSksIGV4ZWN1dGlvbk9wdGlvbnMpO1xuXG4gIC8vIEdldCB0aGUgcmVzdWx0IG9mIHRoZSB0dHkgY29tbWFuZFxuICBjb25zdCB0dHlSZXN1bHQgPSBleGVjRmlsZVN5bmMoXG4gICAgdHR5Q29tbWFuZFswXSxcbiAgICB0dHlDb21tYW5kLnNsaWNlKDEpLFxuICAgIGV4ZWN1dGlvbk9wdGlvbnNcbiAgKTtcblxuICAvLyBEZXRlcm1pbmUgaWYgdGhlIHByb2Nlc3MgaXMgcnVubmluZyBpbiBhIFRUWSBjb250ZXh0XG4gIGNvbnN0IHR0eSA9IHR0eVJlc3VsdCAmJiB0dHlSZXN1bHQudG9TdHJpbmcoKS50cmltKCk7XG4gIC8vIENvbnN0cnVjdCB0aGUgZnVsbCBjb21tYW5kIHRvIGV4ZWN1dGUgaWYtZGlmZiwgb3B0aW9uYWxseSBwaXBpbmcgdGhyb3VnaCB0dHlcbiAgY29uc3QgZnVsbENvbW1hbmQgPSBgJHt0dHkgPT09ICd0cnVlJyA/ICd0dHkgfCcgOiAnJ30gJHtpZkRpZmZDb21tYW5kLmpvaW4oXG4gICAgJyAnXG4gICl9YDtcblxuICAvLyBFeGVjdXRlIHRoZSBmdWxsIGNvbW1hbmRcbiAgZXhlY0ZpbGVTeW5jKGZ1bGxDb21tYW5kLCB7XG4gICAgLi4uZXhlY3V0aW9uT3B0aW9ucyxcbiAgICBzdGRpbzogJ2luaGVyaXQnLFxuICAgIHNoZWxsOiB0cnVlLFxuICB9KTtcblxuICAvLyBSZW1vdmUgdGhlIHBhY2thZ2UuanNvbiBmaWxlIGlmIGl0IGV4aXN0c1xuICBhd2FpdCByZW1vdmVGaWxlSWZFeGlzdHMoYCR7bWFuaWZlc3REaXJQYXRofS9wYWNrYWdlLmpzb25gKTtcbiAgLy8gUmVtb3ZlIHRoZSBleGVjdXRlZCBtYW5pZmVzdCBmaWxlIGlmIGl0IGV4aXN0c1xuICBhd2FpdCByZW1vdmVGaWxlSWZFeGlzdHMoYCR7ZXhlY3V0ZWRNYW5pZmVzdH0ueWFtbGApO1xuXG4gIGNvbnNvbGUubG9nKElGX0NIRUNLX1ZFUklGSUVEKHBhdGguYmFzZW5hbWUobWFuaWZlc3QpKSk7XG59O1xuIl19
|
|
@@ -24,10 +24,9 @@ const traverse = async (children, params) => {
|
|
|
24
24
|
*/
|
|
25
25
|
const mergeDefaults = (inputs, defaults) => {
|
|
26
26
|
if (inputs) {
|
|
27
|
-
|
|
27
|
+
return defaults
|
|
28
28
|
? inputs.map(input => (0, helpers_1.mergeObjects)(defaults, input))
|
|
29
29
|
: inputs;
|
|
30
|
-
return response;
|
|
31
30
|
}
|
|
32
31
|
console.debug(MERGING_DEFAULTS_WITH_INPUT_DATA, '\n');
|
|
33
32
|
return defaults ? [defaults] : [];
|
|
@@ -74,8 +73,7 @@ const computeNode = async (node, params) => {
|
|
|
74
73
|
config,
|
|
75
74
|
});
|
|
76
75
|
}
|
|
77
|
-
let outputStorage = structuredClone(node.inputs);
|
|
78
|
-
outputStorage = mergeDefaults(outputStorage, defaults);
|
|
76
|
+
let outputStorage = structuredClone(node.inputs) || [];
|
|
79
77
|
const pipelineCopy = structuredClone(pipeline) || {};
|
|
80
78
|
/** Checks if pipeline is not an array or empty object. */
|
|
81
79
|
if (Array.isArray(pipelineCopy) ||
|
|
@@ -103,6 +101,17 @@ const computeNode = async (node, params) => {
|
|
|
103
101
|
});
|
|
104
102
|
}
|
|
105
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* Merges defaults with inputs after observing.
|
|
106
|
+
* Defaults are needed to be merged after observing because observing can change the inputs.
|
|
107
|
+
*/
|
|
108
|
+
node.inputs = mergeDefaults(outputStorage, defaults);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* If observe is not requested, then merge defaults with inputs.
|
|
112
|
+
*/
|
|
113
|
+
if (!params.observe && outputStorage.length > 0) {
|
|
114
|
+
outputStorage = mergeDefaults(outputStorage, defaults);
|
|
106
115
|
}
|
|
107
116
|
/**
|
|
108
117
|
* If regroup is requested, execute regroup strategy, delete child's inputs, outputs and empty regroup array.
|
|
@@ -141,7 +150,15 @@ const computeNode = async (node, params) => {
|
|
|
141
150
|
const nodeConfig = config && config[pluginName];
|
|
142
151
|
console.debug(COMPUTING_PIPELINE_FOR_NODE(pluginName));
|
|
143
152
|
debug_logger_1.debugLogger.setExecutingPluginName(pluginName);
|
|
153
|
+
/** Keep previous state to check after computation. */
|
|
154
|
+
const previousOutputsState = outputStorage;
|
|
144
155
|
outputStorage = await plugin.execute(outputStorage, nodeConfig);
|
|
156
|
+
/**
|
|
157
|
+
* If there are no previous inputs/outputs (compute phase initalizes values), then merge defaults with outputs postfactum.
|
|
158
|
+
*/
|
|
159
|
+
if (previousOutputsState.length === 0 && outputStorage.length > 0) {
|
|
160
|
+
outputStorage = mergeDefaults(outputStorage, defaults);
|
|
161
|
+
}
|
|
145
162
|
debug_logger_1.debugLogger.setExecutingPluginName();
|
|
146
163
|
node.outputs = outputStorage;
|
|
147
164
|
if (params.context.explainer) {
|
|
@@ -166,4 +183,4 @@ const compute = async (tree, params) => {
|
|
|
166
183
|
return copyOfTree;
|
|
167
184
|
};
|
|
168
185
|
exports.compute = compute;
|
|
169
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pZi1ydW4vbGliL2NvbXB1dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsdUNBQStDO0FBQy9DLHVDQUF5QztBQUV6QyxpRUFBMkQ7QUFDM0QscURBQWdEO0FBRWhELDZDQUE2QztBQUU3QywrQ0FBMEM7QUFJMUMsTUFBTSxFQUNKLGdDQUFnQyxFQUNoQyxjQUFjLEVBQ2QsV0FBVyxFQUNYLDJCQUEyQixFQUMzQiw0QkFBNEIsRUFDNUIsVUFBVSxFQUNWLFNBQVMsRUFDVCxnQkFBZ0IsR0FDakIsR0FBRyxpQkFBTyxDQUFDO0FBRVosTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztBQUVyQzs7R0FFRztBQUNILE1BQU0sUUFBUSxHQUFHLEtBQUssRUFBRSxRQUFhLEVBQUUsTUFBcUIsRUFBRSxFQUFFO0lBQzlELEtBQUssTUFBTSxLQUFLLElBQUksUUFBUSxFQUFFO1FBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsNEJBQTRCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNuRCxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztLQUM1QztBQUNILENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxhQUFhLEdBQUcsQ0FDcEIsTUFBc0IsRUFDdEIsUUFBa0MsRUFDbEMsRUFBRTtJQUNGLElBQUksTUFBTSxFQUFFO1FBQ1YsTUFBTSxRQUFRLEdBQUcsUUFBUTtZQUN2QixDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUEsc0JBQVksRUFBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDcEQsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUVYLE9BQU8sUUFBUSxD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QkFDMUIsQ0FBQyxDQUFDO2FBQ0o7U0FDRjtRQUVELElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUNqQixJQUFJLENBQUMsT0FBTyxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQztTQUMzRDtLQUNGO0lBRUQsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QixDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNJLE1BQU0sT0FBTyxHQUFHLEtBQUssRUFBRSxJQUFTLEVBQUUsTUFBcUIsRUFBRSxFQUFFO0lBQ2hFLE1BQU0sVUFBVSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUV6QyxNQUFNLFdBQVcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFdEMsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQyxDQUFDO0FBTlcsUUFBQSxPQUFPLFdBTWxCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQbHVnaW5QYXJhbXN9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS90eXBlcyc7XG5cbmltcG9ydCB7aXNSZWdyb3VwZWQsIFJlZ3JvdXB9IGZyb20gJy4vcmVncm91cCc7XG5pbXBvcnQge2FkZEV4cGxhaW5EYXRhfSBmcm9tICcuL2V4cGxhaW4nO1xuXG5pbXBvcnQge2RlYnVnTG9nZ2VyfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbC9kZWJ1Zy1sb2dnZXInO1xuaW1wb3J0IHtsb2dnZXJ9IGZyb20gJy4uLy4uL2NvbW1vbi91dGlsL2xvZ2dlcic7XG5cbmltcG9ydCB7bWVyZ2VPYmplY3RzfSBmcm9tICcuLi91dGlsL2hlbHBlcnMnO1xuXG5pbXBvcnQge1NUUklOR1N9IGZyb20gJy4uL2NvbmZpZy9zdHJpbmdzJztcblxuaW1wb3J0IHtDb21wdXRlUGFyYW1zLCBOb2RlLCBQaGFzZWRQaXBlbGluZX0gZnJvbSAnLi4vdHlwZXMvY29tcHV0ZSc7XG5cbmNvbnN0IHtcbiAgTUVSR0lOR19ERUZBVUxUU19XSVRIX0lOUFVUX0RBVEEsXG4gIEVNUFRZX1BJUEVMSU5FLFxuICBDT05GSUdfV0FSTixcbiAgQ09NUFVUSU5HX1BJUEVMSU5FX0ZPUl9OT0RFLFxuICBDT01QVVRJTkdfQ09NUE9ORU5UX1BJUEVMSU5FLFxuICBSRUdST1VQSU5HLFxuICBPQlNFUlZJTkcsXG4gIFNLSVBQSU5HX1JFR1JPVVAsXG59ID0gU1RSSU5HUztcblxuY29uc3QgY2hpbGROYW1lcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4vKipcbiAqIFRyYXZlcnNlcyBhbGwgY2hpbGQgbm9kZXMgYmFzZWQgb24gY2hpbGRyZW4gZ3JvdXBpbmcuXG4gKi9cbmNvbnN0IHRyYXZlcnNlID0gYXN5bmMgKGNoaWxkcmVuOiBhbnksIHBhcmFtczogQ29tcHV0ZVBhcmFtcykgPT4ge1xuICBmb3IgKGNvbnN0IGNoaWxkIGluIGNoaWxkcmVuKSB7XG4gICAgY29uc29sZS5kZWJ1ZyhDT01QVVRJTkdfQ09NUE9ORU5UX1BJUEVMSU5FKGNoaWxkKSk7XG4gICAgY2hpbGROYW1lcy5hZGQoY2hpbGQpO1xuICAgIGF3YWl0IGNvbXB1dGVOb2RlKGNoaWxkcmVuW2NoaWxkXSwgcGFyYW1zKTtcbiAgfVxufTtcblxuLyoqXG4gKiBBcHBlbmRzIGBkZWZhdWx0YCB2YWx1ZXMgdG8gYGlucHV0c2AuXG4gKi9cbmNvbnN0IG1lcmdlRGVmYXVsdHMgPSAoXG4gIGlucHV0czogUGx1Z2luUGFyYW1zW10sXG4gIGRlZmF1bHRzOiBQbHVnaW5QYXJhbXMgfCB1bmRlZmluZWRcbikgPT4ge1xuICBpZiAoaW5wdXRzKSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBkZWZhdWx0c1xuICAgICAgPyBpbnB1dHMubWFwKGlucHV0ID0+IG1lcmdlT2JqZWN0cyhkZWZhdWx0cywgaW5wdXQpKVxuICAgICAgOiBpbnB1dHM7XG5cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxuICBjb25zb2xlLmRlYnVnKE1FUkdJTkdfREVGQVVMVFNfV0lUSF9JTlBVVF9EQVRBLCAnXFxuJyk7XG5cbiAgcmV0dXJuIGRlZmF1bHRzID8gW2RlZmF1bHRzXSA6IFtdO1xufTtcblxuLyoqXG4gKiBXYXJucyBpZiB0aGUgYGNvbmZpZ2AgaXMgcHJvdmlkZWQgaW4gdGhlIG1hbmlmZXN0LlxuICovXG5jb25zdCB3YXJuSWZDb25maWdQcm92aWRlZCA9IChub2RlOiBhbnkpID0+IHtcbiAgaWYgKCdjb25maWcnIGluIG5vZGUpIHtcbiAgICBjb25zdCBwbHVnaW5zID0gT2JqZWN0LmtleXMobm9kZS5jb25maWcgfHwge30pO1xuICAgIGNvbnN0IGpvaW5lZFBsdWdpbnMgPSBwbHVnaW5zLmpvaW4oJywgJyk7XG4gICAgY29uc3QgaXNNb3JlID0gcGx1Z2lucy5sZW5ndGggPiAxO1xuXG4gICAgbG9nZ2VyLndhcm4oQ09ORklHX1dBUk4oam9pbmVkUGx1Z2lucywgaXNNb3JlKSk7XG4gIH1cbn07XG5cbi8qKlxuICogMS4gSWYgdGhlIG5vZGUgaGFzIGl0J3Mgb3duIHBpcGVsaW5lLCBkZWZhdWx0cyBvciBjb25maWcgdGhlbiB1c2UgdGhhdCxcbiAqICAgIG90aGVyd2lzZSB1c2Ugd2hhdGV2ZXIgaGFzIGJlZW4gcGFzc2VkIGRvd24gZnJvbSBmdXJ0aGVyIHVwIHRoZSB0cmVlLlxuICogMi4gSWYgaXQncyBhIGdyb3VwaW5nIG5vZGUsIHRoZW4gZmlyc3Qgb2YgYWxsIGNvbXB1dGVzIGFsbCBpdCdzIGNoaWxkcmVuLlxuICogICAgVGhpcyBpcyBkb2luZyBhIGRlcHRoIGZpcnN0IHRyYXZlcnNhbC5cbiAqIDMuIE90aGVyd2lzZSBtZXJnZXMgdGhlIGRlZmF1bHRzIGludG8gdGhlIGlucHV0cy5cbiAqIDQuIEl0ZXJhdGVzIG92ZXIgcGlwZWxpbmUgcGhhc2VzIChvYnNlcnZlLCByZWdyb3VwLCBjb21wdXRlKS5cbiAqIDUuIE9ic2VydmUgcGx1Z2lucyBhcmUgdXNlZCB0byBpbnNlcnQgaW5wdXQgdmFsdWVzXG4gKiAgICAoaXNvbGF0ZWQgZXhlY3V0aW9uIGNhbiBiZSBhY2hpdmVkIGJ5IHBhc3NpbmcgYC0tb2JzZXJ2ZWAgZmxhZyB0byBDTEkgY29tbWFuZCkuXG4gKiA2LiBSZWdyb3VwIHBsdWdpbiBpcyB1c2VkIHRvIGdyb3VwIGV4aXN0aW5nIGlucHV0cyBieSBjcml0ZXJpYVxuICogICAgKGlzb2xhdGVkIGV4ZWN1dGlvbiBjYW4gYmUgYWNoaXZlZCBieSBwYXNzaW5nIGAtLXJlZ3JvdXBgIGZsYWcgdG8gQ0xJIGNvbW1hbmQpLlxuICogICAgU2luY2UgaXQgY3JlYXRlcyBuZXcgY2hpbGRyZW4gZm9yIG5vZGUsIGV4aXN0aW5nIGlucHV0cyBhbmQgb3V0cHV0cyBhcmUgZHJvcHBlZCBhbmQgcmVjdXJzaXZlIHRyYXZlcnNhbCBpcyBjYWxsZWRcbiAqICAgIGZvciBuZXdib3JkIGNoaWxkIGNvbXBvbmVudC5cbiAqIDcuIENvbXB1dGUgcGx1Z2lucyBhcmUgdXNlZCB0byBkbyBkZXNpcmVkIGNvbXB1dGF0aW9ucyBhbmQgYXBwZW5kaW5nIHRoZSByZXN1bHQgdG8gb3V0cHV0c1xuICogICAgKGlzb2xhdGVkIGV4ZWN1dGlvbiBjYW4gYmUgYWNoaXZlZCBieSBwYXNzaW5nIGAtLWNvbXB1dGVgIGZsYWcgdG8gQ0xJIGNvbW1hbmQpLlxuICovXG5jb25zdCBjb21wdXRlTm9kZSA9IGFzeW5jIChub2RlOiBOb2RlLCBwYXJhbXM6IENvbXB1dGVQYXJhbXMpOiBQcm9taXNlPGFueT4gPT4ge1xuICBjb25zdCBwaXBlbGluZSA9IG5vZGUucGlwZWxpbmUgfHwgKHBhcmFtcy5waXBlbGluZSBhcyBQaGFzZWRQaXBlbGluZSk7XG4gIGNvbnN0IGNvbmZpZyA9IG5vZGUuY29uZmlnIHx8IHBhcmFtcy5jb25maWc7XG4gIGNvbnN0IGRlZmF1bHRzID0gbm9kZS5kZWZhdWx0cyB8fCBwYXJhbXMuZGVmYXVsdHM7XG4gIGNvbnN0IG5vRmxhZ3MgPSAhcGFyYW1zLm9ic2VydmUgJiYgIXBhcmFtcy5yZWdyb3VwICYmICFwYXJhbXMuY29tcHV0ZTtcblxuICBkZWJ1Z0xvZ2dlci5zZXRFeGVjdXRpbmdQbHVnaW5OYW1lKCk7XG4gIHdhcm5JZkNvbmZpZ1Byb3ZpZGVkKG5vZGUpO1xuXG4gIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgcmV0dXJuIHRyYXZlcnNlKG5vZGUuY2hpbGRyZW4sIHtcbiAgICAgIC4uLnBhcmFtcyxcbiAgICAgIHBpcGVsaW5lLFxuICAgICAgZGVmYXVsdHMsXG4gICAgICBjb25maWcsXG4gICAgfSk7XG4gIH1cblxuICBsZXQgb3V0cHV0U3RvcmFnZSA9IHN0cnVjdHVyZWRDbG9uZShub2RlLmlucHV0cykgYXMgUGx1Z2luUGFyYW1zW107XG4gIG91dHB1dFN0b3JhZ2UgPSBtZXJnZURlZmF1bHRzKG91dHB1dFN0b3JhZ2UsIGRlZmF1bHRzKTtcbiAgY29uc3QgcGlwZWxpbmVDb3B5ID0gc3RydWN0dXJlZENsb25lKHBpcGVsaW5lKSB8fCB7fTtcblxuICAvKiogQ2hlY2tzIGlmIHBpcGVsaW5lIGlzIG5vdCBhbiBhcnJheSBvciBlbXB0eSBvYmplY3QuICovXG4gIGlmIChcbiAgICBBcnJheS5pc0FycmF5KHBpcGVsaW5lQ29weSkgfHxcbiAgICAodHlwZW9mIHBpcGVsaW5lQ29weSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIHBpcGVsaW5lQ29weSAhPT0gbnVsbCAmJlxuICAgICAgT2JqZWN0LmtleXMocGlwZWxpbmVDb3B5KS5sZW5ndGggPT09IDApXG4gICkge1xuICAgIGxvZ2dlci53YXJuKEVNUFRZX1BJUEVMSU5FKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiBpdGVyYXRpb24gaXMgb24gb2JzZXJ2ZSBwaXBlbGluZSwgdGhlbiBleGVjdXRlcyBvYnNlcnZlIHBsdWdpbnMgYW5kIHNldHMgdGhlIGlucHV0cyB2YWx1ZS5cbiAgICovXG4gIGlmICgobm9GbGFncyB8fCBwYXJhbXMub2JzZXJ2ZSkgJiYgcGlwZWxpbmVDb3B5Lm9ic2VydmUpIHtcbiAgICB3aGlsZSAocGlwZWxpbmVDb3B5Lm9ic2VydmUubGVuZ3RoICE9PSAwKSB7XG4gICAgICBjb25zdCBwbHVnaW5OYW1lID0gcGlwZWxpbmVDb3B5Lm9ic2VydmUuc2hpZnQoKSBhcyBzdHJpbmc7XG4gICAgICBjb25zb2xlLmRlYnVnKE9CU0VSVklORyhwbHVnaW5OYW1lKSk7XG4gICAgICBkZWJ1Z0xvZ2dlci5zZXRFeGVjdXRpbmdQbHVnaW5OYW1lKHBsdWdpbk5hbWUpO1xuXG4gICAgICBjb25zdCBwbHVnaW4gPSBwYXJhbXMucGx1Z2luU3RvcmFnZS5nZXQocGx1Z2luTmFtZSk7XG4gICAgICBjb25zdCBub2RlQ29uZmlnID0gY29uZmlnICYmIGNvbmZpZ1twbHVnaW5OYW1lXTtcblxuICAgICAgb3V0cHV0U3RvcmFnZSA9IGF3YWl0IHBsdWdpbi5leGVjdXRlKG91dHB1dFN0b3JhZ2UsIG5vZGVDb25maWcpO1xuICAgICAgbm9kZS5pbnB1dHMgPSBvdXRwdXRTdG9yYWdlO1xuXG4gICAgICBpZiAocGFyYW1zLmNvbnRleHQuZXhwbGFpbmVyKSB7XG4gICAgICAgIGFkZEV4cGxhaW5EYXRhKHtcbiAgICAgICAgICBwbHVnaW5OYW1lLFxuICAgICAgICAgIG1ldGFkYXRhOiBwbHVnaW4ubWV0YWRhdGEsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJZiByZWdyb3VwIGlzIHJlcXVlc3RlZCwgZXhlY3V0ZSByZWdyb3VwIHN0cmF0ZWd5LCBkZWxldGUgY2hpbGQncyBpbnB1dHMsIG91dHB1dHMgYW5kIGVtcHR5IHJlZ3JvdXAgYXJyYXkuXG4gICAqL1xuICBpZiAoKG5vRmxhZ3MgfHwgcGFyYW1zLnJlZ3JvdXApICYmIHBpcGVsaW5lQ29weS5yZWdyb3VwKSB7XG4gICAgY29uc3Qgb3JpZ2luYWxPdXRwdXRzID0gcGFyYW1zLmFwcGVuZCA/IG5vZGUub3V0cHV0cyB8fCBbXSA6IFtdO1xuXG4gICAgaWYgKCFpc1JlZ3JvdXBlZChwaXBlbGluZUNvcHkucmVncm91cCwgb3V0cHV0U3RvcmFnZSwgY2hpbGROYW1lcykpIHtcbiAgICAgIG5vZGUuY2hpbGRyZW4gPSBSZWdyb3VwKFxuICAgICAgICBvdXRwdXRTdG9yYWdlLFxuICAgICAgICBvcmlnaW5hbE91dHB1dHMsXG4gICAgICAgIHBpcGVsaW5lQ29weS5yZWdyb3VwXG4gICAgICApO1xuXG4gICAgICBkZWxldGUgbm9kZS5pbnB1dHM7XG4gICAgICBkZWxldGUgbm9kZS5vdXRwdXRzO1xuXG4gICAgICBkZWJ1Z0xvZ2dlci5zZXRFeGVjdXRpbmdQbHVnaW5OYW1lKCk7XG4gICAgICBjb25zb2xlLmRlYnVnKFJFR1JPVVBJTkcpO1xuXG4gICAgICByZXR1cm4gdHJhdmVyc2Uobm9kZS5jaGlsZHJlbiwge1xuICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgIHBpcGVsaW5lOiB7XG4gICAgICAgICAgLi4ucGlwZWxpbmVDb3B5LFxuICAgICAgICAgIHJlZ3JvdXA6IHVuZGVmaW5lZCxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdHMsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmRlYnVnKFNLSVBQSU5HX1JFR1JPVVApO1xuICAgIH1cbiAgfVxuXG4gIGNvbnNvbGUuZGVidWcoJ1xcbicpO1xuXG4gIC8qKlxuICAgKiBJZiBpdGVyYXRpb24gaXMgb24gY29tcHV0ZSBwbHVnaW4sIHRoZW4gZXhlY3V0ZXMgY29tcHV0ZSBwbHVnaW5zIGFuZCBzZXRzIHRoZSBvdXRwdXRzIHZhbHVlLlxuICAgKi9cbiAgaWYgKChub0ZsYWdzIHx8IHBhcmFtcy5jb21wdXRlKSAmJiBwaXBlbGluZUNvcHkuY29tcHV0ZSkge1xuICAgIGNvbnN0IG9yaWdpbmFsT3V0cHV0cyA9IHBhcmFtcy5hcHBlbmQgPyBub2RlLm91dHB1dHMgfHwgW10gOiBbXTtcblxuICAgIHdoaWxlIChwaXBlbGluZUNvcHkuY29tcHV0ZS5sZW5ndGggIT09IDApIHtcbiAgICAgIGNvbnN0IHBsdWdpbk5hbWUgPSBwaXBlbGluZUNvcHkuY29tcHV0ZS5zaGlmdCgpIGFzIHN0cmluZztcbiAgICAgIGNvbnN0IHBsdWdpbiA9IHBhcmFtcy5wbHVnaW5TdG9yYWdlLmdldChwbHVnaW5OYW1lKTtcbiAgICAgIGNvbnN0IG5vZGVDb25maWcgPSBjb25maWcgJiYgY29uZmlnW3BsdWdpbk5hbWVdO1xuXG4gICAgICBjb25zb2xlLmRlYnVnKENPTVBVVElOR19QSVBFTElORV9GT1JfTk9ERShwbHVnaW5OYW1lKSk7XG4gICAgICBkZWJ1Z0xvZ2dlci5zZXRFeGVjdXRpbmdQbHVnaW5OYW1lKHBsdWdpbk5hbWUpO1xuXG4gICAgICBvdXRwdXRTdG9yYWdlID0gYXdhaXQgcGx1Z2luLmV4ZWN1dGUob3V0cHV0U3RvcmFnZSwgbm9kZUNvbmZpZyk7XG5cbiAgICAgIGRlYnVnTG9nZ2VyLnNldEV4ZWN1dGluZ1BsdWdpbk5hbWUoKTtcblxuICAgICAgbm9kZS5vdXRwdXRzID0gb3V0cHV0U3RvcmFnZTtcblxuICAgICAgaWYgKHBhcmFtcy5jb250ZXh0LmV4cGxhaW5lcikge1xuICAgICAgICBhZGRFeHBsYWluRGF0YSh7XG4gICAgICAgICAgcGx1Z2luTmFtZSxcbiAgICAgICAgICBtZXRhZGF0YTogcGx1Z2luLm1ldGFkYXRhLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLmFwcGVuZCkge1xuICAgICAgbm9kZS5vdXRwdXRzID0gb3JpZ2luYWxPdXRwdXRzLmNvbmNhdChub2RlLm91dHB1dHMgfHwgW10pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnNvbGUuZGVidWcoJ1xcbicpO1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIGNvcHkgb2YgZXhpc3RpbmcgdHJlZSwgdGhlbiBhcHBsaWVzIGNvbXB1dGluZyBzdHJhdGVneS5cbiAqL1xuZXhwb3J0IGNvbnN0IGNvbXB1dGUgPSBhc3luYyAodHJlZTogYW55LCBwYXJhbXM6IENvbXB1dGVQYXJhbXMpID0+IHtcbiAgY29uc3QgY29weU9mVHJlZSA9IHN0cnVjdHVyZWRDbG9uZSh0cmVlKTtcblxuICBhd2FpdCBjb21wdXRlTm9kZShjb3B5T2ZUcmVlLCBwYXJhbXMpO1xuXG4gIHJldHVybiBjb3B5T2ZUcmVlO1xufTtcbiJdfQ==
|
|
186
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pZi1ydW4vbGliL2NvbXB1dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsdUNBQStDO0FBQy9DLHVDQUF5QztBQUV6QyxpRUFBMkQ7QUFDM0QscURBQWdEO0FBRWhELDZDQUE2QztBQUU3QywrQ0FBMEM7QUFJMUMsTUFBTSxFQUNKLGdDQUFnQyxFQUNoQyxjQUFjLEVBQ2QsV0FBVyxFQUNYLDJCQUEyQixFQUMzQiw0QkFBNEIsRUFDNUIsVUFBVSxFQUNWLFNBQVMsRUFDVCxnQkFBZ0IsR0FDakIsR0FBRyxpQkFBTyxDQUFDO0FBRVosTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztBQUVyQzs7R0FFRztBQUNILE1BQU0sUUFBUSxHQUFHLEtBQUssRUFBRSxRQUFhLEVBQUUsTUFBcUIsRUFBRSxFQUFFO0lBQzlELEtBQUssTUFBTSxLQUFLLElBQUksUUFBUSxFQUFFO1FBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsNEJBQTRCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNuRCxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztLQUM1QztBQUNILENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxhQUFhLEdBQUcsQ0FDcEIsTUFBc0IsRUFDdEIsUUFBa0MsRUFDbEMsRUFBRTtJQUNGLElBQUksTUFBTSxFQUFFO1FBQ1YsT0FBTyxRQUFRO1lBQ2IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFBLHNCQUFZLEVBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3BELENBQUMsQ0FBQyxNQUFNLENBQUM7S0FDWjtJQUVELE9BQU8sQ0FBQyxLQUFLLENB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QztZQUVoRTs7ZUFFRztZQUNILElBQUksb0JBQW9CLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDakUsYUFBYSxHQUFHLGFBQWEsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDeEQ7WUFFRCwwQkFBVyxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFFckMsSUFBSSxDQUFDLE9BQU8sR0FBRyxhQUFhLENBQUM7WUFFN0IsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtnQkFDNUIsSUFBQSx3QkFBYyxFQUFDO29CQUNiLFVBQVU7b0JBQ1YsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRO2lCQUMxQixDQUFDLENBQUM7YUFDSjtTQUNGO1FBRUQsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQzNEO0tBQ0Y7SUFFRCxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RCLENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0ksTUFBTSxPQUFPLEdBQUcsS0FBSyxFQUFFLElBQVMsRUFBRSxNQUFxQixFQUFFLEVBQUU7SUFDaEUsTUFBTSxVQUFVLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXpDLE1BQU0sV0FBVyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUV0QyxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDLENBQUM7QUFOVyxRQUFBLE9BQU8sV0FNbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1BsdWdpblBhcmFtc30gZnJvbSAnQGdybnNmdC9pZi1jb3JlL3R5cGVzJztcblxuaW1wb3J0IHtpc1JlZ3JvdXBlZCwgUmVncm91cH0gZnJvbSAnLi9yZWdyb3VwJztcbmltcG9ydCB7YWRkRXhwbGFpbkRhdGF9IGZyb20gJy4vZXhwbGFpbic7XG5cbmltcG9ydCB7ZGVidWdMb2dnZXJ9IGZyb20gJy4uLy4uL2NvbW1vbi91dGlsL2RlYnVnLWxvZ2dlcic7XG5pbXBvcnQge2xvZ2dlcn0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWwvbG9nZ2VyJztcblxuaW1wb3J0IHttZXJnZU9iamVjdHN9IGZyb20gJy4uL3V0aWwvaGVscGVycyc7XG5cbmltcG9ydCB7U1RSSU5HU30gZnJvbSAnLi4vY29uZmlnL3N0cmluZ3MnO1xuXG5pbXBvcnQge0NvbXB1dGVQYXJhbXMsIE5vZGUsIFBoYXNlZFBpcGVsaW5lfSBmcm9tICcuLi90eXBlcy9jb21wdXRlJztcblxuY29uc3Qge1xuICBNRVJHSU5HX0RFRkFVTFRTX1dJVEhfSU5QVVRfREFUQSxcbiAgRU1QVFlfUElQRUxJTkUsXG4gIENPTkZJR19XQVJOLFxuICBDT01QVVRJTkdfUElQRUxJTkVfRk9SX05PREUsXG4gIENPTVBVVElOR19DT01QT05FTlRfUElQRUxJTkUsXG4gIFJFR1JPVVBJTkcsXG4gIE9CU0VSVklORyxcbiAgU0tJUFBJTkdfUkVHUk9VUCxcbn0gPSBTVFJJTkdTO1xuXG5jb25zdCBjaGlsZE5hbWVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbi8qKlxuICogVHJhdmVyc2VzIGFsbCBjaGlsZCBub2RlcyBiYXNlZCBvbiBjaGlsZHJlbiBncm91cGluZy5cbiAqL1xuY29uc3QgdHJhdmVyc2UgPSBhc3luYyAoY2hpbGRyZW46IGFueSwgcGFyYW1zOiBDb21wdXRlUGFyYW1zKSA9PiB7XG4gIGZvciAoY29uc3QgY2hpbGQgaW4gY2hpbGRyZW4pIHtcbiAgICBjb25zb2xlLmRlYnVnKENPTVBVVElOR19DT01QT05FTlRfUElQRUxJTkUoY2hpbGQpKTtcbiAgICBjaGlsZE5hbWVzLmFkZChjaGlsZCk7XG4gICAgYXdhaXQgY29tcHV0ZU5vZGUoY2hpbGRyZW5bY2hpbGRdLCBwYXJhbXMpO1xuICB9XG59O1xuXG4vKipcbiAqIEFwcGVuZHMgYGRlZmF1bHRgIHZhbHVlcyB0byBgaW5wdXRzYC5cbiAqL1xuY29uc3QgbWVyZ2VEZWZhdWx0cyA9IChcbiAgaW5wdXRzOiBQbHVnaW5QYXJhbXNbXSxcbiAgZGVmYXVsdHM6IFBsdWdpblBhcmFtcyB8IHVuZGVmaW5lZFxuKSA9PiB7XG4gIGlmIChpbnB1dHMpIHtcbiAgICByZXR1cm4gZGVmYXVsdHNcbiAgICAgID8gaW5wdXRzLm1hcChpbnB1dCA9PiBtZXJnZU9iamVjdHMoZGVmYXVsdHMsIGlucHV0KSlcbiAgICAgIDogaW5wdXRzO1xuICB9XG5cbiAgY29uc29sZS5kZWJ1ZyhNRVJHSU5HX0RFRkFVTFRTX1dJVEhfSU5QVVRfREFUQSwgJ1xcbicpO1xuXG4gIHJldHVybiBkZWZhdWx0cyA/IFtkZWZhdWx0c10gOiBbXTtcbn07XG5cbi8qKlxuICogV2FybnMgaWYgdGhlIGBjb25maWdgIGlzIHByb3ZpZGVkIGluIHRoZSBtYW5pZmVzdC5cbiAqL1xuY29uc3Qgd2FybklmQ29uZmlnUHJvdmlkZWQgPSAobm9kZTogYW55KSA9PiB7XG4gIGlmICgnY29uZmlnJyBpbiBub2RlKSB7XG4gICAgY29uc3QgcGx1Z2lucyA9IE9iamVjdC5rZXlzKG5vZGUuY29uZmlnIHx8IHt9KTtcbiAgICBjb25zdCBqb2luZWRQbHVnaW5zID0gcGx1Z2lucy5qb2luKCcsICcpO1xuICAgIGNvbnN0IGlzTW9yZSA9IHBsdWdpbnMubGVuZ3RoID4gMTtcblxuICAgIGxvZ2dlci53YXJuKENPTkZJR19XQVJOKGpvaW5lZFBsdWdpbnMsIGlzTW9yZSkpO1xuICB9XG59O1xuXG4vKipcbiAqIDEuIElmIHRoZSBub2RlIGhhcyBpdCdzIG93biBwaXBlbGluZSwgZGVmYXVsdHMgb3IgY29uZmlnIHRoZW4gdXNlIHRoYXQsXG4gKiAgICBvdGhlcndpc2UgdXNlIHdoYXRldmVyIGhhcyBiZWVuIHBhc3NlZCBkb3duIGZyb20gZnVydGhlciB1cCB0aGUgdHJlZS5cbiAqIDIuIElmIGl0J3MgYSBncm91cGluZyBub2RlLCB0aGVuIGZpcnN0IG9mIGFsbCBjb21wdXRlcyBhbGwgaXQncyBjaGlsZHJlbi5cbiAqICAgIFRoaXMgaXMgZG9pbmcgYSBkZXB0aCBmaXJzdCB0cmF2ZXJzYWwuXG4gKiAzLiBPdGhlcndpc2UgbWVyZ2VzIHRoZSBkZWZhdWx0cyBpbnRvIHRoZSBpbnB1dHMuXG4gKiA0LiBJdGVyYXRlcyBvdmVyIHBpcGVsaW5lIHBoYXNlcyAob2JzZXJ2ZSwgcmVncm91cCwgY29tcHV0ZSkuXG4gKiA1LiBPYnNlcnZlIHBsdWdpbnMgYXJlIHVzZWQgdG8gaW5zZXJ0IGlucHV0IHZhbHVlc1xuICogICAgKGlzb2xhdGVkIGV4ZWN1dGlvbiBjYW4gYmUgYWNoaXZlZCBieSBwYXNzaW5nIGAtLW9ic2VydmVgIGZsYWcgdG8gQ0xJIGNvbW1hbmQpLlxuICogNi4gUmVncm91cCBwbHVnaW4gaXMgdXNlZCB0byBncm91cCBleGlzdGluZyBpbnB1dHMgYnkgY3JpdGVyaWFcbiAqICAgIChpc29sYXRlZCBleGVjdXRpb24gY2FuIGJlIGFjaGl2ZWQgYnkgcGFzc2luZyBgLS1yZWdyb3VwYCBmbGFnIHRvIENMSSBjb21tYW5kKS5cbiAqICAgIFNpbmNlIGl0IGNyZWF0ZXMgbmV3IGNoaWxkcmVuIGZvciBub2RlLCBleGlzdGluZyBpbnB1dHMgYW5kIG91dHB1dHMgYXJlIGRyb3BwZWQgYW5kIHJlY3Vyc2l2ZSB0cmF2ZXJzYWwgaXMgY2FsbGVkXG4gKiAgICBmb3IgbmV3Ym9yZCBjaGlsZCBjb21wb25lbnQuXG4gKiA3LiBDb21wdXRlIHBsdWdpbnMgYXJlIHVzZWQgdG8gZG8gZGVzaXJlZCBjb21wdXRhdGlvbnMgYW5kIGFwcGVuZGluZyB0aGUgcmVzdWx0IHRvIG91dHB1dHNcbiAqICAgIChpc29sYXRlZCBleGVjdXRpb24gY2FuIGJlIGFjaGl2ZWQgYnkgcGFzc2luZyBgLS1jb21wdXRlYCBmbGFnIHRvIENMSSBjb21tYW5kKS5cbiAqL1xuY29uc3QgY29tcHV0ZU5vZGUgPSBhc3luYyAobm9kZTogTm9kZSwgcGFyYW1zOiBDb21wdXRlUGFyYW1zKTogUHJvbWlzZTxhbnk+ID0+IHtcbiAgY29uc3QgcGlwZWxpbmUgPSBub2RlLnBpcGVsaW5lIHx8IChwYXJhbXMucGlwZWxpbmUgYXMgUGhhc2VkUGlwZWxpbmUpO1xuICBjb25zdCBjb25maWcgPSBub2RlLmNvbmZpZyB8fCBwYXJhbXMuY29uZmlnO1xuICBjb25zdCBkZWZhdWx0cyA9IG5vZGUuZGVmYXVsdHMgfHwgcGFyYW1zLmRlZmF1bHRzO1xuICBjb25zdCBub0ZsYWdzID0gIXBhcmFtcy5vYnNlcnZlICYmICFwYXJhbXMucmVncm91cCAmJiAhcGFyYW1zLmNvbXB1dGU7XG5cbiAgZGVidWdMb2dnZXIuc2V0RXhlY3V0aW5nUGx1Z2luTmFtZSgpO1xuICB3YXJuSWZDb25maWdQcm92aWRlZChub2RlKTtcblxuICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgIHJldHVybiB0cmF2ZXJzZShub2RlLmNoaWxkcmVuLCB7XG4gICAgICAuLi5wYXJhbXMsXG4gICAgICBwaXBlbGluZSxcbiAgICAgIGRlZmF1bHRzLFxuICAgICAgY29uZmlnLFxuICAgIH0pO1xuICB9XG5cbiAgbGV0IG91dHB1dFN0b3JhZ2UgPSAoc3RydWN0dXJlZENsb25lKG5vZGUuaW5wdXRzKSBhcyBQbHVnaW5QYXJhbXNbXSkgfHwgW107XG4gIGNvbnN0IHBpcGVsaW5lQ29weSA9IHN0cnVjdHVyZWRDbG9uZShwaXBlbGluZSkgfHwge307XG5cbiAgLyoqIENoZWNrcyBpZiBwaXBlbGluZSBpcyBub3QgYW4gYXJyYXkgb3IgZW1wdHkgb2JqZWN0LiAqL1xuICBpZiAoXG4gICAgQXJyYXkuaXNBcnJheShwaXBlbGluZUNvcHkpIHx8XG4gICAgKHR5cGVvZiBwaXBlbGluZUNvcHkgPT09ICdvYmplY3QnICYmXG4gICAgICBwaXBlbGluZUNvcHkgIT09IG51bGwgJiZcbiAgICAgIE9iamVjdC5rZXlzKHBpcGVsaW5lQ29weSkubGVuZ3RoID09PSAwKVxuICApIHtcbiAgICBsb2dnZXIud2FybihFTVBUWV9QSVBFTElORSk7XG4gIH1cblxuICAvKipcbiAgICogSWYgaXRlcmF0aW9uIGlzIG9uIG9ic2VydmUgcGlwZWxpbmUsIHRoZW4gZXhlY3V0ZXMgb2JzZXJ2ZSBwbHVnaW5zIGFuZCBzZXRzIHRoZSBpbnB1dHMgdmFsdWUuXG4gICAqL1xuICBpZiAoKG5vRmxhZ3MgfHwgcGFyYW1zLm9ic2VydmUpICYmIHBpcGVsaW5lQ29weS5vYnNlcnZlKSB7XG4gICAgd2hpbGUgKHBpcGVsaW5lQ29weS5vYnNlcnZlLmxlbmd0aCAhPT0gMCkge1xuICAgICAgY29uc3QgcGx1Z2luTmFtZSA9IHBpcGVsaW5lQ29weS5vYnNlcnZlLnNoaWZ0KCkgYXMgc3RyaW5nO1xuICAgICAgY29uc29sZS5kZWJ1ZyhPQlNFUlZJTkcocGx1Z2luTmFtZSkpO1xuICAgICAgZGVidWdMb2dnZXIuc2V0RXhlY3V0aW5nUGx1Z2luTmFtZShwbHVnaW5OYW1lKTtcblxuICAgICAgY29uc3QgcGx1Z2luID0gcGFyYW1zLnBsdWdpblN0b3JhZ2UuZ2V0KHBsdWdpbk5hbWUpO1xuICAgICAgY29uc3Qgbm9kZUNvbmZpZyA9IGNvbmZpZyAmJiBjb25maWdbcGx1Z2luTmFtZV07XG5cbiAgICAgIG91dHB1dFN0b3JhZ2UgPSBhd2FpdCBwbHVnaW4uZXhlY3V0ZShvdXRwdXRTdG9yYWdlLCBub2RlQ29uZmlnKTtcbiAgICAgIG5vZGUuaW5wdXRzID0gb3V0cHV0U3RvcmFnZTtcblxuICAgICAgaWYgKHBhcmFtcy5jb250ZXh0LmV4cGxhaW5lcikge1xuICAgICAgICBhZGRFeHBsYWluRGF0YSh7XG4gICAgICAgICAgcGx1Z2luTmFtZSxcbiAgICAgICAgICBtZXRhZGF0YTogcGx1Z2luLm1ldGFkYXRhLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXJnZXMgZGVmYXVsdHMgd2l0aCBpbnB1dHMgYWZ0ZXIgb2JzZXJ2aW5nLlxuICAgICAqIERlZmF1bHRzIGFyZSBuZWVkZWQgdG8gYmUgbWVyZ2VkIGFmdGVyIG9ic2VydmluZyBiZWNhdXNlIG9ic2VydmluZyBjYW4gY2hhbmdlIHRoZSBpbnB1dHMuXG4gICAgICovXG4gICAgbm9kZS5pbnB1dHMgPSBtZXJnZURlZmF1bHRzKG91dHB1dFN0b3JhZ2UsIGRlZmF1bHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiBvYnNlcnZlIGlzIG5vdCByZXF1ZXN0ZWQsIHRoZW4gbWVyZ2UgZGVmYXVsdHMgd2l0aCBpbnB1dHMuXG4gICAqL1xuICBpZiAoIXBhcmFtcy5vYnNlcnZlICYmIG91dHB1dFN0b3JhZ2UubGVuZ3RoID4gMCkge1xuICAgIG91dHB1dFN0b3JhZ2UgPSBtZXJnZURlZmF1bHRzKG91dHB1dFN0b3JhZ2UsIGRlZmF1bHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiByZWdyb3VwIGlzIHJlcXVlc3RlZCwgZXhlY3V0ZSByZWdyb3VwIHN0cmF0ZWd5LCBkZWxldGUgY2hpbGQncyBpbnB1dHMsIG91dHB1dHMgYW5kIGVtcHR5IHJlZ3JvdXAgYXJyYXkuXG4gICAqL1xuICBpZiAoKG5vRmxhZ3MgfHwgcGFyYW1zLnJlZ3JvdXApICYmIHBpcGVsaW5lQ29weS5yZWdyb3VwKSB7XG4gICAgY29uc3Qgb3JpZ2luYWxPdXRwdXRzID0gcGFyYW1zLmFwcGVuZCA/IG5vZGUub3V0cHV0cyB8fCBbXSA6IFtdO1xuXG4gICAgaWYgKCFpc1JlZ3JvdXBlZChwaXBlbGluZUNvcHkucmVncm91cCwgb3V0cHV0U3RvcmFnZSwgY2hpbGROYW1lcykpIHtcbiAgICAgIG5vZGUuY2hpbGRyZW4gPSBSZWdyb3VwKFxuICAgICAgICBvdXRwdXRTdG9yYWdlLFxuICAgICAgICBvcmlnaW5hbE91dHB1dHMsXG4gICAgICAgIHBpcGVsaW5lQ29weS5yZWdyb3VwXG4gICAgICApO1xuXG4gICAgICBkZWxldGUgbm9kZS5pbnB1dHM7XG4gICAgICBkZWxldGUgbm9kZS5vdXRwdXRzO1xuXG4gICAgICBkZWJ1Z0xvZ2dlci5zZXRFeGVjdXRpbmdQbHVnaW5OYW1lKCk7XG4gICAgICBjb25zb2xlLmRlYnVnKFJFR1JPVVBJTkcpO1xuXG4gICAgICByZXR1cm4gdHJhdmVyc2Uobm9kZS5jaGlsZHJlbiwge1xuICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgIHBpcGVsaW5lOiB7XG4gICAgICAgICAgLi4ucGlwZWxpbmVDb3B5LFxuICAgICAgICAgIHJlZ3JvdXA6IHVuZGVmaW5lZCxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdHMsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmRlYnVnKFNLSVBQSU5HX1JFR1JPVVApO1xuICAgIH1cbiAgfVxuXG4gIGNvbnNvbGUuZGVidWcoJ1xcbicpO1xuXG4gIC8qKlxuICAgKiBJZiBpdGVyYXRpb24gaXMgb24gY29tcHV0ZSBwbHVnaW4sIHRoZW4gZXhlY3V0ZXMgY29tcHV0ZSBwbHVnaW5zIGFuZCBzZXRzIHRoZSBvdXRwdXRzIHZhbHVlLlxuICAgKi9cbiAgaWYgKChub0ZsYWdzIHx8IHBhcmFtcy5jb21wdXRlKSAmJiBwaXBlbGluZUNvcHkuY29tcHV0ZSkge1xuICAgIGNvbnN0IG9yaWdpbmFsT3V0cHV0cyA9IHBhcmFtcy5hcHBlbmQgPyBub2RlLm91dHB1dHMgfHwgW10gOiBbXTtcblxuICAgIHdoaWxlIChwaXBlbGluZUNvcHkuY29tcHV0ZS5sZW5ndGggIT09IDApIHtcbiAgICAgIGNvbnN0IHBsdWdpbk5hbWUgPSBwaXBlbGluZUNvcHkuY29tcHV0ZS5zaGlmdCgpIGFzIHN0cmluZztcbiAgICAgIGNvbnN0IHBsdWdpbiA9IHBhcmFtcy5wbHVnaW5TdG9yYWdlLmdldChwbHVnaW5OYW1lKTtcbiAgICAgIGNvbnN0IG5vZGVDb25maWcgPSBjb25maWcgJiYgY29uZmlnW3BsdWdpbk5hbWVdO1xuXG4gICAgICBjb25zb2xlLmRlYnVnKENPTVBVVElOR19QSVBFTElORV9GT1JfTk9ERShwbHVnaW5OYW1lKSk7XG4gICAgICBkZWJ1Z0xvZ2dlci5zZXRFeGVjdXRpbmdQbHVnaW5OYW1lKHBsdWdpbk5hbWUpO1xuXG4gICAgICAvKiogS2VlcCBwcmV2aW91cyBzdGF0ZSB0byBjaGVjayBhZnRlciBjb21wdXRhdGlvbi4gKi9cbiAgICAgIGNvbnN0IHByZXZpb3VzT3V0cHV0c1N0YXRlID0gb3V0cHV0U3RvcmFnZTtcblxuICAgICAgb3V0cHV0U3RvcmFnZSA9IGF3YWl0IHBsdWdpbi5leGVjdXRlKG91dHB1dFN0b3JhZ2UsIG5vZGVDb25maWcpO1xuXG4gICAgICAvKipcbiAgICAgICAqIElmIHRoZXJlIGFyZSBubyBwcmV2aW91cyBpbnB1dHMvb3V0cHV0cyAoY29tcHV0ZSBwaGFzZSBpbml0YWxpemVzIHZhbHVlcyksIHRoZW4gbWVyZ2UgZGVmYXVsdHMgd2l0aCBvdXRwdXRzIHBvc3RmYWN0dW0uXG4gICAgICAgKi9cbiAgICAgIGlmIChwcmV2aW91c091dHB1dHNTdGF0ZS5sZW5ndGggPT09IDAgJiYgb3V0cHV0U3RvcmFnZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIG91dHB1dFN0b3JhZ2UgPSBtZXJnZURlZmF1bHRzKG91dHB1dFN0b3JhZ2UsIGRlZmF1bHRzKTtcbiAgICAgIH1cblxuICAgICAgZGVidWdMb2dnZXIuc2V0RXhlY3V0aW5nUGx1Z2luTmFtZSgpO1xuXG4gICAgICBub2RlLm91dHB1dHMgPSBvdXRwdXRTdG9yYWdlO1xuXG4gICAgICBpZiAocGFyYW1zLmNvbnRleHQuZXhwbGFpbmVyKSB7XG4gICAgICAgIGFkZEV4cGxhaW5EYXRhKHtcbiAgICAgICAgICBwbHVnaW5OYW1lLFxuICAgICAgICAgIG1ldGFkYXRhOiBwbHVnaW4ubWV0YWRhdGEsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwYXJhbXMuYXBwZW5kKSB7XG4gICAgICBub2RlLm91dHB1dHMgPSBvcmlnaW5hbE91dHB1dHMuY29uY2F0KG5vZGUub3V0cHV0cyB8fCBbXSk7XG4gICAgfVxuICB9XG5cbiAgY29uc29sZS5kZWJ1ZygnXFxuJyk7XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgY29weSBvZiBleGlzdGluZyB0cmVlLCB0aGVuIGFwcGxpZXMgY29tcHV0aW5nIHN0cmF0ZWd5LlxuICovXG5leHBvcnQgY29uc3QgY29tcHV0ZSA9IGFzeW5jICh0cmVlOiBhbnksIHBhcmFtczogQ29tcHV0ZVBhcmFtcykgPT4ge1xuICBjb25zdCBjb3B5T2ZUcmVlID0gc3RydWN0dXJlZENsb25lKHRyZWUpO1xuXG4gIGF3YWl0IGNvbXB1dGVOb2RlKGNvcHlPZlRyZWUsIHBhcmFtcyk7XG5cbiAgcmV0dXJuIGNvcHlPZlRyZWU7XG59O1xuIl19
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grnsft/if",
|
|
3
3
|
"description": "Impact Framework",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.1",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Green Software Foundation",
|
|
7
7
|
"email": "info@gsf.com"
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"dependencies": {
|
|
21
21
|
"@commitlint/cli": "^18.6.0",
|
|
22
22
|
"@commitlint/config-conventional": "^18.6.0",
|
|
23
|
-
"@grnsft/if-core": "^0.0.
|
|
23
|
+
"@grnsft/if-core": "^0.0.29",
|
|
24
24
|
"axios": "^1.7.2",
|
|
25
25
|
"csv-parse": "^5.5.6",
|
|
26
26
|
"csv-stringify": "^6.4.6",
|
|
@@ -57,6 +57,7 @@
|
|
|
57
57
|
},
|
|
58
58
|
"homepage": "https://greensoftware.foundation",
|
|
59
59
|
"keywords": [
|
|
60
|
+
"carbonization",
|
|
60
61
|
"engine",
|
|
61
62
|
"framework",
|
|
62
63
|
"green software foundation",
|
package/manifests/regroup.yml
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
# start
|
|
2
|
-
name: regroup
|
|
3
|
-
description: successful path
|
|
4
|
-
initialize:
|
|
5
|
-
plugins: {}
|
|
6
|
-
tree:
|
|
7
|
-
children:
|
|
8
|
-
my-app:
|
|
9
|
-
pipeline:
|
|
10
|
-
regroup:
|
|
11
|
-
- cloud/region
|
|
12
|
-
- cloud/instance-type
|
|
13
|
-
children:
|
|
14
|
-
uk-west:
|
|
15
|
-
children:
|
|
16
|
-
A1:
|
|
17
|
-
inputs:
|
|
18
|
-
- timestamp: 2023-07-06T00:00
|
|
19
|
-
duration: 300
|
|
20
|
-
cloud/instance-type: A1
|
|
21
|
-
cloud/region: uk-west
|
|
22
|
-
cpu/utilization: 99
|
|
23
|
-
- timestamp: 2023-07-06T05:00
|
|
24
|
-
duration: 300
|
|
25
|
-
cloud/instance-type: A1
|
|
26
|
-
cloud/region: uk-west
|
|
27
|
-
cpu/utilization: 23
|
|
28
|
-
- timestamp: 2023-07-06T10:00
|
|
29
|
-
duration: 300
|
|
30
|
-
cloud/instance-type: A1
|
|
31
|
-
cloud/region: uk-west
|
|
32
|
-
cpu/utilization: 12
|
|
33
|
-
B1:
|
|
34
|
-
inputs:
|
|
35
|
-
- timestamp: 2023-07-06T00:00
|
|
36
|
-
duration: 300
|
|
37
|
-
cloud/instance-type: B1
|
|
38
|
-
cloud/region: uk-west
|
|
39
|
-
cpu/utilization: 11
|
|
40
|
-
- timestamp: 2023-07-06T05:00
|
|
41
|
-
duration: 300
|
|
42
|
-
cloud/instance-type: B1
|
|
43
|
-
cloud/region: uk-west
|
|
44
|
-
cpu/utilization: 67
|
|
45
|
-
- timestamp: 2023-07-06T10:00
|
|
46
|
-
duration: 300
|
|
47
|
-
cloud/instance-type: B1
|
|
48
|
-
cloud/region: uk-west
|
|
49
|
-
cpu/utilization: 1
|
package/manifests/test.yml
DELETED
|
@@ -1,524 +0,0 @@
|
|
|
1
|
-
name: nesting
|
|
2
|
-
description: a manifest that includes nested child components
|
|
3
|
-
tags:
|
|
4
|
-
kind: web
|
|
5
|
-
complexity: moderate
|
|
6
|
-
category: on-premise
|
|
7
|
-
aggregation:
|
|
8
|
-
metrics:
|
|
9
|
-
- carbon
|
|
10
|
-
type: "both"
|
|
11
|
-
initialize:
|
|
12
|
-
plugins:
|
|
13
|
-
"interpolate":
|
|
14
|
-
method: Interpolation
|
|
15
|
-
path: "builtin"
|
|
16
|
-
config:
|
|
17
|
-
method: linear
|
|
18
|
-
x: [0, 10, 50, 100]
|
|
19
|
-
y: [0.12, 0.32, 0.75, 1.02]
|
|
20
|
-
input-parameter: "cpu/utilization"
|
|
21
|
-
output-parameter: "cpu-factor"
|
|
22
|
-
parameter-metadata:
|
|
23
|
-
inputs:
|
|
24
|
-
cpu/utilization:
|
|
25
|
-
unit: percentage
|
|
26
|
-
description: refers to CPU utilization.
|
|
27
|
-
aggregation-method:
|
|
28
|
-
time: avg
|
|
29
|
-
component: sum
|
|
30
|
-
outputs:
|
|
31
|
-
cpu-factor:
|
|
32
|
-
unit: kWh
|
|
33
|
-
description: result of interpolate
|
|
34
|
-
aggregation-method:
|
|
35
|
-
time: avg
|
|
36
|
-
component: avg
|
|
37
|
-
"cpu-factor-to-wattage":
|
|
38
|
-
method: Multiply
|
|
39
|
-
path: builtin
|
|
40
|
-
config:
|
|
41
|
-
input-parameters: ["cpu-factor", "cpu/thermal-design-power"]
|
|
42
|
-
output-parameter: "cpu-wattage"
|
|
43
|
-
parameter-metadata:
|
|
44
|
-
inputs:
|
|
45
|
-
cpu-factor:
|
|
46
|
-
unit: kWh
|
|
47
|
-
description: result of interpolate
|
|
48
|
-
aggregation-method:
|
|
49
|
-
time: avg
|
|
50
|
-
component: avg
|
|
51
|
-
cpu/thermal-design-power:
|
|
52
|
-
unit: kWh
|
|
53
|
-
description: thermal design power for a processor
|
|
54
|
-
aggregation-method:
|
|
55
|
-
time: avg
|
|
56
|
-
component: avg
|
|
57
|
-
outputs:
|
|
58
|
-
cpu-wattage:
|
|
59
|
-
unit: kWh
|
|
60
|
-
description: the energy used by the CPU
|
|
61
|
-
aggregation-method:
|
|
62
|
-
time: sum
|
|
63
|
-
component: sum
|
|
64
|
-
"wattage-times-duration":
|
|
65
|
-
method: Multiply
|
|
66
|
-
path: builtin
|
|
67
|
-
config:
|
|
68
|
-
input-parameters: ["cpu-wattage", "duration"]
|
|
69
|
-
output-parameter: "cpu-wattage-times-duration"
|
|
70
|
-
"wattage-to-energy-kwh":
|
|
71
|
-
method: Divide
|
|
72
|
-
path: "builtin"
|
|
73
|
-
config:
|
|
74
|
-
numerator: cpu-wattage-times-duration
|
|
75
|
-
denominator: 3600000
|
|
76
|
-
output: cpu-energy-raw
|
|
77
|
-
parameter-metadata:
|
|
78
|
-
inputs:
|
|
79
|
-
cpu-wattage-times-duration:
|
|
80
|
-
unit: kWh
|
|
81
|
-
description: CPU wattage multiplied by duration
|
|
82
|
-
aggregation-method:
|
|
83
|
-
time: sum
|
|
84
|
-
component: sum
|
|
85
|
-
outputs:
|
|
86
|
-
cpu-energy-raw:
|
|
87
|
-
unit: kWh
|
|
88
|
-
description: Raw energy used by CPU in kWh
|
|
89
|
-
aggregation-method:
|
|
90
|
-
time: sum
|
|
91
|
-
component: sum
|
|
92
|
-
"calculate-vcpu-ratio":
|
|
93
|
-
method: Divide
|
|
94
|
-
path: "builtin"
|
|
95
|
-
config:
|
|
96
|
-
numerator: vcpus-total
|
|
97
|
-
denominator: vcpus-allocated
|
|
98
|
-
output: vcpu-ratio
|
|
99
|
-
parameter-metadata:
|
|
100
|
-
outputs:
|
|
101
|
-
vcpu-ratio:
|
|
102
|
-
unit: none
|
|
103
|
-
description: Ratio of vCPUs
|
|
104
|
-
aggregation-method:
|
|
105
|
-
time: copy
|
|
106
|
-
component: copy
|
|
107
|
-
"correct-cpu-energy-for-vcpu-ratio":
|
|
108
|
-
method: Divide
|
|
109
|
-
path: "builtin"
|
|
110
|
-
config:
|
|
111
|
-
numerator: cpu-energy-raw
|
|
112
|
-
denominator: vcpu-ratio
|
|
113
|
-
output: cpu-energy-kwh
|
|
114
|
-
sci-embodied:
|
|
115
|
-
path: "builtin"
|
|
116
|
-
method: SciEmbodied
|
|
117
|
-
"operational-carbon":
|
|
118
|
-
method: Multiply
|
|
119
|
-
path: builtin
|
|
120
|
-
config:
|
|
121
|
-
input-parameters: ["cpu-energy-kwh", "grid/carbon-intensity"]
|
|
122
|
-
output-parameter: "carbon-operational"
|
|
123
|
-
parameter-metadata:
|
|
124
|
-
inputs:
|
|
125
|
-
cpu-energy-kwh:
|
|
126
|
-
unit: kWh
|
|
127
|
-
description: Corrected CPU energy in kWh
|
|
128
|
-
aggregation-method:
|
|
129
|
-
time: sum
|
|
130
|
-
component: sum
|
|
131
|
-
grid/carbon-intensity:
|
|
132
|
-
unit: gCO2eq/kWh
|
|
133
|
-
description: Carbon intensity for the grid
|
|
134
|
-
aggregation-method:
|
|
135
|
-
time: avg
|
|
136
|
-
component: avg
|
|
137
|
-
outputs:
|
|
138
|
-
carbon-operational:
|
|
139
|
-
unit: gCO2eq
|
|
140
|
-
description: Operational carbon footprint
|
|
141
|
-
aggregation-method:
|
|
142
|
-
time: sum
|
|
143
|
-
component: sum
|
|
144
|
-
sci:
|
|
145
|
-
path: "builtin"
|
|
146
|
-
method: Sci
|
|
147
|
-
config:
|
|
148
|
-
functional-unit: "requests"
|
|
149
|
-
parameter-metadata:
|
|
150
|
-
inputs:
|
|
151
|
-
requests:
|
|
152
|
-
unit: none
|
|
153
|
-
description: expressed the final SCI value
|
|
154
|
-
aggregation-method:
|
|
155
|
-
time: sum
|
|
156
|
-
component: sum
|
|
157
|
-
"sum-carbon":
|
|
158
|
-
path: "builtin"
|
|
159
|
-
method: Sum
|
|
160
|
-
config:
|
|
161
|
-
input-parameters:
|
|
162
|
-
- carbon-operational
|
|
163
|
-
- embodied-carbon
|
|
164
|
-
output-parameter: carbon
|
|
165
|
-
parameter-metadata:
|
|
166
|
-
inputs:
|
|
167
|
-
carbon-operational:
|
|
168
|
-
description: Operational carbon footprint
|
|
169
|
-
unit: gCO2eq
|
|
170
|
-
aggregation-method:
|
|
171
|
-
time: sum
|
|
172
|
-
component: sum
|
|
173
|
-
embodied-carbon:
|
|
174
|
-
description: Embodied carbon footprint
|
|
175
|
-
unit: gCO2eq
|
|
176
|
-
aggregation-method:
|
|
177
|
-
time: sum
|
|
178
|
-
component: sum
|
|
179
|
-
outputs:
|
|
180
|
-
carbon:
|
|
181
|
-
description: Total carbon footprint
|
|
182
|
-
unit: gCO2eq
|
|
183
|
-
aggregation-method:
|
|
184
|
-
time: sum
|
|
185
|
-
component: sum
|
|
186
|
-
time-sync:
|
|
187
|
-
method: TimeSync
|
|
188
|
-
path: "builtin"
|
|
189
|
-
config:
|
|
190
|
-
start-time: '2023-01-01T00:00:00.000Z'
|
|
191
|
-
end-time: '2024-01-01T00:00:00.000Z'
|
|
192
|
-
interval: 100000000
|
|
193
|
-
allow-padding: true
|
|
194
|
-
parameter-metadata:
|
|
195
|
-
inputs:
|
|
196
|
-
timestamp:
|
|
197
|
-
unit: RFC3339
|
|
198
|
-
description: refers to the time of occurrence of the input
|
|
199
|
-
aggregation-method:
|
|
200
|
-
time: none
|
|
201
|
-
component: none
|
|
202
|
-
duration:
|
|
203
|
-
unit: seconds
|
|
204
|
-
description: refers to the duration of the input
|
|
205
|
-
aggregation-method:
|
|
206
|
-
time: sum
|
|
207
|
-
component: sum
|
|
208
|
-
cloud/instance-type:
|
|
209
|
-
unit: none
|
|
210
|
-
description: type of Cloud Instance name used in the cloud provider APIs
|
|
211
|
-
aggregation-method:
|
|
212
|
-
time: copy
|
|
213
|
-
component: copy
|
|
214
|
-
cloud/region:
|
|
215
|
-
unit: none
|
|
216
|
-
description: region cloud instance
|
|
217
|
-
aggregation-method:
|
|
218
|
-
time: copy
|
|
219
|
-
component: copy
|
|
220
|
-
time-reserved:
|
|
221
|
-
unit: seconds
|
|
222
|
-
description: time reserved for a component
|
|
223
|
-
aggregation-method:
|
|
224
|
-
time: avg
|
|
225
|
-
component: avg
|
|
226
|
-
network/energy:
|
|
227
|
-
description: "Energy consumed by the Network of the component"
|
|
228
|
-
unit: "kWh"
|
|
229
|
-
aggregation-method:
|
|
230
|
-
time: sum
|
|
231
|
-
component: sum
|
|
232
|
-
|
|
233
|
-
tree:
|
|
234
|
-
children:
|
|
235
|
-
child-0:
|
|
236
|
-
defaults:
|
|
237
|
-
cpu/thermal-design-power: 100
|
|
238
|
-
grid/carbon-intensity: 800
|
|
239
|
-
device/emissions-embodied: 1533.120 # gCO2eq
|
|
240
|
-
time-reserved: 3600 # 1hr in seconds
|
|
241
|
-
device/expected-lifespan: 94608000 # 3 years in seconds
|
|
242
|
-
vcpus-allocated: 1
|
|
243
|
-
vcpus-total: 8
|
|
244
|
-
pipeline:
|
|
245
|
-
compute:
|
|
246
|
-
- interpolate
|
|
247
|
-
- cpu-factor-to-wattage
|
|
248
|
-
- wattage-times-duration
|
|
249
|
-
- wattage-to-energy-kwh
|
|
250
|
-
- calculate-vcpu-ratio
|
|
251
|
-
- correct-cpu-energy-for-vcpu-ratio
|
|
252
|
-
- sci-embodied
|
|
253
|
-
- operational-carbon
|
|
254
|
-
- sum-carbon
|
|
255
|
-
- time-sync
|
|
256
|
-
- sci
|
|
257
|
-
inputs:
|
|
258
|
-
- timestamp: "2023-01-01T00:00:00.000Z"
|
|
259
|
-
cloud/instance-type: A1
|
|
260
|
-
cloud/region: uk-west
|
|
261
|
-
duration: 2629800
|
|
262
|
-
cpu/utilization: 50
|
|
263
|
-
network/energy: 0.000001
|
|
264
|
-
requests: 50
|
|
265
|
-
- timestamp: "2023-02-01T00:00:00.000Z"
|
|
266
|
-
duration: 2419200
|
|
267
|
-
cpu/utilization: 20
|
|
268
|
-
cloud/instance-type: A1
|
|
269
|
-
cloud/region: uk-west
|
|
270
|
-
network/energy: 0.000001
|
|
271
|
-
requests: 60
|
|
272
|
-
- timestamp: "2023-03-01T00:00:00.000Z"
|
|
273
|
-
duration: 2629800
|
|
274
|
-
cpu/utilization: 15
|
|
275
|
-
cloud/instance-type: A1
|
|
276
|
-
cloud/region: uk-west
|
|
277
|
-
network/energy: 0.000001
|
|
278
|
-
requests: 70
|
|
279
|
-
- timestamp: "2023-04-01T00:00:00.000Z"
|
|
280
|
-
duration: 2592000
|
|
281
|
-
cloud/instance-type: A1
|
|
282
|
-
cloud/region: uk-west
|
|
283
|
-
cpu/utilization: 15
|
|
284
|
-
network/energy: 0.000001
|
|
285
|
-
requests: 55
|
|
286
|
-
- timestamp: "2023-05-01T00:00:00.000Z"
|
|
287
|
-
duration: 2629800
|
|
288
|
-
cloud/instance-type: A1
|
|
289
|
-
cloud/region: uk-west
|
|
290
|
-
cpu/utilization: 15
|
|
291
|
-
network/energy: 0.000001
|
|
292
|
-
requests: 55
|
|
293
|
-
- timestamp: "2023-06-01T00:00:00.000Z"
|
|
294
|
-
duration: 2592000
|
|
295
|
-
cloud/instance-type: A1
|
|
296
|
-
cloud/region: uk-west
|
|
297
|
-
cpu/utilization: 15
|
|
298
|
-
network/energy: 0.000001
|
|
299
|
-
requests: 55
|
|
300
|
-
- timestamp: "2023-07-01T00:00:00.000Z"
|
|
301
|
-
duration: 2629800
|
|
302
|
-
cloud/instance-type: A1
|
|
303
|
-
cloud/region: uk-west
|
|
304
|
-
cpu/utilization: 15
|
|
305
|
-
network/energy: 0.000001
|
|
306
|
-
requests: 55
|
|
307
|
-
child-1:
|
|
308
|
-
defaults:
|
|
309
|
-
cpu/thermal-design-power: 100
|
|
310
|
-
grid/carbon-intensity: 800
|
|
311
|
-
device/emissions-embodied: 1533.120 # gCO2eq
|
|
312
|
-
time-reserved: 3600 # 1hr in seconds
|
|
313
|
-
device/expected-lifespan: 94608000 # 3 years in seconds
|
|
314
|
-
vcpus-allocated: 1
|
|
315
|
-
vcpus-total: 8
|
|
316
|
-
pipeline:
|
|
317
|
-
compute:
|
|
318
|
-
- interpolate
|
|
319
|
-
- cpu-factor-to-wattage
|
|
320
|
-
- wattage-times-duration
|
|
321
|
-
- wattage-to-energy-kwh
|
|
322
|
-
- calculate-vcpu-ratio
|
|
323
|
-
- correct-cpu-energy-for-vcpu-ratio
|
|
324
|
-
- sci-embodied
|
|
325
|
-
- operational-carbon
|
|
326
|
-
- sum-carbon
|
|
327
|
-
- time-sync
|
|
328
|
-
- sci
|
|
329
|
-
inputs:
|
|
330
|
-
- timestamp: "2023-01-01T00:00:00.000Z"
|
|
331
|
-
cloud/instance-type: A1
|
|
332
|
-
cloud/region: uk-west
|
|
333
|
-
duration: 2629800
|
|
334
|
-
cpu/utilization: 50
|
|
335
|
-
network/energy: 0.000001
|
|
336
|
-
requests: 50
|
|
337
|
-
- timestamp: "2023-02-01T00:00:00.000Z"
|
|
338
|
-
duration: 2419200
|
|
339
|
-
cpu/utilization: 20
|
|
340
|
-
cloud/instance-type: A1
|
|
341
|
-
cloud/region: uk-west
|
|
342
|
-
network/energy: 0.000001
|
|
343
|
-
requests: 60
|
|
344
|
-
- timestamp: "2023-03-01T00:00:00.000Z"
|
|
345
|
-
duration: 2629800
|
|
346
|
-
cpu/utilization: 15
|
|
347
|
-
cloud/instance-type: A1
|
|
348
|
-
cloud/region: uk-west
|
|
349
|
-
network/energy: 0.000001
|
|
350
|
-
requests: 70
|
|
351
|
-
- timestamp: "2023-04-01T00:00:00.000Z"
|
|
352
|
-
duration: 2592000
|
|
353
|
-
cloud/instance-type: A1
|
|
354
|
-
cloud/region: uk-west
|
|
355
|
-
cpu/utilization: 15
|
|
356
|
-
network/energy: 0.000001
|
|
357
|
-
requests: 55
|
|
358
|
-
- timestamp: "2023-05-01T00:00:00.000Z"
|
|
359
|
-
duration: 2629800
|
|
360
|
-
cloud/instance-type: A1
|
|
361
|
-
cloud/region: uk-west
|
|
362
|
-
cpu/utilization: 15
|
|
363
|
-
network/energy: 0.000001
|
|
364
|
-
requests: 55
|
|
365
|
-
- timestamp: "2023-06-01T00:00:00.000Z"
|
|
366
|
-
duration: 2592000
|
|
367
|
-
cloud/instance-type: A1
|
|
368
|
-
cloud/region: uk-west
|
|
369
|
-
cpu/utilization: 15
|
|
370
|
-
network/energy: 0.000001
|
|
371
|
-
requests: 55
|
|
372
|
-
- timestamp: "2023-07-01T00:00:00.000Z"
|
|
373
|
-
duration: 2629800
|
|
374
|
-
cloud/instance-type: A1
|
|
375
|
-
cloud/region: uk-west
|
|
376
|
-
cpu/utilization: 15
|
|
377
|
-
network/energy: 0.000001
|
|
378
|
-
requests: 55
|
|
379
|
-
child-2:
|
|
380
|
-
children:
|
|
381
|
-
child-2-0:
|
|
382
|
-
defaults:
|
|
383
|
-
cpu/thermal-design-power: 100
|
|
384
|
-
grid/carbon-intensity: 800
|
|
385
|
-
device/emissions-embodied: 1533.120 # gCO2eq
|
|
386
|
-
time-reserved: 3600 # 1hr in seconds
|
|
387
|
-
device/expected-lifespan: 94608000 # 3 years in seconds
|
|
388
|
-
vcpus-allocated: 1
|
|
389
|
-
vcpus-total: 8
|
|
390
|
-
pipeline:
|
|
391
|
-
compute:
|
|
392
|
-
- interpolate
|
|
393
|
-
- cpu-factor-to-wattage
|
|
394
|
-
- wattage-times-duration
|
|
395
|
-
- wattage-to-energy-kwh
|
|
396
|
-
- calculate-vcpu-ratio
|
|
397
|
-
- correct-cpu-energy-for-vcpu-ratio
|
|
398
|
-
- sci-embodied
|
|
399
|
-
- operational-carbon
|
|
400
|
-
- sum-carbon
|
|
401
|
-
- time-sync
|
|
402
|
-
- sci
|
|
403
|
-
inputs:
|
|
404
|
-
- timestamp: "2023-01-01T00:00:00.000Z"
|
|
405
|
-
cloud/instance-type: A1
|
|
406
|
-
cloud/region: uk-west
|
|
407
|
-
duration: 2629800
|
|
408
|
-
cpu/utilization: 50
|
|
409
|
-
network/energy: 0.000001
|
|
410
|
-
requests: 50
|
|
411
|
-
- timestamp: "2023-02-01T00:00:00.000Z"
|
|
412
|
-
duration: 2629800
|
|
413
|
-
cpu/utilization: 20
|
|
414
|
-
cloud/instance-type: A1
|
|
415
|
-
cloud/region: uk-west
|
|
416
|
-
network/energy: 0.000001
|
|
417
|
-
requests: 60
|
|
418
|
-
- timestamp: "2023-03-01T00:00:00.000Z"
|
|
419
|
-
duration: 2629800
|
|
420
|
-
cpu/utilization: 15
|
|
421
|
-
cloud/instance-type: A1
|
|
422
|
-
cloud/region: uk-west
|
|
423
|
-
network/energy: 0.000001
|
|
424
|
-
requests: 70
|
|
425
|
-
- timestamp: "2023-04-01T00:00:00.000Z"
|
|
426
|
-
duration: 2629800
|
|
427
|
-
cloud/instance-type: A1
|
|
428
|
-
cloud/region: uk-west
|
|
429
|
-
cpu/utilization: 15
|
|
430
|
-
network/energy: 0.000001
|
|
431
|
-
requests: 55
|
|
432
|
-
- timestamp: "2023-05-01T00:00:00.000Z"
|
|
433
|
-
duration: 2629800
|
|
434
|
-
cloud/instance-type: A1
|
|
435
|
-
cloud/region: uk-west
|
|
436
|
-
cpu/utilization: 15
|
|
437
|
-
network/energy: 0.000001
|
|
438
|
-
requests: 55
|
|
439
|
-
- timestamp: "2023-06-01T00:00:00.000Z"
|
|
440
|
-
duration: 2629800
|
|
441
|
-
cloud/instance-type: A1
|
|
442
|
-
cloud/region: uk-west
|
|
443
|
-
cpu/utilization: 15
|
|
444
|
-
network/energy: 0.000001
|
|
445
|
-
requests: 55
|
|
446
|
-
- timestamp: "2023-07-01T00:00:00.000Z"
|
|
447
|
-
duration: 2629800
|
|
448
|
-
cloud/instance-type: A1
|
|
449
|
-
cloud/region: uk-west
|
|
450
|
-
cpu/utilization: 15
|
|
451
|
-
network/energy: 0.000001
|
|
452
|
-
requests: 55
|
|
453
|
-
child-2-1:
|
|
454
|
-
defaults:
|
|
455
|
-
cpu/thermal-design-power: 100
|
|
456
|
-
grid/carbon-intensity: 800
|
|
457
|
-
device/emissions-embodied: 1533.120 # gCO2eq
|
|
458
|
-
time-reserved: 3600 # 1hr in seconds
|
|
459
|
-
device/expected-lifespan: 94608000 # 3 years in seconds
|
|
460
|
-
vcpus-allocated: 1
|
|
461
|
-
vcpus-total: 8
|
|
462
|
-
pipeline:
|
|
463
|
-
compute:
|
|
464
|
-
- interpolate
|
|
465
|
-
- cpu-factor-to-wattage
|
|
466
|
-
- wattage-times-duration
|
|
467
|
-
- wattage-to-energy-kwh
|
|
468
|
-
- calculate-vcpu-ratio
|
|
469
|
-
- correct-cpu-energy-for-vcpu-ratio
|
|
470
|
-
- sci-embodied
|
|
471
|
-
- operational-carbon
|
|
472
|
-
- sum-carbon
|
|
473
|
-
- time-sync
|
|
474
|
-
- sci
|
|
475
|
-
inputs:
|
|
476
|
-
- timestamp: "2023-01-01T00:00:00.000Z"
|
|
477
|
-
cloud/instance-type: A1
|
|
478
|
-
cloud/region: uk-west
|
|
479
|
-
duration: 2629800
|
|
480
|
-
cpu/utilization: 50
|
|
481
|
-
network/energy: 0.000001
|
|
482
|
-
requests: 50
|
|
483
|
-
- timestamp: "2023-02-01T00:00:00.000Z"
|
|
484
|
-
duration: 2629800
|
|
485
|
-
cpu/utilization: 20
|
|
486
|
-
cloud/instance-type: A1
|
|
487
|
-
cloud/region: uk-west
|
|
488
|
-
network/energy: 0.000001
|
|
489
|
-
requests: 60
|
|
490
|
-
- timestamp: "2023-03-01T00:00:00.000Z"
|
|
491
|
-
duration: 2629800
|
|
492
|
-
cpu/utilization: 15
|
|
493
|
-
cloud/instance-type: A1
|
|
494
|
-
cloud/region: uk-west
|
|
495
|
-
network/energy: 0.000001
|
|
496
|
-
requests: 70
|
|
497
|
-
- timestamp: "2023-04-01T00:00:00.000Z"
|
|
498
|
-
duration: 2629800
|
|
499
|
-
cloud/instance-type: A1
|
|
500
|
-
cloud/region: uk-west
|
|
501
|
-
cpu/utilization: 15
|
|
502
|
-
network/energy: 0.000001
|
|
503
|
-
requests: 55
|
|
504
|
-
- timestamp: "2023-05-01T00:00:00.000Z"
|
|
505
|
-
duration: 2629800
|
|
506
|
-
cloud/instance-type: A1
|
|
507
|
-
cloud/region: uk-west
|
|
508
|
-
cpu/utilization: 15
|
|
509
|
-
network/energy: 0.000001
|
|
510
|
-
requests: 55
|
|
511
|
-
- timestamp: "2023-06-01T00:00:00.000Z"
|
|
512
|
-
duration: 2629800
|
|
513
|
-
cloud/instance-type: A1
|
|
514
|
-
cloud/region: uk-west
|
|
515
|
-
cpu/utilization: 15
|
|
516
|
-
network/energy: 0.000001
|
|
517
|
-
requests: 55
|
|
518
|
-
- timestamp: "2023-07-01T00:00:00.000Z"
|
|
519
|
-
duration: 2629800
|
|
520
|
-
cloud/instance-type: A1
|
|
521
|
-
cloud/region: uk-west
|
|
522
|
-
cpu/utilization: 15
|
|
523
|
-
network/energy: 0.000001
|
|
524
|
-
requests: 55
|