diff --git a/.vuesion/generators/connected/connected.spec.ts.hbs b/.vuesion/generators/connected/connected.spec.ts.hbs index 5efea7e4..dfae79a8 100644 --- a/.vuesion/generators/connected/connected.spec.ts.hbs +++ b/.vuesion/generators/connected/connected.spec.ts.hbs @@ -1,30 +1,29 @@ -import { createLocalVue, mount } from '@vue/test-utils';{{#if wantVuex}} +import { createLocalVue, mount } from '@vue/test-utils'; import Vuex, { Store } from 'vuex'; import { i18n } from '@/app/shared/plugins/i18n/i18n'; import {{ properCase componentName }} from './{{ properCase componentName }}.vue'; -import { I{{ properCase componentName }}State } from '../state'; -import { {{ properCase componentName }}Module } from '../module';{{/if}} +import { I{{ properCase singularName }}State } from '../state'; +import { {{ properCase singularName }}Module } from '../module'; const localVue = createLocalVue();{{#if wantVuex}} localVue.use(Vuex);{{/if}} describe('{{ properCase componentName }}.vue', () => { -{{#if wantVuex}} - let store: Store; + let store: Store; beforeEach(() => { store = new Vuex.Store({ modules: { - {{ camelCase moduleName }}: {{ properCase componentName }}Module, + {{ camelCase singularName }}: {{ properCase singularName }}Module, }, } as any); }); -{{/if}} test('renders component', () => { + test('renders component', () => { const wrapper = mount({{ properCase componentName }}, { - {{#if wantVuex}} store, - {{/if}} localVue, + store, + localVue, i18n, stubs: ['router-link'], }); diff --git a/.vuesion/generators/connected/connected.vue.hbs b/.vuesion/generators/connected/connected.vue.hbs index a6e80dae..58cefb4d 100644 --- a/.vuesion/generators/connected/connected.vue.hbs +++ b/.vuesion/generators/connected/connected.vue.hbs @@ -1,6 +1,8 @@ - @@ -62,7 +74,6 @@ export default { .{{ camelCase componentName }} { margin-top: $nav-bar-height; - padding: $space-32 0; min-height: 500px; } diff --git a/.vuesion/generators/crud-module/actions.spec.ts.hbs b/.vuesion/generators/crud-module/actions.spec.ts.hbs new file mode 100644 index 00000000..670b5bf5 --- /dev/null +++ b/.vuesion/generators/crud-module/actions.spec.ts.hbs @@ -0,0 +1,146 @@ +import { ActionContext, Commit, Dispatch } from 'vuex'; +import MockAdapter from 'axios-mock-adapter'; +import { IState } from '@/app/state'; +import { HttpService } from '@/app/shared/services/HttpService/HttpService'; +import { {{ properCase singularName }}Actions } from './actions'; +import { {{ properCase singularName }}DefaultState, I{{ properCase singularName }}State } from './state'; + +describe('{{ properCase singularName }}Actions', () => { + let testContext: ActionContext; + let mockAxios: MockAdapter; + + beforeEach(() => { + testContext = { + dispatch: jest.fn() as Dispatch, + commit: jest.fn() as Commit, + state: {{ properCase singularName }}DefaultState(), + } as ActionContext; + + mockAxios = new MockAdapter(HttpService); + }); + + describe('fetch{{ properCase pluralName }}', () => { + test('it should call SET_{{ constantCase pluralName }} on success', async () => { + const commitMock: jest.Mock = testContext.commit as jest.Mock; + const expected = {}; + + mockAxios.onGet('/{{ singularName }}').reply(200, expected); + + await {{ properCase singularName }}Actions.fetch{{ properCase pluralName }}(testContext); + + const actual = commitMock.mock.calls[0]; + + expect(actual).toEqual(['SET_{{ constantCase pluralName }}', expected]); + }); + + test('it should throw an error on failure', async () => { + mockAxios.onGet('/{{ singularName }}').reply(500); + + try { + await {{ properCase singularName }}Actions.fetch{{ properCase pluralName }}(testContext); + } catch (e) { + expect(e.message).toEqual('Request failed with status code 500'); + } + }); + }); + + describe('fetch{{ properCase singularName }}', () => { + test('it should call SET_CURRENT_{{ constantCase singularName }} on success', async () => { + const commitMock: jest.Mock = testContext.commit as jest.Mock; + const expected = {}; + + mockAxios.onGet('/{{ singularName }}/1').reply(200, expected); + + await {{ properCase singularName }}Actions.fetch{{ properCase singularName }}(testContext, '1'); + + const actual = commitMock.mock.calls[0]; + + expect(actual).toEqual(['SET_CURRENT_{{ constantCase singularName }}', expected]); + }); + + test('it should throw an error on failure', async () => { + mockAxios.onGet('/{{ singularName }}/1').reply(500); + + try { + await {{ properCase singularName }}Actions.fetch{{ properCase singularName }}(testContext, '1'); + } catch (e) { + expect(e.message).toEqual('Request failed with status code 500'); + } + }); + }); + + describe('add{{ properCase singularName }}', () => { + test('it should call ADD_{{ constantCase singularName }} on success', async () => { + const commitMock: jest.Mock = testContext.commit as jest.Mock; + const expected = {}; + + mockAxios.onPost('/{{ singularName }}').reply(200, expected); + + await {{ properCase singularName }}Actions.add{{ properCase singularName }}(testContext, expected); + + const actual = commitMock.mock.calls[0]; + + expect(actual).toEqual(['ADD_{{ constantCase singularName }}', expected]); + }); + + test('it should throw an error on failure', async () => { + mockAxios.onPost('/{{ singularName }}').reply(500); + + try { + await {{ properCase singularName }}Actions.add{{ properCase singularName }}(testContext, {}); + } catch (e) { + expect(e.message).toEqual('Request failed with status code 500'); + } + }); + }); + + describe('update{{ properCase singularName }}', () => { + test('it should call UPDATE_{{ constantCase singularName }} on success', async () => { + const commitMock: jest.Mock = testContext.commit as jest.Mock; + const expected = { id: '1' }; + + mockAxios.onPut('/{{ singularName }}/1').reply(200, expected); + + await {{ properCase singularName }}Actions.update{{ properCase singularName }}(testContext, expected); + + const actual = commitMock.mock.calls[0]; + + expect(actual).toEqual(['UPDATE_{{ constantCase singularName }}', expected]); + }); + + test('it should throw an error on failure', async () => { + mockAxios.onPut('/{{ singularName }}/1').reply(500); + + try { + await {{ properCase singularName }}Actions.update{{ properCase singularName }}(testContext, { id: '1' }); + } catch (e) { + expect(e.message).toEqual('Request failed with status code 500'); + } + }); + }); + + describe('delete{{ properCase singularName }}', () => { + test('it should call DELETE_{{ constantCase singularName }} on success', async () => { + const commitMock: jest.Mock = testContext.commit as jest.Mock; + const expected = { id: '1' }; + + mockAxios.onDelete('/{{ singularName }}/1').reply(200, expected); + + await {{ properCase singularName }}Actions.delete{{ properCase singularName }}(testContext, expected); + + const actual = commitMock.mock.calls[0]; + + expect(actual).toEqual(['DELETE_{{ constantCase singularName }}', expected]); + }); + + test('it should throw an error on failure', async () => { + mockAxios.onDelete('/{{ singularName }}/1').reply(500); + + try { + await {{ properCase singularName }}Actions.delete{{ properCase singularName }}(testContext, { id: '1' }); + } catch (e) { + expect(e.message).toEqual('Request failed with status code 500'); + } + }); + }); +}); diff --git a/.vuesion/generators/crud-module/actions.ts.hbs b/.vuesion/generators/crud-module/actions.ts.hbs new file mode 100644 index 00000000..91ea102b --- /dev/null +++ b/.vuesion/generators/crud-module/actions.ts.hbs @@ -0,0 +1,56 @@ +import { ActionContext } from 'vuex'; +import { IState } from '@/app/state'; +import { HttpService } from '@/app/shared/services/HttpService/HttpService'; +import { I{{ properCase singularName }}State } from './state'; +import { I{{ properCase singularName }} } from './I{{ properCase singularName }}'; + +export interface I{{ properCase singularName }}Actions { + fetch{{ properCase pluralName }}(context: ActionContext): Promise; + fetch{{ properCase singularName }}(context: ActionContext, id: string): Promise; + add{{ properCase singularName }}(context: ActionContext, {{ camelCase singularName }}: I{{ properCase singularName }}): Promise; + update{{ properCase singularName }}(context: ActionContext, {{ camelCase singularName }}: I{{ properCase singularName }}): Promise; + delete{{ properCase singularName }}(context: ActionContext, {{ camelCase singularName }}: I{{ properCase singularName }}): Promise; +} + +export const {{ properCase singularName }}Actions: I{{ properCase singularName }}Actions = { + async fetch{{ properCase pluralName }}({ commit }) { + try { + const response = await HttpService.get('/{{ singularName }}'); + commit('SET_{{ constantCase pluralName }}', response.data); + } catch (e) { + throw e; + } + }, + async fetch{{ properCase singularName }}({ commit }, id) { + try { + const response = await HttpService.get(`/{{ singularName }}/${ id }`); + commit('SET_CURRENT_{{ constantCase singularName }}', response.data); + } catch (e) { + throw e; + } + }, + async add{{ properCase singularName }}({ commit }, {{ camelCase singularName }}) { + try { + const response = await HttpService.post('/{{ singularName }}', {{ camelCase singularName }}); + commit('ADD_{{ constantCase singularName }}', response.data); + } catch (e) { + throw e; + } + }, + async update{{ properCase singularName }}({ commit }, {{ camelCase singularName }}) { + try { + const response = await HttpService.put(`/{{ singularName }}/${ {{ camelCase singularName }}.id }`, {{ camelCase singularName }}); + commit('UPDATE_{{ constantCase singularName }}', response.data); + } catch (e) { + throw e; + } + }, + async delete{{ properCase singularName }}({ commit }, {{ camelCase singularName }}) { + try { + await HttpService.delete(`/{{ singularName }}/${ {{ camelCase singularName }}.id }`); + commit('DELETE_{{ constantCase singularName }}', {{ camelCase singularName }}); + } catch (e) { + throw e; + } + }, +}; diff --git a/.vuesion/generators/crud-module/getters.spec.ts.hbs b/.vuesion/generators/crud-module/getters.spec.ts.hbs new file mode 100644 index 00000000..a4cc5e55 --- /dev/null +++ b/.vuesion/generators/crud-module/getters.spec.ts.hbs @@ -0,0 +1,18 @@ +import { {{ properCase singularName }}Getters } from './getters'; +import { {{ properCase singularName }}DefaultState, I{{ properCase singularName }}State } from './state'; + +describe('{{ properCase singularName }}Getters', () => { + let testState: I{{ properCase singularName }}State; + + beforeEach(() => { + testState = {{ properCase singularName }}DefaultState(); + }); + + test('it should get the {{ camelCase pluralName }}', () => { + expect({{ properCase singularName }}Getters.{{ camelCase pluralName }}(testState)).toEqual(testState.{{ camelCase pluralName }}); + }); + + test('it should get the {{ camelCase pluralName }}', () => { + expect({{ properCase singularName }}Getters.current{{ properCase singularName }}(testState)).toEqual(testState.current{{ properCase singularName }}); + }); +}); diff --git a/.vuesion/generators/crud-module/getters.ts.hbs b/.vuesion/generators/crud-module/getters.ts.hbs new file mode 100644 index 00000000..5523c8ce --- /dev/null +++ b/.vuesion/generators/crud-module/getters.ts.hbs @@ -0,0 +1,16 @@ +import { I{{ properCase singularName }}State } from './state'; +import { I{{ properCase singularName }} } from './I{{ properCase singularName }}'; + +export interface I{{ properCase singularName }}Getters { + {{ camelCase pluralName }}(state: I{{ properCase singularName }}State): I{{ properCase singularName }}[]; + current{{ properCase singularName }}(state: I{{ properCase singularName }}State): I{{ properCase singularName }}; +} + +export const {{ properCase singularName }}Getters: I{{ properCase singularName }}Getters = { + {{ camelCase pluralName }}(state) { + return state.{{ camelCase pluralName }}; + }, + current{{ properCase singularName }}(state) { + return state.current{{ properCase singularName }}; + }, +}; diff --git a/.vuesion/generators/crud-module/interface.ts.hbs b/.vuesion/generators/crud-module/interface.ts.hbs new file mode 100644 index 00000000..5fed795c --- /dev/null +++ b/.vuesion/generators/crud-module/interface.ts.hbs @@ -0,0 +1,6 @@ +export interface I{{properCase singularName}} { + /** + * define your data structure here + */ + id?: string; +} diff --git a/.vuesion/generators/crud-module/module.ts.hbs b/.vuesion/generators/crud-module/module.ts.hbs new file mode 100644 index 00000000..a23e8a57 --- /dev/null +++ b/.vuesion/generators/crud-module/module.ts.hbs @@ -0,0 +1,22 @@ +import { Module } from 'vuex'; +import { IState } from '@/app/state'; +import { {{ properCase singularName }}DefaultState, I{{ properCase singularName }}State } from './state'; +import { {{ properCase singularName }}Actions } from './actions'; +import { {{ properCase singularName }}Getters } from './getters'; +import { {{ properCase singularName }}Mutations } from './mutations'; + +export const {{ properCase singularName }}Module: Module = { + namespaced: true, + actions: { + ...{{ properCase singularName }}Actions, + }, + getters: { + ...{{ properCase singularName }}Getters, + }, + state: { + ...{{ properCase singularName }}DefaultState(), + }, + mutations: { + ...{{ properCase singularName }}Mutations, + }, +}; diff --git a/.vuesion/generators/crud-module/mutations.spec.ts.hbs b/.vuesion/generators/crud-module/mutations.spec.ts.hbs new file mode 100644 index 00000000..ceec66e5 --- /dev/null +++ b/.vuesion/generators/crud-module/mutations.spec.ts.hbs @@ -0,0 +1,44 @@ +import { {{ properCase singularName }}Mutations } from './mutations'; +import { {{ properCase singularName }}DefaultState, I{{ properCase singularName }}State } from './state'; + +describe('{{ properCase singularName }}Mutations', () => { + let testState: I{{ properCase singularName }}State; + + beforeEach(() => { + testState = {{ properCase singularName }}DefaultState(); + }); + + test('it should set {{ camelCase pluralName }}', () => { + const expected = [{ id: '1' }]; + + {{ properCase singularName }}Mutations.SET_{{ constantCase pluralName }}(testState, expected); + expect(testState.{{ camelCase pluralName }}).toEqual(expected); + }); + + test('it should set current{{ properCase singularName }}', () => { + const expected = { id: '1' }; + + {{ properCase singularName }}Mutations.SET_CURRENT_{{ constantCase singularName }}(testState, expected); + expect(testState.current{{ properCase singularName }}).toEqual(expected); + }); + + test('it should add and update a {{ camelCase singularName }}', () => { + const {{ camelCase singularName }} = { id: '1' }; + {{ properCase singularName }}Mutations.ADD_{{ constantCase singularName }}(testState, {{ camelCase singularName }}); + expect(testState.{{ camelCase pluralName }}).toEqual([{{ camelCase singularName }}]); + + {{ camelCase singularName }}.id = '2'; + + {{ properCase singularName }}Mutations.UPDATE_{{ constantCase singularName }}(testState, {{ camelCase singularName }}); + expect(testState.{{ camelCase pluralName }}).toEqual([{{ camelCase singularName }}]); + }); + + test('it should delete a {{ camelCase singularName }}', () => { + const {{ camelCase singularName }} = { id: '1' }; + {{ properCase singularName }}Mutations.ADD_{{ constantCase singularName }}(testState, {{ camelCase singularName }}); + expect(testState.{{ camelCase pluralName }}).toHaveLength(1); + + {{ properCase singularName }}Mutations.DELETE_{{ constantCase singularName }}(testState, {{ camelCase singularName }}); + expect(testState.{{ camelCase pluralName }}).toHaveLength(0); + }); +}); diff --git a/.vuesion/generators/crud-module/mutations.ts.hbs b/.vuesion/generators/crud-module/mutations.ts.hbs new file mode 100644 index 00000000..b1e08098 --- /dev/null +++ b/.vuesion/generators/crud-module/mutations.ts.hbs @@ -0,0 +1,29 @@ +import { I{{ properCase singularName }}State } from './state'; +import { I{{ properCase singularName }} } from './I{{ properCase singularName }}'; + +export interface I{{ properCase singularName }}Mutations { + SET_{{ constantCase pluralName }}(state: I{{ properCase singularName }}State, {{ camelCase pluralName }}: I{{ properCase singularName }}[]): void; + SET_CURRENT_{{ constantCase singularName }}(state: I{{ properCase singularName }}State, {{ camelCase singularName}}: I{{ properCase singularName }}): void; + ADD_{{ constantCase singularName }}(state: I{{ properCase singularName }}State, {{ camelCase singularName}}: I{{ properCase singularName }}): void; + UPDATE_{{ constantCase singularName }}(state: I{{ properCase singularName }}State, {{ camelCase singularName}}: I{{ properCase singularName }}): void; + DELETE_{{ constantCase singularName }}(state: I{{ properCase singularName }}State, {{ camelCase singularName}}: I{{ properCase singularName }}): void; +} + +export const {{ properCase singularName }}Mutations: I{{ properCase singularName }}Mutations = { + SET_{{ constantCase pluralName }}: (state, {{ camelCase pluralName }}) => { + state.{{ camelCase pluralName }} = {{ camelCase pluralName }}; + }, + SET_CURRENT_{{ constantCase singularName }}: (state, {{ camelCase singularName}}) => { + state.current{{ properCase singularName }} = {{ camelCase singularName }}; + }, + ADD_{{ constantCase singularName }}: (state, {{ camelCase singularName}}) => { + state.{{ camelCase pluralName }}.push({{ camelCase singularName}}); + }, + UPDATE_{{ constantCase singularName }}: (state, {{ camelCase singularName}}) => { + const idx = state.{{ camelCase pluralName }}.findIndex((item) => item.id === {{ camelCase singularName}}.id); + state.{{ camelCase pluralName }}.splice(idx, 1, {{ camelCase singularName}}); + }, + DELETE_{{ constantCase singularName }}: (state, {{ camelCase singularName}}) => { + state.{{ camelCase pluralName }} = state.{{ camelCase pluralName }}.filter((item) => item.id !== {{ camelCase singularName}}.id); + }, +}; diff --git a/.vuesion/generators/crud-module/routes.ts.hbs b/.vuesion/generators/crud-module/routes.ts.hbs new file mode 100644 index 00000000..6966a3f4 --- /dev/null +++ b/.vuesion/generators/crud-module/routes.ts.hbs @@ -0,0 +1,9 @@ +import { RouteConfig } from 'vue-router/types/router'; + +export const {{ properCase singularName }}Routes: RouteConfig[] = [ + { + path: '/{{ dashCase singularName }}', + name: '{{ camelCase singularName }}', + component: () => import(/* webpackChunkName: "{{ dashCase singularName }}" */ './{{ properCase singularName }}/{{ properCase singularName }}.vue').then((m: any) => m.default), + }, +]; diff --git a/.vuesion/generators/crud-module/state.ts.hbs b/.vuesion/generators/crud-module/state.ts.hbs new file mode 100644 index 00000000..31ddbf93 --- /dev/null +++ b/.vuesion/generators/crud-module/state.ts.hbs @@ -0,0 +1,21 @@ +import { I{{ properCase singularName }} } from './I{{ properCase singularName }}'; + +export interface I{{ properCase singularName }}State { + /** + * put your state attributes here, for example: + * myAttribute: any; + */ + {{ camelCase pluralName }}: I{{ properCase singularName }}[]; + current{{ properCase singularName }}: I{{ properCase singularName }}; +} + +export const {{ properCase singularName }}DefaultState = (): I{{ properCase singularName }}State => { + return { + /** + * put your default value here, for example: + * myAttribute: null, + */ + {{ camelCase pluralName }}: [], + current{{ properCase singularName }}: null, + }; +}; diff --git a/.vuesion/generators/module/actions.spec.ts.hbs b/.vuesion/generators/module/actions.spec.ts.hbs index bee484bc..0406831b 100644 --- a/.vuesion/generators/module/actions.spec.ts.hbs +++ b/.vuesion/generators/module/actions.spec.ts.hbs @@ -1,25 +1,25 @@ import { ActionContext, Commit, Dispatch } from 'vuex'; import MockAdapter from 'axios-mock-adapter'; -import { {{ properCase moduleName }}DefaultState, I{{ properCase moduleName }}State } from './state'; +import { {{ properCase singularName }}DefaultState, I{{ properCase singularName }}State } from './state'; import { IState } from '@/app/state'; -import { {{ properCase moduleName }}Actions } from './actions'; +import { {{ properCase singularName }}Actions } from './actions'; import { HttpService } from '@/app/shared/services/HttpService/HttpService'; -describe('{{ properCase moduleName }}Actions', () => { - let testContext: ActionContext; +describe('{{ properCase singularName }}Actions', () => { + let testContext: ActionContext; let mockAxios: MockAdapter; beforeEach(() => { testContext = { dispatch: jest.fn() as Dispatch, commit: jest.fn() as Commit, - state: {{ properCase moduleName }}DefaultState(), - } as ActionContext; + state: {{ properCase singularName }}DefaultState(), + } as ActionContext; mockAxios = new MockAdapter(HttpService); }); - test('Please right the tests for the actions here', () => { + test('Please write the tests for the actions here', () => { // here is an example: https://github.com/vuesion/vuesion/blob/master/src/app/counter/actions.spec.ts expect(true).toBeFalsy(); }); diff --git a/.vuesion/generators/module/actions.ts.hbs b/.vuesion/generators/module/actions.ts.hbs index dadc9900..e176eb00 100644 --- a/.vuesion/generators/module/actions.ts.hbs +++ b/.vuesion/generators/module/actions.ts.hbs @@ -1,16 +1,16 @@ import { ActionContext } from 'vuex'; -import { I{{ properCase moduleName }}State } from './state'; +import { I{{ properCase singularName }}State } from './state'; import { IState } from '@/app/state'; import { HttpService } from '@/app/shared/services/HttpService/HttpService'; -export interface I{{ properCase moduleName }}Actions { +export interface I{{ properCase singularName }}Actions { /** * put your action names, parameters and return values here, for example: - * myAction(context: ActionContext, param: any): Promise; + * myAction(context: ActionContext, param: any): Promise; */ } -export const {{ properCase moduleName }}Actions: I{{ properCase moduleName }}Actions = { +export const {{ properCase singularName }}Actions: I{{ properCase singularName }}Actions = { /** * here comes the implementation of your actions, for example: * myAction({ commit }, param) { diff --git a/.vuesion/generators/module/getters.spec.ts.hbs b/.vuesion/generators/module/getters.spec.ts.hbs index 1187fca4..d61b0841 100644 --- a/.vuesion/generators/module/getters.spec.ts.hbs +++ b/.vuesion/generators/module/getters.spec.ts.hbs @@ -1,14 +1,14 @@ -import { {{ properCase moduleName }}Getters } from './getters'; -import { {{ properCase moduleName }}DefaultState, I{{ properCase moduleName }}State } from './state'; +import { {{ properCase singularName }}Getters } from './getters'; +import { {{ properCase singularName }}DefaultState, I{{ properCase singularName }}State } from './state'; -describe('{{ properCase moduleName }}Getters', () => { - let testState: I{{ properCase moduleName }}State; +describe('{{ properCase singularName }}Getters', () => { + let testState: I{{ properCase singularName }}State; beforeEach(() => { - testState = {{ properCase moduleName }}DefaultState(); + testState = {{ properCase singularName }}DefaultState(); }); - test('Please right the tests for the getters here', () => { + test('Please write the tests for the getters here', () => { // here is an example: https://github.com/vuesion/vuesion/blob/master/src/app/counter/getters.spec.ts expect(true).toBeFalsy(); }); diff --git a/.vuesion/generators/module/getters.ts.hbs b/.vuesion/generators/module/getters.ts.hbs index 4e36bd9c..8f090bd8 100644 --- a/.vuesion/generators/module/getters.ts.hbs +++ b/.vuesion/generators/module/getters.ts.hbs @@ -1,16 +1,16 @@ -import { I{{ properCase moduleName }}State } from './state'; +import { I{{ properCase singularName }}State } from './state'; -export interface I{{ properCase moduleName }}Getters { +export interface I{{ properCase singularName }}Getters { /** * put your getter names, parameters and return values here, for example: - * myAction(context: ActionContext, param: any): Promise; + * myAction(context: ActionContext, param: any): Promise; */ } -export const {{ properCase moduleName }}Getters: I{{ properCase moduleName }}Getters = { +export const {{ properCase singularName }}Getters: I{{ properCase singularName }}Getters = { /** * here comes the implementation of your getters, for example: - * myGetter(state: I{{ properCase moduleName }}State) { + * myGetter(state: I{{ properCase singularName }}State) { * return state.myAttribute; * } */ diff --git a/.vuesion/generators/module/module.ts.hbs b/.vuesion/generators/module/module.ts.hbs index fc285f78..a23e8a57 100644 --- a/.vuesion/generators/module/module.ts.hbs +++ b/.vuesion/generators/module/module.ts.hbs @@ -1,22 +1,22 @@ import { Module } from 'vuex'; import { IState } from '@/app/state'; -import { {{ properCase moduleName }}DefaultState, I{{ properCase moduleName }}State } from './state'; -import { {{ properCase moduleName }}Actions } from './actions'; -import { {{ properCase moduleName }}Getters } from './getters'; -import { {{ properCase moduleName }}Mutations } from './mutations'; +import { {{ properCase singularName }}DefaultState, I{{ properCase singularName }}State } from './state'; +import { {{ properCase singularName }}Actions } from './actions'; +import { {{ properCase singularName }}Getters } from './getters'; +import { {{ properCase singularName }}Mutations } from './mutations'; -export const {{ properCase moduleName }}Module: Module = { +export const {{ properCase singularName }}Module: Module = { namespaced: true, actions: { - ...{{ properCase moduleName }}Actions, + ...{{ properCase singularName }}Actions, }, getters: { - ...{{ properCase moduleName }}Getters, + ...{{ properCase singularName }}Getters, }, state: { - ...{{ properCase moduleName }}DefaultState(), + ...{{ properCase singularName }}DefaultState(), }, mutations: { - ...{{ properCase moduleName }}Mutations, + ...{{ properCase singularName }}Mutations, }, }; diff --git a/.vuesion/generators/module/mutations.spec.ts.hbs b/.vuesion/generators/module/mutations.spec.ts.hbs index 7592b69b..aeaad431 100644 --- a/.vuesion/generators/module/mutations.spec.ts.hbs +++ b/.vuesion/generators/module/mutations.spec.ts.hbs @@ -1,14 +1,14 @@ -import { {{ properCase moduleName }}Mutations } from './mutations'; -import { {{ properCase moduleName }}DefaultState, I{{ properCase moduleName }}State } from './state'; +import { {{ properCase singularName }}Mutations } from './mutations'; +import { {{ properCase singularName }}DefaultState, I{{ properCase singularName }}State } from './state'; -describe('{{ properCase moduleName }}Mutations', () => { - let testState: I{{ properCase moduleName }}State; +describe('{{ properCase singularName }}Mutations', () => { + let testState: I{{ properCase singularName }}State; beforeEach(() => { - testState = {{ properCase moduleName }}DefaultState(); + testState = {{ properCase singularName }}DefaultState(); }); - test('Please right the tests for the mutations here', () => { + test('Please write the tests for the mutations here', () => { // here is an example: https://github.com/vuesion/vuesion/blob/master/src/app/counter/mutations.spec.ts expect(true).toBeFalsy(); }); diff --git a/.vuesion/generators/module/mutations.ts.hbs b/.vuesion/generators/module/mutations.ts.hbs index b7e679c7..b4b25a41 100644 --- a/.vuesion/generators/module/mutations.ts.hbs +++ b/.vuesion/generators/module/mutations.ts.hbs @@ -1,13 +1,13 @@ -import { I{{ properCase moduleName }}State } from './state'; +import { I{{ properCase singularName }}State } from './state'; -export interface I{{ properCase moduleName }}Mutations { +export interface I{{ properCase singularName }}Mutations { /** * put your mutations names, parameters and return values here, for example: - * MY_MUTATION(context: ActionContext, param: any): void; + * MY_MUTATION(context: ActionContext, param: any): void; */ } -export const {{ properCase moduleName }}Mutations: I{{ properCase moduleName }}Mutations = { +export const {{ properCase singularName }}Mutations: I{{ properCase singularName }}Mutations = { /** * here comes the implementation of your mutations, for example: * MY_MUTATION: (state, param) { diff --git a/.vuesion/generators/module/routes.ts.hbs b/.vuesion/generators/module/routes.ts.hbs index 846f8f93..6966a3f4 100644 --- a/.vuesion/generators/module/routes.ts.hbs +++ b/.vuesion/generators/module/routes.ts.hbs @@ -1,8 +1,9 @@ import { RouteConfig } from 'vue-router/types/router'; -export const {{ properCase moduleName }}Routes: RouteConfig[] = [ +export const {{ properCase singularName }}Routes: RouteConfig[] = [ { - path: '/{{ camelCase moduleName }}', - component: () => import(/* webpackChunkName: "{{ camelCase moduleName }}" */ './{{ properCase moduleName }}/{{ properCase moduleName }}.vue').then((m: any) => m.default), + path: '/{{ dashCase singularName }}', + name: '{{ camelCase singularName }}', + component: () => import(/* webpackChunkName: "{{ dashCase singularName }}" */ './{{ properCase singularName }}/{{ properCase singularName }}.vue').then((m: any) => m.default), }, ]; diff --git a/.vuesion/generators/module/state.ts.hbs b/.vuesion/generators/module/state.ts.hbs index 4061b41a..c5493b17 100644 --- a/.vuesion/generators/module/state.ts.hbs +++ b/.vuesion/generators/module/state.ts.hbs @@ -1,11 +1,11 @@ -export interface I{{ properCase moduleName }}State { +export interface I{{ properCase singularName }}State { /** * put your state attributes here, for example: * myAttribute: any; */ } -export const {{ properCase moduleName }}DefaultState = (): I{{ properCase moduleName }}State => { +export const {{ properCase singularName }}DefaultState = (): I{{ properCase singularName }}State => { return { /** * put your default value here, for example: diff --git a/package-lock.json b/package-lock.json index d11da81f..105e283f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -62,16 +62,15 @@ } }, "@babel/generator": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.0.tgz", - "integrity": "sha512-Ms8Mo7YBdMMn1BYuNtKuP/z0TgEIhbcyB8HVR6PPNYp4P61lMsABiS4A3VG1qznjXVCf3r+fVHhm4efTYVsySA==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.2.tgz", + "integrity": "sha512-j8iHaIW4gGPnViaIHI7e9t/Hl8qLjERI6DcV9kEpAIDJsAOrcnXqRS7t+QbhL76pwbtqP+QCQLL0z1CyVmtjjQ==", "dev": true, "requires": { "@babel/types": "^7.6.0", "jsesc": "^2.5.1", "lodash": "^4.17.13", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" + "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { @@ -281,13 +280,13 @@ } }, "@babel/helpers": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.6.0.tgz", - "integrity": "sha512-W9kao7OBleOjfXtFGgArGRX6eCP0UEcA2ZWEWNkJdRZnHhW4eEbeswbG3EwaRsnQUAEGWYgMq1HsIXuNNNy2eQ==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.6.2.tgz", + "integrity": "sha512-3/bAUL8zZxYs1cdX2ilEE0WobqbCmKWr/889lf2SS0PpDcpEIY8pb1CCyz0pEcX3pEb+MCbks1jIokz2xLtGTA==", "dev": true, "requires": { "@babel/template": "^7.6.0", - "@babel/traverse": "^7.6.0", + "@babel/traverse": "^7.6.2", "@babel/types": "^7.6.0" } }, @@ -303,9 +302,9 @@ } }, "@babel/parser": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.0.tgz", - "integrity": "sha512-+o2q111WEx4srBs7L9eJmcwi655eD8sXniLqMB93TBK9GrNzGrxDWSjiqz2hLU0Ha8MTXFIP0yd9fNdP+m43ZQ==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.2.tgz", + "integrity": "sha512-mdFqWrSPCmikBoaBYMuBulzTIKuXVPtEISFbRRVNwMWpCms/hmE2kRq0bblUHaNRKrjRlmVbx1sDHmjmRgD2Xg==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { @@ -350,9 +349,9 @@ } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.5.tgz", - "integrity": "sha512-F2DxJJSQ7f64FyTVl5cw/9MWn6naXGdk3Q3UhDbFEEHv+EilCPoeRD3Zh/Utx1CJz4uyKlQ4uH+bJPbEhMV7Zw==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.6.2.tgz", + "integrity": "sha512-LDBXlmADCsMZV1Y9OQwMc0MyGZ8Ta/zlD9N67BfQT8uYwkRswiu2hU6nJKrjrt/58aH/vqfQlR/9yId/7A2gWw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -370,14 +369,14 @@ } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz", - "integrity": "sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.6.2.tgz", + "integrity": "sha512-NxHETdmpeSCtiatMRYWVJo7266rrvAC3DTeG5exQBIH/fMIUK7ejDNznBbn3HQl/o9peymRRg7Yqkx6PdUXmMw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.5.4" + "regexpu-core": "^4.6.0" } }, "@babel/plugin-syntax-async-generators": { @@ -455,9 +454,9 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.0.tgz", - "integrity": "sha512-tIt4E23+kw6TgL/edACZwP1OUKrjOTyMrFMLoT5IOFrfMRabCgekjqFd5o6PaAMildBu46oFkekIdMuGkkPEpA==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.2.tgz", + "integrity": "sha512-zZT8ivau9LOQQaOGC7bQLQOT4XPkPXgN2ERfUgk1X8ql+mVkLc4E8eKk+FO3o0154kxzqenWCorfmEXpEZcrSQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -499,14 +498,14 @@ } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz", - "integrity": "sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.6.2.tgz", + "integrity": "sha512-KGKT9aqKV+9YMZSkowzYoYEiHqgaDhGmPNZlZxX6UeHC4z30nC1J9IrZuGqbYFB1jaIGdv91ujpze0exiVK8bA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.5.4" + "regexpu-core": "^4.6.0" } }, "@babel/plugin-transform-duplicate-keys": { @@ -610,12 +609,12 @@ } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.0.tgz", - "integrity": "sha512-jem7uytlmrRl3iCAuQyw8BpB4c4LWvSpvIeXKpMb+7j84lkx4m4mYr5ErAcmN5KM7B6BqrAvRGjBIbbzqCczew==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.2.tgz", + "integrity": "sha512-xBdB+XOs+lgbZc2/4F5BVDVcDNS4tcSKQc96KmlqLEAwz6tpYPEvPdmDfvVG0Ssn8lAhronaRs6Z6KSexIpK5g==", "dev": true, "requires": { - "regexp-tree": "^0.1.13" + "regexpu-core": "^4.6.0" } }, "@babel/plugin-transform-new-target": { @@ -695,9 +694,9 @@ } }, "@babel/plugin-transform-spread": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz", - "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.6.2.tgz", + "integrity": "sha512-DpSvPFryKdK1x+EDJYCy28nmAaIMdxmhot62jAXF/o99iA33Zj2Lmcp3vDmz+MUh0LNYVPvfj5iC3feb3/+PFg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" @@ -733,20 +732,20 @@ } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz", - "integrity": "sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.6.2.tgz", + "integrity": "sha512-orZI6cWlR3nk2YmYdb0gImrgCUwb5cBUwjf6Ks6dvNVvXERkwtJWOQaEOjPiu0Gu1Tq6Yq/hruCZZOOi9F34Dw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.5.4" + "regexpu-core": "^4.6.0" } }, "@babel/preset-env": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.6.0.tgz", - "integrity": "sha512-1efzxFv/TcPsNXlRhMzRnkBFMeIqBBgzwmZwlFDw5Ubj0AGLeufxugirwZmkkX/ayi3owsSqoQ4fw8LkfK9SYg==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.6.2.tgz", + "integrity": "sha512-Ru7+mfzy9M1/YTEtlDS8CD45jd22ngb9tXnn64DvQK3ooyqSw9K4K9DUWmYknTTVk4TqygL9dqCrZgm1HMea/Q==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.0.0", @@ -754,9 +753,9 @@ "@babel/plugin-proposal-async-generator-functions": "^7.2.0", "@babel/plugin-proposal-dynamic-import": "^7.5.0", "@babel/plugin-proposal-json-strings": "^7.2.0", - "@babel/plugin-proposal-object-rest-spread": "^7.5.5", + "@babel/plugin-proposal-object-rest-spread": "^7.6.2", "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-proposal-unicode-property-regex": "^7.6.2", "@babel/plugin-syntax-async-generators": "^7.2.0", "@babel/plugin-syntax-dynamic-import": "^7.2.0", "@babel/plugin-syntax-json-strings": "^7.2.0", @@ -765,11 +764,11 @@ "@babel/plugin-transform-arrow-functions": "^7.2.0", "@babel/plugin-transform-async-to-generator": "^7.5.0", "@babel/plugin-transform-block-scoped-functions": "^7.2.0", - "@babel/plugin-transform-block-scoping": "^7.6.0", + "@babel/plugin-transform-block-scoping": "^7.6.2", "@babel/plugin-transform-classes": "^7.5.5", "@babel/plugin-transform-computed-properties": "^7.2.0", "@babel/plugin-transform-destructuring": "^7.6.0", - "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.6.2", "@babel/plugin-transform-duplicate-keys": "^7.5.0", "@babel/plugin-transform-exponentiation-operator": "^7.2.0", "@babel/plugin-transform-for-of": "^7.4.4", @@ -780,7 +779,7 @@ "@babel/plugin-transform-modules-commonjs": "^7.6.0", "@babel/plugin-transform-modules-systemjs": "^7.5.0", "@babel/plugin-transform-modules-umd": "^7.2.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.6.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.6.2", "@babel/plugin-transform-new-target": "^7.4.4", "@babel/plugin-transform-object-super": "^7.5.5", "@babel/plugin-transform-parameters": "^7.4.4", @@ -788,11 +787,11 @@ "@babel/plugin-transform-regenerator": "^7.4.5", "@babel/plugin-transform-reserved-words": "^7.2.0", "@babel/plugin-transform-shorthand-properties": "^7.2.0", - "@babel/plugin-transform-spread": "^7.2.0", + "@babel/plugin-transform-spread": "^7.6.2", "@babel/plugin-transform-sticky-regex": "^7.2.0", "@babel/plugin-transform-template-literals": "^7.4.4", "@babel/plugin-transform-typeof-symbol": "^7.2.0", - "@babel/plugin-transform-unicode-regex": "^7.4.4", + "@babel/plugin-transform-unicode-regex": "^7.6.2", "@babel/types": "^7.6.0", "browserslist": "^4.6.0", "core-js-compat": "^3.1.1", @@ -802,9 +801,9 @@ } }, "@babel/runtime": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.6.0.tgz", - "integrity": "sha512-89eSBLJsxNxOERC0Op4vd+0Bqm6wRMqMbFtV3i0/fbaWw/mJ8Q3eBvgX0G4SyrOOLCtbu98HspF8o09MRT+KzQ==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.6.2.tgz", + "integrity": "sha512-EXxN64agfUqqIGeEjI5dL5z0Sw0ZwWo1mLTi4mQowCZ42O59b7DRpZAnTC6OqdF28wMBMFKNb/4uFGrVaigSpg==", "dev": true, "requires": { "regenerator-runtime": "^0.13.2" @@ -830,16 +829,16 @@ } }, "@babel/traverse": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.0.tgz", - "integrity": "sha512-93t52SaOBgml/xY74lsmt7xOR4ufYvhb5c5qiM6lu4J/dWGMAfAh6eKw4PjLes6DI6nQgearoxnFJk60YchpvQ==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.2.tgz", + "integrity": "sha512-8fRE76xNwNttVEF2TwxJDGBLWthUkHWSldmfuBzVRmEDWOtu4XdINTgN7TDWzuLg4bbeIMLvfMFD9we5YcWkRQ==", "dev": true, "requires": { "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.6.0", + "@babel/generator": "^7.6.2", "@babel/helper-function-name": "^7.1.0", "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.6.0", + "@babel/parser": "^7.6.2", "@babel/types": "^7.6.0", "debug": "^4.1.0", "globals": "^11.1.0", @@ -1054,9 +1053,9 @@ }, "dependencies": { "@types/node": { - "version": "12.7.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.5.tgz", - "integrity": "sha512-9fq4jZVhPNW8r+UYKnxF1e2HkDWOWKM5bC2/7c9wPV835I0aOrVbS/Hw/pWPk2uKrNXQqg9Z959Kz+IYDd5p3w==", + "version": "12.7.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.8.tgz", + "integrity": "sha512-FMdVn84tJJdV+xe+53sYiZS4R5yn1mAIxfj+DVoNiQjTYz1+OYmjwEZr1ev9nU0axXwda0QDbYl06QHanRVH3A==", "dev": true }, "lodash": { @@ -2338,9 +2337,9 @@ } }, "@types/babel__generator": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.0.2.tgz", - "integrity": "sha512-NHcOfab3Zw4q5sEE2COkpfXjoE7o+PmqD9DQW4koUT3roNxwziUdXGnRndMat/LJNUtePwn1TlP4do3uoe3KZQ==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.0.tgz", + "integrity": "sha512-c1mZUu4up5cp9KROs/QAw0gTeHrw/x7m52LcnvMxxOZ03DmLwPV0MlGmlgzV3cnSdjhJOZsj7E7FHeioai+egw==", "dev": true, "requires": { "@babel/types": "^7.0.0" @@ -2551,9 +2550,9 @@ "dev": true }, "@types/prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-f8JzJNWVhKtc9dg/dyDNfliTKNOJSLa7Oht/ElZdF/UbMUmAH3rLmAk3ODNjw0mZajDEgatA03tRjB4+Dp/tzA==", + "version": "15.7.3", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", + "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==", "dev": true }, "@types/q": { @@ -2579,9 +2578,9 @@ } }, "@types/react": { - "version": "16.9.2", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.2.tgz", - "integrity": "sha512-jYP2LWwlh+FTqGd9v7ynUKZzjj98T8x7Yclz479QdRhHfuW9yQ+0jjnD31eXSXutmBpppj5PYNLYLRfnZJvcfg==", + "version": "16.9.4", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.4.tgz", + "integrity": "sha512-ItGNmJvQ0IvWt8rbk5PLdpdQhvBVxAaXI9hDlx7UMd8Ie1iMIuwMNiKeTfmVN517CdplpyXvA22X4zm4jGGZnw==", "dev": true, "requires": { "@types/prop-types": "*", @@ -2756,9 +2755,9 @@ } }, "@types/yargs": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.2.tgz", - "integrity": "sha512-lwwgizwk/bIIU+3ELORkyuOgDjCh7zuWDFqRtPPhhVgq9N1F7CvLNKg1TX4f2duwtKQ0p044Au9r1PLIXHrIzQ==", + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.3.tgz", + "integrity": "sha512-K8/LfZq2duW33XW/tFwEAfnZlqIfVsoyRB3kfXdPXYhl0nfM8mmh7GS0jg7WrX2Dgq/0Ha/pR1PaR+BvmWwjiQ==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -2845,26 +2844,26 @@ } }, "@vuesion/addon-vuex-persist": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@vuesion/addon-vuex-persist/-/addon-vuex-persist-3.0.4.tgz", - "integrity": "sha512-7UPUmE2t7jGMTnfiT0WD1B6B3SJxWuHMX8aauCQoXksMrqCuIyp2gic0xXZ0rUyCyb0eNla+3XLNjEyBQkw4pQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vuesion/addon-vuex-persist/-/addon-vuex-persist-3.1.1.tgz", + "integrity": "sha512-CByMO0Lzt7zfldscRAfcqsmO21KBNp0rICIifkvoqANx3im8N3zZFhGytP7OkyRoKdR98mQGhaNXY0P7dcekBA==", "requires": { "js-cookie": "^2.2.0" } }, "@vuesion/models": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@vuesion/models/-/models-3.0.4.tgz", - "integrity": "sha512-IJlJhJrNkuprmDaMvNFjlsLvQg/N3FrJcWJVZOoGm7s7pwixzRKOewq4Kr/D1KAQGF6+QAaI9Lnh6VwILhYAzg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vuesion/models/-/models-3.1.1.tgz", + "integrity": "sha512-LAL/Tisq1DpzrFtrKDEueQmk8d7ZhjIfGMA7vqwlg89AMLFzmZzmWTwMJ7k012Jn3M4ocDghFuJA8lY9hWOojA==", "requires": { - "@vuesion/utils": "^3.0.4", + "@vuesion/utils": "^3.1.1", "ramda": "^0.26.1" } }, "@vuesion/service": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@vuesion/service/-/service-3.0.4.tgz", - "integrity": "sha512-Nbt+GZQJ6vcsNsAxT/a+p+GcPid8rGsf3XpGjXWdlkfEsO+Gb95nVjususx0v9TJaC+B48/Bii1razO+35c93w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vuesion/service/-/service-3.1.1.tgz", + "integrity": "sha512-K8cZ0mpfs6N/vWhn3570SGcjxoNOrdv756e2c4D9jfco8zYQ1VMwAK2y6yaOGzztajFW4mF/63iSZZSBS/gmjw==", "dev": true, "requires": { "@babel/core": "7.5.5", @@ -2884,9 +2883,9 @@ "@types/webpack": "4.32.1", "@types/webpack-dev-middleware": "2.0.3", "@types/webpack-merge": "4.1.5", - "@vuesion/models": "^3.0.4", - "@vuesion/utils": "^3.0.4", - "@vuesion/webpack": "^3.0.4", + "@vuesion/models": "^3.1.1", + "@vuesion/utils": "^3.1.1", + "@vuesion/webpack": "^3.1.1", "autoprefixer": "9.6.1", "axios": "^0.19.0", "babel-core": "6.26.3", @@ -2915,6 +2914,7 @@ "lodash": "^4.17.15", "open": "6.4.0", "plop": "2.4.0", + "pluralize": "^8.0.0", "postcss-loader": "3.0.0", "prettier": "1.18.2", "pretty-quick": "1.11.1", @@ -2974,21 +2974,21 @@ } }, "@vuesion/utils": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@vuesion/utils/-/utils-3.0.4.tgz", - "integrity": "sha512-hP5r25y1Chhflvm+5POg9HGNGULgSTQgYCdreaYYyiXlvvqvv1+aDK6RCq67rFQn7Q5tSk1RljTKq5QzWMCY3g==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vuesion/utils/-/utils-3.1.1.tgz", + "integrity": "sha512-zTYBORD70Rv622KmLQjk/6smJGNz7vXnwVuLSg569UG/vF5u95WBPPGsbofksFMN1uisThDjcJcdoIAqxXf6mQ==", "requires": { "chalk": "^2.4.2", "cross-spawn": "6.0.5" } }, "@vuesion/webpack": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@vuesion/webpack/-/webpack-3.0.4.tgz", - "integrity": "sha512-EkBeYhx1kS6/SHxaf6oTlpQIkcfFCFOo+Fre8uuhJx5u0N2wKO4pF0npJyIFtwVzONe8NMpUC5CpLR77NnT4FA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vuesion/webpack/-/webpack-3.1.1.tgz", + "integrity": "sha512-1S9fn+Q0Y8BnZpME9wSDX208xrIyc9be5tqDmp662LxJnhc/Cloxd1f5D8KRstXqlRDQJpmFLydOenGu5yZq8A==", "requires": { - "@vuesion/models": "^3.0.4", - "@vuesion/utils": "^3.0.4" + "@vuesion/models": "^3.1.1", + "@vuesion/utils": "^3.1.1" } }, "@webassemblyjs/ast": { @@ -3190,9 +3190,9 @@ } }, "abab": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.1.tgz", - "integrity": "sha512-1zSbbCuoIjafKZ3mblY5ikvAb0ODUbqBnFuUb7f6uLeQhhGJ0vEV4ntmtxKLT2WgXCO94E07BjunsIw1jOMPZw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.2.tgz", + "integrity": "sha512-2scffjvioEmNz0OyDSLGWDfKCVwaKc6l9Pm9kOIREU13ClXZvHpg/nRL5xyjSSSLhOnXqft2HpsAzNEEA8cFFg==", "dev": true }, "abbrev": { @@ -5614,9 +5614,9 @@ } }, "caniuse-lite": { - "version": "1.0.30000989", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000989.tgz", - "integrity": "sha512-vrMcvSuMz16YY6GSVZ0dWDTJP8jqk3iFQ/Aq5iqblPwxSVVZI+zxDyTX0VPqtQsDnfdrBDcsmhgTEOh5R8Lbpw==", + "version": "1.0.30000997", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000997.tgz", + "integrity": "sha512-BQLFPIdj2ntgBNWp9Q64LGUIEmvhKkzzHhUHR3CD5A9Lb7ZKF20/+sgadhFap69lk5XmK1fTUleDclaRFvgVUA==", "dev": true }, "capture-exit": { @@ -5733,9 +5733,9 @@ } }, "chownr": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.2.tgz", - "integrity": "sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", + "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==", "dev": true }, "chrome-trace-event": { @@ -6045,9 +6045,9 @@ "integrity": "sha1-+IiQMGhcfE/54qVZ9Qd+t2qBb5Y=" }, "colors": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", - "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" }, "colorspace": { "version": "1.1.2", @@ -6757,9 +6757,9 @@ "dev": true }, "schema-utils": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.2.0.tgz", - "integrity": "sha512-5EwsCNhfFTZvUreQhx/4vVQpJ/lnCAkgoIHLhSpp4ZirE+4hzFvdJi0FMub6hxbFVBJYSpeVVmon+2e7uEGRrA==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.4.1.tgz", + "integrity": "sha512-RqYLpkPZX5Oc3fw/kHHHyP56fg5Y+XBpIpV8nCg0znIALfq3OH+Ea9Hfeac9BAMwG5IICltiZ0vxFvJQONfA5w==", "dev": true, "requires": { "ajv": "^6.10.2", @@ -7702,9 +7702,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.264", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.264.tgz", - "integrity": "sha512-z8E7WkrrquCuGYv+kKyybuZIbdms+4PeHp7Zm2uIgEhAigP0bOwqXILItwj0YO73o+QyHY/7XtEfP5DsHOWQgQ==", + "version": "1.3.270", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.270.tgz", + "integrity": "sha512-426qbfgLn0hVE4pDxok2dcAhA3u5lwXlBg2+i6VWQJvnMZNgevkC6s/qr91YH/avVMKXKwxnR5iBznpivg210A==", "dev": true }, "elegant-spinner": { @@ -7783,9 +7783,9 @@ } }, "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, "requires": { "once": "^1.4.0" @@ -8509,9 +8509,9 @@ }, "dependencies": { "schema-utils": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.2.0.tgz", - "integrity": "sha512-5EwsCNhfFTZvUreQhx/4vVQpJ/lnCAkgoIHLhSpp4ZirE+4hzFvdJi0FMub6hxbFVBJYSpeVVmon+2e7uEGRrA==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.4.1.tgz", + "integrity": "sha512-RqYLpkPZX5Oc3fw/kHHHyP56fg5Y+XBpIpV8nCg0znIALfq3OH+Ea9Hfeac9BAMwG5IICltiZ0vxFvJQONfA5w==", "dev": true, "requires": { "ajv": "^6.10.2", @@ -9894,9 +9894,9 @@ } }, "handlebars": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.2.1.tgz", - "integrity": "sha512-bqPIlDk06UWbVEIFoYj+LVo42WhK96J+b25l7hbFDpxrOXMphFM3fNIm+cluwg4Pk2jiLjWU5nHQY7igGE75NQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.4.0.tgz", + "integrity": "sha512-xkRtOt3/3DzTKMOt3xahj2M/EqNhY988T+imYSlMgs5fVhLN2fmKVVj0LtEGmb+3UUYV5Qmm1052Mm3dIQxOvw==", "dev": true, "requires": { "neo-async": "^2.6.0", @@ -13773,9 +13773,9 @@ } }, "node-releases": { - "version": "1.1.32", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.32.tgz", - "integrity": "sha512-VhVknkitq8dqtWoluagsGPn3dxTvN9fwgR59fV3D7sLBHe0JfDramsMI8n8mY//ccq/Kkrf8ZRHRpsyVZ3qw1A==", + "version": "1.1.33", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.33.tgz", + "integrity": "sha512-I0V30bWQEoHb+10W8oedVoUrdjW5wIkYm0w7vvcrPO95pZY738m1k77GF5sO0vKg5eXYg9oGtrMAETbgZGm11A==", "dev": true, "requires": { "semver": "^5.3.0" @@ -15040,6 +15040,12 @@ } } }, + "pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true + }, "pn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", @@ -16080,9 +16086,9 @@ } }, "react": { - "version": "16.9.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.9.0.tgz", - "integrity": "sha512-+7LQnFBwkiw+BobzOF6N//BdoNw0ouwmSJTEm9cglOOmsg/TMiFHZLe2sEoN5M7LgJTj9oHH0gxklfnQe66S1w==", + "version": "16.10.1", + "resolved": "https://registry.npmjs.org/react/-/react-16.10.1.tgz", + "integrity": "sha512-2bisHwMhxQ3XQz4LiJJwG3360pY965pTl/MRrZYxIBKVj4fOHoDs5aZAkYXGxDRO1Li+SyjTAilQEbOmtQJHzA==", "dev": true, "requires": { "loose-envify": "^1.1.0", @@ -16226,15 +16232,15 @@ } }, "react-dom": { - "version": "16.9.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.9.0.tgz", - "integrity": "sha512-YFT2rxO9hM70ewk9jq0y6sQk8cL02xm4+IzYBz75CQGlClQQ1Bxq0nhHF6OtSbit+AIahujJgb/CPRibFkMNJQ==", + "version": "16.10.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.10.1.tgz", + "integrity": "sha512-SmM4ZW0uug0rn95U8uqr52I7UdNf6wdGLeXDmNLfg3y5q5H9eAbdjF5ubQc3bjDyRrvdAB2IKG7X0GzSpnn5Mg==", "dev": true, "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2", - "scheduler": "^0.15.0" + "scheduler": "^0.16.1" } }, "react-draggable": { @@ -16331,9 +16337,9 @@ } }, "react-is": { - "version": "16.9.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.9.0.tgz", - "integrity": "sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw==", + "version": "16.10.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.10.1.tgz", + "integrity": "sha512-BXUMf9sIOPXXZWqr7+c5SeOKJykyVr2u0UDzEf4LNGc6taGkQe1A9DFD07umCIXz45RLr9oAAwZbAJ0Pkknfaw==", "dev": true }, "react-lifecycles-compat": { @@ -16646,12 +16652,6 @@ "safe-regex": "^1.1.0" } }, - "regexp-tree": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.13.tgz", - "integrity": "sha512-hwdV/GQY5F8ReLZWO+W1SRoN5YfpOKY6852+tBFcma72DKBIcHjPRIlIvQN35bCOljuAfP2G2iB0FC/w236mUw==", - "dev": true - }, "regexp.prototype.flags": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz", @@ -17269,9 +17269,9 @@ "dev": true }, "scheduler": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.15.0.tgz", - "integrity": "sha512-xAefmSfN6jqAa7Kuq7LIJY0bwAPG3xlCj0HMEBQk1lxYiDKZscY2xJ5U/61ZTrYbmNQbXa+gc7czPkVo11tnCg==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.16.1.tgz", + "integrity": "sha512-MIuie7SgsqMYOdCXVFZa8SKoNorJZUWHW8dPgto7uEHn1lX3fg2Gu0TzgK8USj76uxV7vB5eRMnZs/cdEHg+cg==", "dev": true, "requires": { "loose-envify": "^1.1.0", @@ -18019,9 +18019,9 @@ "dev": true }, "store2": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/store2/-/store2-2.9.0.tgz", - "integrity": "sha512-JmK+95jLX2zAP75DVAJ1HAziQ6f+f495h4P9ez2qbmxazN6fE7doWlitqx9hj2YohH3kOi6RVksJe1UH0sJfPw==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/store2/-/store2-2.10.0.tgz", + "integrity": "sha512-tWEpK0snS2RPUq1i3R6OahfJNjWCQYNxq0+by1amCSuw0mXtymJpzmZIeYpA1UAa+7B0grCpNYIbDcd7AgTbFg==", "dev": true }, "storybook-addon-vue-info": { @@ -18462,9 +18462,9 @@ } }, "terser": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.3.1.tgz", - "integrity": "sha512-pnzH6dnFEsR2aa2SJaKb1uSCl3QmIsJ8dEkj0Fky+2AwMMcC9doMqLOQIH6wVTEKaVfKVvLSk5qxPBEZT9mywg==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.3.4.tgz", + "integrity": "sha512-Kcrn3RiW8NtHBP0ssOAzwa2MsIRQ8lJWiBG/K7JgqPlomA3mtb2DEmp4/hrUA+Jujx+WZ02zqd7GYD+QRBB/2Q==", "dev": true, "requires": { "commander": "^2.20.0", @@ -19329,9 +19329,9 @@ "dev": true }, "schema-utils": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.2.0.tgz", - "integrity": "sha512-5EwsCNhfFTZvUreQhx/4vVQpJ/lnCAkgoIHLhSpp4ZirE+4hzFvdJi0FMub6hxbFVBJYSpeVVmon+2e7uEGRrA==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.4.1.tgz", + "integrity": "sha512-RqYLpkPZX5Oc3fw/kHHHyP56fg5Y+XBpIpV8nCg0znIALfq3OH+Ea9Hfeac9BAMwG5IICltiZ0vxFvJQONfA5w==", "dev": true, "requires": { "ajv": "^6.10.2", @@ -20257,9 +20257,9 @@ "dev": true }, "yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "yargs": { "version": "12.0.5", diff --git a/package.json b/package.json index 09f94c5d..bfd08570 100644 --- a/package.json +++ b/package.json @@ -50,10 +50,10 @@ "postci": "vuesion parallel \"npm run build\" \"npm run storybook:build\"" }, "dependencies": { - "@vuesion/addon-vuex-persist": "^3.0.4", - "@vuesion/models": "^3.0.4", - "@vuesion/utils": "^3.0.4", - "@vuesion/webpack": "^3.0.4", + "@vuesion/addon-vuex-persist": "^3.1.1", + "@vuesion/models": "^3.1.1", + "@vuesion/utils": "^3.1.1", + "@vuesion/webpack": "^3.1.1", "accept-language": "3.0.18", "animejs": "3.1.0", "axios": "^0.19.0", @@ -93,7 +93,7 @@ "@types/node": "10.12.24", "@types/serve-favicon": "2.2.31", "@vue/test-utils": "1.0.0-beta.28", - "@vuesion/service": "^3.0.4", + "@vuesion/service": "^3.1.1", "axios-mock-adapter": "1.17.0", "husky": "3.0.5", "identity-obj-proxy": "3.0.0", diff --git a/tslint.json b/tslint.json index 088260d0..7478b806 100644 --- a/tslint.json +++ b/tslint.json @@ -5,6 +5,7 @@ "trailing-comma": [true] }, "rules": { + "no-empty-interface": false, "interface-name": [false], "object-literal-sort-keys": false, "ordered-imports": false,