secrez 1.1.1 → 1.1.2

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.
Files changed (68) hide show
  1. package/README.md +414 -291
  2. package/bin/secrez.js +50 -47
  3. package/coverage.report +63 -305
  4. package/package.json +10 -12
  5. package/src/Command.js +78 -57
  6. package/src/PreCommand.js +74 -70
  7. package/src/Welcome.js +144 -134
  8. package/src/cliConfig.js +14 -14
  9. package/src/commands/Alias.js +123 -100
  10. package/src/commands/Bash.js +10 -12
  11. package/src/commands/Cat.js +117 -107
  12. package/src/commands/Cd.js +39 -42
  13. package/src/commands/Chat.js +75 -63
  14. package/src/commands/Conf.js +123 -99
  15. package/src/commands/Contacts.js +189 -171
  16. package/src/commands/Copy.js +132 -113
  17. package/src/commands/Courier.js +123 -105
  18. package/src/commands/Ds.js +88 -76
  19. package/src/commands/Edit.js +122 -103
  20. package/src/commands/Export.js +153 -114
  21. package/src/commands/Find.js +115 -110
  22. package/src/commands/Help.js +20 -23
  23. package/src/commands/Import.js +296 -225
  24. package/src/commands/Lcat.js +36 -39
  25. package/src/commands/Lcd.js +38 -39
  26. package/src/commands/Lls.js +58 -55
  27. package/src/commands/Lpwd.js +20 -24
  28. package/src/commands/Ls.js +107 -97
  29. package/src/commands/Mkdir.js +35 -38
  30. package/src/commands/Mv.js +147 -114
  31. package/src/commands/Paste.js +68 -65
  32. package/src/commands/Pwd.js +18 -23
  33. package/src/commands/Quit.js +22 -24
  34. package/src/commands/Rm.js +78 -70
  35. package/src/commands/Shell.js +31 -32
  36. package/src/commands/Ssh.js +77 -63
  37. package/src/commands/Tag.js +133 -112
  38. package/src/commands/Totp.js +166 -136
  39. package/src/commands/Touch.js +169 -56
  40. package/src/commands/Use.js +44 -41
  41. package/src/commands/Ver.js +16 -18
  42. package/src/commands/Whoami.js +34 -37
  43. package/src/commands/chat/Contacts.js +41 -44
  44. package/src/commands/chat/Help.js +20 -23
  45. package/src/commands/chat/Join.js +59 -55
  46. package/src/commands/chat/Leave.js +16 -22
  47. package/src/commands/chat/Quit.js +19 -24
  48. package/src/commands/chat/Send.js +58 -57
  49. package/src/commands/chat/Show.js +60 -51
  50. package/src/commands/chat/Whoami.js +18 -22
  51. package/src/commands/index.js +20 -22
  52. package/src/index.js +3 -3
  53. package/src/prompts/ChatPrompt.js +87 -82
  54. package/src/prompts/ChatPromptMock.js +11 -17
  55. package/src/prompts/CommandPrompt.js +146 -138
  56. package/src/prompts/Completion.js +64 -69
  57. package/src/prompts/MainPrompt.js +84 -77
  58. package/src/prompts/MainPromptMock.js +19 -30
  59. package/src/prompts/MultiEditorPrompt.js +21 -22
  60. package/src/prompts/SigintManager.js +21 -24
  61. package/src/utils/AliasManager.js +16 -18
  62. package/src/utils/ContactManager.js +15 -17
  63. package/src/utils/Fido2Client.js +59 -49
  64. package/src/utils/HelpProto.js +130 -117
  65. package/src/utils/Logger.js +48 -50
  66. package/.eslintignore +0 -0
  67. package/.eslintrc +0 -33
  68. package/.jshintrc +0 -3
package/README.md CHANGED
@@ -5,10 +5,6 @@
5
5
  </h1>
6
6
 
7
7
  <p align="center">
8
- <a href="https://discord.gg/whsgXj">
9
- <img src="https://img.shields.io/badge/chat-on%20discord-brightgreen.svg">
10
- </a>
11
-
12
8
  <a href="https://github.com/secrez/secrez/issues">
13
9
  <img src="https://img.shields.io/github/issues/secrez/secrez.svg">
14
10
  </a>
@@ -24,11 +20,21 @@
24
20
  <a href="LICENSE">
25
21
  <img src="https://img.shields.io/github/license/secrez/secrez.svg">
26
22
  </a>
23
+
24
+ <a href="https://discord.gg/whsgXj">
25
+ <img src="https://img.shields.io/badge/chat-on%20discord-brightgreen.svg">
26
+ </a>
27
+
28
+ <a href="https://gitter.im/secrez/secrez?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge" alt="Join the chat at https://gitter.im/secrez/secrez">
29
+ <img src="https://badges.gitter.im/secrez/secrez.svg">
30
+ </a>
31
+
27
32
  </p>
28
33
 
29
34
  Secrez is:
30
- * a CLI secret manager working as an encrypted file system;
31
- * a decentralized surveillance-resistant end-to-end encrypted messaging system.
35
+
36
+ - a CLI secret manager working as an encrypted file system;
37
+ - a decentralized surveillance-resistant end-to-end encrypted messaging system.
32
38
 
33
39
  ## Intro
34
40
 
@@ -36,7 +42,6 @@ At the very basic, Secrez is a CLI application that manages a particular encrypt
36
42
 
37
43
  The idea is to interact with encrypted virtual files as if they are just files in a standard file system.
38
44
 
39
-
40
45
  ## Why Secrez?
41
46
 
42
47
  There are two primary approaches to secrets and password management:
@@ -70,7 +75,6 @@ Starting from version `0.6.0`, the data are organized in datasets. Think of them
70
75
 
71
76
  By default, Secrez generates two datasets: `main` and `trash`. You can create more with, for example, `use -c archive`. The advantage of multiple datasets is mostly for people who have a lot of secrets to manage. If you have 2,000, if they are all in the primary dataset, the system will probably become quite slow. The solution is to move data to separate datasets (`archive`, `backup`, `twitter`, `cryptos`, etc.)
72
77
 
73
-
74
78
  ## Secrez never lose secrets
75
79
 
76
80
  One of the primary goal of a secrets manager is that you will never lose any data.
