src/js/stores/RecipeStore.js
//-------------------------------------------------------------------------------
// Imports
//-------------------------------------------------------------------------------
import {
Class,
Obj
} from 'bugcore';
import {
RecipeCache
} from '../caches';
import {
Recipe
} from '../core';
//-------------------------------------------------------------------------------
// Declare Class
//-------------------------------------------------------------------------------
/**
* @class
* @extends {Obj}
*/
const RecipeStore = Class.extend(Obj, {
_name: 'bitpack.RecipeStore',
//-------------------------------------------------------------------------------
// Constructor
//-------------------------------------------------------------------------------
/**
* @constructs
*/
_constructor() {
this._super();
//-------------------------------------------------------------------------------
// Private Properties
//-------------------------------------------------------------------------------
/**
* @private
* @type {RecipeCache}
*/
this.recipeCache = new RecipeCache();
},
//-------------------------------------------------------------------------------
// Getters and Setters
//-------------------------------------------------------------------------------
/**
* @return {RecipeCache}
*/
getRecipeCache() {
return this.recipeCache;
},
//-------------------------------------------------------------------------------
// Public Methods
//-------------------------------------------------------------------------------
/**
* @param {Pack} pack
* @return {Recipe}
*/
generateRecipe(pack) {
let recipe = this.recipeCache.get(pack);
if (!recipe) {
recipe = new Recipe(pack);
this.recipeCache.set(pack, recipe);
}
return recipe;
}
});
//-------------------------------------------------------------------------------
// Exports
//-------------------------------------------------------------------------------
export default RecipeStore;