Source: MemoryStateProvider.js

import beof from 'beof';
import RefState from './RefState';
import Concern from './Concern';
import Context from './Context';

/**
 * MemoryStateProvider 
 * @implements {StateProvider}
 */
class MemoryStateProvider {

    provide(state, path, concern, context) {

        beof({ state }).string();
        beof({ path }).string();
        beof({ concern }).instance(Concern);
        beof({ context }).interface(Context);

        if (RefState.hasOwnProperty(state))
            return new RefState[state](path, concern, context, this);

        throw new ReferenceError(`Unknown state ${state}!`);

    }

}

export default MemoryStateProvider