export function validateFileContents()

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}`);
      }
    }
  }
}