Utility functions for checking if an record has all required properties
parent
58fb0937d2
commit
af3c2b3da4
|
|
@ -88,3 +88,54 @@ export function buildIsomorpicApiClient(
|
||||||
const nodeClient: LibreCcmApiClient = buildNodeApiClient(baseUrl, jwt);
|
const nodeClient: LibreCcmApiClient = buildNodeApiClient(baseUrl, jwt);
|
||||||
return new IsomorphicClientImpl(fetchClient, nodeClient);
|
return new IsomorphicClientImpl(fetchClient, nodeClient);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An utility function for checking if an record has specific properties.
|
||||||
|
*
|
||||||
|
* @param record The record to check.
|
||||||
|
* @param properties The required properties.
|
||||||
|
*
|
||||||
|
* @return `true` if all properties are found in the record, `false` otherwise.
|
||||||
|
*/
|
||||||
|
export function hasProperties(
|
||||||
|
record: Record<string, unknown>,
|
||||||
|
properties: string[]
|
||||||
|
): boolean {
|
||||||
|
const keys = Object.keys(record);
|
||||||
|
return properties.every((property) => keys.includes(property));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An utility function for checking if an record has specific properties. If
|
||||||
|
* one of the properties is not found, the function will throw an error.
|
||||||
|
*
|
||||||
|
* @param record The record to check.
|
||||||
|
* @param properties The required properties.
|
||||||
|
*/
|
||||||
|
export function assertProperties(
|
||||||
|
record: Record<string, unknown>,
|
||||||
|
properties: string[]
|
||||||
|
): void {
|
||||||
|
const missing = findMissingProperties(record, properties);
|
||||||
|
if (missing.length > 0) {
|
||||||
|
throw `record is missing the following required properties:
|
||||||
|
${missing.join(",")}`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An utility function which checks which of the given properties the provided
|
||||||
|
* record is missing.
|
||||||
|
*
|
||||||
|
* @param record The record to check.
|
||||||
|
* @param properties The requird properties.
|
||||||
|
*
|
||||||
|
* @return An array with all missing properties.
|
||||||
|
*/
|
||||||
|
export function findMissingProperties(
|
||||||
|
record: Record<string, unknown>,
|
||||||
|
properties: string[]
|
||||||
|
): string[] {
|
||||||
|
const keys = Object.keys(record);
|
||||||
|
return properties.filter((property) => !keys.includes(property));
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue