{"_id":"@connorbishop/vuex-crud","_rev":"2-85e24a2496b6ce8706347cf35a090973","name":"@connorbishop/vuex-crud","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@connorbishop/vuex-crud","version":"1.0.0","description":"A library for Vuex to build CRUD modules easily","main":"lib/index.js","repository":{"type":"git","url":"git+https://github.com/connor-bishop/vuex-crud.git"},"author":{"name":"Connor Bishop","email":"connorbishop00@gmail.com"},"license":"MIT","scripts":{"build":"npm run build:commonjs","build:commonjs":"cross-env BABEL_ENV=commonjs babel src --out-dir lib","clean":"rimraf lib coverage esdoc","doc":"mkdirp esdoc && esdoc -c esdoc.json","lint":"eslint src test examples","report":"npm run test && nyc report --reporter=lcov && codecov","test:unit":"nyc ava","test:e2e":"node test/e2e/runner.js","test":"npm run lint && npm run test:unit &&  npm run test:e2e","prepublish":"npm run clean && npm run report && npm run build && npm run doc"},"devDependencies":{"ava":"^0.24.0","axios":"^0.19.0","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^8.2.1","babel-loader":"^7.1.2","babel-polyfill":"^6.26.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","bavaria-ipsum":"^1.0.3","body-parser":"^1.18.2","chromedriver":"^76.0.0","codecov":"^3.0.0","cross-env":"^5.1.3","cross-spawn":"^6.0.3","esdoc":"^1.0.4","eslint":"^4.16.0","eslint-config-airbnb":"^16.1.0","eslint-plugin-html":"^4.0.2","eslint-plugin-import":"^2.8.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-react":"^7.6.0","express":"^4.16.2","growl":"^1.10.3","mkdirp":"^0.5.1","nightwatch":"^1.2.1","nyc":"^14.1.1","phantomjs-prebuilt":"^2.1.16","rimraf":"^2.6.2","sinon":"^4.2.1","vue":"^2.5.13","vue-loader":"^13.7.0","vue-router":"^3.0.1","vue-template-compiler":"^2.5.13","vuex":"^3.0.1","vuex-router-sync":"^5.0.0","webpack":"^3.10.0","webpack-dev-middleware":"^2.0.4","webpack-hot-middleware":"^2.21.0"},"peerDependencies":{"axios":"^0.17","vue":"^2.5"},"ava":{"files":["test/unit/**/*.spec.js"],"source":["src/**/*.js"],"concurrency":5,"failFast":true,"tap":false,"powerAssert":false,"babel":"inherit","require":["babel-register"]},"nyc":{"include":["src/**/*.js"]},"gitHead":"9c93fa5a1b237f6f5e3e52ff1a321bdfabde0511","bugs":{"url":"https://github.com/connor-bishop/vuex-crud/issues"},"homepage":"https://github.com/connor-bishop/vuex-crud#readme","_id":"@connorbishop/vuex-crud@1.0.0","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-PYtMNNCLrOqra4UvJpHeoWYHrmDGg8FoUbRxOJ/TsyrelB+JJtz9FTwWratcWmTH59/9+P/eQfgf3EAJu7r2kw==","shasum":"c0f0ed46d42f45875520b770f60edd75587e57d0","tarball":"https://registry.npmjs.org/@connorbishop/vuex-crud/-/vuex-crud-1.0.0.tgz","fileCount":15,"unpackedSize":67027,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdVGVyCRA9TVsSAnZWagAAfcEP/1MqR6x7m1cosp6xRJGN\nuJpzSY2UIbykxm/dA3QjBOtbPe6pt4Y00WRZqNb75JZlyYoGh5NgUTzHDcEt\ncw9/qZD2mJ40bO333Bl0CL2S5XZfG/Hc1B57Vycuvg0WRksD48MHZBpZ2E2B\ntj92kFY/1fiZ9YYmwlxXngcX8X30NSkCOp7+p4RKoF8cc2EWquebigwlDCln\nzXOwX1ESYmgn2N73XgFrlgZ5xK/3SlZI6vARU/akPG7Dh1xX6agNsjmtNHte\nzz/rE06h6Fp/sIyBuBcKvXQPibFdXmdRO979LLIg4q39qtI4PZQttCsyUD8e\neIgqUt18+SY5IdkWhIJc9pWGxT+uFmQIlnWqkr2YSvs5gd0yfkf9msfuACEf\nO47YiH4pCKDhPbyuTyZQgUKDmujjVuhCH1PAggULwG7j7l1Qykwhgo+FiVmB\nigZefvOKpajyn32ShJZHt0un+azfbJzY9D8Cz3QP+jaBbG08Rr/QTa0GohLO\noa/2zard+RM1jopRYm4dBaipUVhThxBEqnLDeAQlxmJVimHHKZT8yXTNMCfB\nUuo97kYC3f1KuodO5wBvjKZPuQ5XALqT4DicZAAPvjPw14Y7bp21E1zH8PhX\n1KtRznw3wrwHlcr2J5uIknPRdEzgbe2Z5F4jllBe0t/HAMAjfMu2irFuWhnV\nofgZ\r\n=dFjG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCwIPDEunxLKp+27ZITx4EKzY1aHpXpFfX75x4IWkXQjgIgZoj/M3WBKN6JbgI0+tQmebu9ditzjmkCbpoo4jrmSVk="}]},"maintainers":[{"name":"connorbishop","email":"connorbishop00@gmail.com"}],"_npmUser":{"name":"connorbishop","email":"connorbishop00@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vuex-crud_1.0.0_1565812081809_0.5340135876817456"},"_hasShrinkwrap":false},"1.0.1":{"name":"@connorbishop/vuex-crud","version":"1.0.1","description":"A library for Vuex to build CRUD modules easily","main":"lib/index.js","repository":{"type":"git","url":"git+https://github.com/connor-bishop/vuex-crud.git"},"author":{"name":"Connor Bishop","email":"connorbishop00@gmail.com"},"license":"MIT","scripts":{"build":"npm run build:commonjs","build:commonjs":"cross-env BABEL_ENV=commonjs babel src --out-dir lib","clean":"rimraf lib coverage esdoc","doc":"mkdirp esdoc && esdoc -c esdoc.json","lint":"eslint src test examples","report":"npm run test && nyc report --reporter=lcov && codecov","test:unit":"nyc ava","test:e2e":"node test/e2e/runner.js","test":"npm run lint && npm run test:unit &&  npm run test:e2e","prepublish":"npm run clean && npm run report && npm run build && npm run doc"},"devDependencies":{"ava":"^0.24.0","axios":"^0.19.0","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^8.2.1","babel-loader":"^7.1.2","babel-polyfill":"^6.26.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","bavaria-ipsum":"^1.0.3","body-parser":"^1.18.2","chromedriver":"^76.0.0","codecov":"^3.0.0","cross-env":"^5.1.3","cross-spawn":"^6.0.3","esdoc":"^1.0.4","eslint":"^4.16.0","eslint-config-airbnb":"^16.1.0","eslint-plugin-html":"^4.0.2","eslint-plugin-import":"^2.8.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-react":"^7.6.0","express":"^4.16.2","growl":"^1.10.3","mkdirp":"^0.5.1","nightwatch":"^1.2.1","nyc":"^14.1.1","phantomjs-prebuilt":"^2.1.16","rimraf":"^2.6.2","sinon":"^4.2.1","vue":"^2.5.13","vue-loader":"^13.7.0","vue-router":"^3.0.1","vue-template-compiler":"^2.5.13","vuex":"^3.0.1","vuex-router-sync":"^5.0.0","webpack":"^3.10.0","webpack-dev-middleware":"^2.0.4","webpack-hot-middleware":"^2.21.0"},"peerDependencies":{"axios":"^0.17","vue":"^2.5"},"ava":{"files":["test/unit/**/*.spec.js"],"source":["src/**/*.js"],"concurrency":5,"failFast":true,"tap":false,"powerAssert":false,"babel":"inherit","require":["babel-register"]},"nyc":{"include":["src/**/*.js"]},"gitHead":"9c93fa5a1b237f6f5e3e52ff1a321bdfabde0511","bugs":{"url":"https://github.com/connor-bishop/vuex-crud/issues"},"homepage":"https://github.com/connor-bishop/vuex-crud#readme","_id":"@connorbishop/vuex-crud@1.0.1","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-FfqAVFYaEtKJuDE3MgkNZqh4deS6YbSqAMyXJvuKj9MvFk91x14DAGZfmW9+wjJ//V+m73bbANGyLXeh0jK9pg==","shasum":"1d873e3e591f4219204e04bd5ead36e39787afdd","tarball":"https://registry.npmjs.org/@connorbishop/vuex-crud/-/vuex-crud-1.0.1.tgz","fileCount":15,"unpackedSize":67409,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdr1k5CRA9TVsSAnZWagAATjwQAJFK7rwqqo1hNNAq5/bh\nHEBbfhvEBeP8gNcCGvANQkDavG+1PW+Mmlu3Bhh+Yl4lbh0umPZ4K9bkONJD\nZfrKsjjyPe+P+zwXD0lnBF1h0TEcPLSYB7Fm8Ojgg+uoMlymQ9vDVyHO2rr1\nu9hbtblyw0LFbsmRqjnPqyT86TEyC9/AeN7I7SzTMC4Y4Q40Db782dRZ4mBQ\nabboSlZj8EcNEeM++VM1cLCgzezkxmvwoLQ3loCIRbIc7muhyPWXa020yqbU\nPCteTIK3LZqInGnDJs577vOLnCPgUMfK5RsSSsd75F4DeEWFbd8qKugwxKq1\nH22HBjfF/La1ULwQUMyHtX9RQPBd8+xsSYAB7JcHPdfqRKbbpIf/rY1Z+Cj1\nxuF1a4//fhFhLqpeY1t6uswj/YR19RL3xX/FwLfy2g5/YMCzg9w1bgQR3cI1\nCvqDrmcA7oVIht3kR/gWsF7dIXn5pb/1XtysFFQEDeSxEma4o1Sxp6NDnFW5\nF8rkBHdFSgi5A2uRWECuAaZUeFw2SPDU3p8KV1ZErBCO6wUQTDOTuUpFs8Dx\nY8Z5mYUDu/z+e9M3CAUcnQMlkHRzBYc7ngOAmHFuAECl/Mb8HxLgaQv6knYc\nbzmTmaaiCAOpqgTxSFjhHSg3b76Dh2h2e/9gU2S9LP0tETAto8nD144vW5e0\nICyU\r\n=zrOX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA0efi07A1nx8Itjc6jNfAFOa1KOtT1SmJy1DVLwWVOVAiAfPNVLgM5v+7rQIzay+dQrnuCWAiJSqvgnCkUgUkCVbA=="}]},"maintainers":[{"name":"connorbishop","email":"connorbishop00@gmail.com"}],"_npmUser":{"name":"connorbishop","email":"connorbishop00@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vuex-crud_1.0.1_1571772728492_0.7124458852282805"},"_hasShrinkwrap":false}},"time":{"created":"2019-08-14T19:48:01.556Z","1.0.0":"2019-08-14T19:48:01.959Z","modified":"2022-04-05T00:57:33.111Z","1.0.1":"2019-10-22T19:32:08.648Z"},"maintainers":[{"name":"connorbishop","email":"connorbishop00@gmail.com"}],"description":"A library for Vuex to build CRUD modules easily","homepage":"https://github.com/connor-bishop/vuex-crud#readme","repository":{"type":"git","url":"git+https://github.com/connor-bishop/vuex-crud.git"},"author":{"name":"Connor Bishop","email":"connorbishop00@gmail.com"},"bugs":{"url":"https://github.com/connor-bishop/vuex-crud/issues"},"license":"MIT","readme":"# Vuex-CRUD\n\n[![Build Status](https://travis-ci.org/JiriChara/vuex-crud.svg?branch=master)](https://travis-ci.org/JiriChara/vuex-crud)\n[![codecov](https://codecov.io/gh/JiriChara/vuex-crud/branch/master/graph/badge.svg)](https://codecov.io/gh/JiriChara/vuex-crud)\n[![npm](https://img.shields.io/npm/v/vuex-crud.svg)](https://www.npmjs.com/package/vuex-crud)\n[![npm](https://img.shields.io/npm/dm/vuex-crud.svg)](https://www.npmjs.com/package/vuex-crud)\n\n## Introduction\n\n**Vuex-CRUD** is a library for Vuex which helps you to build CRUD modules easily.\n\n## Installation\n\n```\nyarn add vuex-crud\n```\n\nOR\n\n```\nnpm install vuex-crud\n```\n\n**Vuex-CRUD** uses `Array.prototype.includes`, `Object.assign` and `Promise`. Make sure hat your project use polyfill for those if you want to support older browsers! Look at here: https://babeljs.io/docs/usage/polyfill/ for more info.\n\n## Basic Usage\n\n1) Create your first CRUD resource:\n\n```js\n// src/store/articles\n\nimport createCrudModule from 'vuex-crud';\n\nexport default createCrudModule({\n  resource: 'articles'\n});\n```\n\n2) Register your CRUD resource in your store:\n\n```js\n// src/store/index.js\n\nimport Vue from 'vue';\nimport Vuex from 'vuex';\n\nimport articles from '@/store/articles';\n\nVue.use(Vuex);\n\nexport default new Vuex.Store({\n  state: {},\n\n  modules: {\n    articles\n  }\n});\n```\n\n3) Use it in your components:\n\n```vue\n<!-- src/components/Articles -->\n\n<template>\n  <main>\n    <article v-for=\"article in articleList\">\n      <h1>{{ article.title }}</h1>\n      <p>{{ article.content }}</p>\n    </article>\n  </main>\n</template>\n\n<script>\n  import { mapGetters, mapActions, mapState } from 'vuex';\n\n  export default {\n    name: 'articles',\n\n    computed: {\n      ...mapGetters('articles', {\n        articleList: 'list'\n      }),\n\n      ...mapState([\n        'route', // vuex-router-sync\n      ]),\n    },\n\n    methods: {\n      ...mapActions('articles', {\n        fetchArticles: 'fetchList'\n      }),\n\n      fetchData() {\n        return this.fetchArticles();\n      }\n    },\n\n    watch: {\n      $route: 'fetchData',\n    },\n\n    created() {\n      this.fetchData();\n    }\n  };\n</script>\n```\n\n```vue\n<!-- src/components/Article -->\n\n<template>\n  <main>\n    <article v-if=\"currentArticle\">\n      <h1>{{ currentArticle.title }}</h1>\n      <p>{{ currentArticle.content }}</p>\n    </article>\n  </main>\n</template>\n\n<script>\n  import { mapGetters, mapActions, mapState } from 'vuex';\n\n  export default {\n    name: 'article',\n\n    computed: {\n      ...mapGetters('articles', {\n        articleById: 'byId'\n      }),\n\n      ...mapState([\n        'route', // vuex-router-sync\n      ]),\n\n      currentArticle() {\n        return this.articleById(this.route.params.id);\n      }\n    },\n\n    methods: {\n      ...mapActions('articles', {\n        fetchArticle: 'fetchSingle'\n      }),\n\n      fetchData() {\n        return this.fetchArticle({\n          id: this.route.params.id\n        });\n      }\n    },\n\n    watch: {\n      $route: 'fetchData',\n    },\n\n    created() {\n      this.fetchData();\n    }\n  };\n</script>\n```\n\n## Advanced Usage\n\nThe following options are available when creating new Vuex-CRUD module:\n\n```js\nimport createCrudModule, { client } from 'vuex-crud';\n\nexport default createCrudModule({\n  resource: 'articles', // The name of your CRUD resource (mandatory)\n  idAttribute: 'id', // What should be used as ID\n  urlRoot: '/api/articles', // The url to fetch the resource\n  state: {}, // Initial state. It will override state generated by Vuex-CRUD\n  actions: {}, // Initial actions It will override actions generated by Vuex-CRUD\n  mutations: {}, // Initial mutations. It will override mutations generated by Vuex-CRUD\n  getters: {}, // Initial getters. It will override getters generated by Vuex-CRUD\n  client, // Axios client that should be used for API request\n  onFetchListStart: () => {}, // Callback for collection GET start\n  onFetchListSuccess: () => {}, // Callback for collection GET success\n  onFetchListError: () => {}, // Callback for collection GET error\n  onFetchSingleStart: () => {}, // Callback for single GET start\n  onFetchSingleSuccess: () => {}, // Callback for single GET success\n  onFetchSingleError: () => {}, // Callback for single GET error\n  onCreateStart: () => {}, // Callback for POST start\n  onCreateSuccess: () => {}, // Callback for POST success\n  onCreateError: () => {}, // Callback for POST error\n  onUpdateStart: () => {}, // Callback for PATCH start\n  onUpdateSuccess: () => {}, // Callback for PATCH success\n  onUpdateError: () => {}, // Callback for PATCH error\n  onBatchUpdateStart: () => {}, // Callback for PATCH start (BATCH MODE)\n  onBatchUpdateSuccess: () => {}, // Callback for PATCH success (BATCH MODE)\n  onBatchUpdateError: () => {}, // Callback for PATCH error (BATCH MODE)\n  onReplaceStart: () => {}, // Callback for PUT start\n  onReplaceSuccess: () => {}, // Callback for PUT success\n  onReplaceError: () => {}, // Callback for PUT error\n  onDestroyStart: () => {}, // Callback for DELETE start\n  onDestroySuccess: () => {}, // Callback for DELETE success\n  onDestroyError: () => {}, // Callback for DELETE error\n  only: [\n    'FETCH_LIST',\n    'FETCH_SINGLE',\n    'CREATE',\n    'UPDATE',\n    'BATCH_UPDATE',\n    'REPLACE',\n    'DESTROY'\n  ], // What CRUD actions should be available\n  parseList: res => res, // Method used to parse collection\n  parseSingle: res => res, // Method used to parse single resource\n  parseError: res => res // Method used to parse error\n});\n```\n\n### Nested Resources\n\n**Vuex-CRUD** is designed mainly for flatten APIs like:\n\n```\n/api/articles/\n/api/users/1\n/api/pages?byBook=1\n```\n\nbut it also supports nested resources like:\n\n```\n/api/books/1/pages/10\n/api/users/john/tasks/15\n```\n\nHowever your store will always be flattened and will look similar to this:\n\n```js\n{\n  books: {\n    entities: {\n      '1': {\n        // ...\n      }\n    }\n  },\n  pages: {\n    entities: {\n      '1': {\n        // ...\n      },\n      '2': {\n        // ...\n      },\n      '3': {\n        // ...\n      }\n    },\n    list: ['1', '2', '3']\n  },\n}\n```\n\nThere are 2 possible ways to implement provide custom URL:\n\n1) Provide custom url for each request:\n\n```js\nfetchList({ customUrl: '/api/books/1/pages' });\nfetchSingle({ customUrl: '/api/books/1/pages/1' });\ncreate({ data: { content: '...' }, customUrl: '/api/books/1/pages' });\nupdate({ data: { content: '...' }, customUrl: '/api/books/1/pages/1' });\nbatchUpdate({ data: { content: '...' }, customUrl: '/api/books/1/pages' });\nreplace({ data: { content: '...' }, customUrl: '/api/books/1/pages/1' });\ndestroy({ customUrl: '/api/books/1/pages/1' });\n```\n\n2) Define a getter for custom url:\n\n```js\nimport createCrudModule from 'vuex-crud';\n\nexport default createCrudModule({\n  resource: 'pages',\n  customUrlFn(id, type, bookId) {\n    // id will only be available when doing request to single resource, otherwise null\n    // type is the actions you are dispatching: FETCH_LIST, FETCH_SINGLE, CREATE, UPDATE, REPLACE, DESTROY\n    const rootUrl = `/api/books/${bookId}`;\n    return id ? `rootUrl/${id}` : rootUrl;\n  }\n});\n```\n\nand your requests will look this:\n\n```js\nconst id = 2;\nconst bookId = 1;\n\nfetchList({ customUrlFnArgs: bookId });\nfetchSingle({ id, customUrlFnArgs: bookId });\ncreate({ data: { content: '...' }, customUrlFnArgs: bookId });\nupdate({ id, data: { content: '...' }, customUrlFnArgs: bookId });\nbatchUpdate({ data: { content: '...' }, customUrlFnArgs: bookId });\nreplace({ id, data: { content: '...' }, customUrlFnArgs: bookId });\ndestroy({ id, customUrlFnArgs: bookId });\n```\n\n\n### Custom client\n\n**Vuex-CRUD** is using axios for API requests. If you want to customize interceptors or something else, then you can do following:\n\n```js\nimport createCrudModule, { client } from 'vuex-crud';\nimport authInterceptor from './authInterceptor';\n\nclient.interceptors.request.use(authInterceptor);\n\ncreateCrudModule({\n  resource: 'comments',\n  client\n});\n```\n\n### Parsing Data from Your API\n\nYou can provide a custom methods to parse data from your API:\n\n```js\nimport createCrudModule from 'vuex-crud';\n\ncreateCrudModule({\n  resource: 'articles',\n\n  parseList(response) {\n    const { data } = response;\n\n    return Object.assign({}, response, {\n      data: data.result // expecting array of objects with IDs\n    });\n  },\n\n  parseSingle(response) {\n    const { data } = response;\n\n    return Object.assign({}, response, {\n      data: data.result // expecting object with ID\n    });\n  }\n});\n```\n\n### Getters\n\nVuex-CRUD ships with following getters:\n\n* `list()` returns list of resources\n* `byId(id)` returns resource by ID\n\n### Actions\n\nVuex-CRUD ships with following actions (config is configuration for axios):\n\n```js\n{\n  // GET /api/<resourceName>\n  fetchList({ commit }, { config } = {}) {\n    // ...\n  },\n\n  // GET /api/<resourceName>/:id\n  fetchSingle({ commit }, { id, config } = {}) {\n    // ...\n  },\n\n  // POST /api/<resourceName>\n  create({ commit }, { data, config } = {}) {\n    // ...\n  },\n\n  // PATCH /api/<resouceName>/:id\n  update({ commit }, { id, data, config } = {}) {\n    // ...\n  },\n\n  // PATCH /api/<resouceName>\n  batchUpdate({ commit }, { data, config } = {}) {\n    // ...\n  },\n\n  // PUT /api/<resouceName>/:id\n  replace({ commit }, { id, data, config } = {}) {\n    // ...\n  },\n\n  // DELETE /api/<resouceName>/:id\n  destroy({ commit }, { id, config } = {}) {\n    // ...\n  },\n}\n```\n\n## Usage with Nuxt\n\n`vuex-crud` works with Nuxt modules system as well. You can simply define your Nuxt modules as following:\n\n```js\nimport createCRUDModule from 'vuex-crud';\n\nconst crudModule = createCRUDModule({\n  resource: 'articles'\n});\n\nconst state = () => crudModule.state;\n\nconst { actions, mutations, getters } = crudModule;\n\nexport {\n  state,\n  actions,\n  mutations,\n  getters\n};\n```\n\nand then use it in your component:\n\n```js\nexport default {\n  computed: {\n    ...mapGetters('articles', {\n      articleList: 'list'\n    })\n  },\n\n  fetch({ store }) {\n    store.dispatch('articles/fetchList');\n  }\n};\n```\n\n## License\n\nThe MIT License (MIT) - See file 'LICENSE' in this project\n\n## Copyright\n\nCopyright © 2017 Jiří Chára. All Rights Reserved.\n","readmeFilename":"README.md"}