37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
/**
|
|
* A function to be passed to JSON.parse as a JSON reviver, in order to transform date values
|
|
* (which don't have a native JSON representation and therefore are serialized as strings)
|
|
* back to a JavaScript Date object.
|
|
* This works by first checking if a string value complies with a date format
|
|
* and then converting to a Date if and only if that's the case
|
|
* @param name name of the JSON field to revive
|
|
* @param value value of the JSON field to revive
|
|
*/
|
|
export function dateReviver(name, value) {
|
|
if (typeof value === "string" && /^\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d.\d\d\dZ$/.test(value)) {
|
|
return new Date(value);
|
|
}
|
|
return value;
|
|
}
|
|
|
|
|
|
export function parseJsonOrDefault(jsonString: string) {
|
|
try {
|
|
return JSON.parse(jsonString);
|
|
} catch(error) {
|
|
console.error(error);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
export function hasAnyOwnProperty(obj: {}, keys: string[]) {
|
|
return keys.some(k => obj.hasOwnProperty(k));
|
|
}
|
|
|
|
export function isNullishOrEmpty(obj: any) {
|
|
return obj == undefined || isEmptyArray(obj);
|
|
}
|
|
export function isEmptyArray(obj: any) {
|
|
return Array.isArray(obj) && obj.length === 0;
|
|
}
|