mirror of
https://github.com/bitwarden/browser
synced 2025-12-18 09:13:33 +00:00
Make Record <-> Map idempotent
Should we get in a situation where we _think_ an object has been jsonified, but hasn't been, we need to correctly deal with the object received to create our target.
This commit is contained in:
@@ -268,6 +268,11 @@ describe("Utils Service", () => {
|
|||||||
expect(result).toEqual({ 1: "value1", 2: "value2" });
|
expect(result).toEqual({ 1: "value1", 2: "value2" });
|
||||||
expect(Utils.recordToMap(result)).toEqual(map);
|
expect(Utils.recordToMap(result)).toEqual(map);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should not convert an object if it's not a map", () => {
|
||||||
|
const obj = { key1: "value1", key2: "value2" };
|
||||||
|
expect(Utils.mapToRecord(obj as any)).toEqual(obj);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("recordToMap", () => {
|
describe("recordToMap", () => {
|
||||||
@@ -295,5 +300,13 @@ describe("Utils Service", () => {
|
|||||||
);
|
);
|
||||||
expect(Utils.mapToRecord(result)).toEqual(record);
|
expect(Utils.mapToRecord(result)).toEqual(record);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should not convert an object if already a map", () => {
|
||||||
|
const map = new Map([
|
||||||
|
["key1", "value1"],
|
||||||
|
["key2", "value2"],
|
||||||
|
]);
|
||||||
|
expect(Utils.recordToMap(map as any)).toEqual(map);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -438,7 +438,13 @@ export class Utils {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
static mapToRecord<K extends string | number, V>(map: Map<K, V>): Record<string, V> {
|
static mapToRecord<K extends string | number, V>(map: Map<K, V>): Record<string, V> {
|
||||||
return map == null ? null : Object.fromEntries(map);
|
if (map == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (!(map instanceof Map)) {
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
return Object.fromEntries(map);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -452,7 +458,10 @@ export class Utils {
|
|||||||
static recordToMap<K extends string | number, V>(record: Record<K, V>): Map<K, V> {
|
static recordToMap<K extends string | number, V>(record: Record<K, V>): Map<K, V> {
|
||||||
if (record == null) {
|
if (record == null) {
|
||||||
return null;
|
return null;
|
||||||
|
} else if (record instanceof Map) {
|
||||||
|
return record;
|
||||||
}
|
}
|
||||||
|
|
||||||
const entries = Object.entries(record);
|
const entries = Object.entries(record);
|
||||||
if (entries.length === 0) {
|
if (entries.length === 0) {
|
||||||
return new Map();
|
return new Map();
|
||||||
|
|||||||
Reference in New Issue
Block a user