JS: Add support for createNamespacedHelpers

This commit is contained in:
Asger Feldthaus
2021-07-01 09:00:49 +02:00
parent dd1e21c713
commit ee608540c5
2 changed files with 26 additions and 9 deletions

View File

@@ -1,6 +1,6 @@
import Vue from 'vue';
import Vuex from 'vuex';
import { mapGetters, mapState, mapMutations, mapActions } from 'vuex';
import { mapGetters, mapState, mapMutations, mapActions, createNamespacedHelpers } from 'vuex';
Vue.use(Vuex);
@@ -18,6 +18,9 @@ const submoduleB = {
}
};
const { mapGetters: mapGettersA } = createNamespacedHelpers('submoduleA');
const { mapGetters: mapGettersB } = createNamespacedHelpers('submoduleB');
const store = new Vuex.Store({
getters: {
getterWithSink: state => { sink(state.tainted); }, // NOT OK
@@ -72,8 +75,10 @@ const Component = new Vue({
derivedUntainted: state => state.untainted,
}),
...mapState(['tainted2']),
...mapGetters('submoduleA', {fooA: 'foo'}),
...mapGetters('submoduleB', {fooB: 'foo'}),
...mapGetters('submoduleA', {fooA1: 'foo'}),
...mapGettersA({fooA2: 'foo'}),
...mapGetters('submoduleB', {fooB1: 'foo'}),
...mapGettersB({fooB2: 'foo'}),
},
methods: {
doCommitsAndActions() {
@@ -95,8 +100,10 @@ const Component = new Vue({
sink(this.untaintedGetter); // OK
sink(this.derivedUntainted); // OK
sink(this.fooA); // NOT OK
sink(this.fooB); // OK
sink(this.fooA1); // NOT OK
sink(this.fooA2); // NOT OK
sink(this.fooB1); // OK
sink(this.fooB2); // OK
},
...mapMutations({ sneakyTaint3: 'setTainted3' }),
...mapActions({ emitTaint4: 'doTaint4' }),