1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const lodash_1 = require("lodash");
|
4 | const Colour_1 = require("../lib/Colour");
|
5 | const Crypt_1 = require("../lib/Crypt");
|
6 | const PromptableConfig_1 = require("../lib/PromptableConfig");
|
7 | function setRegular(cfg, k, value) {
|
8 | Object.defineProperty(cfg, k, {
|
9 | configurable: true,
|
10 | enumerable: true,
|
11 | value,
|
12 | writable: true
|
13 | });
|
14 | }
|
15 | function setVirtual(pcfg, cfg, k, v) {
|
16 | let attempt = 1;
|
17 | const colourFns = [undefined, Colour_1.Colour.green, Colour_1.Colour.yellow, Colour_1.Colour.red];
|
18 | Object.defineProperty(cfg, k, {
|
19 | configurable: true,
|
20 | enumerable: true,
|
21 | get: function getter() {
|
22 | const pwd = pcfg.promptedEncryptionPassword();
|
23 | try {
|
24 | const decrypted = Crypt_1.Crypt.decryptVar(v, pwd);
|
25 | setRegular(cfg, k, decrypted);
|
26 | attempt = 1;
|
27 | return decrypted;
|
28 | }
|
29 | catch (e) {
|
30 | const msg = [
|
31 | Colour_1.Colour.red(e.message),
|
32 | ` [${colourFns[attempt].call(Colour_1.Colour, attempt)}/`,
|
33 | `${Colour_1.Colour.red(3 /* MAX_ATTEMPTS */.toString())}]\n`
|
34 | ].join('');
|
35 | process.stderr.write(msg);
|
36 | if (attempt++ < 3 /* MAX_ATTEMPTS */) {
|
37 | delete pcfg['data'].password;
|
38 | pcfg.promptedEncryptionPassword['cache'].clear();
|
39 | return getter();
|
40 | }
|
41 | else {
|
42 | process.exit(1);
|
43 | }
|
44 | }
|
45 | },
|
46 | set(v$) {
|
47 | if (Crypt_1.Crypt.isEncrypted(v$)) {
|
48 | setVirtual(pcfg, cfg, k, v$);
|
49 | }
|
50 | else {
|
51 | setRegular(cfg, k, v$);
|
52 | }
|
53 | }
|
54 | });
|
55 | }
|
56 | function parseJointCfgForEncryption(cfg) {
|
57 | cfg = lodash_1.cloneDeep(cfg);
|
58 | const pcfg = new PromptableConfig_1.PromptableConfig(cfg);
|
59 | lodash_1.forEach(cfg, (v, k) => {
|
60 | if (Crypt_1.Crypt.isEncrypted(v)) {
|
61 | setVirtual(pcfg, cfg, k, v);
|
62 | }
|
63 | });
|
64 | return cfg;
|
65 | }
|
66 | exports.parseJointCfgForEncryption = parseJointCfgForEncryption;
|
67 |
|
\ | No newline at end of file |