Home Identifier Source Repository

lib/Driver/RUM/FrameworkEvent.js

/**
 * Created by mgoria on 1/29/16.
 */

'use strict';

import Joi from 'joi';
import {AbstractEvent} from './AbstractEvent';

/**
 * Framework event level
 */
export class FrameworkEvent extends AbstractEvent {
  /**
   * @param {Array} args
   */
  constructor(...args) {
    super(...args);
  }

  /**
   * @returns {String}
   */
  getEventLevel() {
    return AbstractEvent.FRAMEWORK_EVENT_LEVEL;
  }

  /**
   * @returns {Object}
   */
  toJSON() {
    return this._data;
  }

  /**
   * @returns {Object}
   */
  getValidationSchema() {
    return Joi.object().keys({
      eventLevel: Joi.string().required().allow([AbstractEvent.FRAMEWORK_EVENT_LEVEL]),
      service: Joi.string().required().allow(AbstractEvent.SERVICES),
      resourceType: Joi.string().required().allow(AbstractEvent.RESOURCE_TYPES),
      resourceId: Joi.string().required(),
      eventName: Joi.string().required(),
      eventId: Joi.string().alphanum().optional(),
      time: Joi.number().integer().required(),
      context: Joi.string().required().allow(AbstractEvent.CONTEXTS),
      memoryUsage: Joi.object().unknown().optional().default({}),
      payload: Joi.object().unknown().optional().default({}),
      metadata: Joi.object().unknown().optional().default({}),
      environment: Joi.object().unknown().optional().default({}),
      requestId: Joi.string(),
      identityId: Joi.string().required()
    });
  }
}