favacli 0.0.15 → 0.0.16
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.
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import fs from 'node:fs/promises';
|
|
2
2
|
import keytar from 'keytar';
|
|
3
3
|
import BaseCommand from '../../BaseCommand.mjs';
|
|
4
|
-
import { getTwoFaLibVaultCreationUtils
|
|
4
|
+
import { getTwoFaLibVaultCreationUtils } from 'favalib';
|
|
5
5
|
import NodeCryptoProvider from 'favalib/cryptoProviders/node';
|
|
6
6
|
import { password } from '@inquirer/prompts';
|
|
7
7
|
const cryptoLib = new NodeCryptoProvider();
|
|
8
|
-
const twoFaLibVaultCreationUtils = getTwoFaLibVaultCreationUtils(cryptoLib, 'cli', ['cli']);
|
|
9
8
|
class VaultCreateCommand extends BaseCommand {
|
|
10
9
|
constructor() {
|
|
11
10
|
super(...arguments);
|
|
@@ -24,16 +23,21 @@ class VaultCreateCommand extends BaseCommand {
|
|
|
24
23
|
examples: [['Create a new vault', 'vault create']],
|
|
25
24
|
}); }
|
|
26
25
|
async exec() {
|
|
26
|
+
const twoFaLibVaultCreationUtils = getTwoFaLibVaultCreationUtils(cryptoLib, 'cli', ['cli'], (newLockedRepresentationString) => fs.writeFile(this.settings.vaultLocation, newLockedRepresentationString));
|
|
27
27
|
const passphrase = (await password({
|
|
28
28
|
message: 'Enter your vault passphrase:',
|
|
29
29
|
mask: '*',
|
|
30
30
|
}));
|
|
31
|
+
const repeatPassphrase = (await password({
|
|
32
|
+
message: 'Repeat your vault passphrase:',
|
|
33
|
+
mask: '*',
|
|
34
|
+
}));
|
|
35
|
+
if (passphrase != repeatPassphrase) {
|
|
36
|
+
throw new Error("Passphrases don't match");
|
|
37
|
+
}
|
|
31
38
|
const { twoFaLib } = await twoFaLibVaultCreationUtils.createNewTwoFaLibVault(passphrase);
|
|
32
|
-
twoFaLib.addEventListener(TwoFaLibEvent.Changed, (ev) => {
|
|
33
|
-
return fs.writeFile(this.settings.vaultLocation, ev.detail.newLockedRepresentationString);
|
|
34
|
-
});
|
|
35
39
|
await Promise.all([
|
|
36
|
-
twoFaLib.forceSave(),
|
|
40
|
+
twoFaLib.storage.forceSave(),
|
|
37
41
|
keytar.setPassword('favacli', 'vault-passphrase', passphrase),
|
|
38
42
|
]);
|
|
39
43
|
return { success: true };
|
package/build/main.mjs
CHANGED
|
@@ -3,16 +3,13 @@ import keytar from 'keytar';
|
|
|
3
3
|
import { getTwoFaLibVaultCreationUtils, TwoFaLibEvent, } from 'favalib';
|
|
4
4
|
import NodeCryptoProvider from 'favalib/cryptoProviders/node';
|
|
5
5
|
const cryptoLib = new NodeCryptoProvider();
|
|
6
|
-
const twoFaLibVaultCreationUtils = getTwoFaLibVaultCreationUtils(cryptoLib, 'cli', ['cli']);
|
|
7
6
|
const loadVault = async (vaultData, settings, verbose = false) => {
|
|
8
|
-
const
|
|
9
|
-
const twoFaLib = await twoFaLibVaultCreationUtils.loadTwoFaLibFromLockedRepesentation(vaultData, passphrase);
|
|
10
|
-
twoFaLib.addEventListener(TwoFaLibEvent.Changed, async (ev) => {
|
|
7
|
+
const saveFunction = async (newLockedRepresentationString) => {
|
|
11
8
|
const tempFile = `${settings.vaultLocation}.tmp`;
|
|
12
9
|
const backupFile = `${settings.vaultLocation}.backup`;
|
|
13
10
|
try {
|
|
14
11
|
// Write to temporary file first, so we don't have to worry about partial writes
|
|
15
|
-
await fs.writeFile(tempFile,
|
|
12
|
+
await fs.writeFile(tempFile, newLockedRepresentationString);
|
|
16
13
|
// Create backup of existing vault if it exists
|
|
17
14
|
try {
|
|
18
15
|
await fs.copyFile(settings.vaultLocation, backupFile);
|
|
@@ -32,7 +29,10 @@ const loadVault = async (vaultData, settings, verbose = false) => {
|
|
|
32
29
|
});
|
|
33
30
|
throw error;
|
|
34
31
|
}
|
|
35
|
-
}
|
|
32
|
+
};
|
|
33
|
+
const twoFaLibVaultCreationUtils = getTwoFaLibVaultCreationUtils(cryptoLib, 'cli', ['cli'], saveFunction);
|
|
34
|
+
const passphrase = (await keytar.getPassword('favacli', 'vault-passphrase'));
|
|
35
|
+
const twoFaLib = await twoFaLibVaultCreationUtils.loadTwoFaLibFromLockedRepesentation(vaultData, passphrase);
|
|
36
36
|
twoFaLib.addEventListener(TwoFaLibEvent.Log, (ev) => {
|
|
37
37
|
if (ev.detail.severity !== 'info' || verbose) {
|
|
38
38
|
console.log(ev.detail);
|
package/package.json
CHANGED
|
@@ -1,25 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "favacli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.16",
|
|
4
4
|
"description": "",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "",
|
|
7
7
|
"license": "ISC",
|
|
8
8
|
"dependencies": {
|
|
9
|
-
"@inquirer/prompts": "^7.
|
|
10
|
-
"bufferutil": "^4.0.
|
|
9
|
+
"@inquirer/prompts": "^7.5.3",
|
|
10
|
+
"bufferutil": "^4.0.9",
|
|
11
11
|
"clipanion": "^4.0.0-rc.4",
|
|
12
12
|
"env-paths": "^3.0.0",
|
|
13
|
-
"favalib": "^0.0.
|
|
13
|
+
"favalib": "^0.0.8",
|
|
14
14
|
"keytar": "^7.9.0",
|
|
15
|
-
"node-loader": "^2.0.0",
|
|
16
|
-
"ts-loader": "^9.5.1",
|
|
17
15
|
"tty-table": "^4.2.3",
|
|
18
16
|
"typanion": "^3.14.0"
|
|
19
17
|
},
|
|
20
18
|
"devDependencies": {
|
|
21
|
-
"type-fest": "^4.26.1"
|
|
22
|
-
"webpack-cli": "^5.1.4"
|
|
19
|
+
"type-fest": "^4.26.1"
|
|
23
20
|
},
|
|
24
21
|
"bin": {
|
|
25
22
|
"favacli": "build/main.mjs"
|