├── .babelrc
├── .eslintignore
├── .eslintrc.js
├── .gitignore
├── .npmignore
├── .npmrc
├── LICENSE
├── README.md
├── dist
├── index.js
└── mixin.js
├── es
├── index.js
└── mixin.js
├── example
├── index.html
└── server.js
├── package-lock.json
├── package.json
├── rollup.config.js
├── src
├── index.js
├── mixin.js
└── umd.js
├── tests
└── unit
│ ├── .eslintrc.js
│ ├── actions.test.js
│ ├── index.test.js
│ ├── mixin.test.js
│ ├── mutations.test.js
│ ├── state.test.js
│ └── types.test.js
├── umd
├── vuex-async-module.js
├── vuex-async-module.js.map
├── vuex-async-module.min.js
└── vuex-async-module.min.js.map
└── yarn.lock
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | ["env", {
4 | "loose": true,
5 | "modules": false
6 | }]
7 | ],
8 | "plugins": ["transform-object-rest-spread"],
9 | "env": {
10 | "cjs": {
11 | "presets": [
12 | ["env", {
13 | "loose": true,
14 | "modules": "commonjs"
15 | }]
16 | ],
17 | "plugins": ["add-module-exports"]
18 | },
19 | "rollup": {
20 | "plugins": ["external-helpers"]
21 | },
22 | "test": {
23 | "presets": [
24 | ["env", {
25 | "loose": true,
26 | "modules": "commonjs",
27 | "targets": { "node": "current" }
28 | }]
29 | ],
30 | "plugins": ["transform-es2015-modules-commonjs"]
31 | }
32 | }
33 | }
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | dist
2 | es
3 | umd
4 | node_modules
5 | *.conf.js
6 | *.config.js
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | extends: ['plugin:vue-libs/recommended'],
3 | root: true,
4 | // https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style
5 | parserOptions: {
6 | sourceType: 'module'
7 | },
8 | env: {
9 | 'browser': true,
10 | },
11 | // add your custom rules here
12 | 'rules': {
13 | // allow paren-less arrow functions
14 | 'arrow-parens': 0,
15 | // allow debugger during development
16 | 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
17 | 'no-unused-vars': 1,
18 | 'camelcase': 0,
19 | 'space-before-function-paren': 0,
20 | }
21 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 |
6 | # Runtime data
7 | pids
8 | *.pid
9 | *.seed
10 |
11 | # Directory for instrumented libs generated by jscoverage/JSCover
12 | lib-cov
13 |
14 | # Coverage directory used by tools like istanbul
15 | coverage
16 |
17 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
18 | .grunt
19 |
20 | # node-waf configuration
21 | .lock-wscript
22 |
23 | # Compiled binary addons (http://nodejs.org/api/addons.html)
24 | build/Release
25 |
26 | # Dependency directory
27 | node_modules
28 | .idea
29 | .vscode
30 | *.sublime-workspace
31 | *.sublime-project
32 |
33 | # Optional npm cache directory
34 | .npm
35 |
36 | # Optional REPL history
37 | .node_repl_history
38 |
39 | # Windows
40 | Thumbs.db
41 | ehthumbs.db
42 | Desktop.ini
43 | $RECYCLE.BIN/
44 |
45 | #Mac
46 | .DS_Store
47 | .DS_Store?
48 | .AppleDouble
49 | .LSOverride
50 | Icon
51 | ._*
52 | .Spotlight-V100
53 | .Trashes
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | *.log
3 | test
4 | examples
5 | .babelrc
6 | .editorconfig
7 | .eslintrc.js
8 | rollup.*
--------------------------------------------------------------------------------
/.npmrc:
--------------------------------------------------------------------------------
1 | save-exact=true
2 | tag-version-prefix=""
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2017-2018 Lorenzo Girardi
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # vuex-async-module
2 |
3 | > Reduce async boilerplate code generating [Vuex](http://vuex.vuejs.org) modules. Compatible with Vue 2.x
4 |
5 | ## Installation
6 | ``` bash
7 | npm install @liqueflies/vuex-async-module --save
8 | # or
9 | yarn add @liqueflies/vuex-async-module
10 | ```
11 |
12 | ## Introduction
13 |
14 | `vuex-async-module` generates [Vuex Modules](https://vuex.vuejs.org/en/modules.html) reducing boilerplate for asynchronous request, inspired by this [post](https://medium.com/@lachlanmiller_52885/reducing-vuex-boilerplate-for-ajax-calls-1cd4a74cef26) of [Lachlan Miller](https://twitter.com/Lachlan06036367).
15 |
16 | ### Behind the idea
17 |
18 | The workflow for a successful asynchronous request should be like:
19 |
20 | ```js
21 | state = {
22 | isPending: true // pending... show a spinner
23 | statusCode: null,
24 | data: null,
25 | errors: null
26 | }
27 | // some time later... the ajax request is successful
28 | state = {
29 | isPending: false, // no longer pending
30 | statusCode: 200, // success code 200
31 | data: {...}, // response data
32 | errors: null // no errors
33 | }
34 | ```
35 |
36 | Standard Vuex code should write also `types`, `actions`, `mutations`, and `getters` for each async action.
37 |
38 | We can notice that in many cases we will write the same code over and over again.
39 |
40 | `vuex-async-module` will scaffold this code for you.
41 |
42 | ## Basic usage
43 |
44 | ```js
45 | import getAsyncModule from '@liqueflies/vuex-async-module'
46 |
47 | export default new Vuex.Store({
48 | state, // your state,
49 | actions, // your actions
50 | getters, // your getters
51 | mutations, // your mutations
52 | modules: {
53 | // use a promise async library that return data and status on response
54 | movies: getAsyncModule({ xhr: axios.get })
55 | }
56 | })
57 | ```
58 |
59 | and then in your `.vue`
60 |
61 | ```js
62 | import { asyncModuleMixin } from '@liqueflies/vuex-async-module'
63 |
64 | export default {
65 | // component `name` is the same as module name
66 | name: 'movies',
67 | // include mixin for automatically bind two computed props:
68 | // [componentName]RequestIsPending i.e moviesRequestIsPending
69 | // [componentName] i.e. movies
70 | // and a method!
71 | // getAsync[componentName] i.e. getAsyncMovies(url, forceUpdate)
72 | mixins: [asyncModuleMixin],
73 | // place this call where you prefer, here we will use `beforeMount`
74 | beforeMount () {
75 | this.getAsyncMovies({ url: 'https://ghibliapi.herokuapp.com/films' })
76 | }
77 | }
78 | ```
79 |
80 | and in the template
81 |
82 | ```html
83 |
84 |
85 | -
86 |
{{ movie.title }} - {{ movie.release_date }}
87 |
88 |
89 | ```
90 |
91 | ## Documentation
92 |
93 | `vuex-async-module` has only one constrain: `component` name must be the same of `module` name.
94 |
95 | `vuex-async-module` mixin adds two `computed` properties:
96 |
97 | - [`componentName`]RequestIsPending - i.e `moviesRequestIsPending`
98 | - [`componentName`] - i.e. `movies`
99 |
100 | and a `method`
101 |
102 | - getAsync[`componentName`] i.e. getAsyncMovies
103 |
104 | `getAsync` expects to receive the url for the ajax call, and a boolean parameter to force the update of the previous fetched data.
105 |
106 | And the job is done!
107 |
108 | ## Contributors
109 |
110 | Thanks to [Marco Solazzi](https://github.com/dwightjack) and [Giovanni Rodighiero](https://github.com/giovanniRodighiero).
111 |
112 | ## License
113 |
114 | [MIT](http://opensource.org/licenses/MIT)
115 |
116 | Copyright (c) 2017 Lorenzo Girardi
--------------------------------------------------------------------------------
/dist/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | exports.__esModule = true;
4 | exports.asyncModuleMixin = undefined;
5 | exports.getDefaultState = getDefaultState;
6 | exports.getDefaultTypes = getDefaultTypes;
7 | exports.getDefaultMutations = getDefaultMutations;
8 | exports.getDefaultActions = getDefaultActions;
9 | exports.default = getAsyncModule;
10 |
11 | var _mixin = require('./mixin');
12 |
13 | var _mixin2 = _interopRequireDefault(_mixin);
14 |
15 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16 |
17 | exports.asyncModuleMixin = _mixin2.default;
18 | function getDefaultState() {
19 | return {
20 | isPending: true,
21 | statusCode: null,
22 | data: null,
23 | errors: null
24 | };
25 | }
26 |
27 | function getDefaultTypes() {
28 | return {
29 | SET_RESPONSE_DATA: 'SET_RESPONSE_DATA',
30 | SET_IS_PENDING: 'SET_IS_PENDING',
31 | SET_STATUS_CODE: 'SET_STATUS_CODE',
32 | SET_ERRORS: 'SET_ERRORS'
33 | };
34 | }
35 |
36 | function getDefaultMutations() {
37 | var _ref;
38 |
39 | var types = getDefaultTypes();
40 | return _ref = {}, _ref[types.SET_RESPONSE_DATA] = function (state, data) {
41 | state.data = data;
42 | return state.data;
43 | }, _ref[types.SET_IS_PENDING] = function (state, isPending) {
44 | state.isPending = isPending;
45 | return state.isPending;
46 | }, _ref[types.SET_STATUS_CODE] = function (state, status) {
47 | state.statusCode = status;
48 | return state.statusCode;
49 | }, _ref[types.SET_ERRORS] = function (state, errors) {
50 | state.errors = errors;
51 | return state.errors;
52 | }, _ref;
53 | }
54 |
55 | function getDefaultActions(xhr) {
56 | var _getDefaultTypes = getDefaultTypes(),
57 | SET_RESPONSE_DATA = _getDefaultTypes.SET_RESPONSE_DATA,
58 | SET_IS_PENDING = _getDefaultTypes.SET_IS_PENDING,
59 | SET_STATUS_CODE = _getDefaultTypes.SET_STATUS_CODE,
60 | SET_ERRORS = _getDefaultTypes.SET_ERRORS;
61 |
62 | return {
63 | getAsync: function getAsync(_ref2, _ref3) {
64 | var state = _ref2.state,
65 | commit = _ref2.commit;
66 | var url = _ref3.url,
67 | _ref3$forceUpdate = _ref3.forceUpdate,
68 | forceUpdate = _ref3$forceUpdate === undefined ? false : _ref3$forceUpdate;
69 |
70 | if (state.isPending || forceUpdate) {
71 | return xhr(url).then(function (response) {
72 | commit(SET_RESPONSE_DATA, response.data);
73 | commit(SET_STATUS_CODE, response.status);
74 | commit(SET_IS_PENDING, false);
75 | }).catch(function (response) {
76 | commit(SET_ERRORS, response.errors);
77 | commit(SET_STATUS_CODE, response.status);
78 | commit(SET_IS_PENDING, false);
79 | });
80 | } else {
81 | return Promise.resolve(null);
82 | }
83 | }
84 | };
85 | }
86 |
87 | function getAsyncModule() {
88 | var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
89 |
90 | var opts = Object.assign({}, options); // for extensibility
91 | if (opts.xhr === undefined) {
92 | throw new TypeError('You must provide a valid XHR transport library in `options.xhr`');
93 | }
94 | return {
95 | namespaced: true,
96 | state: getDefaultState(),
97 | mutations: getDefaultMutations(),
98 | actions: getDefaultActions(opts.xhr)
99 | };
100 | }
--------------------------------------------------------------------------------
/dist/mixin.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | exports.__esModule = true;
4 |
5 | var _lodash = require('lodash.camelcase');
6 |
7 | var _lodash2 = _interopRequireDefault(_lodash);
8 |
9 | var _lodash3 = require('lodash.upperfirst');
10 |
11 | var _lodash4 = _interopRequireDefault(_lodash3);
12 |
13 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14 |
15 | exports.default = {
16 | beforeCreate: function beforeCreate() {
17 | var _Object$assign, _Object$assign2;
18 |
19 | var name = this.$options.name;
20 |
21 | this.$options.computed = Object.assign({}, this.$options.computed, (_Object$assign = {}, _Object$assign[name] = function () {
22 | return this.$store.state[name].data;
23 | }, _Object$assign[name + 'RequestIsPending'] = function undefined() {
24 | return this.$store.state[name].isPending;
25 | }, _Object$assign));
26 | this.$options.methods = Object.assign({}, this.$options.methods, (_Object$assign2 = {}, _Object$assign2['getAsync' + (0, _lodash4.default)((0, _lodash2.default)(name))] = function undefined() {
27 | var _$store;
28 |
29 | return (_$store = this.$store).dispatch.apply(_$store, [name + '/getAsync'].concat(Array.prototype.slice.call(arguments)));
30 | }, _Object$assign2));
31 | }
32 | };
33 | module.exports = exports['default'];
--------------------------------------------------------------------------------
/es/index.js:
--------------------------------------------------------------------------------
1 | import asyncModuleMixin from './mixin';
2 |
3 | export { asyncModuleMixin };
4 |
5 | export function getDefaultState() {
6 | return {
7 | isPending: true,
8 | statusCode: null,
9 | data: null,
10 | errors: null
11 | };
12 | }
13 |
14 | export function getDefaultTypes() {
15 | return {
16 | SET_RESPONSE_DATA: 'SET_RESPONSE_DATA',
17 | SET_IS_PENDING: 'SET_IS_PENDING',
18 | SET_STATUS_CODE: 'SET_STATUS_CODE',
19 | SET_ERRORS: 'SET_ERRORS'
20 | };
21 | }
22 |
23 | export function getDefaultMutations() {
24 | var _ref;
25 |
26 | var types = getDefaultTypes();
27 | return _ref = {}, _ref[types.SET_RESPONSE_DATA] = function (state, data) {
28 | state.data = data;
29 | return state.data;
30 | }, _ref[types.SET_IS_PENDING] = function (state, isPending) {
31 | state.isPending = isPending;
32 | return state.isPending;
33 | }, _ref[types.SET_STATUS_CODE] = function (state, status) {
34 | state.statusCode = status;
35 | return state.statusCode;
36 | }, _ref[types.SET_ERRORS] = function (state, errors) {
37 | state.errors = errors;
38 | return state.errors;
39 | }, _ref;
40 | }
41 |
42 | export function getDefaultActions(xhr) {
43 | var _getDefaultTypes = getDefaultTypes(),
44 | SET_RESPONSE_DATA = _getDefaultTypes.SET_RESPONSE_DATA,
45 | SET_IS_PENDING = _getDefaultTypes.SET_IS_PENDING,
46 | SET_STATUS_CODE = _getDefaultTypes.SET_STATUS_CODE,
47 | SET_ERRORS = _getDefaultTypes.SET_ERRORS;
48 |
49 | return {
50 | getAsync: function getAsync(_ref2, _ref3) {
51 | var state = _ref2.state,
52 | commit = _ref2.commit;
53 | var url = _ref3.url,
54 | _ref3$forceUpdate = _ref3.forceUpdate,
55 | forceUpdate = _ref3$forceUpdate === undefined ? false : _ref3$forceUpdate;
56 |
57 | if (state.isPending || forceUpdate) {
58 | return xhr(url).then(function (response) {
59 | commit(SET_RESPONSE_DATA, response.data);
60 | commit(SET_STATUS_CODE, response.status);
61 | commit(SET_IS_PENDING, false);
62 | }).catch(function (response) {
63 | commit(SET_ERRORS, response.errors);
64 | commit(SET_STATUS_CODE, response.status);
65 | commit(SET_IS_PENDING, false);
66 | });
67 | } else {
68 | return Promise.resolve(null);
69 | }
70 | }
71 | };
72 | }
73 |
74 | export default function getAsyncModule() {
75 | var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
76 |
77 | var opts = Object.assign({}, options); // for extensibility
78 | if (opts.xhr === undefined) {
79 | throw new TypeError('You must provide a valid XHR transport library in `options.xhr`');
80 | }
81 | return {
82 | namespaced: true,
83 | state: getDefaultState(),
84 | mutations: getDefaultMutations(),
85 | actions: getDefaultActions(opts.xhr)
86 | };
87 | }
--------------------------------------------------------------------------------
/es/mixin.js:
--------------------------------------------------------------------------------
1 | import camelCase from 'lodash.camelcase';
2 | import upperFirst from 'lodash.upperfirst';
3 |
4 | export default {
5 | beforeCreate: function beforeCreate() {
6 | var _Object$assign, _Object$assign2;
7 |
8 | var name = this.$options.name;
9 |
10 | this.$options.computed = Object.assign({}, this.$options.computed, (_Object$assign = {}, _Object$assign[name] = function () {
11 | return this.$store.state[name].data;
12 | }, _Object$assign[name + 'RequestIsPending'] = function undefined() {
13 | return this.$store.state[name].isPending;
14 | }, _Object$assign));
15 | this.$options.methods = Object.assign({}, this.$options.methods, (_Object$assign2 = {}, _Object$assign2['getAsync' + upperFirst(camelCase(name))] = function undefined() {
16 | var _$store;
17 |
18 | return (_$store = this.$store).dispatch.apply(_$store, [name + '/getAsync'].concat(Array.prototype.slice.call(arguments)));
19 | }, _Object$assign2));
20 | }
21 | };
--------------------------------------------------------------------------------
/example/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Basic Example
6 |
7 |
8 | Basic Example
9 |
10 |
11 |
12 |
13 |
14 |
15 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/example/server.js:
--------------------------------------------------------------------------------
1 | const path = require('path')
2 | const exec = require('child_process').exec
3 | const Express = require('express')
4 |
5 | const app = new Express()
6 | const port = 3000
7 |
8 | app.use(Express.static('umd'))
9 |
10 | app.get('/*', (req, res) => {
11 | res.sendFile(path.join(__dirname, 'index.html'))
12 | })
13 |
14 | app.listen(port, error => {
15 | /* eslint-disable no-console */
16 | if (error) {
17 | console.error(error)
18 | } else {
19 | console.info(
20 | '🌎 Listening on port %s. Open up http://localhost:%s/ in your browser.',
21 | port,
22 | port
23 | )
24 | }
25 | /* eslint-enable no-console */
26 | })
27 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@liqueflies/vuex-async-module",
3 | "version": "0.0.5",
4 | "description": "vuex async module generator.",
5 | "main": "dist/index.js",
6 | "author": {
7 | "name": "Lorenzo Girardi",
8 | "url": "https://github.com/liqueflies"
9 | },
10 | "contributors": [
11 | {
12 | "name": "Marco Solazzi",
13 | "url": "https://github.com/dwightjack"
14 | },
15 | {
16 | "name": "Giovanni Rodighiero",
17 | "url": "https://github.com/giovanniRodighiero"
18 | }
19 | ],
20 | "homepage": "https://github.com/liqueflies/vuex-async-module",
21 | "unpkg": "umd/vuex-async-module.min.js",
22 | "jsnext:main": "es/index.js",
23 | "module": "es/index.js",
24 | "files": [
25 | "dist",
26 | "es",
27 | "src",
28 | "umd"
29 | ],
30 | "scripts": {
31 | "prepublishOnly": "npm run build",
32 | "build": "npm run lint && npm test && npm run build:cjs && npm run build:es && npm run build:umd",
33 | "build:cjs": "rimraf dist && cross-env BABEL_ENV=cjs babel ./src -d dist --ignore umd.js",
34 | "build:es": "rimraf es && cross-env BABEL_ENV=es babel ./src -d es --ignore umd.js",
35 | "build:umd": "rimraf umd && cross-env BABEL_ENV=rollup rollup -c rollup.config.js",
36 | "example": "node example/server.js",
37 | "test": "jest --verbose --coverage",
38 | "lint": "eslint src/*.js tests/**/*.test.js"
39 | },
40 | "keywords": [
41 | "vue",
42 | "vuex",
43 | "async",
44 | "vue.js"
45 | ],
46 | "license": "MIT",
47 | "devDependencies": {
48 | "babel-cli": "6.26.0",
49 | "babel-core": "6.26.0",
50 | "babel-plugin-add-module-exports": "0.2.1",
51 | "babel-plugin-external-helpers": "6.22.0",
52 | "babel-plugin-transform-object-rest-spread": "6.26.0",
53 | "babel-preset-env": "1.6.1",
54 | "cross-env": "5.1.1",
55 | "eslint": "4.11.0",
56 | "eslint-plugin-html": "4.0.0-alpha.1",
57 | "eslint-plugin-vue-libs": "1.2.0",
58 | "express": "4.16.2",
59 | "jest": "21.2.1",
60 | "rimraf": "2.6.2",
61 | "rollup": "0.51.5",
62 | "rollup-plugin-babel": "3.0.2",
63 | "rollup-plugin-commonjs": "8.2.6",
64 | "rollup-plugin-node-resolve": "3.0.0",
65 | "rollup-plugin-replace": "2.0.0",
66 | "rollup-plugin-uglify": "2.0.1"
67 | },
68 | "dependencies": {
69 | "lodash.camelcase": "4.3.0",
70 | "lodash.upperfirst": "4.3.1"
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/rollup.config.js:
--------------------------------------------------------------------------------
1 | import commonjs from 'rollup-plugin-commonjs'
2 | import resolve from 'rollup-plugin-node-resolve'
3 | import babel from 'rollup-plugin-babel'
4 | import uglify from 'rollup-plugin-uglify'
5 | import replace from 'rollup-plugin-replace'
6 |
7 | import { version, name, license, author, homepage } from './package.json'
8 |
9 | const banner = `
10 | /*! ${name} - v${version}
11 | * ${homepage}
12 | * Copyright (c) ${(new Date().getFullYear())} - ${author};
13 | * Licensed ${license}
14 | */
15 | `
16 |
17 | const plugins = [
18 | resolve(),
19 | commonjs(),
20 | babel({
21 | exclude: 'node_modules/**' // only transpile our source code
22 | })
23 | ]
24 |
25 | const baseConfig = {
26 | input: 'src/umd.js',
27 | banner,
28 | sourcemap: true
29 | }
30 |
31 | export default [
32 | Object.assign({
33 | output: {
34 | exports: 'named',
35 | file: 'umd/vuex-async-module.js',
36 | name: 'VuexAsyncModule',
37 | format: 'umd',
38 | },
39 | plugins: [replace({
40 | 'process.env.NODE_ENV': JSON.stringify('development')
41 | }), ...plugins]
42 | }, baseConfig),
43 | Object.assign({
44 | output: {
45 | exports: 'named',
46 | file: 'umd/vuex-async-module.min.js',
47 | name: 'VuexAsyncModule',
48 | format: 'umd',
49 | },
50 | plugins: [replace({
51 | 'process.env.NODE_ENV': JSON.stringify('production')
52 | }), ...plugins, uglify({
53 | warnings: false,
54 | mangle: true,
55 | compress: {
56 | pure_funcs: ['warn']
57 | },
58 | output: {
59 | comments: /^!/
60 | }
61 | })]
62 | }, baseConfig)
63 | ]
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | import asyncModuleMixin from './mixin'
2 |
3 | export { asyncModuleMixin }
4 |
5 | export function getDefaultState () {
6 | return {
7 | isPending: true,
8 | statusCode: null,
9 | data: null,
10 | errors: null
11 | }
12 | }
13 |
14 | export function getDefaultTypes () {
15 | return {
16 | SET_RESPONSE_DATA: 'SET_RESPONSE_DATA',
17 | SET_IS_PENDING: 'SET_IS_PENDING',
18 | SET_STATUS_CODE: 'SET_STATUS_CODE',
19 | SET_ERRORS: 'SET_ERRORS'
20 | }
21 | }
22 |
23 | export function getDefaultMutations () {
24 | const types = getDefaultTypes()
25 | return {
26 | [types.SET_RESPONSE_DATA]: (state, data) => {
27 | state.data = data
28 | return state.data
29 | },
30 | [types.SET_IS_PENDING]: (state, isPending) => {
31 | state.isPending = isPending
32 | return state.isPending
33 | },
34 | [types.SET_STATUS_CODE]: (state, status) => {
35 | state.statusCode = status
36 | return state.statusCode
37 | },
38 | [types.SET_ERRORS]: (state, errors) => {
39 | state.errors = errors
40 | return state.errors
41 | }
42 | }
43 | }
44 |
45 | export function getDefaultActions (xhr) {
46 | const {
47 | SET_RESPONSE_DATA,
48 | SET_IS_PENDING,
49 | SET_STATUS_CODE,
50 | SET_ERRORS } = getDefaultTypes()
51 | return {
52 | getAsync ({ state, commit }, { url, forceUpdate = false }) {
53 | if (state.isPending || forceUpdate) {
54 | return xhr(url)
55 | .then(response => {
56 | commit(SET_RESPONSE_DATA, response.data)
57 | commit(SET_STATUS_CODE, response.status)
58 | commit(SET_IS_PENDING, false)
59 | })
60 | .catch(response => {
61 | commit(SET_ERRORS, response.errors)
62 | commit(SET_STATUS_CODE, response.status)
63 | commit(SET_IS_PENDING, false)
64 | })
65 | } else {
66 | return Promise.resolve(null)
67 | }
68 | }
69 | }
70 | }
71 |
72 | export default function getAsyncModule (options = {}) {
73 | const opts = Object.assign({}, options) // for extensibility
74 | if (opts.xhr === undefined) {
75 | throw new TypeError('You must provide a valid XHR transport library in `options.xhr`')
76 | }
77 | return {
78 | namespaced: true,
79 | state: getDefaultState(),
80 | mutations: getDefaultMutations(),
81 | actions: getDefaultActions(opts.xhr)
82 | }
83 | }
84 |
--------------------------------------------------------------------------------
/src/mixin.js:
--------------------------------------------------------------------------------
1 | import camelCase from 'lodash.camelcase'
2 | import upperFirst from 'lodash.upperfirst'
3 |
4 | export default {
5 | beforeCreate () {
6 | const { name } = this.$options
7 | this.$options.computed = Object.assign(
8 | {},
9 | this.$options.computed,
10 | {
11 | [name]: function () {
12 | return this.$store.state[name].data
13 | },
14 | [`${name}RequestIsPending`]: function () {
15 | return this.$store.state[name].isPending
16 | }
17 | }
18 | )
19 | this.$options.methods = Object.assign(
20 | {},
21 | this.$options.methods,
22 | {
23 | [`getAsync${upperFirst(camelCase(name))}`]: function () {
24 | return this.$store.dispatch(`${name}/getAsync`, ...arguments)
25 | }
26 | }
27 | )
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/umd.js:
--------------------------------------------------------------------------------
1 | import getAsyncModule from './index'
2 | import asyncModuleMixin from './mixin'
3 |
4 | export { asyncModuleMixin }
5 | export default getAsyncModule
6 |
--------------------------------------------------------------------------------
/tests/unit/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | extends: ['../../.eslintrc.js'],
3 | env: {
4 | browser: true,
5 | jest: true
6 | }
7 | }
--------------------------------------------------------------------------------
/tests/unit/actions.test.js:
--------------------------------------------------------------------------------
1 | import { getDefaultActions, getDefaultTypes } from '../../src/index'
2 |
3 | describe('getDefaultActions', () => {
4 | test('should be defined', () => {
5 | expect(getDefaultActions).toBeDefined()
6 | })
7 |
8 | test('should be a function', () => {
9 | expect(getDefaultActions).toEqual(expect.any(Function))
10 | })
11 |
12 | test('should return an function', () => {
13 | expect(getDefaultActions()).toEqual(expect.any(Object))
14 | })
15 |
16 | test('should return an object that contains the correct properties', () => {
17 | expect(getDefaultActions(() => {})).toMatchObject({
18 | getAsync: expect.any(Function)
19 | })
20 | })
21 | })
22 |
23 | describe('getDefaultActions lifecycle', () => {
24 | let mockRequestSuccess
25 | let mockRequestError
26 | let commit
27 | let state
28 |
29 | const successResponse = { status: 200, data: Object.assign({}) }
30 | const error = { errors: new Error('my error'), status: 500 }
31 | const types = getDefaultTypes()
32 | const url = ''
33 |
34 | beforeEach(() => {
35 | // https://facebook.github.io/jest/docs/en/mock-functions.html
36 | mockRequestSuccess = jest.fn((url) => Promise.resolve(successResponse))
37 | mockRequestError = jest.fn((url) => Promise.reject(error))
38 | commit = jest.fn()
39 | state = { isPending: true }
40 | })
41 |
42 | test('returns a promise-like interface', () => {
43 | const { getAsync } = getDefaultActions(mockRequestSuccess)
44 | const resp = getAsync({ commit, state }, { url })
45 |
46 | expect(resp.then).toEqual(expect.any(Function))
47 | expect(resp.catch).toEqual(expect.any(Function))
48 | })
49 |
50 | test('returned promise should resolve to a `null` value if data was already loaded', (done) => {
51 | const { getAsync } = getDefaultActions(mockRequestSuccess)
52 | state = { isPending: false }
53 | const resp = getAsync({ commit, state }, { url })
54 |
55 | expect(resp.then((res) => {
56 | expect(res).toBeNull()
57 | done()
58 | }))
59 | })
60 |
61 | test('commits pending to `false` on success', (done) => {
62 | const { getAsync } = getDefaultActions(mockRequestSuccess)
63 | const resp = getAsync({ commit, state }, { url })
64 |
65 | resp.then(() => {
66 | expect(commit).toBeCalledWith(types.SET_IS_PENDING, false)
67 | done()
68 | })
69 | })
70 |
71 | test('commits statusCode on success', (done) => {
72 | const { getAsync } = getDefaultActions(mockRequestSuccess)
73 | const resp = getAsync({ commit, state }, { url })
74 |
75 | resp.then(() => {
76 | expect(commit).toBeCalledWith(types.SET_STATUS_CODE, successResponse.status)
77 | done()
78 | })
79 | })
80 |
81 | test('commits response data on success', (done) => {
82 | const { getAsync } = getDefaultActions(mockRequestSuccess)
83 | const resp = getAsync({ commit, state }, { url })
84 |
85 | resp.then(() => {
86 | expect(commit).toBeCalledWith(types.SET_RESPONSE_DATA, successResponse.data)
87 | done()
88 | })
89 | })
90 |
91 | test('commits response error on failure', (done) => {
92 | const { getAsync } = getDefaultActions(mockRequestError)
93 | const resp = getAsync({ commit, state }, { url })
94 |
95 | resp.then(() => {
96 | expect(commit).toBeCalledWith(types.SET_ERRORS, error.errors)
97 | done()
98 | })
99 | })
100 |
101 | test('commits statusCode error on failure', (done) => {
102 | const { getAsync } = getDefaultActions(mockRequestError)
103 | const resp = getAsync({ commit, state }, { url })
104 |
105 | resp.then(() => {
106 | expect(commit).toBeCalledWith(types.SET_STATUS_CODE, error.status)
107 | done()
108 | })
109 | })
110 |
111 | test('commits pending to `false` on failure', (done) => {
112 | const { getAsync } = getDefaultActions(mockRequestError)
113 | const resp = getAsync({ commit, state }, { url })
114 |
115 | resp.then(() => {
116 | expect(commit).toBeCalledWith(types.SET_IS_PENDING, false)
117 | done()
118 | })
119 | })
120 | })
121 |
--------------------------------------------------------------------------------
/tests/unit/index.test.js:
--------------------------------------------------------------------------------
1 | import getAsyncModule from '../../src/index'
2 |
3 | describe('getAsyncModule', () => {
4 | test('should be defined', () => {
5 | expect(getAsyncModule).toBeDefined()
6 | })
7 |
8 | test('should be a function', () => {
9 | expect(getAsyncModule).toEqual(expect.any(Function))
10 | })
11 |
12 | test('throws on xhr options missing', () => {
13 | expect(getAsyncModule).toThrow()
14 | })
15 |
16 | test('should return an object', () => {
17 | expect(getAsyncModule({ xhr: Promise.resolve })).toEqual(expect.any(Object))
18 | })
19 |
20 | test('object should have valid properties', () => {
21 | expect(getAsyncModule({ xhr: Promise.resolve })).toMatchObject({
22 | namespaced: true,
23 | state: expect.any(Object),
24 | mutations: expect.any(Object),
25 | actions: expect.any(Object)
26 | })
27 | })
28 | })
29 |
--------------------------------------------------------------------------------
/tests/unit/mixin.test.js:
--------------------------------------------------------------------------------
1 | import mixin from '../../src/mixin'
2 |
3 | describe('vuex-async-module mixin', () => {
4 | test('should be an object', () => {
5 | expect(mixin).toEqual(expect.any(Object))
6 | })
7 |
8 | test('should have correct properties', () => {
9 | expect(mixin).toMatchObject({
10 | beforeCreate: expect.any(Function)
11 | })
12 | })
13 | })
14 |
--------------------------------------------------------------------------------
/tests/unit/mutations.test.js:
--------------------------------------------------------------------------------
1 | import { getDefaultMutations, getDefaultTypes } from '../../src/index'
2 |
3 | describe('getDefaultMutations', () => {
4 | test('should be defined', () => {
5 | expect(getDefaultMutations).toBeDefined()
6 | })
7 |
8 | test('should be a function', () => {
9 | expect(getDefaultMutations).toEqual(expect.any(Function))
10 | })
11 |
12 | test('should return an object', () => {
13 | expect(getDefaultMutations()).toEqual(expect.any(Object))
14 | })
15 |
16 | test('should return an object that contains the correct properties', () => {
17 | const types = getDefaultTypes()
18 | expect(getDefaultMutations()).toMatchObject({
19 | [types.SET_RESPONSE_DATA]: expect.any(Function),
20 | [types.SET_IS_PENDING]: expect.any(Function),
21 | [types.SET_STATUS_CODE]: expect.any(Function),
22 | [types.SET_ERRORS]: expect.any(Function)
23 | })
24 | })
25 | })
26 |
27 | describe('getDefaultMutations lifecycle', () => {
28 | let result
29 | let state
30 |
31 | const types = getDefaultTypes()
32 |
33 | test('should update successfully state with pending result', () => {
34 | state = { isPending: true }
35 | result = false
36 |
37 | const rsp = getDefaultMutations()[types.SET_IS_PENDING](state, result)
38 | expect(rsp).toBe(result)
39 | })
40 |
41 | test('should update successfully state with response payload result', () => {
42 | state = { data: null }
43 | result = {}
44 |
45 | const rsp = getDefaultMutations()[types.SET_RESPONSE_DATA](state, result)
46 | expect(rsp).toBe(result)
47 | })
48 |
49 | test('should update successfully state with status code result', () => {
50 | state = { statusCode: null }
51 | result = 400
52 |
53 | const rsp = getDefaultMutations()[types.SET_STATUS_CODE](state, result)
54 | expect(rsp).toBe(result)
55 | })
56 |
57 | test('should update successfully state with given error result', () => {
58 | state = { errors: null }
59 | result = new Error('my error')
60 |
61 | const rsp = getDefaultMutations()[types.SET_ERRORS](state, result)
62 | expect(rsp).toBe(result)
63 | })
64 | })
65 |
--------------------------------------------------------------------------------
/tests/unit/state.test.js:
--------------------------------------------------------------------------------
1 | import { getDefaultState } from '../../src/index'
2 |
3 | describe('getDefaultState', () => {
4 | test('getDefaultState should be defined', () => {
5 | expect(getDefaultState).toBeDefined()
6 | })
7 |
8 | test('getDefaultState should be a function', () => {
9 | expect(getDefaultState).toEqual(expect.any(Function))
10 | })
11 |
12 | test('should return an object', () => {
13 | expect(getDefaultState()).toEqual(expect.any(Object))
14 | })
15 |
16 | test('should return an object that contains the right keys', () => {
17 | const state = {
18 | isPending: true,
19 | statusCode: null,
20 | data: null,
21 | errors: null
22 | }
23 | expect(getDefaultState()).toEqual(state)
24 | })
25 |
26 | test('should return an object that have all the same properties', () => {
27 | const state = getDefaultState()
28 | expect(getDefaultState()).toEqual(state)
29 | })
30 |
31 | test('should return an object that is not exact same state', () => {
32 | const state = getDefaultState()
33 | expect(getDefaultState()).not.toBe(state)
34 | })
35 | })
36 |
--------------------------------------------------------------------------------
/tests/unit/types.test.js:
--------------------------------------------------------------------------------
1 | import { getDefaultTypes } from '../../src/index'
2 |
3 | describe('getDefaultTypes', () => {
4 | test('should be defined', () => {
5 | expect(getDefaultTypes).toBeDefined()
6 | })
7 |
8 | test('should be a function', () => {
9 | expect(getDefaultTypes).toEqual(expect.any(Function))
10 | })
11 |
12 | test('should return an object', () => {
13 | expect(getDefaultTypes()).toEqual(expect.any(Object))
14 | })
15 |
16 | test('should return an object that contains the correct properties', () => {
17 | const types = {
18 | SET_RESPONSE_DATA: 'SET_RESPONSE_DATA',
19 | SET_IS_PENDING: 'SET_IS_PENDING',
20 | SET_STATUS_CODE: 'SET_STATUS_CODE',
21 | SET_ERRORS: 'SET_ERRORS'
22 | }
23 | expect(getDefaultTypes()).toEqual(types)
24 | })
25 |
26 | test('should return an object that have all the same properties', () => {
27 | const state = getDefaultTypes()
28 | expect(getDefaultTypes()).toEqual(state)
29 | })
30 |
31 | test('should return an object that is not exact same state', () => {
32 | const state = getDefaultTypes()
33 | expect(getDefaultTypes()).not.toBe(state)
34 | })
35 | })
36 |
--------------------------------------------------------------------------------
/umd/vuex-async-module.js:
--------------------------------------------------------------------------------
1 |
2 | /*! @liqueflies/vuex-async-module - v0.0.5
3 | * https://github.com/liqueflies/vuex-async-module
4 | * Copyright (c) 2017 - [object Object];
5 | * Licensed MIT
6 | */
7 |
8 | (function (global, factory) {
9 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
10 | typeof define === 'function' && define.amd ? define(['exports'], factory) :
11 | (factory((global.VuexAsyncModule = {})));
12 | }(this, (function (exports) { 'use strict';
13 |
14 | var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
15 |
16 | /**
17 | * lodash (Custom Build)
18 | * Build: `lodash modularize exports="npm" -o ./`
19 | * Copyright jQuery Foundation and other contributors
20 | * Released under MIT license
21 | * Based on Underscore.js 1.8.3
22 | * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
23 | */
24 |
25 | /** Used as references for various `Number` constants. */
26 | var INFINITY = 1 / 0;
27 |
28 | /** `Object#toString` result references. */
29 | var symbolTag = '[object Symbol]';
30 |
31 | /** Used to match words composed of alphanumeric characters. */
32 | var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;
33 |
34 | /** Used to match Latin Unicode letters (excluding mathematical operators). */
35 | var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
36 |
37 | /** Used to compose unicode character classes. */
38 | var rsAstralRange = '\\ud800-\\udfff';
39 | var rsComboMarksRange = '\\u0300-\\u036f\\ufe20-\\ufe23';
40 | var rsComboSymbolsRange = '\\u20d0-\\u20f0';
41 | var rsDingbatRange = '\\u2700-\\u27bf';
42 | var rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff';
43 | var rsMathOpRange = '\\xac\\xb1\\xd7\\xf7';
44 | var rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf';
45 | var rsPunctuationRange = '\\u2000-\\u206f';
46 | var rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000';
47 | var rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde';
48 | var rsVarRange = '\\ufe0e\\ufe0f';
49 | var rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;
50 |
51 | /** Used to compose unicode capture groups. */
52 | var rsApos = "['\u2019]";
53 | var rsAstral = '[' + rsAstralRange + ']';
54 | var rsBreak = '[' + rsBreakRange + ']';
55 | var rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']';
56 | var rsDigits = '\\d+';
57 | var rsDingbat = '[' + rsDingbatRange + ']';
58 | var rsLower = '[' + rsLowerRange + ']';
59 | var rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']';
60 | var rsFitz = '\\ud83c[\\udffb-\\udfff]';
61 | var rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')';
62 | var rsNonAstral = '[^' + rsAstralRange + ']';
63 | var rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}';
64 | var rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]';
65 | var rsUpper = '[' + rsUpperRange + ']';
66 | var rsZWJ = '\\u200d';
67 |
68 | /** Used to compose unicode regexes. */
69 | var rsLowerMisc = '(?:' + rsLower + '|' + rsMisc + ')';
70 | var rsUpperMisc = '(?:' + rsUpper + '|' + rsMisc + ')';
71 | var rsOptLowerContr = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?';
72 | var rsOptUpperContr = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?';
73 | var reOptMod = rsModifier + '?';
74 | var rsOptVar = '[' + rsVarRange + ']?';
75 | var rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*';
76 | var rsSeq = rsOptVar + reOptMod + rsOptJoin;
77 | var rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;
78 | var rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
79 |
80 | /** Used to match apostrophes. */
81 | var reApos = RegExp(rsApos, 'g');
82 |
83 | /**
84 | * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and
85 | * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).
86 | */
87 | var reComboMark = RegExp(rsCombo, 'g');
88 |
89 | /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
90 | var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
91 |
92 | /** Used to match complex or compound words. */
93 | var reUnicodeWord = RegExp([
94 | rsUpper + '?' + rsLower + '+' + rsOptLowerContr + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',
95 | rsUpperMisc + '+' + rsOptUpperContr + '(?=' + [rsBreak, rsUpper + rsLowerMisc, '$'].join('|') + ')',
96 | rsUpper + '?' + rsLowerMisc + '+' + rsOptLowerContr,
97 | rsUpper + '+' + rsOptUpperContr,
98 | rsDigits,
99 | rsEmoji
100 | ].join('|'), 'g');
101 |
102 | /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */
103 | var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboMarksRange + rsComboSymbolsRange + rsVarRange + ']');
104 |
105 | /** Used to detect strings that need a more robust regexp to match words. */
106 | var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;
107 |
108 | /** Used to map Latin Unicode letters to basic Latin letters. */
109 | var deburredLetters = {
110 | // Latin-1 Supplement block.
111 | '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A',
112 | '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a',
113 | '\xc7': 'C', '\xe7': 'c',
114 | '\xd0': 'D', '\xf0': 'd',
115 | '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E',
116 | '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e',
117 | '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I',
118 | '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i',
119 | '\xd1': 'N', '\xf1': 'n',
120 | '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O',
121 | '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o',
122 | '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U',
123 | '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u',
124 | '\xdd': 'Y', '\xfd': 'y', '\xff': 'y',
125 | '\xc6': 'Ae', '\xe6': 'ae',
126 | '\xde': 'Th', '\xfe': 'th',
127 | '\xdf': 'ss',
128 | // Latin Extended-A block.
129 | '\u0100': 'A', '\u0102': 'A', '\u0104': 'A',
130 | '\u0101': 'a', '\u0103': 'a', '\u0105': 'a',
131 | '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C',
132 | '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c',
133 | '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd',
134 | '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E',
135 | '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e',
136 | '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G',
137 | '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g',
138 | '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h',
139 | '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I',
140 | '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i',
141 | '\u0134': 'J', '\u0135': 'j',
142 | '\u0136': 'K', '\u0137': 'k', '\u0138': 'k',
143 | '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L',
144 | '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l',
145 | '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N',
146 | '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n',
147 | '\u014c': 'O', '\u014e': 'O', '\u0150': 'O',
148 | '\u014d': 'o', '\u014f': 'o', '\u0151': 'o',
149 | '\u0154': 'R', '\u0156': 'R', '\u0158': 'R',
150 | '\u0155': 'r', '\u0157': 'r', '\u0159': 'r',
151 | '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S',
152 | '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's',
153 | '\u0162': 'T', '\u0164': 'T', '\u0166': 'T',
154 | '\u0163': 't', '\u0165': 't', '\u0167': 't',
155 | '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U',
156 | '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u',
157 | '\u0174': 'W', '\u0175': 'w',
158 | '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y',
159 | '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z',
160 | '\u017a': 'z', '\u017c': 'z', '\u017e': 'z',
161 | '\u0132': 'IJ', '\u0133': 'ij',
162 | '\u0152': 'Oe', '\u0153': 'oe',
163 | '\u0149': "'n", '\u017f': 'ss'
164 | };
165 |
166 | /** Detect free variable `global` from Node.js. */
167 | var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;
168 |
169 | /** Detect free variable `self`. */
170 | var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
171 |
172 | /** Used as a reference to the global object. */
173 | var root = freeGlobal || freeSelf || Function('return this')();
174 |
175 | /**
176 | * A specialized version of `_.reduce` for arrays without support for
177 | * iteratee shorthands.
178 | *
179 | * @private
180 | * @param {Array} [array] The array to iterate over.
181 | * @param {Function} iteratee The function invoked per iteration.
182 | * @param {*} [accumulator] The initial value.
183 | * @param {boolean} [initAccum] Specify using the first element of `array` as
184 | * the initial value.
185 | * @returns {*} Returns the accumulated value.
186 | */
187 | function arrayReduce(array, iteratee, accumulator, initAccum) {
188 | var index = -1,
189 | length = array ? array.length : 0;
190 |
191 | if (initAccum && length) {
192 | accumulator = array[++index];
193 | }
194 | while (++index < length) {
195 | accumulator = iteratee(accumulator, array[index], index, array);
196 | }
197 | return accumulator;
198 | }
199 |
200 | /**
201 | * Converts an ASCII `string` to an array.
202 | *
203 | * @private
204 | * @param {string} string The string to convert.
205 | * @returns {Array} Returns the converted array.
206 | */
207 | function asciiToArray(string) {
208 | return string.split('');
209 | }
210 |
211 | /**
212 | * Splits an ASCII `string` into an array of its words.
213 | *
214 | * @private
215 | * @param {string} The string to inspect.
216 | * @returns {Array} Returns the words of `string`.
217 | */
218 | function asciiWords(string) {
219 | return string.match(reAsciiWord) || [];
220 | }
221 |
222 | /**
223 | * The base implementation of `_.propertyOf` without support for deep paths.
224 | *
225 | * @private
226 | * @param {Object} object The object to query.
227 | * @returns {Function} Returns the new accessor function.
228 | */
229 | function basePropertyOf(object) {
230 | return function(key) {
231 | return object == null ? undefined : object[key];
232 | };
233 | }
234 |
235 | /**
236 | * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A
237 | * letters to basic Latin letters.
238 | *
239 | * @private
240 | * @param {string} letter The matched letter to deburr.
241 | * @returns {string} Returns the deburred letter.
242 | */
243 | var deburrLetter = basePropertyOf(deburredLetters);
244 |
245 | /**
246 | * Checks if `string` contains Unicode symbols.
247 | *
248 | * @private
249 | * @param {string} string The string to inspect.
250 | * @returns {boolean} Returns `true` if a symbol is found, else `false`.
251 | */
252 | function hasUnicode(string) {
253 | return reHasUnicode.test(string);
254 | }
255 |
256 | /**
257 | * Checks if `string` contains a word composed of Unicode symbols.
258 | *
259 | * @private
260 | * @param {string} string The string to inspect.
261 | * @returns {boolean} Returns `true` if a word is found, else `false`.
262 | */
263 | function hasUnicodeWord(string) {
264 | return reHasUnicodeWord.test(string);
265 | }
266 |
267 | /**
268 | * Converts `string` to an array.
269 | *
270 | * @private
271 | * @param {string} string The string to convert.
272 | * @returns {Array} Returns the converted array.
273 | */
274 | function stringToArray(string) {
275 | return hasUnicode(string)
276 | ? unicodeToArray(string)
277 | : asciiToArray(string);
278 | }
279 |
280 | /**
281 | * Converts a Unicode `string` to an array.
282 | *
283 | * @private
284 | * @param {string} string The string to convert.
285 | * @returns {Array} Returns the converted array.
286 | */
287 | function unicodeToArray(string) {
288 | return string.match(reUnicode) || [];
289 | }
290 |
291 | /**
292 | * Splits a Unicode `string` into an array of its words.
293 | *
294 | * @private
295 | * @param {string} The string to inspect.
296 | * @returns {Array} Returns the words of `string`.
297 | */
298 | function unicodeWords(string) {
299 | return string.match(reUnicodeWord) || [];
300 | }
301 |
302 | /** Used for built-in method references. */
303 | var objectProto = Object.prototype;
304 |
305 | /**
306 | * Used to resolve the
307 | * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
308 | * of values.
309 | */
310 | var objectToString = objectProto.toString;
311 |
312 | /** Built-in value references. */
313 | var Symbol = root.Symbol;
314 |
315 | /** Used to convert symbols to primitives and strings. */
316 | var symbolProto = Symbol ? Symbol.prototype : undefined;
317 | var symbolToString = symbolProto ? symbolProto.toString : undefined;
318 |
319 | /**
320 | * The base implementation of `_.slice` without an iteratee call guard.
321 | *
322 | * @private
323 | * @param {Array} array The array to slice.
324 | * @param {number} [start=0] The start position.
325 | * @param {number} [end=array.length] The end position.
326 | * @returns {Array} Returns the slice of `array`.
327 | */
328 | function baseSlice(array, start, end) {
329 | var index = -1,
330 | length = array.length;
331 |
332 | if (start < 0) {
333 | start = -start > length ? 0 : (length + start);
334 | }
335 | end = end > length ? length : end;
336 | if (end < 0) {
337 | end += length;
338 | }
339 | length = start > end ? 0 : ((end - start) >>> 0);
340 | start >>>= 0;
341 |
342 | var result = Array(length);
343 | while (++index < length) {
344 | result[index] = array[index + start];
345 | }
346 | return result;
347 | }
348 |
349 | /**
350 | * The base implementation of `_.toString` which doesn't convert nullish
351 | * values to empty strings.
352 | *
353 | * @private
354 | * @param {*} value The value to process.
355 | * @returns {string} Returns the string.
356 | */
357 | function baseToString(value) {
358 | // Exit early for strings to avoid a performance hit in some environments.
359 | if (typeof value == 'string') {
360 | return value;
361 | }
362 | if (isSymbol(value)) {
363 | return symbolToString ? symbolToString.call(value) : '';
364 | }
365 | var result = (value + '');
366 | return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
367 | }
368 |
369 | /**
370 | * Casts `array` to a slice if it's needed.
371 | *
372 | * @private
373 | * @param {Array} array The array to inspect.
374 | * @param {number} start The start position.
375 | * @param {number} [end=array.length] The end position.
376 | * @returns {Array} Returns the cast slice.
377 | */
378 | function castSlice(array, start, end) {
379 | var length = array.length;
380 | end = end === undefined ? length : end;
381 | return (!start && end >= length) ? array : baseSlice(array, start, end);
382 | }
383 |
384 | /**
385 | * Creates a function like `_.lowerFirst`.
386 | *
387 | * @private
388 | * @param {string} methodName The name of the `String` case method to use.
389 | * @returns {Function} Returns the new case function.
390 | */
391 | function createCaseFirst(methodName) {
392 | return function(string) {
393 | string = toString(string);
394 |
395 | var strSymbols = hasUnicode(string)
396 | ? stringToArray(string)
397 | : undefined;
398 |
399 | var chr = strSymbols
400 | ? strSymbols[0]
401 | : string.charAt(0);
402 |
403 | var trailing = strSymbols
404 | ? castSlice(strSymbols, 1).join('')
405 | : string.slice(1);
406 |
407 | return chr[methodName]() + trailing;
408 | };
409 | }
410 |
411 | /**
412 | * Creates a function like `_.camelCase`.
413 | *
414 | * @private
415 | * @param {Function} callback The function to combine each word.
416 | * @returns {Function} Returns the new compounder function.
417 | */
418 | function createCompounder(callback) {
419 | return function(string) {
420 | return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');
421 | };
422 | }
423 |
424 | /**
425 | * Checks if `value` is object-like. A value is object-like if it's not `null`
426 | * and has a `typeof` result of "object".
427 | *
428 | * @static
429 | * @memberOf _
430 | * @since 4.0.0
431 | * @category Lang
432 | * @param {*} value The value to check.
433 | * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
434 | * @example
435 | *
436 | * _.isObjectLike({});
437 | * // => true
438 | *
439 | * _.isObjectLike([1, 2, 3]);
440 | * // => true
441 | *
442 | * _.isObjectLike(_.noop);
443 | * // => false
444 | *
445 | * _.isObjectLike(null);
446 | * // => false
447 | */
448 | function isObjectLike(value) {
449 | return !!value && typeof value == 'object';
450 | }
451 |
452 | /**
453 | * Checks if `value` is classified as a `Symbol` primitive or object.
454 | *
455 | * @static
456 | * @memberOf _
457 | * @since 4.0.0
458 | * @category Lang
459 | * @param {*} value The value to check.
460 | * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
461 | * @example
462 | *
463 | * _.isSymbol(Symbol.iterator);
464 | * // => true
465 | *
466 | * _.isSymbol('abc');
467 | * // => false
468 | */
469 | function isSymbol(value) {
470 | return typeof value == 'symbol' ||
471 | (isObjectLike(value) && objectToString.call(value) == symbolTag);
472 | }
473 |
474 | /**
475 | * Converts `value` to a string. An empty string is returned for `null`
476 | * and `undefined` values. The sign of `-0` is preserved.
477 | *
478 | * @static
479 | * @memberOf _
480 | * @since 4.0.0
481 | * @category Lang
482 | * @param {*} value The value to process.
483 | * @returns {string} Returns the string.
484 | * @example
485 | *
486 | * _.toString(null);
487 | * // => ''
488 | *
489 | * _.toString(-0);
490 | * // => '-0'
491 | *
492 | * _.toString([1, 2, 3]);
493 | * // => '1,2,3'
494 | */
495 | function toString(value) {
496 | return value == null ? '' : baseToString(value);
497 | }
498 |
499 | /**
500 | * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).
501 | *
502 | * @static
503 | * @memberOf _
504 | * @since 3.0.0
505 | * @category String
506 | * @param {string} [string=''] The string to convert.
507 | * @returns {string} Returns the camel cased string.
508 | * @example
509 | *
510 | * _.camelCase('Foo Bar');
511 | * // => 'fooBar'
512 | *
513 | * _.camelCase('--foo-bar--');
514 | * // => 'fooBar'
515 | *
516 | * _.camelCase('__FOO_BAR__');
517 | * // => 'fooBar'
518 | */
519 | var camelCase = createCompounder(function(result, word, index) {
520 | word = word.toLowerCase();
521 | return result + (index ? capitalize(word) : word);
522 | });
523 |
524 | /**
525 | * Converts the first character of `string` to upper case and the remaining
526 | * to lower case.
527 | *
528 | * @static
529 | * @memberOf _
530 | * @since 3.0.0
531 | * @category String
532 | * @param {string} [string=''] The string to capitalize.
533 | * @returns {string} Returns the capitalized string.
534 | * @example
535 | *
536 | * _.capitalize('FRED');
537 | * // => 'Fred'
538 | */
539 | function capitalize(string) {
540 | return upperFirst(toString(string).toLowerCase());
541 | }
542 |
543 | /**
544 | * Deburrs `string` by converting
545 | * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)
546 | * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)
547 | * letters to basic Latin letters and removing
548 | * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).
549 | *
550 | * @static
551 | * @memberOf _
552 | * @since 3.0.0
553 | * @category String
554 | * @param {string} [string=''] The string to deburr.
555 | * @returns {string} Returns the deburred string.
556 | * @example
557 | *
558 | * _.deburr('déjà vu');
559 | * // => 'deja vu'
560 | */
561 | function deburr(string) {
562 | string = toString(string);
563 | return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');
564 | }
565 |
566 | /**
567 | * Converts the first character of `string` to upper case.
568 | *
569 | * @static
570 | * @memberOf _
571 | * @since 4.0.0
572 | * @category String
573 | * @param {string} [string=''] The string to convert.
574 | * @returns {string} Returns the converted string.
575 | * @example
576 | *
577 | * _.upperFirst('fred');
578 | * // => 'Fred'
579 | *
580 | * _.upperFirst('FRED');
581 | * // => 'FRED'
582 | */
583 | var upperFirst = createCaseFirst('toUpperCase');
584 |
585 | /**
586 | * Splits `string` into an array of its words.
587 | *
588 | * @static
589 | * @memberOf _
590 | * @since 3.0.0
591 | * @category String
592 | * @param {string} [string=''] The string to inspect.
593 | * @param {RegExp|string} [pattern] The pattern to match words.
594 | * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
595 | * @returns {Array} Returns the words of `string`.
596 | * @example
597 | *
598 | * _.words('fred, barney, & pebbles');
599 | * // => ['fred', 'barney', 'pebbles']
600 | *
601 | * _.words('fred, barney, & pebbles', /[^, ]+/g);
602 | * // => ['fred', 'barney', '&', 'pebbles']
603 | */
604 | function words(string, pattern, guard) {
605 | string = toString(string);
606 | pattern = guard ? undefined : pattern;
607 |
608 | if (pattern === undefined) {
609 | return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);
610 | }
611 | return string.match(pattern) || [];
612 | }
613 |
614 | var lodash_camelcase = camelCase;
615 |
616 | /**
617 | * lodash (Custom Build)
618 | * Build: `lodash modularize exports="npm" -o ./`
619 | * Copyright jQuery Foundation and other contributors
620 | * Released under MIT license
621 | * Based on Underscore.js 1.8.3
622 | * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
623 | */
624 |
625 | /** Used as references for various `Number` constants. */
626 | var INFINITY$1 = 1 / 0;
627 |
628 | /** `Object#toString` result references. */
629 | var symbolTag$1 = '[object Symbol]';
630 |
631 | /** Used to compose unicode character classes. */
632 | var rsAstralRange$1 = '\\ud800-\\udfff';
633 | var rsComboMarksRange$1 = '\\u0300-\\u036f\\ufe20-\\ufe23';
634 | var rsComboSymbolsRange$1 = '\\u20d0-\\u20f0';
635 | var rsVarRange$1 = '\\ufe0e\\ufe0f';
636 |
637 | /** Used to compose unicode capture groups. */
638 | var rsAstral$1 = '[' + rsAstralRange$1 + ']';
639 | var rsCombo$1 = '[' + rsComboMarksRange$1 + rsComboSymbolsRange$1 + ']';
640 | var rsFitz$1 = '\\ud83c[\\udffb-\\udfff]';
641 | var rsModifier$1 = '(?:' + rsCombo$1 + '|' + rsFitz$1 + ')';
642 | var rsNonAstral$1 = '[^' + rsAstralRange$1 + ']';
643 | var rsRegional$1 = '(?:\\ud83c[\\udde6-\\uddff]){2}';
644 | var rsSurrPair$1 = '[\\ud800-\\udbff][\\udc00-\\udfff]';
645 | var rsZWJ$1 = '\\u200d';
646 |
647 | /** Used to compose unicode regexes. */
648 | var reOptMod$1 = rsModifier$1 + '?';
649 | var rsOptVar$1 = '[' + rsVarRange$1 + ']?';
650 | var rsOptJoin$1 = '(?:' + rsZWJ$1 + '(?:' + [rsNonAstral$1, rsRegional$1, rsSurrPair$1].join('|') + ')' + rsOptVar$1 + reOptMod$1 + ')*';
651 | var rsSeq$1 = rsOptVar$1 + reOptMod$1 + rsOptJoin$1;
652 | var rsSymbol$1 = '(?:' + [rsNonAstral$1 + rsCombo$1 + '?', rsCombo$1, rsRegional$1, rsSurrPair$1, rsAstral$1].join('|') + ')';
653 |
654 | /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
655 | var reUnicode$1 = RegExp(rsFitz$1 + '(?=' + rsFitz$1 + ')|' + rsSymbol$1 + rsSeq$1, 'g');
656 |
657 | /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */
658 | var reHasUnicode$1 = RegExp('[' + rsZWJ$1 + rsAstralRange$1 + rsComboMarksRange$1 + rsComboSymbolsRange$1 + rsVarRange$1 + ']');
659 |
660 | /** Detect free variable `global` from Node.js. */
661 | var freeGlobal$1 = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;
662 |
663 | /** Detect free variable `self`. */
664 | var freeSelf$1 = typeof self == 'object' && self && self.Object === Object && self;
665 |
666 | /** Used as a reference to the global object. */
667 | var root$1 = freeGlobal$1 || freeSelf$1 || Function('return this')();
668 |
669 | /**
670 | * Converts an ASCII `string` to an array.
671 | *
672 | * @private
673 | * @param {string} string The string to convert.
674 | * @returns {Array} Returns the converted array.
675 | */
676 | function asciiToArray$1(string) {
677 | return string.split('');
678 | }
679 |
680 | /**
681 | * Checks if `string` contains Unicode symbols.
682 | *
683 | * @private
684 | * @param {string} string The string to inspect.
685 | * @returns {boolean} Returns `true` if a symbol is found, else `false`.
686 | */
687 | function hasUnicode$1(string) {
688 | return reHasUnicode$1.test(string);
689 | }
690 |
691 | /**
692 | * Converts `string` to an array.
693 | *
694 | * @private
695 | * @param {string} string The string to convert.
696 | * @returns {Array} Returns the converted array.
697 | */
698 | function stringToArray$1(string) {
699 | return hasUnicode$1(string)
700 | ? unicodeToArray$1(string)
701 | : asciiToArray$1(string);
702 | }
703 |
704 | /**
705 | * Converts a Unicode `string` to an array.
706 | *
707 | * @private
708 | * @param {string} string The string to convert.
709 | * @returns {Array} Returns the converted array.
710 | */
711 | function unicodeToArray$1(string) {
712 | return string.match(reUnicode$1) || [];
713 | }
714 |
715 | /** Used for built-in method references. */
716 | var objectProto$1 = Object.prototype;
717 |
718 | /**
719 | * Used to resolve the
720 | * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
721 | * of values.
722 | */
723 | var objectToString$1 = objectProto$1.toString;
724 |
725 | /** Built-in value references. */
726 | var Symbol$1 = root$1.Symbol;
727 |
728 | /** Used to convert symbols to primitives and strings. */
729 | var symbolProto$1 = Symbol$1 ? Symbol$1.prototype : undefined;
730 | var symbolToString$1 = symbolProto$1 ? symbolProto$1.toString : undefined;
731 |
732 | /**
733 | * The base implementation of `_.slice` without an iteratee call guard.
734 | *
735 | * @private
736 | * @param {Array} array The array to slice.
737 | * @param {number} [start=0] The start position.
738 | * @param {number} [end=array.length] The end position.
739 | * @returns {Array} Returns the slice of `array`.
740 | */
741 | function baseSlice$1(array, start, end) {
742 | var index = -1,
743 | length = array.length;
744 |
745 | if (start < 0) {
746 | start = -start > length ? 0 : (length + start);
747 | }
748 | end = end > length ? length : end;
749 | if (end < 0) {
750 | end += length;
751 | }
752 | length = start > end ? 0 : ((end - start) >>> 0);
753 | start >>>= 0;
754 |
755 | var result = Array(length);
756 | while (++index < length) {
757 | result[index] = array[index + start];
758 | }
759 | return result;
760 | }
761 |
762 | /**
763 | * The base implementation of `_.toString` which doesn't convert nullish
764 | * values to empty strings.
765 | *
766 | * @private
767 | * @param {*} value The value to process.
768 | * @returns {string} Returns the string.
769 | */
770 | function baseToString$1(value) {
771 | // Exit early for strings to avoid a performance hit in some environments.
772 | if (typeof value == 'string') {
773 | return value;
774 | }
775 | if (isSymbol$1(value)) {
776 | return symbolToString$1 ? symbolToString$1.call(value) : '';
777 | }
778 | var result = (value + '');
779 | return (result == '0' && (1 / value) == -INFINITY$1) ? '-0' : result;
780 | }
781 |
782 | /**
783 | * Casts `array` to a slice if it's needed.
784 | *
785 | * @private
786 | * @param {Array} array The array to inspect.
787 | * @param {number} start The start position.
788 | * @param {number} [end=array.length] The end position.
789 | * @returns {Array} Returns the cast slice.
790 | */
791 | function castSlice$1(array, start, end) {
792 | var length = array.length;
793 | end = end === undefined ? length : end;
794 | return (!start && end >= length) ? array : baseSlice$1(array, start, end);
795 | }
796 |
797 | /**
798 | * Creates a function like `_.lowerFirst`.
799 | *
800 | * @private
801 | * @param {string} methodName The name of the `String` case method to use.
802 | * @returns {Function} Returns the new case function.
803 | */
804 | function createCaseFirst$1(methodName) {
805 | return function(string) {
806 | string = toString$1(string);
807 |
808 | var strSymbols = hasUnicode$1(string)
809 | ? stringToArray$1(string)
810 | : undefined;
811 |
812 | var chr = strSymbols
813 | ? strSymbols[0]
814 | : string.charAt(0);
815 |
816 | var trailing = strSymbols
817 | ? castSlice$1(strSymbols, 1).join('')
818 | : string.slice(1);
819 |
820 | return chr[methodName]() + trailing;
821 | };
822 | }
823 |
824 | /**
825 | * Checks if `value` is object-like. A value is object-like if it's not `null`
826 | * and has a `typeof` result of "object".
827 | *
828 | * @static
829 | * @memberOf _
830 | * @since 4.0.0
831 | * @category Lang
832 | * @param {*} value The value to check.
833 | * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
834 | * @example
835 | *
836 | * _.isObjectLike({});
837 | * // => true
838 | *
839 | * _.isObjectLike([1, 2, 3]);
840 | * // => true
841 | *
842 | * _.isObjectLike(_.noop);
843 | * // => false
844 | *
845 | * _.isObjectLike(null);
846 | * // => false
847 | */
848 | function isObjectLike$1(value) {
849 | return !!value && typeof value == 'object';
850 | }
851 |
852 | /**
853 | * Checks if `value` is classified as a `Symbol` primitive or object.
854 | *
855 | * @static
856 | * @memberOf _
857 | * @since 4.0.0
858 | * @category Lang
859 | * @param {*} value The value to check.
860 | * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
861 | * @example
862 | *
863 | * _.isSymbol(Symbol.iterator);
864 | * // => true
865 | *
866 | * _.isSymbol('abc');
867 | * // => false
868 | */
869 | function isSymbol$1(value) {
870 | return typeof value == 'symbol' ||
871 | (isObjectLike$1(value) && objectToString$1.call(value) == symbolTag$1);
872 | }
873 |
874 | /**
875 | * Converts `value` to a string. An empty string is returned for `null`
876 | * and `undefined` values. The sign of `-0` is preserved.
877 | *
878 | * @static
879 | * @memberOf _
880 | * @since 4.0.0
881 | * @category Lang
882 | * @param {*} value The value to process.
883 | * @returns {string} Returns the string.
884 | * @example
885 | *
886 | * _.toString(null);
887 | * // => ''
888 | *
889 | * _.toString(-0);
890 | * // => '-0'
891 | *
892 | * _.toString([1, 2, 3]);
893 | * // => '1,2,3'
894 | */
895 | function toString$1(value) {
896 | return value == null ? '' : baseToString$1(value);
897 | }
898 |
899 | /**
900 | * Converts the first character of `string` to upper case.
901 | *
902 | * @static
903 | * @memberOf _
904 | * @since 4.0.0
905 | * @category String
906 | * @param {string} [string=''] The string to convert.
907 | * @returns {string} Returns the converted string.
908 | * @example
909 | *
910 | * _.upperFirst('fred');
911 | * // => 'Fred'
912 | *
913 | * _.upperFirst('FRED');
914 | * // => 'FRED'
915 | */
916 | var upperFirst$1 = createCaseFirst$1('toUpperCase');
917 |
918 | var lodash_upperfirst = upperFirst$1;
919 |
920 | var mixin = {
921 | beforeCreate: function beforeCreate() {
922 | var _Object$assign, _Object$assign2;
923 |
924 | var name = this.$options.name;
925 |
926 | this.$options.computed = Object.assign({}, this.$options.computed, (_Object$assign = {}, _Object$assign[name] = function () {
927 | return this.$store.state[name].data;
928 | }, _Object$assign[name + 'RequestIsPending'] = function undefined() {
929 | return this.$store.state[name].isPending;
930 | }, _Object$assign));
931 | this.$options.methods = Object.assign({}, this.$options.methods, (_Object$assign2 = {}, _Object$assign2['getAsync' + lodash_upperfirst(lodash_camelcase(name))] = function undefined() {
932 | var _$store;
933 |
934 | return (_$store = this.$store).dispatch.apply(_$store, [name + '/getAsync'].concat(Array.prototype.slice.call(arguments)));
935 | }, _Object$assign2));
936 | }
937 | };
938 |
939 | function getDefaultState() {
940 | return {
941 | isPending: true,
942 | statusCode: null,
943 | data: null,
944 | errors: null
945 | };
946 | }
947 |
948 | function getDefaultTypes() {
949 | return {
950 | SET_RESPONSE_DATA: 'SET_RESPONSE_DATA',
951 | SET_IS_PENDING: 'SET_IS_PENDING',
952 | SET_STATUS_CODE: 'SET_STATUS_CODE',
953 | SET_ERRORS: 'SET_ERRORS'
954 | };
955 | }
956 |
957 | function getDefaultMutations() {
958 | var _ref;
959 |
960 | var types = getDefaultTypes();
961 | return _ref = {}, _ref[types.SET_RESPONSE_DATA] = function (state, data) {
962 | state.data = data;
963 | return state.data;
964 | }, _ref[types.SET_IS_PENDING] = function (state, isPending) {
965 | state.isPending = isPending;
966 | return state.isPending;
967 | }, _ref[types.SET_STATUS_CODE] = function (state, status) {
968 | state.statusCode = status;
969 | return state.statusCode;
970 | }, _ref[types.SET_ERRORS] = function (state, errors) {
971 | state.errors = errors;
972 | return state.errors;
973 | }, _ref;
974 | }
975 |
976 | function getDefaultActions(xhr) {
977 | var _getDefaultTypes = getDefaultTypes(),
978 | SET_RESPONSE_DATA = _getDefaultTypes.SET_RESPONSE_DATA,
979 | SET_IS_PENDING = _getDefaultTypes.SET_IS_PENDING,
980 | SET_STATUS_CODE = _getDefaultTypes.SET_STATUS_CODE,
981 | SET_ERRORS = _getDefaultTypes.SET_ERRORS;
982 |
983 | return {
984 | getAsync: function getAsync(_ref2, _ref3) {
985 | var state = _ref2.state,
986 | commit = _ref2.commit;
987 | var url = _ref3.url,
988 | _ref3$forceUpdate = _ref3.forceUpdate,
989 | forceUpdate = _ref3$forceUpdate === undefined ? false : _ref3$forceUpdate;
990 |
991 | if (state.isPending || forceUpdate) {
992 | return xhr(url).then(function (response) {
993 | commit(SET_RESPONSE_DATA, response.data);
994 | commit(SET_STATUS_CODE, response.status);
995 | commit(SET_IS_PENDING, false);
996 | }).catch(function (response) {
997 | commit(SET_ERRORS, response.errors);
998 | commit(SET_STATUS_CODE, response.status);
999 | commit(SET_IS_PENDING, false);
1000 | });
1001 | } else {
1002 | return Promise.resolve(null);
1003 | }
1004 | }
1005 | };
1006 | }
1007 |
1008 | function getAsyncModule$1() {
1009 | var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1010 |
1011 | var opts = Object.assign({}, options); // for extensibility
1012 | if (opts.xhr === undefined) {
1013 | throw new TypeError('You must provide a valid XHR transport library in `options.xhr`');
1014 | }
1015 | return {
1016 | namespaced: true,
1017 | state: getDefaultState(),
1018 | mutations: getDefaultMutations(),
1019 | actions: getDefaultActions(opts.xhr)
1020 | };
1021 | }
1022 |
1023 | exports.asyncModuleMixin = mixin;
1024 | exports['default'] = getAsyncModule$1;
1025 |
1026 | Object.defineProperty(exports, '__esModule', { value: true });
1027 |
1028 | })));
1029 | //# sourceMappingURL=vuex-async-module.js.map
1030 |
--------------------------------------------------------------------------------
/umd/vuex-async-module.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"vuex-async-module.js","sources":["../node_modules/lodash.camelcase/index.js","../node_modules/lodash.upperfirst/index.js","../src/mixin.js","../src/index.js"],"sourcesContent":["/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe23',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20f0',\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsLowerMisc = '(?:' + rsLower + '|' + rsMisc + ')',\n rsUpperMisc = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptLowerContr = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptUpperContr = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptLowerContr + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsUpperMisc + '+' + rsOptUpperContr + '(?=' + [rsBreak, rsUpper + rsLowerMisc, '$'].join('|') + ')',\n rsUpper + '?' + rsLowerMisc + '+' + rsOptLowerContr,\n rsUpper + '+' + rsOptUpperContr,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboMarksRange + rsComboSymbolsRange + rsVarRange + ']');\n\n/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 'ss'\n};\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\n/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = camelCase;\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe23',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20f0',\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboMarksRange + rsComboSymbolsRange + rsVarRange + ']');\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","import camelCase from 'lodash.camelcase'\nimport upperFirst from 'lodash.upperfirst'\n\nexport default {\n beforeCreate () {\n const { name } = this.$options\n this.$options.computed = Object.assign(\n {},\n this.$options.computed,\n {\n [name]: function () {\n return this.$store.state[name].data\n },\n [`${name}RequestIsPending`]: function () {\n return this.$store.state[name].isPending\n }\n }\n )\n this.$options.methods = Object.assign(\n {},\n this.$options.methods,\n {\n [`getAsync${upperFirst(camelCase(name))}`]: function () {\n return this.$store.dispatch(`${name}/getAsync`, ...arguments)\n }\n }\n )\n }\n}\n","import asyncModuleMixin from './mixin'\n\nexport { asyncModuleMixin }\n\nexport function getDefaultState () {\n return {\n isPending: true,\n statusCode: null,\n data: null,\n errors: null\n }\n}\n\nexport function getDefaultTypes () {\n return {\n SET_RESPONSE_DATA: 'SET_RESPONSE_DATA',\n SET_IS_PENDING: 'SET_IS_PENDING',\n SET_STATUS_CODE: 'SET_STATUS_CODE',\n SET_ERRORS: 'SET_ERRORS'\n }\n}\n\nexport function getDefaultMutations () {\n const types = getDefaultTypes()\n return {\n [types.SET_RESPONSE_DATA]: (state, data) => {\n state.data = data\n return state.data\n },\n [types.SET_IS_PENDING]: (state, isPending) => {\n state.isPending = isPending\n return state.isPending\n },\n [types.SET_STATUS_CODE]: (state, status) => {\n state.statusCode = status\n return state.statusCode\n },\n [types.SET_ERRORS]: (state, errors) => {\n state.errors = errors\n return state.errors\n }\n }\n}\n\nexport function getDefaultActions (xhr) {\n const {\n SET_RESPONSE_DATA,\n SET_IS_PENDING,\n SET_STATUS_CODE,\n SET_ERRORS } = getDefaultTypes()\n return {\n getAsync ({ state, commit }, { url, forceUpdate = false }) {\n if (state.isPending || forceUpdate) {\n return xhr(url)\n .then(response => {\n commit(SET_RESPONSE_DATA, response.data)\n commit(SET_STATUS_CODE, response.status)\n commit(SET_IS_PENDING, false)\n })\n .catch(response => {\n commit(SET_ERRORS, response.errors)\n commit(SET_STATUS_CODE, response.status)\n commit(SET_IS_PENDING, false)\n })\n } else {\n return Promise.resolve(null)\n }\n }\n }\n}\n\nexport default function getAsyncModule (options = {}) {\n const opts = Object.assign({}, options) // for extensibility\n if (opts.xhr === undefined) {\n throw new TypeError('You must provide a valid XHR transport library in `options.xhr`')\n }\n return {\n namespaced: true,\n state: getDefaultState(),\n mutations: getDefaultMutations(),\n actions: getDefaultActions(opts.xhr)\n }\n}\n"],"names":["global","INFINITY","symbolTag","rsAstralRange","rsComboMarksRange","rsComboSymbolsRange","rsVarRange","rsAstral","rsCombo","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","rsZWJ","reOptMod","rsOptVar","rsOptJoin","rsSeq","rsSymbol","reUnicode","reHasUnicode","freeGlobal","freeSelf","root","asciiToArray","hasUnicode","stringToArray","unicodeToArray","objectProto","objectToString","Symbol","symbolProto","symbolToString","baseSlice","baseToString","isSymbol","castSlice","createCaseFirst","toString","isObjectLike","upperFirst","name","$options","computed","Object","assign","$store","state","data","isPending","methods","camelCase","dispatch","arguments","getDefaultState","getDefaultTypes","getDefaultMutations","types","SET_RESPONSE_DATA","SET_IS_PENDING","SET_STATUS_CODE","status","statusCode","SET_ERRORS","errors","getDefaultActions","xhr","commit","url","forceUpdate","then","response","catch","Promise","resolve","getAsyncModule","options","opts","undefined","TypeError"],"mappings":"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Q,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;EAC1E,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;EAC1E,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG;EAC7B,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;EAC5C,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;EAC1E,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;EAC1E,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;EAC3D,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;EAC3D,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;EAC5C,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;EAC5C,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;EAC5C,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;EAC5C,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;EAC3D,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;EAC3D,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;EAC5C,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;EAC5C,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;EACzF,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;EACzF,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG;EAC7B,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;EAC5C,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;EAC5C,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;EAC5C,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI;EAC9B,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI;EAC9B,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI;CAC/B,CAAC;;;AAGF,IAAI,UAAU,GAAG,OAAOA,cAAM,IAAI,QAAQ,IAAIA,cAAM,IAAIA,cAAM,CAAC,MAAM,KAAK,MAAM,IAAIA,cAAM,CAAC;;;AAG3F,IAAI,QAAQ,GAAG,OAAO,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC;;;AAGjF,IAAI,IAAI,GAAG,UAAU,IAAI,QAAQ,IAAI,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;;;;;;;;;;;;;;AAc/D,SAAS,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE;EAC5D,IAAI,KAAK,GAAG,CAAC,CAAC;MACV,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;;EAEtC,IAAI,SAAS,IAAI,MAAM,EAAE;IACvB,WAAW,GAAG,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;GAC9B;EACD,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;IACvB,WAAW,GAAG,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;GACjE;EACD,OAAO,WAAW,CAAC;CACpB;;;;;;;;;AASD,SAAS,YAAY,CAAC,MAAM,EAAE;EAC5B,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;CACzB;;;;;;;;;AASD,SAAS,UAAU,CAAC,MAAM,EAAE;EAC1B,OAAO,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;CACxC;;;;;;;;;AASD,SAAS,cAAc,CAAC,MAAM,EAAE;EAC9B,OAAO,SAAS,GAAG,EAAE;IACnB,OAAO,MAAM,IAAI,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;GACjD,CAAC;CACH;;;;;;;;;;AAUD,IAAI,YAAY,GAAG,cAAc,CAAC,eAAe,CAAC,CAAC;;;;;;;;;AASnD,SAAS,UAAU,CAAC,MAAM,EAAE;EAC1B,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CAClC;;;;;;;;;AASD,SAAS,cAAc,CAAC,MAAM,EAAE;EAC9B,OAAO,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CACtC;;;;;;;;;AASD,SAAS,aAAa,CAAC,MAAM,EAAE;EAC7B,OAAO,UAAU,CAAC,MAAM,CAAC;MACrB,cAAc,CAAC,MAAM,CAAC;MACtB,YAAY,CAAC,MAAM,CAAC,CAAC;CAC1B;;;;;;;;;AASD,SAAS,cAAc,CAAC,MAAM,EAAE;EAC9B,OAAO,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;CACtC;;;;;;;;;AASD,SAAS,YAAY,CAAC,MAAM,EAAE;EAC5B,OAAO,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;CAC1C;;;AAGD,IAAI,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC;;;;;;;AAOnC,IAAI,cAAc,GAAG,WAAW,CAAC,QAAQ,CAAC;;;AAG1C,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;;;AAGzB,IAAI,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC,SAAS,GAAG,SAAS;IACnD,cAAc,GAAG,WAAW,GAAG,WAAW,CAAC,QAAQ,GAAG,SAAS,CAAC;;;;;;;;;;;AAWpE,SAAS,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;EACpC,IAAI,KAAK,GAAG,CAAC,CAAC;MACV,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;;EAE1B,IAAI,KAAK,GAAG,CAAC,EAAE;IACb,KAAK,GAAG,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC;GAChD;EACD,GAAG,GAAG,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC;EAClC,IAAI,GAAG,GAAG,CAAC,EAAE;IACX,GAAG,IAAI,MAAM,CAAC;GACf;EACD,MAAM,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC;EACjD,KAAK,MAAM,CAAC,CAAC;;EAEb,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;EAC3B,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;IACvB,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;GACtC;EACD,OAAO,MAAM,CAAC;CACf;;;;;;;;;;AAUD,SAAS,YAAY,CAAC,KAAK,EAAE;;EAE3B,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE;IAC5B,OAAO,KAAK,CAAC;GACd;EACD,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;IACnB,OAAO,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;GACzD;EACD,IAAI,MAAM,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC;EAC1B,OAAO,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC;CACpE;;;;;;;;;;;AAWD,SAAS,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;EACpC,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;EAC1B,GAAG,GAAG,GAAG,KAAK,SAAS,GAAG,MAAM,GAAG,GAAG,CAAC;EACvC,OAAO,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,MAAM,IAAI,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;CACzE;;;;;;;;;AASD,SAAS,eAAe,CAAC,UAAU,EAAE;EACnC,OAAO,SAAS,MAAM,EAAE;IACtB,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;;IAE1B,IAAI,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;QAC/B,aAAa,CAAC,MAAM,CAAC;QACrB,SAAS,CAAC;;IAEd,IAAI,GAAG,GAAG,UAAU;QAChB,UAAU,CAAC,CAAC,CAAC;QACb,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;;IAErB,IAAI,QAAQ,GAAG,UAAU;QACrB,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;IAEpB,OAAO,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,QAAQ,CAAC;GACrC,CAAC;CACH;;;;;;;;;AASD,SAAS,gBAAgB,CAAC,QAAQ,EAAE;EAClC,OAAO,SAAS,MAAM,EAAE;IACtB,OAAO,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;GAC7E,CAAC;CACH;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BD,SAAS,YAAY,CAAC,KAAK,EAAE;EAC3B,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,IAAI,QAAQ,CAAC;CAC5C;;;;;;;;;;;;;;;;;;;AAmBD,SAAS,QAAQ,CAAC,KAAK,EAAE;EACvB,OAAO,OAAO,KAAK,IAAI,QAAQ;KAC5B,YAAY,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC;CACpE;;;;;;;;;;;;;;;;;;;;;;;AAuBD,SAAS,QAAQ,CAAC,KAAK,EAAE;EACvB,OAAO,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;CACjD;;;;;;;;;;;;;;;;;;;;;;AAsBD,IAAI,SAAS,GAAG,gBAAgB,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;EAC7D,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;EAC1B,OAAO,MAAM,IAAI,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;CACnD,CAAC,CAAC;;;;;;;;;;;;;;;;;AAiBH,SAAS,UAAU,CAAC,MAAM,EAAE;EAC1B,OAAO,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;CACnD;;;;;;;;;;;;;;;;;;;;AAoBD,SAAS,MAAM,CAAC,MAAM,EAAE;EACtB,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;EAC1B,OAAO,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;CACjF;;;;;;;;;;;;;;;;;;;AAmBD,IAAI,UAAU,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;AAqBhD,SAAS,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE;EACrC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;EAC1B,OAAO,GAAG,KAAK,GAAG,SAAS,GAAG,OAAO,CAAC;;EAEtC,IAAI,OAAO,KAAK,SAAS,EAAE;IACzB,OAAO,cAAc,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;GAC3E;EACD,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;CACpC;;AAED,oBAAc,GAAG,SAAS;;ACtlB1B;;;;;;;;;;AAUA,IAAIC,UAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;;;AAGrB,IAAIC,WAAS,GAAG,iBAAiB,CAAC;;;AAGlC,IAAIC,eAAa,GAAG,iBAAiB;IACjCC,mBAAiB,GAAG,gCAAgC;IACpDC,qBAAmB,GAAG,iBAAiB;IACvCC,YAAU,GAAG,gBAAgB,CAAC;;;AAGlC,IAAIC,UAAQ,GAAG,GAAG,GAAGJ,eAAa,GAAG,GAAG;IACpCK,SAAO,GAAG,GAAG,GAAGJ,mBAAiB,GAAGC,qBAAmB,GAAG,GAAG;IAC7DI,QAAM,GAAG,0BAA0B;IACnCC,YAAU,GAAG,KAAK,GAAGF,SAAO,GAAG,GAAG,GAAGC,QAAM,GAAG,GAAG;IACjDE,aAAW,GAAG,IAAI,GAAGR,eAAa,GAAG,GAAG;IACxCS,YAAU,GAAG,iCAAiC;IAC9CC,YAAU,GAAG,oCAAoC;IACjDC,OAAK,GAAG,SAAS,CAAC;;;AAGtB,IAAIC,UAAQ,GAAGL,YAAU,GAAG,GAAG;IAC3BM,UAAQ,GAAG,GAAG,GAAGV,YAAU,GAAG,IAAI;IAClCW,WAAS,GAAG,KAAK,GAAGH,OAAK,GAAG,KAAK,GAAG,CAACH,aAAW,EAAEC,YAAU,EAAEC,YAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAGG,UAAQ,GAAGD,UAAQ,GAAG,IAAI;IACtHG,OAAK,GAAGF,UAAQ,GAAGD,UAAQ,GAAGE,WAAS;IACvCE,UAAQ,GAAG,KAAK,GAAG,CAACR,aAAW,GAAGH,SAAO,GAAG,GAAG,EAAEA,SAAO,EAAEI,YAAU,EAAEC,YAAU,EAAEN,UAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;;;AAGhH,IAAIa,WAAS,GAAG,MAAM,CAACX,QAAM,GAAG,KAAK,GAAGA,QAAM,GAAG,IAAI,GAAGU,UAAQ,GAAGD,OAAK,EAAE,GAAG,CAAC,CAAC;;;AAG/E,IAAIG,cAAY,GAAG,MAAM,CAAC,GAAG,GAAGP,OAAK,GAAGX,eAAa,IAAIC,mBAAiB,GAAGC,qBAAmB,GAAGC,YAAU,GAAG,GAAG,CAAC,CAAC;;;AAGrH,IAAIgB,YAAU,GAAG,OAAOtB,cAAM,IAAI,QAAQ,IAAIA,cAAM,IAAIA,cAAM,CAAC,MAAM,KAAK,MAAM,IAAIA,cAAM,CAAC;;;AAG3F,IAAIuB,UAAQ,GAAG,OAAO,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC;;;AAGjF,IAAIC,MAAI,GAAGF,YAAU,IAAIC,UAAQ,IAAI,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;;;;;;;;;AAS/D,SAASE,cAAY,CAAC,MAAM,EAAE;EAC5B,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;CACzB;;;;;;;;;AASD,SAASC,YAAU,CAAC,MAAM,EAAE;EAC1B,OAAOL,cAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CAClC;;;;;;;;;AASD,SAASM,eAAa,CAAC,MAAM,EAAE;EAC7B,OAAOD,YAAU,CAAC,MAAM,CAAC;MACrBE,gBAAc,CAAC,MAAM,CAAC;MACtBH,cAAY,CAAC,MAAM,CAAC,CAAC;CAC1B;;;;;;;;;AASD,SAASG,gBAAc,CAAC,MAAM,EAAE;EAC9B,OAAO,MAAM,CAAC,KAAK,CAACR,WAAS,CAAC,IAAI,EAAE,CAAC;CACtC;;;AAGD,IAAIS,aAAW,GAAG,MAAM,CAAC,SAAS,CAAC;;;;;;;AAOnC,IAAIC,gBAAc,GAAGD,aAAW,CAAC,QAAQ,CAAC;;;AAG1C,IAAIE,QAAM,GAAGP,MAAI,CAAC,MAAM,CAAC;;;AAGzB,IAAIQ,aAAW,GAAGD,QAAM,GAAGA,QAAM,CAAC,SAAS,GAAG,SAAS;IACnDE,gBAAc,GAAGD,aAAW,GAAGA,aAAW,CAAC,QAAQ,GAAG,SAAS,CAAC;;;;;;;;;;;AAWpE,SAASE,WAAS,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;EACpC,IAAI,KAAK,GAAG,CAAC,CAAC;MACV,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;;EAE1B,IAAI,KAAK,GAAG,CAAC,EAAE;IACb,KAAK,GAAG,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC;GAChD;EACD,GAAG,GAAG,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC;EAClC,IAAI,GAAG,GAAG,CAAC,EAAE;IACX,GAAG,IAAI,MAAM,CAAC;GACf;EACD,MAAM,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC;EACjD,KAAK,MAAM,CAAC,CAAC;;EAEb,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;EAC3B,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;IACvB,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;GACtC;EACD,OAAO,MAAM,CAAC;CACf;;;;;;;;;;AAUD,SAASC,cAAY,CAAC,KAAK,EAAE;;EAE3B,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE;IAC5B,OAAO,KAAK,CAAC;GACd;EACD,IAAIC,UAAQ,CAAC,KAAK,CAAC,EAAE;IACnB,OAAOH,gBAAc,GAAGA,gBAAc,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;GACzD;EACD,IAAI,MAAM,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC;EAC1B,OAAO,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,CAAChC,UAAQ,IAAI,IAAI,GAAG,MAAM,CAAC;CACpE;;;;;;;;;;;AAWD,SAASoC,WAAS,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;EACpC,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;EAC1B,GAAG,GAAG,GAAG,KAAK,SAAS,GAAG,MAAM,GAAG,GAAG,CAAC;EACvC,OAAO,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,MAAM,IAAI,KAAK,GAAGH,WAAS,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;CACzE;;;;;;;;;AASD,SAASI,iBAAe,CAAC,UAAU,EAAE;EACnC,OAAO,SAAS,MAAM,EAAE;IACtB,MAAM,GAAGC,UAAQ,CAAC,MAAM,CAAC,CAAC;;IAE1B,IAAI,UAAU,GAAGb,YAAU,CAAC,MAAM,CAAC;QAC/BC,eAAa,CAAC,MAAM,CAAC;QACrB,SAAS,CAAC;;IAEd,IAAI,GAAG,GAAG,UAAU;QAChB,UAAU,CAAC,CAAC,CAAC;QACb,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;;IAErB,IAAI,QAAQ,GAAG,UAAU;QACrBU,WAAS,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;IAEpB,OAAO,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,QAAQ,CAAC;GACrC,CAAC;CACH;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BD,SAASG,cAAY,CAAC,KAAK,EAAE;EAC3B,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,IAAI,QAAQ,CAAC;CAC5C;;;;;;;;;;;;;;;;;;;AAmBD,SAASJ,UAAQ,CAAC,KAAK,EAAE;EACvB,OAAO,OAAO,KAAK,IAAI,QAAQ;KAC5BI,cAAY,CAAC,KAAK,CAAC,IAAIV,gBAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI5B,WAAS,CAAC,CAAC;CACpE;;;;;;;;;;;;;;;;;;;;;;;AAuBD,SAASqC,UAAQ,CAAC,KAAK,EAAE;EACvB,OAAO,KAAK,IAAI,IAAI,GAAG,EAAE,GAAGJ,cAAY,CAAC,KAAK,CAAC,CAAC;CACjD;;;;;;;;;;;;;;;;;;;AAmBD,IAAIM,YAAU,GAAGH,iBAAe,CAAC,aAAa,CAAC,CAAC;;AAEhD,qBAAc,GAAGG,YAAU;;AC3S3B,YAAe;cAAA,0BACG;;;QACNC,IADM,GACG,KAAKC,QADR,CACND,IADM;;SAETC,QAAL,CAAcC,QAAd,GAAyBC,OAAOC,MAAP,CACvB,EADuB,EAEvB,KAAKH,QAAL,CAAcC,QAFS,uCAIpBF,IAJoB,IAIb,YAAY;aACX,KAAKK,MAAL,CAAYC,KAAZ,CAAkBN,IAAlB,EAAwBO,IAA/B;KALmB,iBAOjBP,IAPiB,yBAOQ,qBAAY;aAChC,KAAKK,MAAL,CAAYC,KAAZ,CAAkBN,IAAlB,EAAwBQ,SAA/B;KARmB,kBAAzB;SAYKP,QAAL,CAAcQ,OAAd,GAAwBN,OAAOC,MAAP,CACtB,EADsB,EAEtB,KAAKH,QAAL,CAAcQ,OAFQ,sDAIRV,kBAAWW,iBAAUV,IAAV,CAAX,CAJQ,IAIwB,qBAAY;;;aAC/C,gBAAKK,MAAL,EAAYM,QAAZ,iBAAwBX,IAAxB,kDAA4CY,SAA5C,GAAP;KALkB,mBAAxB;;CAfJ;;ACCO,SAASC,eAAT,GAA4B;SAC1B;eACM,IADN;gBAEO,IAFP;UAGC,IAHD;YAIG;GAJV;;;AAQF,AAAO,SAASC,eAAT,GAA4B;SAC1B;uBACc,mBADd;oBAEW,gBAFX;qBAGY,iBAHZ;gBAIO;GAJd;;;AAQF,AAAO,SAASC,mBAAT,GAAgC;;;MAC/BC,QAAQF,iBAAd;yBAEGE,MAAMC,iBADT,IAC6B,UAACX,KAAD,EAAQC,IAAR,EAAiB;UACpCA,IAAN,GAAaA,IAAb;WACOD,MAAMC,IAAb;GAHJ,OAKGS,MAAME,cALT,IAK0B,UAACZ,KAAD,EAAQE,SAAR,EAAsB;UACtCA,SAAN,GAAkBA,SAAlB;WACOF,MAAME,SAAb;GAPJ,OASGQ,MAAMG,eATT,IAS2B,UAACb,KAAD,EAAQc,MAAR,EAAmB;UACpCC,UAAN,GAAmBD,MAAnB;WACOd,MAAMe,UAAb;GAXJ,OAaGL,MAAMM,UAbT,IAasB,UAAChB,KAAD,EAAQiB,MAAR,EAAmB;UAC/BA,MAAN,GAAeA,MAAf;WACOjB,MAAMiB,MAAb;GAfJ;;;AAoBF,AAAO,SAASC,iBAAT,CAA4BC,GAA5B,EAAiC;yBAKrBX,iBALqB;MAEpCG,iBAFoC,oBAEpCA,iBAFoC;MAGpCC,cAHoC,oBAGpCA,cAHoC;MAIpCC,eAJoC,oBAIpCA,eAJoC;MAKpCG,UALoC,oBAKpCA,UALoC;;SAM/B;YAAA,kCACsD;UAA/ChB,KAA+C,SAA/CA,KAA+C;UAAxCoB,MAAwC,SAAxCA,MAAwC;UAA5BC,GAA4B,SAA5BA,GAA4B;oCAAvBC,WAAuB;UAAvBA,WAAuB,qCAAT,KAAS;;UACrDtB,MAAME,SAAN,IAAmBoB,WAAvB,EAAoC;eAC3BH,IAAIE,GAAJ,EACJE,IADI,CACC,oBAAY;iBACTZ,iBAAP,EAA0Ba,SAASvB,IAAnC;iBACOY,eAAP,EAAwBW,SAASV,MAAjC;iBACOF,cAAP,EAAuB,KAAvB;SAJG,EAMJa,KANI,CAME,oBAAY;iBACVT,UAAP,EAAmBQ,SAASP,MAA5B;iBACOJ,eAAP,EAAwBW,SAASV,MAAjC;iBACOF,cAAP,EAAuB,KAAvB;SATG,CAAP;OADF,MAYO;eACEc,QAAQC,OAAR,CAAgB,IAAhB,CAAP;;;GAfN;;;AAqBF,AAAe,SAASC,gBAAT,GAAuC;MAAdC,OAAc,uEAAJ,EAAI;;MAC9CC,OAAOjC,OAAOC,MAAP,CAAc,EAAd,EAAkB+B,OAAlB,CAAb,CADoD;MAEhDC,KAAKX,GAAL,KAAaY,SAAjB,EAA4B;UACpB,IAAIC,SAAJ,CAAc,iEAAd,CAAN;;SAEK;gBACO,IADP;WAEEzB,iBAFF;eAGME,qBAHN;aAIIS,kBAAkBY,KAAKX,GAAvB;GAJX;;;;;;;;;;;;;;"}
--------------------------------------------------------------------------------
/umd/vuex-async-module.min.js:
--------------------------------------------------------------------------------
1 | /*! @liqueflies/vuex-async-module - v0.0.5
2 | * https://github.com/liqueflies/vuex-async-module
3 | * Copyright (c) 2017 - [object Object];
4 | * Licensed MIT
5 | */
6 | !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(t.VuexAsyncModule={})}(this,function(t){"use strict";function e(t){return Z.test(t)}function u(t){return e(t)?function(t){return t.match(z)||[]}(t):function(t){return t.split("")}(t)}function n(t){if("string"==typeof t)return t;if(function(t){return"symbol"==typeof t||function(t){return!!t&&"object"==typeof t}(t)&&V.call(t)==l}(t))return J?J.call(t):"";var e=t+"";return"0"==e&&1/t==-a?"-0":e}function f(t,e,u){var n=t.length;return u=void 0===u?n:u,!e&&u>=n?t:function(t,e,u){var n=-1,f=t.length;e<0&&(e=-e>f?0:f+e),(u=u>f?f:u)<0&&(u+=f),f=e>u?0:u-e>>>0,e>>>=0;for(var r=Array(f);++n=n?t:function(t,e,u){var n=-1,f=t.length;e<0&&(e=-e>f?0:f+e),(u=u>f?f:u)<0&&(u+=f),f=e>u?0:u-e>>>0,e>>>=0;for(var r=Array(f);++n0&&void 0!==arguments[0]?arguments[0]:{},e=Object.assign({},t);if(void 0===e.xhr)throw new TypeError("You must provide a valid XHR transport library in `options.xhr`");return{namespaced:!0,state:{isPending:!0,statusCode:null,data:null,errors:null},mutations:function(){var t,e={SET_RESPONSE_DATA:"SET_RESPONSE_DATA",SET_IS_PENDING:"SET_IS_PENDING",SET_STATUS_CODE:"SET_STATUS_CODE",SET_ERRORS:"SET_ERRORS"};return t={},t[e.SET_RESPONSE_DATA]=function(t,e){return t.data=e,t.data},t[e.SET_IS_PENDING]=function(t,e){return t.isPending=e,t.isPending},t[e.SET_STATUS_CODE]=function(t,e){return t.statusCode=e,t.statusCode},t[e.SET_ERRORS]=function(t,e){return t.errors=e,t.errors},t}(),actions:function(t){var e={SET_RESPONSE_DATA:"SET_RESPONSE_DATA",SET_IS_PENDING:"SET_IS_PENDING",SET_STATUS_CODE:"SET_STATUS_CODE",SET_ERRORS:"SET_ERRORS"},u=e.SET_RESPONSE_DATA,n=e.SET_IS_PENDING,f=e.SET_STATUS_CODE,r=e.SET_ERRORS;return{getAsync:function(e,o){var i=e.state,c=e.commit,d=o.url,s=o.forceUpdate,a=void 0!==s&&s;return i.isPending||a?t(d).then(function(t){c(u,t.data),c(f,t.status),c(n,!1)}).catch(function(t){c(r,t.errors),c(f,t.status),c(n,!1)}):Promise.resolve(null)}}}(e.xhr)}},Object.defineProperty(t,"__esModule",{value:!0})});
7 | //# sourceMappingURL=vuex-async-module.min.js.map
8 |
--------------------------------------------------------------------------------
/umd/vuex-async-module.min.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"vuex-async-module.min.js","sources":["../node_modules/lodash.camelcase/index.js","../node_modules/lodash.upperfirst/index.js","../src/mixin.js","../src/index.js"],"sourcesContent":["/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe23',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20f0',\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsLowerMisc = '(?:' + rsLower + '|' + rsMisc + ')',\n rsUpperMisc = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptLowerContr = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptUpperContr = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptLowerContr + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsUpperMisc + '+' + rsOptUpperContr + '(?=' + [rsBreak, rsUpper + rsLowerMisc, '$'].join('|') + ')',\n rsUpper + '?' + rsLowerMisc + '+' + rsOptLowerContr,\n rsUpper + '+' + rsOptUpperContr,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboMarksRange + rsComboSymbolsRange + rsVarRange + ']');\n\n/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 'ss'\n};\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\n/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = camelCase;\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe23',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20f0',\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboMarksRange + rsComboSymbolsRange + rsVarRange + ']');\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","import camelCase from 'lodash.camelcase'\nimport upperFirst from 'lodash.upperfirst'\n\nexport default {\n beforeCreate () {\n const { name } = this.$options\n this.$options.computed = Object.assign(\n {},\n this.$options.computed,\n {\n [name]: function () {\n return this.$store.state[name].data\n },\n [`${name}RequestIsPending`]: function () {\n return this.$store.state[name].isPending\n }\n }\n )\n this.$options.methods = Object.assign(\n {},\n this.$options.methods,\n {\n [`getAsync${upperFirst(camelCase(name))}`]: function () {\n return this.$store.dispatch(`${name}/getAsync`, ...arguments)\n }\n }\n )\n }\n}\n","import asyncModuleMixin from './mixin'\n\nexport { asyncModuleMixin }\n\nexport function getDefaultState () {\n return {\n isPending: true,\n statusCode: null,\n data: null,\n errors: null\n }\n}\n\nexport function getDefaultTypes () {\n return {\n SET_RESPONSE_DATA: 'SET_RESPONSE_DATA',\n SET_IS_PENDING: 'SET_IS_PENDING',\n SET_STATUS_CODE: 'SET_STATUS_CODE',\n SET_ERRORS: 'SET_ERRORS'\n }\n}\n\nexport function getDefaultMutations () {\n const types = getDefaultTypes()\n return {\n [types.SET_RESPONSE_DATA]: (state, data) => {\n state.data = data\n return state.data\n },\n [types.SET_IS_PENDING]: (state, isPending) => {\n state.isPending = isPending\n return state.isPending\n },\n [types.SET_STATUS_CODE]: (state, status) => {\n state.statusCode = status\n return state.statusCode\n },\n [types.SET_ERRORS]: (state, errors) => {\n state.errors = errors\n return state.errors\n }\n }\n}\n\nexport function getDefaultActions (xhr) {\n const {\n SET_RESPONSE_DATA,\n SET_IS_PENDING,\n SET_STATUS_CODE,\n SET_ERRORS } = getDefaultTypes()\n return {\n getAsync ({ state, commit }, { url, forceUpdate = false }) {\n if (state.isPending || forceUpdate) {\n return xhr(url)\n .then(response => {\n commit(SET_RESPONSE_DATA, response.data)\n commit(SET_STATUS_CODE, response.status)\n commit(SET_IS_PENDING, false)\n })\n .catch(response => {\n commit(SET_ERRORS, response.errors)\n commit(SET_STATUS_CODE, response.status)\n commit(SET_IS_PENDING, false)\n })\n } else {\n return Promise.resolve(null)\n }\n }\n }\n}\n\nexport default function getAsyncModule (options = {}) {\n const opts = Object.assign({}, options) // for extensibility\n if (opts.xhr === undefined) {\n throw new TypeError('You must provide a valid XHR transport library in `options.xhr`')\n }\n return {\n namespaced: true,\n state: getDefaultState(),\n mutations: getDefaultMutations(),\n actions: getDefaultActions(opts.xhr)\n }\n}\n"],"names":["hasUnicode","string","reHasUnicode","test","stringToArray","match","reUnicode","unicodeToArray","split","asciiToArray","baseToString","value","isObjectLike","objectToString","call","symbolTag","isSymbol","symbolToString","result","INFINITY","castSlice","array","start","end","length","undefined","index","Array","baseSlice","toString","reAsciiWord","reLatin","rsBreakRange","rsMathOpRange","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsLowerMisc","rsUpperMisc","reOptMod","rsSeq","join","rsEmoji","rsSymbol","reApos","RegExp","reComboMark","reUnicodeWord","reHasUnicodeWord","freeGlobal","global","Object","freeSelf","self","root","Function","deburrLetter","object","key","basePropertyOf","À","Á","Â","Ã","Ä","Å","à","á","â","ã","ä","å","Ç","ç","Ð","ð","È","É","Ê","Ë","è","é","ê","ë","Ì","Í","Î","Ï","ì","í","î","ï","Ñ","ñ","Ò","Ó","Ô","Õ","Ö","Ø","ò","ó","ô","õ","ö","ø","Ù","Ú","Û","Ü","ù","ú","û","ü","Ý","ý","ÿ","Æ","æ","Þ","þ","ß","Ā","Ă","Ą","ā","ă","ą","Ć","Ĉ","Ċ","Č","ć","ĉ","ċ","č","Ď","Đ","ď","đ","Ē","Ĕ","Ė","Ę","Ě","ē","ĕ","ė","ę","ě","Ĝ","Ğ","Ġ","Ģ","ĝ","ğ","ġ","ģ","Ĥ","Ħ","ĥ","ħ","Ĩ","Ī","Ĭ","Į","İ","ĩ","ī","ĭ","į","ı","Ĵ","ĵ","Ķ","ķ","ĸ","Ĺ","Ļ","Ľ","Ŀ","Ł","ĺ","ļ","ľ","ŀ","ł","Ń","Ņ","Ň","Ŋ","ń","ņ","ň","ŋ","Ō","Ŏ","Ő","ō","ŏ","ő","Ŕ","Ŗ","Ř","ŕ","ŗ","ř","Ś","Ŝ","Ş","Š","ś","ŝ","ş","š","Ţ","Ť","Ŧ","ţ","ť","ŧ","Ũ","Ū","Ŭ","Ů","Ű","Ų","ũ","ū","ŭ","ů","ű","ų","Ŵ","ŵ","Ŷ","ŷ","Ÿ","Ź","Ż","Ž","ź","ż","ž","IJ","ij","Œ","œ","ʼn","ſ","prototype","Symbol","symbolProto","camelCase","callback","iteratee","accumulator","initAccum","arrayReduce","pattern","guard","hasUnicodeWord","unicodeWords","asciiWords","words","replace","deburr","createCompounder","word","toLowerCase","upperFirst","capitalize","methodName","strSymbols","chr","charAt","trailing","slice","createCaseFirst","name","this","$options","computed","assign","$store","state","data","isPending","methods","dispatch","arguments","options","opts","xhr","TypeError","types","SET_RESPONSE_DATA","SET_IS_PENDING","SET_STATUS_CODE","status","statusCode","SET_ERRORS","errors","getDefaultMutations","commit","url","forceUpdate","then","response","catch","Promise","resolve","getDefaultActions"],"mappings":"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"}
--------------------------------------------------------------------------------