diff --git a/Utils.ts b/Utils.ts index 8cc3158dca..69a7e2a111 100644 --- a/Utils.ts +++ b/Utils.ts @@ -135,7 +135,7 @@ export class Utils { } return newArr; } - + public static MergeTags(a: any, b: any) { const t = {}; for (const k in a) { @@ -210,7 +210,9 @@ export class Utils { if (sourceV?.length !== undefined && targetV?.length !== undefined && key.startsWith("+")) { target[key] = targetV.concat(sourceV) } else if (typeof sourceV === "object") { - if (targetV === undefined) { + if (sourceV === null) { + target[key] = null + } else if (targetV === undefined) { target[key] = sourceV; } else { Utils.Merge(sourceV, targetV); @@ -362,9 +364,11 @@ export class Utils { public static offerContentsAsDownloadableFile(contents: string | Blob, fileName: string = "download.txt") { const element = document.createElement("a"); let file; - if(typeof(contents) === "string"){ + if (typeof (contents) === "string") { file = new Blob([contents], {type: 'text/plain'}); - }else {file = contents;} + } else { + file = contents; + } element.href = URL.createObjectURL(file); element.download = fileName; document.body.appendChild(element); // Required for this to work in FireFox @@ -452,8 +456,8 @@ export class Utils { } } - public static setDefaults(options, defaults){ - for (let key in defaults){ + public static setDefaults(options, defaults) { + for (let key in defaults) { if (!(key in options)) options[key] = defaults[key]; } return options; diff --git a/test/Utils.spec.ts b/test/Utils.spec.ts index c94494eba6..4984d082f4 100644 --- a/test/Utils.spec.ts +++ b/test/Utils.spec.ts @@ -2,6 +2,8 @@ import T from "./TestHelper"; import {Utils} from "../Utils"; import {equal} from "assert"; import LZString from "lz-string"; +import * as Assert from "assert"; +import * as assert from "assert"; export default class UtilsSpec extends T { private static readonly example = { @@ -104,6 +106,16 @@ export default class UtilsSpec extends T { equal(result.list1[1], "appended") equal(result.list2.length, 1) equal(result.list2[0], "should-be-untouched") + }], + ["Test merge with null", () => { + const obj = { + someValue: 42 + } + const override = { + someValue: null + } + Utils.Merge(override, obj) + equal(obj.someValue, null) }] ]); }