packages/script/src/contextProvider.js

const BaseContext = require('./base/baseContext.js');
const BaseContextProvider = require('./base/baseContextProvider.js');
const NPCContext = require('./npcContext.js');
/**
 * Provides context to script.Engine
 * @class
 * @memberof module:@perion/script
 */
class ContextProvider extends BaseContextProvider {
  /**
   * Instantiates a new ContextProvider
   * @constructor
   */
  constructor() {
    super();
  }
  /**
   * Returns the context to be built
   * @param {Object} request The request containing file id and type
   * @return {BaseContext}
   * @throws {Error}
   */
  getContext(request) {
    if (request === null || request === undefined || !('type' in request)) {
      throw new Error('No context type provided');
    }
    switch(request.type) {
      case 'npc':
        return new NPCContext(null);
      case 'event':
      case 'item':
      case 'map':
      case 'portal':
      case 'quest':
      case 'reactor':
      default:
        throw new Error(`Could not find context type ${request.type}`);
    }
  }
}
module.exports = ContextProvider;