cheetah-framework
Version:
Cheetah Framework JS used in all our applications
30 lines (22 loc) • 1.02 kB
JavaScript
/**
* Auto discovery of every store module (CheetahStore and custom store)
*/
import Vue from 'vue'
import store from '@cheetah/store/index'
import CheetahStore from '@cheetah/store/CheetahStore'
Vue.prototype.$dependencies = function (viewModel, dependencies) {
if (typeof dependencies === 'string') {
dependencies = [dependencies]
}
dependencies.forEach(dependency => CheetahStore.load(dependency, viewModel))
}
function preloadModules (context) {
context.keys().forEach(filePath => new CheetahStore(context(filePath)))
}
// Cheetah-Framework stores
preloadModules(require.context('@cheetah', true, /\.\/.*\/storeModules\/.*\.js$/))
// Other modules stores (@imarcom/monitored-tasks, @imarcom/cms-core, @imarcom/cheetah-attributes, ...)
preloadModules(require.context('@@/cheetahModules', true, /\.\/@.*\/storeModules\/.*\.js$/))
// App modules stores (usually in /resources/js/modules/*/routes)
preloadModules(require.context('@@/modules', true, /\.\/.*\/storeModules\/.*\.js$/))
export default store