Browse Source

interpret strings given as valueEncoding

ameba23 3 years ago
parent
commit
259b2c7f58
1 changed files with 15 additions and 0 deletions
  1. 15
    0
      index.js

+ 15
- 0
index.js View File

@@ -62,6 +62,8 @@ class Crypto {
62 62
 
63 63
     assert(can, 'cobox-crypto: key must be a buffer of length ' + sodium.crypto_secretbox_KEYBYTES)
64 64
 
65
+    opts.valueEncoding = this.resolveStringEncoder(opts.valueEncoding)
66
+
65 67
     return {
66 68
       encode (message, buffer, offset) {
67 69
         // Run originally provided encoder if any
@@ -93,4 +95,17 @@ class Crypto {
93 95
       }
94 96
     }
95 97
   }
98
+
99
+  resolveStringEncoder (encoder) {
100
+    if (encoder === 'json') return {
101
+      encode: (msg) => Buffer.from(JSON.stringify(msg)),
102
+      decode: (msg) => JSON.parse(msg.toString())
103
+    }
104
+
105
+    if (encoder === 'utf-8') return {
106
+      encode: (msg) => Buffer.from(msg),
107
+      decode: (msg) => msg.toString()
108
+    }
109
+    return encoder
110
+  }
96 111
 }