in source/console/src/util/Utils.ts [135:172]
export function validateFileContents(contents: IDeviceType) {
if (typeof contents !== 'object') throw Error(`Invalid JSON`);
for (const key in contents) {
let errors: IErrors<IDeviceType> = {};
try {
switch (key) {
case 'name':
case 'topic':
if (typeof contents[key] !== "string") {
throw Error(`${key} ${I18n.get('must.be.string')}`);
}
errors = validateField(key, contents[key]);
break;
case 'payload':
if (contents[key].length === 0) {
throw Error(`${key} ${I18n.get('not.empty')}`)
} else if (!Array.isArray(contents[key])) {
throw Error(`${key} ${I18n.get('must.be.array')}`)
}
validatePayload(contents[key])
break;
default:
throw Error(`${key}\n${I18n.get('unknown.field')}: ${key}`);
}
if (Object.keys(errors).length > 0) {
throw Error(errors[key]);
}
} catch (err) {
if(err instanceof Error) {
let trace = I18n.get('trace');
if (key === 'payload') {
throw new Error(`\n${trace}: ${err.message}`)
}
throw new Error(`\n${trace}: ${key}\n ${err.message}`);
}
}
}
}