4584a8b570
* Updating everything except the license headers themselves * Applying ESLint rules * Manually replacing the stragglers
28 lines
888 B
TypeScript
28 lines
888 B
TypeScript
/*
|
|
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
* or more contributor license agreements. Licensed under the Elastic License
|
|
* 2.0; you may not use this file except in compliance with the Elastic License
|
|
* 2.0.
|
|
*/
|
|
|
|
interface NestedBooleanObject {
|
|
[key: string]: boolean | NestedBooleanObject;
|
|
}
|
|
|
|
export const assertDeeplyFalse = (obj: NestedBooleanObject, path: string[] = []) => {
|
|
Object.keys(obj).forEach((key) => {
|
|
const value = obj[key];
|
|
if (typeof value === 'object' && value !== null) {
|
|
assertDeeplyFalse(value, [...path, key]);
|
|
} else if (typeof value === 'boolean') {
|
|
if (value) {
|
|
throw new Error(`${[...path, key].join('.')} is not false: ${value}`);
|
|
}
|
|
} else {
|
|
throw new Error(`Expected nest object with boolean keys. '${key}' is not boolean: ${value}.`);
|
|
}
|
|
});
|
|
|
|
return true;
|
|
};
|