4ad691fa2f
The Consul API can pass through `Value: null` which does not get cast to a string by ember-data. This snowballs into problems with `atob` which then tried to decode `null`. There are 2 problems here. 1. `Value` should never be `null` - I've added a removeNull function to shallowly loop though props and remove properties that are `null`, for the moment this is only on single KV JSON responses - therefore `Value` will never be `null` which is the root of the problem 2. `atob` doesn't quite follow the `window.atob` API in that the `window.atob` API casts everything down to a string first, therefore it will try to decode `null` > `'null'` > `crazy unicode thing`. - I've commented in a fix for this, but whilst this shouldn't be causing anymore problems in our UI (now that `Value` is never `null`), I'll uncomment it in another future release. Tests are already written for it which more closely follow `window.atob` but skipped for now (next commit)
9 lines
300 B
JavaScript
9 lines
300 B
JavaScript
import TextEncoderLite from 'npm:text-encoder-lite';
|
|
import base64js from 'npm:base64-js';
|
|
export default function(str, encoding = 'utf-8') {
|
|
// str = String(str).trim();
|
|
//decode
|
|
const bytes = base64js.toByteArray(str);
|
|
return new (TextDecoder || TextEncoderLite)(encoding).decode(bytes);
|
|
}
|