2023-05-19 15:22:48 -03:00
|
|
|
const isString = (text: unknown): text is string => {
|
2023-05-23 20:42:06 -04:00
|
|
|
return typeof text === "string" || text instanceof String;
|
2023-05-19 15:22:48 -03:00
|
|
|
};
|
|
|
|
|
|
|
|
const parseString = (data: unknown): string => {
|
2023-05-23 20:42:06 -04:00
|
|
|
if (!isString(data)) {
|
|
|
|
throw new Error("data is not a string");
|
|
|
|
}
|
2023-05-19 15:22:48 -03:00
|
|
|
|
2023-05-23 20:42:06 -04:00
|
|
|
return data;
|
2023-05-19 15:22:48 -03:00
|
|
|
};
|
|
|
|
|
|
|
|
const isNumber = (number: unknown): number is number => {
|
2023-05-23 20:42:06 -04:00
|
|
|
return typeof number === "number" && !isNaN(number);
|
2023-05-19 15:22:48 -03:00
|
|
|
};
|
|
|
|
|
|
|
|
const parseNumber = (data: unknown): number => {
|
2023-05-23 20:42:06 -04:00
|
|
|
if (!isNumber(data)) {
|
|
|
|
throw new Error("data is not a number");
|
|
|
|
}
|
2023-05-19 15:22:48 -03:00
|
|
|
|
2023-05-23 20:42:06 -04:00
|
|
|
return Number(data);
|
2023-05-19 15:22:48 -03:00
|
|
|
};
|
|
|
|
|
|
|
|
const isDate = (date: string) => {
|
2023-05-23 20:42:06 -04:00
|
|
|
if (!Date.parse(date)) {
|
|
|
|
throw new Error("invalid date");
|
|
|
|
}
|
|
|
|
return date;
|
2023-05-19 15:22:48 -03:00
|
|
|
};
|
|
|
|
|
|
|
|
const parseDateNumber = (date: unknown): string => {
|
2023-05-23 20:42:06 -04:00
|
|
|
if (!isString(date) || !isDate(date)) {
|
|
|
|
throw new Error("date could not be parsed");
|
|
|
|
}
|
2023-05-19 15:22:48 -03:00
|
|
|
|
2023-05-23 20:42:06 -04:00
|
|
|
return date;
|
2023-05-19 15:22:48 -03:00
|
|
|
};
|
|
|
|
|
|
|
|
const parseEmail = (email: unknown): string => {
|
2023-05-23 20:42:06 -04:00
|
|
|
if (!isString(email)) {
|
|
|
|
throw new Error("incorrect email");
|
|
|
|
}
|
|
|
|
return email;
|
2023-05-19 15:22:48 -03:00
|
|
|
};
|
|
|
|
|
|
|
|
const isBoolean = (booleanCandidate: unknown): booleanCandidate is boolean => {
|
2023-05-23 20:42:06 -04:00
|
|
|
return typeof booleanCandidate === "boolean";
|
2023-05-19 15:22:48 -03:00
|
|
|
};
|
|
|
|
|
|
|
|
const parseBoolean = (booleanCandidate: unknown): boolean => {
|
2023-05-23 20:42:06 -04:00
|
|
|
if (!isBoolean(booleanCandidate)) {
|
|
|
|
throw new Error("argument was not a boolean");
|
|
|
|
}
|
|
|
|
return booleanCandidate;
|
2023-05-19 15:22:48 -03:00
|
|
|
};
|
|
|
|
|
2023-06-04 19:00:30 -03:00
|
|
|
function removeKeysFromObject<T>(object: T, keys: Array<keyof T>): Partial<T> {
|
|
|
|
const newObject: Partial<T> = object;
|
|
|
|
for (const key of keys) {
|
|
|
|
delete newObject[key];
|
|
|
|
}
|
|
|
|
return newObject;
|
|
|
|
}
|
|
|
|
|
|
|
|
export {
|
|
|
|
isString,
|
|
|
|
isNumber,
|
|
|
|
parseString,
|
|
|
|
parseNumber,
|
|
|
|
parseDateNumber,
|
|
|
|
parseBoolean,
|
|
|
|
parseEmail,
|
|
|
|
removeKeysFromObject
|
|
|
|
};
|