@@ -101,9 +105,11 @@ To avoid to repeat the same process on the other computer (which will generate f
101
105
  ## The name convention
102
106
 
103
107
  A file name in Secrez looks like
108
+
104
109
  ```
105
110
  1VAnGLojzCDWhfZRK8PCYK203WBzJkAA28FhKHdS7DM5SkJaTgYdGfN1MAjTdfUYSzvtDVsMJvGodoHWzMuK6zr
106
111
  ```
112
+
107
113
  where `1` is the type (DIR, other types are TEXT and BINARY), and the rest is a encrypted message with nonce, in Base58 format.
108
114
 
109
115
  The encrypted part is the combination of id, timestamp, and actual filename.
@@ -119,7 +125,6 @@ Secrez manages trees as single immutable files. During a session, temporary file
119
125
 
120
126
  After comparing many possibilities, Secrez uses [NaCl](https://github.com/dchest/tweetnacl-js) as a crypto library. The advantage is that the library includes many algorithms for synchronous and asynchronous encryption.
121
127
 
122
-
123
128
  ## How to install it
124
129
 
125
130
  First, Secrez require at least Node 10. If you have installed a previous version it will generates unclear errors and refuse to install or work. I suggest you install Node using `nvm`, if you can. For more info look at [https://github.com/nvm-sh/nvm](https://github.com/nvm-sh/nvm).
@@ -136,7 +141,9 @@ To install pnpm run
136
141
  ```
137
142
  npm i -g pnpm
138
143
  ```
144
+
139
145
  and later
146
+
140
147
  ```
141
148
  pnpm i -g secrez
142
149
  ```
@@ -144,6 +151,7 @@ pnpm i -g secrez
144
151
  ## How to use it
145
152
 
146
153
  In the simplest case, you can just run
154
+
147
155
  ```
148
156
  secrez
149
157
  ```
@@ -153,16 +161,21 @@ At first run, Secrez will ask you for the number of iterations (suggested betwee
153
161
  Since Secrez derives a master key from your password using `crypto.pbkdf2`, the number of iterations is a significant addition to the general security because the number of iterations is part of the salt used for the derivation. Even if you use a not-very-hard-to-guess password, if the attacker does not know the number of iterations, he has to try all the possible ones. Considering that 2,000,000 iterations require a second or so, customizable iterations increases enormously the overall security.
154
162
 
155
163
  At first launch, you can also explicitly set up the number of iterations:
164
+
156
165
  ```
157
166
  secrez -i 1023896
158
167
  ```
168
+
159
169
  or
170
+
160
171
  ```
161
172
  secrez -si 876352
162
173
  ```
174
+
163
175
  where the `-s` option saves the number locally in a git-ignored `env.json` file. This way you don't have to retype it all the time to launch Secrez (typing a wrong number of iterations, of course, will produce an error).
164
176
 
165
177
  You can save locally the number of iterations adding the options `-s`, like:
178
+
166
179
  ```
167
180
  secrez -s
168
181
  ```
@@ -177,6 +190,7 @@ Other options at launch are:
177
190
  By default, both folders are your homedir (`~`).
178
191
 
179
192
  Running Secrez in different containers (with the `-c` option), you can set up multiple independent encrypted databases. For example:
193
+
180
194
  ```
181
195
  secrez -c ~/data/secrez
182
196
  ```
@@ -227,7 +241,7 @@ secrez -c ~/data/secrez
227
241
  use Uses a specific dataset.
228
242
  ver Shows the version of Secrez.
229
243
  whoami Show data that other users need to chat with you
230
-
244
+
231
245
  ```
232
246
 
233
247
  ## Some example
@@ -257,43 +271,57 @@ This is one of my favorite commands. In fact, let's say that you have just downl
257
271
  ## Aliases — where the fun comes :-)
258
272
 
259
273
  Suppose that you have a card for your bank and want to log into it. You could copy email and password to the clipboard to paste them in the browser. Suppose that you expect to be able in 4 seconds to move from the terminal to the browser, you could run the command:
274
+
260
275
  ```
261
276
  copy bank.yml -f email password -d 4 2
262
277
  ```
278
+
263
279
  This will copy the email field and give you 4 seconds to paste it in the browser. Then, it will emit a beep and you have 2 seconds to paste the password. It sounds quite useful, but it can be better.
264
280
 
265
281
  If you use that login often, you could like to create an alias for it with:
282
+
266
283
  ```
267
284
  alias b -c "copy bank.yml -f email password -d 4 2
268
285
  ```
286
+
269
287
  Next time, you can just type
288
+
270
289
  ```
271
290
  b
272
291
  ```
292
+
273
293
  It looks great, right? Well, it can be even better.
274
294
 
275
295
  Let’s say that you are using a 2FA app (like Google Authenticator) to connect to a website, for example, GitHub. Suppose that you have a file github.yml with a field totp which is the secret that GitHub gave you when you activated the 2FA. You could execute
296
+
276
297
  ```
277
298
  totp github.yml
278
299
  ```
300
+
279
301
  to generate a TOTP token for GitHub. The token will be shown and copied in the clipboard. Now, you can create an alias like this
302
+
280
303
  ```
281
304
  alias G -c "copy github.yml -f username password -d 4 2 --wait && totp github.yml"
282
305
  ```
306
+
283
307
  Can you guess what this will do?
284
308
 
285
- * It copies the username in the clipboard;
286
- * it waits 5 seconds, emits a beep and copies the password;
287
- * it waits 3 seconds, emits a beep and copies the TOTP token and keep it in the clipboard.
309
+ - It copies the username in the clipboard;
310
+ - it waits 5 seconds, emits a beep and copies the password;
311
+ - it waits 3 seconds, emits a beep and copies the TOTP token and keep it in the clipboard.
288
312
 
289
313
  You can also use parameters in aliases and create a macro like
314
+
290
315
  ```
291
316
  alias M -c "copy $1 -f username password -d 4 2 --wait && totp $1"
292
317
  ```
318
+
293
319
  and call it with
320
+
294
321
  ```
295
322
  M github.yml
296
323
  ```
324
+
297
325
  It is fantastic, isn’t it?
298
326
 
299
327
  _Btw, using a TOTP factor in Secrez is a bit of a contradiction, because you are converting a second factor (something that you have) in a first factor (something that you know). So, use this feature only when it makes sense._
@@ -303,6 +331,7 @@ _Btw, using a TOTP factor in Secrez is a bit of a contradiction, because you are
303
331
  From version 0.5.2, Secrez supports import of backups from other softwares.
304
332
 
305
333
  Suppose you have exported your password in a CSV file name export.csv like this:
334
+
306
335
  ```
307
336
  Path,Username,Password,Web Site,Notes
308
337
  twitter/nick1,nick1@example.com,938eyehddu373,"http://cssasasa.com"
@@ -311,15 +340,19 @@ somePath,,s83832jedjdj,"http://262626626.com","Multi
311
340
  line
312
341
  notes"
313
342
  ```
343
+
314
344
  It is necessary a field named `path` because if not Secrez does not know where to put the new data. The path is supposed to be relative, allowing you to import it in your favorite folder.
315
345
 
316
346
  For example, to import it in the `1PasswordData` you could call
347
+
317
348
  ```
318
349
  import export.csv -e 1PasswordData -t
319
350
  ```
351
+
320
352
  The parameter `-e, --expand` is necessary. If missed, Secrez will import the file as a single file.
321
353
 
322
354
  Internally, Secrez converts the CSV in a JSON file like this:
355
+
323
356
  ```
324
357
  [
325
358
  {
@@ -341,12 +374,15 @@ Internally, Secrez converts the CSV in a JSON file like this:
341
374
  }
342
375
  ]
343
376
  ```
377
+
344
378
  which means that you can also format your data as a JSON like that and import that directly with
379
+
345
380
  ```
346
381
  import export.json -e 1PasswordData
347
382
  ```
348
383
 
349
384
  Any item will generate a single Yaml file, like, for example, the last element in the JSON, will generate the file `/1PasswordDate/somePath.yml` with the following content:
385
+
350
386
  ```
351
387
  password: s83832jedjdj
352
388
  web_site: http://262626626.com
@@ -366,13 +402,17 @@ If in the CSV file there is also the field `tags`, you can tag automatically any
366
402
  ### What if there is no path field?
367
403
 
368
404
  Let's say that you want to import a CSV file exported by LastPass. There is not `path` field but you probably want to use the fields `grouping` and `name` to build the path. From version `0.8.8`, you can do it, launching, for example:
405
+
369
406
  ```
370
407
  import ~/Downloads/lastpass_export.csv -e lastpass -P grouping name
371
408
  ```
409
+
372
410
  or, if you like to put everything in the folder `lastpass` without generating any subfolder, you can just run
411
+
373
412
  ```
374
413
  import ~/Downloads/lastpass_export.csv -e lastpass -P name -m
375
414
  ```
415
+
376
416
  using only the `name` field. Still, if in the name there is any slash, a subfolder will be created. The `-m` option will remove the csv file from the OS.
377
417
 
378
418
  In these two examples, be sure that any of your entries in LastPass has a name. If not, the import will fail because it does't know how to call the file.
@@ -387,7 +427,6 @@ Still, it is convenient to edit the exported file to fix paths and names. Doing
387
427
 
388
428
  **It has been removed in version 0.11.0 due to potentially critical issues with Python and the required libraries on MacOS (2FA will be restored as soon as a pure Javascript library is available)**
389
429
 
390
-
391
430
  ## (experimental) End-to-end encrypted communication with other accounts
392
431
 
393
432
  Starting from version 0.8.0, Secrez allows to exchange encrypted messages with other users. To do it, you must set up a local Courier ([look here for more info](https://github.com/secrez/secrez/tree/master/packages/courier)).
@@ -409,272 +448,349 @@ Secrez does not want to compete with password managers. So, don't expect in the
409
448
 
410
449
  ## History
411
450
 
412
- __1.1.0__
413
- * Remove `git`. If used carefully, the command was helpful, but still it is at risk of creating conflicts. After long thoughts, I disapproved my own proposal at: https://github.com/secrez/secrez/pull/163
451
+ **1.1.1**
452
+
453
+ - New options for `touch`:
454
+ - `--wait-for-content` to prompt the user to add the content, instead of expecting it as a parameter. The content will be trimmed at the first newline, if there is any.
455
+ - `--generate-wallet` to generate an Ethereum-compatible wallet in a new card or in an existing one. It generates the fields `private_key` and `address`, with private key and address.
456
+ - `--prefix` in combination with `--generate-wallet` specifies the prefix of the field, calling the fields, for example `my_private_key` and `my_address` if the prefix is `my`.
457
+ - `--amount` in combination with `--generate-wallet` specifies the amount of wallets to generate. The default is 1.
458
+
459
+ **1.1.0**
460
+
461
+ - Remove `git`. If used carefully, the command was helpful, but still it is at risk of creating conflicts. After long thoughts, I disapproved my own proposal at: https://github.com/secrez/secrez/pull/163
462
+
463
+ **1.0.4**
464
+
465
+ - Fix wrong example in `import`
466
+
467
+ **1.0.3**
468
+
469
+ - `git` asks to quit Secrez and merge manually if there are remote changes
470
+ - `totp` allows to add a totp code to an existing yaml file using the option `--set` (see the examples)
471
+ - Default duration before clipboard reverse for `totp` is now 8 seconds
472
+
473
+ **1.0.2**
474
+
475
+ - Export and Import can encrypt/decrypt files using shared keys generated from a specified public key
476
+ - Can export ecrypted file for the user itself, files that can be decrypted only from inside the secrez account that exported them
477
+
478
+ **1.0.1**
479
+
480
+ - Export and Import can handle encryption. Files can be exported encrypted using a specified password or a key shared with contacts
481
+ - Contacts can add a contact also using contact's public key (previously you need a hub url)
482
+ - Import specifies the file that have been skipped (because binary, encrypted or both)
483
+
484
+ **1.0.0**
485
+
486
+ - Requires `@secrez/utils@1.0.1` which fixes a yaml parsing error with ETH-like addresses
487
+
488
+ **1.0.0-beta.3**
489
+
490
+ - Rm allows to delete specific versions of a file
491
+
492
+ **1.0.0-beta.2**
493
+
494
+ - Git has new options `--init`, `--remote-url` and `--main-branch` to initiate a repo from inside Secrez
495
+
496
+ **1.0.0-beta.1**
497
+
498
+ - use @secrez/core@1.0.0, which changes the encoding from base58 to base64, making the encoding much faster
499
+ - remove second factor authentication due to potentially critical issues with Python and the required libraries on macOS (2FA will be restored as soon as either a pure Javascript library is available or using external Python libraries is reliable again)
500
+ - `Bash` has been renamed `Shell`
501
+
502
+ **0.10.8**
503
+
504
+ - expose a prompt mock to allow other software to run commands programmatically
505
+ - fix bug in totp when the command is called but no totp is set
506
+
507
+ **0.10.7**
508
+
509
+ - fix bug in `git -i` showing less changed that expected
510
+
511
+ **0.10.6**
512
+
513
+ - use `£` as an alternative to `#` when getting find results (whoops, I made this for myself, because I use both English and Italian keyboards)
514
+ - add `leave` to leave a room
515
+
516
+ **10.0.5**
414
517
 
415
- __1.0.4__
416
- * Fix wrong example in `import`
518
+ - fix bug in `git` wrongly returning `already up to date`
519
+ - fix `git`'s help
417
520
 
418
- __1.0.3__
419
- * `git` asks to quit Secrez and merge manually if there are remote changes
420
- * `totp` allows to add a totp code to an existing yaml file using the option `--set` (see the examples)
421
- * Default duration before clipboard reverse for `totp` is now 8 seconds
521
+ **0.10.4**
422
522
 
423
- __1.0.2__
424
- * Export and Import can encrypt/decrypt files using shared keys generated from a specified public key
425
- * Can export ecrypted file for the user itself, files that can be decrypted only from inside the secrez account that exported them
426
-
427
- __1.0.1__
428
- * Export and Import can handle encryption. Files can be exported encrypted using a specified password or a key shared with contacts
429
- * Contacts can add a contact also using contact's public key (previously you need a hub url)
430
- * Import specifies the file that have been skipped (because binary, encrypted or both)
523
+ - remove spaces in secret when launching `totp`
524
+ - add a `--test` option, to test a secret
525
+ - remove deprecated `exit`
431
526
 
432
- __1.0.0__
433
- * Requires `@secrez/utils@1.0.1` which fixes a yaml parsing error with ETH-like addresses
527
+ **0.10.3**
434
528
 
435
- __1.0.0-beta.3__
436
- * Rm allows to delete specific versions of a file
529
+ - since it's not possible to clear the entire terminal, the clear screen process creates a false sense of security and has been removed
530
+ - fix bug in `ls -l` when there are empty files
531
+ - add message to suggest user to clear or close the terminal after quitting
437
532
 
438
- __1.0.0-beta.2__
439
- * Git has new options `--init`, `--remote-url` and `--main-branch` to initiate a repo from inside Secrez
533
+ **0.10.2**
440
534
 
441
- __1.0.0-beta.1__
442
- * use @secrez/core@1.0.0, which changes the encoding from base58 to base64, making the encoding much faster
443
- * remove second factor authentication due to potentially critical issues with Python and the required libraries on macOS (2FA will be restored as soon as either a pure Javascript library is available or using external Python libraries is reliable again)
444
- * `Bash` has been renamed `Shell`
535
+ - add a `git` command to push changes to the repo and pull changes
536
+ - allow to run `bash` without parameters, asking later for the shell command
445
537
 
446
- __0.10.8__
447
- * expose a prompt mock to allow other software to run commands programmatically
448
- * fix bug in totp when the command is called but no totp is set
538
+ **0.10.1**
449
539
 
450
- __0.10.7__
451
- * fix bug in `git -i` showing less changed that expected
540
+ - encrypts binary files as is, without converting them to `base64` strings, like before
452
541
 
453
- __0.10.6__
454
- * use `£` as an alternative to `#` when getting find results (whoops, I made this for myself, because I use both English and Italian keyboards)
455
- * add `leave` to leave a room
542
+ **0.10.0**
456
543
 
457
- __10.0.5__
458
- * fix bug in `git` wrongly returning `already up to date`
459
- * fix `git`'s help
544
+ - use @secrez/hub 0.2.0 and @secrez/courier 0.2.0 (which are incompatible with the previous versions)
545
+ - duplicate `whoami` and `contacts` to make them working inside the `chat` environment
460
546
 
461
- __0.10.4__
462
- * remove spaces in secret when launching `totp`
463
- * add a `--test` option, to test a secret
464
- * remove deprecated `exit`
465
-
466
- __0.10.3__
467
- * since it's not possible to clear the entire terminal, the clear screen process creates a false sense of security and has been removed
468
- * fix bug in `ls -l` when there are empty files
469
- * add message to suggest user to clear or close the terminal after quitting
547
+ **0.9.4**
470
548
 
471
- __0.10.2__
472
- * add a `git` command to push changes to the repo and pull changes
473
- * allow to run `bash` without parameters, asking later for the shell command
549
+ - fix bug during import, if a `path` contains `:`; now, they are replaced with `_`
474
550
 
475
- __0.10.1__
476
- * encrypts binary files as is, without converting them to `base64` strings, like before
551
+ **0.9.3**
477
552
 
478
- __0.10.0__
479
- * use @secrez/hub 0.2.0 and @secrez/courier 0.2.0 (which are incompatible with the previous versions)
480
- * duplicate `whoami` and `contacts` to make them working inside the `chat` environment
553
+ - fix bug with `ds -l` not working
481
554
 
482
- __0.9.4__
483
- * fix bug during import, if a `path` contains `:`; now, they are replaced with `_`
555
+ **0.9.2**
484
556
 
485
- __0.9.3__
486
- * fix bug with `ds -l` not working
557
+ - fix issue in `ls -l` that was working only in the current dataset
558
+ - fix dates in `ls -l` in UTC time, instead than in local time
487
559
 
488
- __0.9.2__
489
- * fix issue in `ls -l` that was working only in the current dataset
490
- * fix dates in `ls -l` in UTC time, instead than in local time
560
+ **0.9.1**
491
561
 
492
- __0.9.1__
493
- * `ls -l` returns details: size, creation date, last update date, number of versions and name
562
+ - `ls -l` returns details: size, creation date, last update date, number of versions and name
494
563
 
495
- __0.9.0__
496
- * Add `ds` to manage datasets
497
- * `ds` is also able to delete a dataset (moving its content to the `trash` dataset)
498
- * Remove feature `--rename` from `use`, since now `ds` manages the datasets
564
+ **0.9.0**
499
565
 
500
- __0.8.10__
501
- * If the default editor is not defined (env variable EDITOR) try to use nano or vim
566
+ - Add `ds` to manage datasets
567
+ - `ds` is also able to delete a dataset (moving its content to the `trash` dataset)
568
+ - Remove feature `--rename` from `use`, since now `ds` manages the datasets
502
569
 
503
- __0.8.9__
504
- * Pause clearScreen during editing
570
+ **0.8.10**
505
571
 
506
- __0.8.8__
507
- * Add the option `pathFrom` in `import` to build the `path` field using other fields
572
+ - If the default editor is not defined (env variable EDITOR) try to use nano or vim
508
573
 
509
- __0.8.7__
510
- * Importing from a CSV file generates `.yaml` file instead of `.yml`
574
+ **0.8.9**
511
575
 
512
- __0.8.6__
513
- * Uses new onBeforeRewrite in [inquirer-command-prompt](https://github.com/sullof/inquirer-command-prompt) to remove the `#\d` when autocompleting the result of a search
576
+ - Pause clearScreen during editing
514
577
 
515
- __0.8.5__
516
- * Fix issue with find results when they include datasets.
517
- * Improve scripts (getting coverage only for modified packages)
518
- * Add a secrez.png as a generic asset
578
+ **0.8.8**
519
579
 
520
- __0.8.4__
521
- * fix issue if a file starts with #\d, like `#2something`
580
+ - Add the option `pathFrom` in `import` to build the `path` field using other fields
522
581
 
523
- __0.8.3__
524
- * add autocomplete based on `find` results; for example `cat #2` and press `tab` will complete with the second result in the search
525
-
526
- __0.8.2__
527
- * fix bug in `show` which listed all the messages
528
-
529
- __0.8.1__
530
- * fix bug in `conf` setting a 2FA
531
- * improve encapsulation of the `_Secrez` class
532
-
533
- __0.8.0__
534
- * add `contacts` to manage trusted users, i.e, trusted public keys
535
- * add `whoami` to get info about the account
536
- * add @secrez/courier to allow communication between local accounts
537
- * add @secrez/hub for the remote hub
538
- * add @secrez/tunnel to manage the tunneling for the Courier
539
- * add `chat` to enter the chat environemnt, and send/receive messages and data to any trusted user
540
- * add `chat`'s subcommands `join`, `send` and `show`.
541
- * return `find` results as a numbered list, to be used as variable (like `$1`) in following commands
542
- * deprecate `exit` in favor of `quit` to leave rooms, chat and app
543
- * add `ssh` to connect via ssh to a remote server from inside Secrez, to protect private keys without password
582
+ **0.8.7**
544
583
 
545
- __0.7.14__
546
- * fix chained aliases generating prompt duplications
547
-
548
- __0.7.13__
549
- * fix autocomplete when single command
550
-
551
- __0.7.12__
552
- * adds support for Linux to `totp --from-clipboard`, using `xclip`
553
-
554
- __0.7.11__
555
- * returns an alert if `clipboardy` does not find the required libraries
584
+ - Importing from a CSV file generates `.yaml` file instead of `.yml`
556
585
 
557
- __0.7.10__
558
- * fixes the autocomplete loading the data only when needed
586
+ **0.8.6**
559
587
 
560
- __0.7.9__
561
- * fix bug in MainPrompt.js which caused an exit if command not found
562
-
563
- __0.7.8__
564
- * upgrade `@secrez/core` to `0.7.1` which fixes an error if `env.json` does not exists
588
+ - Uses new onBeforeRewrite in [inquirer-command-prompt](https://github.com/sullof/inquirer-command-prompt) to remove the `#\d` when autocompleting the result of a search
565
589
 
566
- __0.7.7__
567
- * aliases now accept params (ex. `alias x -c 'copy $1 && ls $2 $1')
590
+ **0.8.5**
568
591
 
569
- __0.7.6__
570
- * `rm` ask confirmation before delete forever from the `trash` dataset
571
- * `edit` does not crash if no path is passed
592
+ - Fix issue with find results when they include datasets.
593
+ - Improve scripts (getting coverage only for modified packages)
594
+ - Add a secrez.png as a generic asset
572
595
 
573
- __0.7.5__
574
- * `totp` can read an image to scan a qrcode and recover its secret
575
- * on MacOs, `totp` can also read the image from the clipboard to recover its secret; it requires `pngpaste`
596
+ **0.8.4**
576
597
 
577
- __0.7.4__
578
- * fix bug in autocomplete showing the error stack
579
- * add script to upgrade the versions of any changed packages
598
+ - fix issue if a file starts with #\d, like `#2something`
580
599
 
581
- __0.7.3__
582
- * `find` ignores `trash` during global searches if not using `--trash-too`
583
- * update to `@secrez/fs 0.7.2`, which fixes a bug in the `DataCache` class
600
+ **0.8.3**
584
601
 
585
- __0.7.2__
586
- * `totp` allows to generate TOTP codes (like Google Authenticator)
587
- * add option `--wait` to `copy` to force it to wait the end of the execution
588
- * `alias` handles chains of commands, like `copy coinbase.yml -f email password -d 3 2 --wait && totp coinbase.yml`
602
+ - add autocomplete based on `find` results; for example `cat #2` and press `tab` will complete with the second result in the search
589
603
 
590
- __0.7.1__
591
- * Calling a command with unknown options will generate an error
592
- * Fix issue moving duplicates
593
- * Adds to `mv` an explicit destination field
604
+ **0.8.2**
594
605
 
595
- __0.7.0__
596
- * Introduce a more secure derivation process, using the iterations number in the salt. During the upgrade existing second factors of authentication will be removed
597
- * Allow to change password and number of iterations in `conf`. BE CAREFUl, any change in `conf` can cause conflicts in a remote repo. Don't do the same changes parallelly
606
+ - fix bug in `show` which listed all the messages
598
607
 
599
- __0.6.5__
600
- * Add `duration` to `export` to delete the exported file after the duration (in seconds)
608
+ **0.8.1**
601
609
 
602
- __0.6.4__
603
- * Add `alias` to generate alias of any command
610
+ - fix bug in `conf` setting a 2FA
611
+ - improve encapsulation of the `_Secrez` class
604
612
 
605
- __0.6.3__
606
- * Minor bug fix
613
+ **0.8.0**
607
614
 
608
- __0.6.2__
609
- * `copy` can put many fields in the clipboard, scheduling them
615
+ - add `contacts` to manage trusted users, i.e, trusted public keys
616
+ - add `whoami` to get info about the account
617
+ - add @secrez/courier to allow communication between local accounts
618
+ - add @secrez/hub for the remote hub
619
+ - add @secrez/tunnel to manage the tunneling for the Courier
620
+ - add `chat` to enter the chat environemnt, and send/receive messages and data to any trusted user
621
+ - add `chat`'s subcommands `join`, `send` and `show`.
622
+ - return `find` results as a numbered list, to be used as variable (like `$1`) in following commands
623
+ - deprecate `exit` in favor of `quit` to leave rooms, chat and app
624
+ - add `ssh` to connect via ssh to a remote server from inside Secrez, to protect private keys without password
610
625
 
611
- __0.6.1__
612
- * Add support for U2F keys (Yubikey, Solokeys, etc.)
613
- * `ls` now returns sorted results
614
- * Fixed bug with `mv` and `rm` when using wildcards
615
- * Dynamic format for help, managing large examples
626
+ **0.7.14**
616
627
 
617
- __0.6.0__
618
- * Allow multiple datasets; `main` and `trash` exists by default
619
- * At start, purges old trees after successfully loading a dataset
620
- * `use` allows to use and create new dataset
621
- * `mv` supports `-d, --destination` for the destination
622
- * `mv` allows to move files among datasets with a syntax like `mv somefile archive:/` or `mv archive:somefile main:/some/`
623
- * `mv` adds `--find` and `--content-too` to use the result of a search as input
624
- * `mv`, if no destination set, asks if like to use the active directory in the target dataset
625
- * `ls -o d` and `ls -o f` to limit the listing only to folders or files
626
- * `copy` allows to select the field to copy in yaml files
627
- * Improve autocomplete to handle datasets
628
- * Fix autocomplete in `lcat`, which was wrongly using the internal files
629
- * `tag` is able to list and show tags along all the datasets, anche can use `--find` like `mv`
628
+ - fix chained aliases generating prompt duplications
630
629
 
631
- __0.5.13__
632
- * Find in content excludes binary contents
630
+ **0.7.13**
633
631
 
634
- __0.5.12__
635
- * Optimize find inside contents caching the data
636
- * Fix an error returning wrong cases in the results
637
- * Remove an unnecessary message when nothing is recovered
632
+ - fix autocomplete when single command
638
633
 
639
- __0.5.11__
640
- * Use tags to prefix the path during import
634
+ **0.7.12**
641
635
 
642
- __0.5.10__
643
- * Fix the README that was not aligned
636
+ - adds support for Linux to `totp --from-clipboard`, using `xclip`
644
637
 
645
- __0.5.9__
646
- * Add Paste to paste the clipboard content in either a new or existent file, emptying the clipboard
647
- * Fix bug with Copy that was preventing the command from working
638
+ **0.7.11**
648
639
 
649
- __0.5.8__
650
- * Allow Import, with the options `-t`, to recognize tags during the import from CSV
651
- * Split Export in Export and Copy. The first only exports to the FS, the second copies to the clipboard
640
+ - returns an alert if `clipboardy` does not find the required libraries
652
641
 
653
- __0.5.7__
654
- * Add wildcard support for Import, Mv, Rm and Tag
655
- * Add support for recursion during import
642
+ **0.7.10**
656
643
 
657
- __0.5.6__
658
- * Add Tag command to tag files and folders
644
+ - fixes the autocomplete loading the data only when needed
659
645
 
660
- __0.5.5__
661
- * Optimize Import avoiding intermediate saves of the tree
662
- * Fix an issue with iterations at launch
646
+ **0.7.9**
663
647
 
664
- __0.5.4__
665
- * Add Import of many entries from CSV and JSON files
648
+ - fix bug in MainPrompt.js which caused an exit if command not found
666
649
 
667
- __0.5.3__
668
- * Use Yaml files as cards, being able to read and edit single fields
650
+ **0.7.8**
669
651
 
670
- __0.5.2__
671
- * Remove obfuscation of the tree before saving (it was an overkill)
652
+ - upgrade `@secrez/core` to `0.7.1` which fixes an error if `env.json` does not exists
672
653
 
673
- __0.5.1__
674
- * Add Find to search in files and folders
654
+ **0.7.7**
675
655
 
676
- __0.5.0__
677
- * First stable version
656
+ - aliases now accept params (ex. `alias x -c 'copy $1 && ls $2 $1')
657
+
658
+ **0.7.6**
659
+
660
+ - `rm` ask confirmation before delete forever from the `trash` dataset
661
+ - `edit` does not crash if no path is passed
662
+
663
+ **0.7.5**
664
+
665
+ - `totp` can read an image to scan a qrcode and recover its secret
666
+ - on MacOs, `totp` can also read the image from the clipboard to recover its secret; it requires `pngpaste`
667
+
668
+ **0.7.4**
669
+
670
+ - fix bug in autocomplete showing the error stack
671
+ - add script to upgrade the versions of any changed packages
672
+
673
+ **0.7.3**
674
+
675
+ - `find` ignores `trash` during global searches if not using `--trash-too`
676
+ - update to `@secrez/fs 0.7.2`, which fixes a bug in the `DataCache` class
677
+
678
+ **0.7.2**
679
+
680
+ - `totp` allows to generate TOTP codes (like Google Authenticator)
681
+ - add option `--wait` to `copy` to force it to wait the end of the execution
682
+ - `alias` handles chains of commands, like `copy coinbase.yml -f email password -d 3 2 --wait && totp coinbase.yml`
683
+
684
+ **0.7.1**
685
+
686
+ - Calling a command with unknown options will generate an error
687
+ - Fix issue moving duplicates
688
+ - Adds to `mv` an explicit destination field
689
+
690
+ **0.7.0**
691
+
692
+ - Introduce a more secure derivation process, using the iterations number in the salt. During the upgrade existing second factors of authentication will be removed
693
+ - Allow to change password and number of iterations in `conf`. BE CAREFUl, any change in `conf` can cause conflicts in a remote repo. Don't do the same changes parallelly
694
+
695
+ **0.6.5**
696
+
697
+ - Add `duration` to `export` to delete the exported file after the duration (in seconds)
698
+
699
+ **0.6.4**
700
+
701
+ - Add `alias` to generate alias of any command
702
+
703
+ **0.6.3**
704
+
705
+ - Minor bug fix
706
+
707
+ **0.6.2**
708
+
709
+ - `copy` can put many fields in the clipboard, scheduling them
710
+
711
+ **0.6.1**
712
+
713
+ - Add support for U2F keys (Yubikey, Solokeys, etc.)
714
+ - `ls` now returns sorted results
715
+ - Fixed bug with `mv` and `rm` when using wildcards
716
+ - Dynamic format for help, managing large examples
717
+
718
+ **0.6.0**
719
+
720
+ - Allow multiple datasets; `main` and `trash` exists by default
721
+ - At start, purges old trees after successfully loading a dataset
722
+ - `use` allows to use and create new dataset
723
+ - `mv` supports `-d, --destination` for the destination
724
+ - `mv` allows to move files among datasets with a syntax like `mv somefile archive:/` or `mv archive:somefile main:/some/`
725
+ - `mv` adds `--find` and `--content-too` to use the result of a search as input
726
+ - `mv`, if no destination set, asks if like to use the active directory in the target dataset
727
+ - `ls -o d` and `ls -o f` to limit the listing only to folders or files
728
+ - `copy` allows to select the field to copy in yaml files
729
+ - Improve autocomplete to handle datasets
730
+ - Fix autocomplete in `lcat`, which was wrongly using the internal files
731
+ - `tag` is able to list and show tags along all the datasets, anche can use `--find` like `mv`
732
+
733
+ **0.5.13**
734
+
735
+ - Find in content excludes binary contents
736
+
737
+ **0.5.12**
738
+
739
+ - Optimize find inside contents caching the data
740
+ - Fix an error returning wrong cases in the results
741
+ - Remove an unnecessary message when nothing is recovered
742
+
743
+ **0.5.11**
744
+
745
+ - Use tags to prefix the path during import
746
+
747
+ **0.5.10**
748
+
749
+ - Fix the README that was not aligned
750
+
751
+ **0.5.9**
752
+
753
+ - Add Paste to paste the clipboard content in either a new or existent file, emptying the clipboard
754
+ - Fix bug with Copy that was preventing the command from working
755
+
756
+ **0.5.8**
757
+
758
+ - Allow Import, with the options `-t`, to recognize tags during the import from CSV
759
+ - Split Export in Export and Copy. The first only exports to the FS, the second copies to the clipboard
760
+
761
+ **0.5.7**
762
+
763
+ - Add wildcard support for Import, Mv, Rm and Tag
764
+ - Add support for recursion during import
765
+
766
+ **0.5.6**
767
+
768
+ - Add Tag command to tag files and folders
769
+
770
+ **0.5.5**
771
+
772
+ - Optimize Import avoiding intermediate saves of the tree
773
+ - Fix an issue with iterations at launch
774
+
775
+ **0.5.4**
776
+
777
+ - Add Import of many entries from CSV and JSON files
778
+
779
+ **0.5.3**
780
+
781
+ - Use Yaml files as cards, being able to read and edit single fields
782
+
783
+ **0.5.2**
784
+
785
+ - Remove obfuscation of the tree before saving (it was an overkill)
786
+
787
+ **0.5.1**
788
+
789
+ - Add Find to search in files and folders
790
+
791
+ **0.5.0**
792
+
793
+ - First stable version
678
794
 
679
795
  Versions < 0.5.0 are deprecated because the format was sligtly different and they are incompatible.
680
796
 
@@ -701,145 +817,153 @@ npm i -g pnpm
701
817
  ```
702
818
 
703
819
  #### Bootstrap the monorepo
820
+
704
821
  ```
705
822
  npm run reset
706
823
  ```
824
+
707
825
  #### Install OS requirements
826
+
708
827
  To complete the tests, you must install some tool, depending on you operating system.
709
828
 
710
829
  The `copy` command does not work on Linux is `xsel` is not installed. So, if you, for example, are working on Ubuntu, install it with
830
+
711
831
  ```
712
832
  sudo apt install xsel
713
833
  ```
834
+
714
835
  The `totp` command requires, on MacOS, `pngpaste`. You can install it with
836
+
715
837
  ```
716
838
  brew install pngpaste
717
839
  ```
840
+
718
841
  The `conf` command, requires `Python-fido2`. If you don't have Python, install it. After you can install `fido2` running:
842
+
719
843
  ```
720
844
  pip install fido2
721
845
  ```
846
+
722
847
  Notice that during the execution of Secrez, an error is generated if those tools have not been found. But, nothing happens, during testing. So, please, install them.
723
848
 
724
849
  #### Testing
850
+
725
851
  Run
852
+
726
853
  ```
727
854
  npm run test
728
855
  ```
856
+
729
857
  This depends where you run it. If you run from the root it executes all the tests, if you run from inside a package, it runs only its specific tests.
730
858
  You can also run
859
+
731
860
  ```
732
861
  npm run test-only
733
862
  ```
863
+
734
864
  to skip the coverage. This is very helpful during the development.
735
865
 
736
866
  #### Debugging
737
867
 
738
868
  To see if it works, you can execute your version of Secrez running, from inside `packages/secrez`
869
+
739
870
  ```
740
871
  npm run dev
741
872
  ```
873
+
742
874
  and create a dev account for you playing.
743
875
 
744
876
  #### Pull Requests
745
877
 
746
878
  To prepare the code for a PR, you should realign the versions. You can do this, from the root, calling
879
+
747
880
  ```
748
881
  npm run patch-versions
749
882
  ```
883
+
750
884
  Then, you can prepare the README inserting the coverage. To do it, run
885
+
751
886
  ```
752
887
  npm run pre-push
753
888
  ```
889
+
754
890
  Finally, you can push to GitHub.
755
891
 
756
892
  Thanks a lot for any contribution 😉
757
893
 
758
-
759
894
  ## Test coverage
760
895
 
761
896
  ```
762
- 162 passing (28s)
763
- 1 pending
897
+ 8 passing (1s)
764
898
 
765
899
  -----------------------|---------|----------|---------|---------|-----------------------------------
766
900
  File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
767
901
  -----------------------|---------|----------|---------|---------|-----------------------------------
768
- All files | 71.33 | 58.19 | 71.98 | 71.28 |
769
- src | 59.63 | 54.79 | 55 | 61.32 |
770
- Command.js | 79.66 | 78.72 | 76.92 | 83.93 | 35,54-59,68,71,95
771
- PreCommand.js | 21.95 | 11.54 | 14.29 | 21.95 | 9-95,108
902
+ All files | 19.31 | 6.31 | 17.43 | 19.32 |
903
+ src | 33.03 | 15.07 | 25 | 33.33 |
904
+ Command.js | 37.29 | 23.4 | 38.46 | 37.93 | 29-35,40-97,108,119,122-130
905
+ PreCommand.js | 12.2 | 0 | 0 | 12.2 | 8-115
772
906
  cliConfig.js | 100 | 100 | 100 | 100 |
773
- src/commands | 81.58 | 66.85 | 89.95 | 81.4 |
774
- Alias.js | 90.54 | 77.36 | 100 | 90.41 | 85,96,118,145,149,154,164
775
- Bash.js | 75 | 0 | 66.67 | 75 | 20-21
776
- Cat.js | 98.9 | 88.89 | 100 | 98.9 | 144
777
- Cd.js | 96.43 | 86.67 | 100 | 96.43 | 45
778
- Chat.js | 19.51 | 0 | 16.67 | 19.51 | 24-130
779
- Conf.js | 10.45 | 0 | 25 | 10.45 | 132-473
780
- Contacts.js | 74.67 | 65.98 | 92.86 | 74.5 | ...75-197,221,226,238,294,307,317
781
- Copy.js | 94.87 | 74.51 | 100 | 94.81 | 96,141,158,183
782
- Courier.js | 63.54 | 41.86 | 85.71 | 63.83 | ...24,139-156,168,180-183,195-201
783
- Ds.js | 92.54 | 82.05 | 100 | 92.42 | 94,103-108,120
784
- Edit.js | 13.58 | 0 | 40 | 13.58 | 78-193
785
- Export.js | 90.91 | 68 | 100 | 90.91 | 109,114-115,120,130,137,140
786
- Find.js | 93.59 | 86.67 | 100 | 93.42 | 90,153,192-196,202
787
- Help.js | 100 | 80 | 100 | 100 | 30
788
- Import.js | 93.2 | 85.48 | 100 | 93.1 | ...06,308,321,327,369,384-390,417
789
- Lcat.js | 100 | 85.71 | 100 | 100 | 55
790
- Lcd.js | 95.65 | 81.82 | 100 | 95.65 | 49
791
- Lls.js | 95.45 | 72.73 | 100 | 95.45 | 91
792
- Lpwd.js | 92.31 | 100 | 100 | 92.31 | 38
793
- Ls.js | 91.3 | 75 | 100 | 90.77 | 99,110-112,126,169
794
- Mkdir.js | 100 | 66.67 | 100 | 100 | 39-45
795
- Mv.js | 91.01 | 77.36 | 100 | 90.8 | 114,137,148-154
796
- Paste.js | 87.23 | 75 | 100 | 87.23 | 66,72,75,83,107,124
797
- Pwd.js | 92.31 | 100 | 100 | 92.31 | 36
798
- Quit.js | 90 | 50 | 100 | 90 | 29
799
- Rm.js | 94 | 80.95 | 100 | 93.88 | 61,116,124
800
- Shell.js | 88.24 | 60 | 100 | 88.24 | 39,54
801
- Ssh.js | 25 | 0 | 40 | 25 | 64-104
802
- Tag.js | 98.04 | 92.31 | 100 | 97.94 | 123,164
803
- Totp.js | 96.47 | 74.47 | 100 | 96.47 | 164-165,209
804
- Touch.js | 100 | 71.43 | 100 | 100 | 57,68
805
- Use.js | 96.77 | 89.47 | 100 | 96.77 | 65
806
- Ver.js | 90 | 66.67 | 100 | 90 | 27
807
- Whoami.js | 93.1 | 63.64 | 80 | 93.1 | 32,65
808
- chat.js | 85.37 | 53.85 | 100 | 85.37 | 94,103-116,122,128
809
- index.js | 91.67 | 60 | 100 | 91.3 | 23,32
810
- src/commands/chat | 79.44 | 63.29 | 92.31 | 79.33 |
811
- Contacts.js | 80 | 42.86 | 80 | 80 | 56,65,69,82
812
- Help.js | 86.67 | 60 | 100 | 86.67 | 38-39
813
- Join.js | 95.65 | 82.61 | 100 | 95.56 | 41,104
814
- Leave.js | 100 | 60 | 100 | 100 | 28,32
815
- Quit.js | 100 | 75 | 100 | 100 | 27
816
- Send.js | 67.65 | 46.67 | 100 | 67.65 | 40,44,47,74,83-92
817
- Show.js | 68.75 | 70.59 | 100 | 68.75 | 63-67,76,91-97
818
- Whoami.js | 42.86 | 0 | 60 | 42.86 | 24,32-41
819
- src/prompts | 15.14 | 0 | 14.29 | 15.36 |
820
- ChatPrompt.js | 6.17 | 0 | 0 | 6.17 | 9-155
821
- ChatPromptMock.js | 100 | 100 | 66.67 | 100 |
822
- CommandPrompt.js | 10.42 | 0 | 0 | 10.56 | 25-286
823
- Completion.js | 4.41 | 0 | 0 | 4.62 | 7-107
824
- MainPromptMock.js | 100 | 100 | 66.67 | 100 |
825
- MultiEditorPrompt.js | 25 | 0 | 0 | 25 | 8-35
826
- SigintManager.js | 25 | 0 | 20 | 25 | 11-37
827
- src/utils | 69.92 | 63.28 | 56.25 | 69.55 |
828
- AliasManager.js | 100 | 91.67 | 100 | 100 | 48
829
- ContactManager.js | 71.43 | 60 | 85.71 | 71.43 | 13,36-38
830
- Fido2Client.js | 15.38 | 0 | 11.11 | 15.38 | 15-101
831
- HelpProto.js | 91.6 | 84.06 | 100 | 91.45 | 44,137-138,155-160,179
832
- Logger.js | 63.64 | 56.25 | 36.84 | 62.79 | ...38-50,58,66-70,75,85,89,94,107
907
+ src/commands | 15.44 | 2.67 | 19.63 | 15.5 |
908
+ Alias.js | 8.11 | 0 | 25 | 8.22 | 62-213
909
+ Bash.js | 62.5 | 0 | 33.33 | 62.5 | 11-19
910
+ Cat.js | 12.09 | 0 | 14.29 | 12.09 | 61-220
911
+ Cd.js | 17.86 | 0 | 25 | 17.86 | 28-73
912
+ Chat.js | 19.51 | 0 | 16.67 | 19.51 | 23-144
913
+ Conf.js | 8.96 | 0 | 12.5 | 8.96 | 67-499
914
+ Contacts.js | 6 | 0 | 7.14 | 6.04 | 55-352
915
+ Copy.js | 10.26 | 0 | 14.29 | 10.39 | 69-237
916
+ Courier.js | 6.25 | 0 | 7.14 | 6.38 | 20-221
917
+ Ds.js | 5.97 | 0 | 16.67 | 6.06 | 39-160
918
+ Edit.js | 12.35 | 0 | 20 | 12.35 | 61-214
919
+ Export.js | 12.99 | 0 | 16.67 | 12.99 | 68-232
920
+ Find.js | 7.69 | 0 | 8.33 | 7.89 | 63-211
921
+ Help.js | 73.33 | 40 | 75 | 73.33 | 26,36-40
922
+ Import.js | 6.31 | 0 | 9.09 | 6.37 | 87-496
923
+ Lcat.js | 30 | 0 | 25 | 30 | 35-65
924
+ Lcd.js | 17.39 | 0 | 25 | 17.39 | 30-72
925
+ Lls.js | 22.73 | 0 | 25 | 22.73 | 49-99
926
+ Lpwd.js | 30.77 | 0 | 25 | 30.77 | 15-38
927
+ Ls.js | 5.8 | 0 | 10 | 6.15 | 46-183
928
+ Mkdir.js | 22.73 | 0 | 25 | 22.73 | 27-61
929
+ Mv.js | 6.52 | 0 | 16.67 | 6.67 | 46-240
930
+ Paste.js | 14.89 | 0 | 25 | 14.89 | 40-131
931
+ Pwd.js | 30.77 | 0 | 25 | 30.77 | 15-35
932
+ Quit.js | 50 | 0 | 33.33 | 50 | 19-40
933
+ Rm.js | 16 | 0 | 16.67 | 16.33 | 36-137
934
+ Shell.js | 29.41 | 0 | 25 | 29.41 | 25-57
935
+ Ssh.js | 22.22 | 0 | 20 | 22.22 | 49-120
936
+ Tag.js | 8.82 | 0 | 9.09 | 8.91 | 66-236
937
+ Totp.js | 15.29 | 0 | 10 | 15.29 | 75-288
938
+ Touch.js | 95.92 | 81.48 | 100 | 95.83 | 152,202
939
+ Use.js | 12.9 | 0 | 25 | 12.9 | 30-85
940
+ Ver.js | 50 | 0 | 33.33 | 50 | 17-28
941
+ Whoami.js | 24.14 | 0 | 20 | 24.14 | 22-66
942
+ chat.js | 19.51 | 0 | 16.67 | 19.51 | 23-144
943
+ index.js | 87.5 | 50 | 100 | 86.96 | 15,22,31
944
+ src/prompts | 14 | 0 | 4.76 | 14.12 |
945
+ ChatPrompt.js | 6.17 | 0 | 0 | 6.17 | 8-163
946
+ ChatPromptMock.js | 42.86 | 100 | 0 | 42.86 | 6-14
947
+ CommandPrompt.js | 10.42 | 0 | 0 | 10.56 | 24-296
948
+ Completion.js | 4.41 | 0 | 0 | 4.48 | 6-103
949
+ MainPromptMock.js | 100 | 100 | 33.33 | 100 |
950
+ MultiEditorPrompt.js | 25 | 0 | 0 | 25 | 7-36
951
+ SigintManager.js | 25 | 0 | 20 | 25 | 10-36
952
+ src/utils | 51.63 | 40.63 | 20.83 | 51.03 |
953
+ AliasManager.js | 5.88 | 0 | 0 | 5.88 | 3-48
954
+ ContactManager.js | 7.14 | 0 | 0 | 7.14 | 3-44
955
+ Fido2Client.js | 9.62 | 0 | 0 | 9.62 | 8-108
956
+ HelpProto.js | 78.99 | 62.32 | 83.33 | 78.63 | 11-39,49,153-154,171-176,195
957
+ Logger.js | 59.09 | 56.25 | 26.32 | 58.14 | ...29,37-57,65-69,74,84,88,93,105
833
958
  -----------------------|---------|----------|---------|---------|-----------------------------------
834
-
835
959
  ```
836
960
 
837
-
838
961
  ## Copyright
839
962
 
840
963
  Secrez has been created by [Francesco Sullo](https://francesco.sullo.co) (<francesco@sullo.co>). Any opinion, help, suggestion, critic is very welcome.
841
964
 
842
965
  ## Licence
966
+
843
967
  ```
844
968
  MIT License
845
969
 
@@ -863,4 +987,3 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
863
987
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
864
988
  SOFTWARE.
865
989
  ```
866
-