Skip to content

Commit

Permalink
Merge branch 'cumulio-bug/escape-all-control-characters'
Browse files Browse the repository at this point in the history
  • Loading branch information
uhop committed Nov 23, 2022
2 parents 1897010 + 583baa8 commit 7490dc5
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 4 deletions.
9 changes: 6 additions & 3 deletions Stringer.js
Expand Up @@ -26,15 +26,18 @@ const noCommaAfter = {startObject: 1, startArray: 1, endKey: 1, keyValue: 1},
};

const skipValue = endName =>
function(chunk, encoding, callback) {
function (chunk, encoding, callback) {
if (chunk.name === endName) {
this._transform = this._prev_transform;
}
callback(null);
};

const replaceSymbols = {'\b': '\\b', '\f': '\\f', '\n': '\\n', '\r': '\\r', '\t': '\\t', '"': '\\"', '\\': '\\\\'};
const sanitizeString = value => value.replace(/[\b\f\n\r\t\"\\]/g, match => replaceSymbols[match]);
const sanitizeString = value =>
value.replace(/[\b\f\n\r\t\"\\\u0000-\u001F\u007F-\u009F]/g, match =>
replaceSymbols.hasOwnProperty(match) ? replaceSymbols[match] : '\\u' + ('0000' + match.charCodeAt(0).toString(16)).slice(-4)
);

const doNothing = () => {};

Expand Down Expand Up @@ -87,7 +90,7 @@ class Stringer extends Transform {
this.push('"' + sanitizeString(chunk.value) + '":');
break;
case 'stringValue':
this.push('"' + sanitizeString(chunk.value)+ '"');
this.push('"' + sanitizeString(chunk.value) + '"');
break;
case 'numberValue':
this.push(chunk.value);
Expand Down
2 changes: 1 addition & 1 deletion tests/test_stringer.js
Expand Up @@ -208,7 +208,7 @@ unit.add(module, [
const parser = makeParser({jsonStreaming: true}),
stringer = new Stringer(),
object = {
message: "Test\tmessage\nWith\bnew\fline\r\ntest\\..."
message: "Test\tmessage\nWith\bnew\flineAndControlCharacters\u001F\r\ntest\\..."
},
string = JSON.stringify(object);
let buffer = '';
Expand Down

0 comments on commit 7490dc5

Please sign in to comment.