{"_id":"feathers-vuex","_rev":"308-fb24b9e8e75fbc227a890b228e2b9ff0","name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","dist-tags":{"latest":"3.16.0","pre":"4.0.1-pre.16","next":"4.0.1-pre.12","pegasus":"1.7.0-pre.1"},"versions":{"0.0.1":{"name":"feathers-vuex","description":"Implement Vuex as a Feathers Client plugin","version":"0.0.1","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard src/**/*.js test/**/*.js --fix","mocha":"mocha --opts mocha.opts","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run testee","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"clone":"^2.1.0","debug":"^2.6.1","deep-assign":"^2.0.0","feathers-commons":"^0.8.7","feathers-errors":"^2.5.0","feathers-query-filters":"^2.1.2","rubberduck":"^1.1.1","standard":"^9.0.0"},"devDependencies":{"axios":"^0.15.3","babel-cli":"^6.23.0","babel-core":"^6.23.1","babel-eslint":"^7.1.1","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.22.0","babel-preset-stage-2":"^6.22.0","body-parser":"^1.17.0","chai":"3.4.1","feathers":"^2.1.1","feathers-authentication":"pre","feathers-authentication-client":"^0.1.10","feathers-authentication-jwt":"^0.3.1","feathers-hooks":"^1.8.1","feathers-memory":"^1.1.0","feathers-rest":"^1.7.1","feathers-socketio":"^1.5.2","istanbul":"^1.1.0-alpha.1","mocha":"^3.2.0","shx":"^0.2.2","socket.io-client":"^1.7.3","steal":"^1.2.10","steal-mocha":"^1.0.0","testee":"^0.3.1","vue":"^2.2.1","vuex":"^2.2.1"},"gitHead":"b0a780dcbbfa31c144ca7694c00fa29c7e255cf2","_id":"feathers-vuex@0.0.1","_shasum":"e53ba9e98d7e2d5b1aa5ff8fd3082bfb9c272de4","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.6.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"shasum":"e53ba9e98d7e2d5b1aa5ff8fd3082bfb9c272de4","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-0.0.1.tgz","integrity":"sha512-WN4gBIwx2ETTU41qg5unOmILRVSD3khiI0S1s9+IELA4SIPRWwAZ2NDFE1Bbekc1qGRm5dCe5ICxcnhuIdiv8Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFWNufy2vkf86UaytalV6suRfEjQIMlE94SpoqjBDee3AiBnzc8F/7cmRc1N1p/5QQbSywuQvf2t/5FGOkTIutEgVQ=="}]},"maintainers":[{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/feathers-vuex-0.0.1.tgz_1489559783917_0.88977543823421"}},"0.0.2":{"name":"feathers-vuex","description":"Implement Vuex as a Feathers Client plugin","version":"0.0.2","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard src/**/*.js test/**/*.js --fix","mocha":"mocha --opts mocha.opts","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run testee","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"clone":"^2.1.0","debug":"^2.6.1","deep-assign":"^2.0.0","feathers-commons":"^0.8.7","feathers-errors":"^2.5.0","feathers-query-filters":"^2.1.2","rubberduck":"^1.1.1","standard":"^9.0.0"},"devDependencies":{"axios":"^0.15.3","babel-cli":"^6.23.0","babel-core":"^6.23.1","babel-eslint":"^7.1.1","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.22.0","babel-preset-stage-2":"^6.22.0","body-parser":"^1.17.0","chai":"3.4.1","feathers":"^2.1.1","feathers-authentication":"pre","feathers-authentication-client":"^0.1.10","feathers-authentication-jwt":"^0.3.1","feathers-hooks":"^1.8.1","feathers-memory":"^1.1.0","feathers-rest":"^1.7.1","feathers-socketio":"^1.5.2","istanbul":"^1.1.0-alpha.1","mocha":"^3.2.0","shx":"^0.2.2","socket.io-client":"^1.7.3","steal":"^1.2.10","steal-mocha":"^1.0.0","testee":"^0.3.1","vue":"^2.2.1","vuex":"^2.2.1"},"gitHead":"5bbdfc503bea925669d5bccd5e8fb6909945d262","_id":"feathers-vuex@0.0.2","_shasum":"3ee14c979359e8e260a8c9a4db0945ec6613e03f","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.6.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"shasum":"3ee14c979359e8e260a8c9a4db0945ec6613e03f","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-0.0.2.tgz","integrity":"sha512-VTvp3WahCuS93qW41qdc5nWWrQT3MvPrzHxyjC8nwTcnthf8A7RYzfjpn7aSzab0OMg2zD0YCsCzdqQaJEdYww==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF8Rtb5hFN9SGe33mLwoB50mtSNAekrsQj1YIlGs5STOAiEA/hx58XuiyCDNDJ92hNySYZynka2PzLkUb64KyrAlQ38="}]},"maintainers":[{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/feathers-vuex-0.0.2.tgz_1489561400412_0.28677203855477273"}},"0.0.3":{"name":"feathers-vuex","description":"Implement Vuex as a Feathers Client plugin","version":"0.0.3","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard src/**/*.js test/**/*.js --fix","mocha":"mocha --opts mocha.opts","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run testee","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"clone":"^2.1.0","debug":"^2.6.1","deep-assign":"^2.0.0","feathers-commons":"^0.8.7","feathers-errors":"^2.5.0","feathers-query-filters":"^2.1.2","rubberduck":"^1.1.1"},"devDependencies":{"axios":"^0.15.3","babel-cli":"^6.23.0","babel-core":"^6.23.1","babel-eslint":"^7.1.1","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.22.0","babel-preset-stage-2":"^6.22.0","body-parser":"^1.17.0","chai":"3.4.1","feathers":"^2.1.1","feathers-authentication":"pre","feathers-authentication-client":"^0.1.10","feathers-authentication-jwt":"^0.3.1","feathers-hooks":"^1.8.1","feathers-memory":"^1.1.0","feathers-rest":"^1.7.1","feathers-socketio":"^1.5.2","istanbul":"^1.1.0-alpha.1","mocha":"^3.2.0","shx":"^0.2.2","socket.io-client":"^1.7.3","standard":"^9.0.1","steal":"^1.2.10","steal-mocha":"^1.0.0","testee":"^0.3.1","vue":"^2.2.1","vuex":"^2.2.1"},"gitHead":"5e59a52afe4da36488cdc9c9dc99ac71d029b851","_id":"feathers-vuex@0.0.3","_shasum":"21447e1e5479bf1fdb0216de59e15a0934479a54","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.6.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"shasum":"21447e1e5479bf1fdb0216de59e15a0934479a54","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-0.0.3.tgz","integrity":"sha512-UN86ja5uBpinG06pcPHnyaTaGnsYZI31bMesMY7SByrZIr4kuJ4+eBMg3+YTyTNl6q0wuwhx+nM0PkgdjHCdIQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICFblW6yyShupgIrCnOAPEPM9YEqJE8a80bJi99Mq8FcAiEA+Kt7kDZG8vyb1mjJKsK0LyGBLA8r41ampI6CQUJmC9c="}]},"maintainers":[{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/feathers-vuex-0.0.3.tgz_1489586382960_0.7828183262608945"}},"0.0.4":{"name":"feathers-vuex","description":"Implement Vuex as a Feathers Client plugin","version":"0.0.4","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard src/**/*.js test/**/*.js --fix","mocha":"mocha --opts mocha.opts","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run testee","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"clone":"^2.1.0","debug":"^2.6.1","deep-assign":"^2.0.0","feathers-commons":"^0.8.7","feathers-errors":"^2.5.0","feathers-query-filters":"^2.1.2","rubberduck":"^1.1.1"},"devDependencies":{"axios":"^0.15.3","babel-cli":"^6.23.0","babel-core":"^6.23.1","babel-eslint":"^7.1.1","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.22.0","babel-preset-stage-2":"^6.22.0","body-parser":"^1.17.0","chai":"3.4.1","feathers":"^2.1.1","feathers-authentication":"pre","feathers-authentication-client":"^0.1.10","feathers-authentication-jwt":"^0.3.1","feathers-hooks":"^1.8.1","feathers-memory":"^1.1.0","feathers-rest":"^1.7.1","feathers-socketio":"^1.5.2","istanbul":"^1.1.0-alpha.1","mocha":"^3.2.0","shx":"^0.2.2","socket.io-client":"^1.7.3","standard":"^9.0.1","steal":"^1.2.10","steal-mocha":"^1.0.0","testee":"^0.3.1","vue":"^2.2.1","vuex":"^2.2.1"},"gitHead":"d6475833c4d3a6177950d5418db0853658f03596","_id":"feathers-vuex@0.0.4","_shasum":"fae201f485038c368917468fdd0c3b5da3a88621","_from":".","_npmVersion":"4.5.0","_nodeVersion":"7.6.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"shasum":"fae201f485038c368917468fdd0c3b5da3a88621","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-0.0.4.tgz","integrity":"sha512-IK5k7caChtxpr+kmHdOx7BuMdGuzWzLqybmQ3Nb6PVfzvd8gS4hfxdBF+sFd63IpdIkOo/SMGxoN6j/9oMoY3g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDotMcB7j38vHxrWPVBnHUodBmC3hGjh60kzpE+6nI8XQIgPekyQwMpkvymV8mMK+jl+oWgMjkoJ0Spvq5lFITLo14="}]},"maintainers":[{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/feathers-vuex-0.0.4.tgz_1492013701357_0.3377133624162525"}},"0.0.5":{"name":"feathers-vuex","description":"Implement Vuex as a Feathers Client plugin","version":"0.0.5","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard src/**/*.js test/**/*.js --fix","mocha":"mocha --opts mocha.opts","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run testee","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"clone":"^2.1.1","debug":"^2.6.3","deep-assign":"^2.0.0","feathers-commons":"^0.8.7","feathers-errors":"^2.6.3","feathers-query-filters":"^2.1.2","rubberduck":"^1.1.1"},"devDependencies":{"axios":"^0.16.1","babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^7.2.2","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.17.1","chai":"^3.5.0","feathers":"^2.1.1","feathers-authentication":"^1.2.2","feathers-authentication-client":"^0.3.1","feathers-authentication-jwt":"^0.3.1","feathers-hooks":"^1.8.1","feathers-memory":"^1.1.0","feathers-rest":"^1.7.2","feathers-socketio":"^1.5.2","istanbul":"^1.1.0-alpha.1","mocha":"^3.2.0","shx":"^0.2.2","socket.io-client":"^1.7.3","standard":"^10.0.2","steal":"^1.4.2","steal-mocha":"^1.0.0","testee":"^0.4.0","vue":"^2.2.6","vuex":"^2.3.0"},"gitHead":"0aaf6ae279a7d50c4caa0bc96a04db813c87ccc3","_id":"feathers-vuex@0.0.5","_shasum":"90305163b81815c0a19bf246d5542ff8f8bce8a6","_from":".","_npmVersion":"4.5.0","_nodeVersion":"7.6.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"shasum":"90305163b81815c0a19bf246d5542ff8f8bce8a6","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-0.0.5.tgz","integrity":"sha512-wSHJj8lLmhUOTywMdQvippQASMbxvCOs7L/ilXk/dl3Z7sU8mJQSwA6FE72ZdH2a0scnH+yHaTNsbY8XXB9zoQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHgdRYnbZkFYCkdJ1PJJ/ozJWguLLsYvrUDfm19txmr3AiBUcFutRzvP/DCqEf6di2tOsRALJsbF0A8cMBTzMU7Yng=="}]},"maintainers":[{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/feathers-vuex-0.0.5.tgz_1492261953928_0.47439137916080654"}},"0.1.0":{"name":"feathers-vuex","description":"Implement Vuex as a Feathers Client plugin","version":"0.1.0","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard src/**/*.js test/**/*.js --fix","mocha":"mocha --opts mocha.opts","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run testee","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"clone":"^2.1.1","debug":"^2.6.3","deep-assign":"^2.0.0","feathers-commons":"^0.8.7","feathers-errors":"^2.6.3","feathers-query-filters":"^2.1.2","lodash.isobject":"^3.0.2","rubberduck":"^1.1.1","serialize-error":"^2.1.0"},"devDependencies":{"axios":"^0.16.1","babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^7.2.2","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.17.1","chai":"^3.5.0","feathers":"^2.1.1","feathers-authentication":"^1.2.2","feathers-authentication-client":"^0.3.1","feathers-authentication-jwt":"^0.3.1","feathers-hooks":"^2.0.0","feathers-memory":"^1.1.0","feathers-rest":"^1.7.2","feathers-socketio":"^1.5.2","istanbul":"^1.1.0-alpha.1","mocha":"^3.2.0","shx":"^0.2.2","socket.io-client":"^1.7.3","standard":"^10.0.2","steal":"^1.4.2","steal-mocha":"^1.0.0","testee":"^0.4.0","vue":"^2.2.6","vuex":"^2.3.0"},"gitHead":"c69c1380031add0363940a2ee082724a76c479dd","_id":"feathers-vuex@0.1.0","_shasum":"1f801f3226019792afcc4f1e85e22f2678d3839c","_from":".","_npmVersion":"4.5.0","_nodeVersion":"7.6.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"shasum":"1f801f3226019792afcc4f1e85e22f2678d3839c","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-0.1.0.tgz","integrity":"sha512-JhQuo4ZubZqUCh6O9H5xtZtH+FjAfJgTfPL06M2fSsY6k4+5X20wMVYOjLwqJLqFMz+UMc3OdxNVHKnSyzR57A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGT8w7pSYfA8fPNtCc6XZwF5Pq7iITibb2GJ6eI9jN/DAiEAjpYVeLhGiDRpTNBRwV9txG4ixtn/JGU11udXW9+NsJI="}]},"maintainers":[{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/feathers-vuex-0.1.0.tgz_1492491176966_0.08271260117180645"}},"0.1.1":{"name":"feathers-vuex","description":"Implement Vuex as a Feathers Client plugin","version":"0.1.1","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard src/**/*.js test/**/*.js --fix","mocha":"mocha --opts mocha.opts","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run testee","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"clone":"^2.1.1","debug":"^2.6.3","deep-assign":"^2.0.0","feathers-commons":"^0.8.7","feathers-errors":"^2.6.3","feathers-query-filters":"^2.1.2","lodash.isobject":"^3.0.2","rubberduck":"^1.1.1","serialize-error":"^2.1.0"},"devDependencies":{"axios":"^0.16.1","babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^7.2.2","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.17.1","chai":"^3.5.0","feathers":"^2.1.1","feathers-authentication":"^1.2.2","feathers-authentication-client":"^0.3.1","feathers-authentication-jwt":"^0.3.1","feathers-hooks":"^2.0.0","feathers-memory":"^1.1.0","feathers-rest":"^1.7.2","feathers-socketio":"^1.5.2","istanbul":"^1.1.0-alpha.1","mocha":"^3.2.0","shx":"^0.2.2","socket.io-client":"^1.7.3","standard":"^10.0.2","steal":"^1.4.2","steal-mocha":"^1.0.0","testee":"^0.4.0","vue":"^2.2.6","vuex":"^2.3.0"},"gitHead":"1862be221953381ec0ff3b8e5bc1c31c1d640360","_id":"feathers-vuex@0.1.1","_shasum":"81f0e4f5900d89e115e097aba7bb6ef3057177cb","_from":".","_npmVersion":"4.5.0","_nodeVersion":"7.6.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"shasum":"81f0e4f5900d89e115e097aba7bb6ef3057177cb","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-0.1.1.tgz","integrity":"sha512-aBRH2/Vd0Wztfw3Kp37eINg5d0vHSNM4kf6NyjYfq3zoKwc53hGa2SAvxnhWdSHjd6KaMIMx/WancqNm+h3Xfg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGIXrlY8yxzg5Yq+ci5wLouGw5ldXpovYm8bMq9zI6QKAiBL4Obo/25Tyrr9eq8J8aUyscwqNgn6OjK7PAbcBLLswA=="}]},"maintainers":[{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/feathers-vuex-0.1.1.tgz_1492491500312_0.0787054339889437"}},"0.2.0":{"name":"feathers-vuex","description":"Implement Vuex as a Feathers Client plugin","version":"0.2.0","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard src/**/*.js test/**/*.js --fix","mocha":"mocha --opts mocha.opts","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run testee","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"clone":"^2.1.1","debug":"^2.6.3","deep-assign":"^2.0.0","feathers-commons":"^0.8.7","feathers-errors":"^2.6.3","feathers-query-filters":"^2.1.2","lodash.isobject":"^3.0.2","rubberduck":"^1.1.1","serialize-error":"^2.1.0"},"devDependencies":{"axios":"^0.16.1","babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^7.2.2","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.17.1","chai":"^3.5.0","feathers":"^2.1.1","feathers-authentication":"^1.2.2","feathers-authentication-client":"^0.3.1","feathers-authentication-jwt":"^0.3.1","feathers-hooks":"^2.0.0","feathers-memory":"^1.1.0","feathers-rest":"^1.7.2","feathers-socketio":"^1.5.2","istanbul":"^1.1.0-alpha.1","mocha":"^3.2.0","shx":"^0.2.2","socket.io-client":"^1.7.3","standard":"^10.0.2","steal":"^1.4.2","steal-mocha":"^1.0.0","testee":"^0.4.0","vue":"^2.2.6","vuex":"^2.3.0"},"gitHead":"c77106e61fb65310218a5d399e69ae51bd0d91ab","_id":"feathers-vuex@0.2.0","_shasum":"459e47af80be5a66e3b3496ba26cc5c1968ff285","_from":".","_npmVersion":"4.5.0","_nodeVersion":"7.6.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"shasum":"459e47af80be5a66e3b3496ba26cc5c1968ff285","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-0.2.0.tgz","integrity":"sha512-LH3VTtrNyWa3t3UAc9BR0UMcv82XqKeOQEnll1VQMv90KaG20nTQJ80owQl9PpAvy/u0Uh+dY/GCuw8KE1ZNeA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCDU+rQjZG1akXCOYCpUZDr/WgrBSGF2ylfOKAeGUd6LwIgWPUKyHgOvCKUs4HNEFU5bOCUUZ5gvXCN2/MZZRo2bCc="}]},"maintainers":[{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/feathers-vuex-0.2.0.tgz_1492522649091_0.6773163776379079"}},"0.2.1":{"name":"feathers-vuex","description":"Implement Vuex as a Feathers Client plugin","version":"0.2.1","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard src/**/*.js test/**/*.js --fix","mocha":"mocha --opts mocha.opts","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run testee","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"clone":"^2.1.1","debug":"^2.6.3","deep-assign":"^2.0.0","feathers-commons":"^0.8.7","feathers-errors":"^2.6.3","feathers-query-filters":"^2.1.2","lodash.isobject":"^3.0.2","rubberduck":"^1.1.1","serialize-error":"^2.1.0"},"devDependencies":{"axios":"^0.16.1","babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^7.2.2","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.17.1","chai":"^3.5.0","feathers":"^2.1.1","feathers-authentication":"^1.2.2","feathers-authentication-client":"^0.3.1","feathers-authentication-jwt":"^0.3.1","feathers-hooks":"^2.0.0","feathers-memory":"^1.1.0","feathers-rest":"^1.7.2","feathers-socketio":"^1.5.2","istanbul":"^1.1.0-alpha.1","mocha":"^3.2.0","shx":"^0.2.2","socket.io-client":"^1.7.3","standard":"^10.0.2","steal":"^1.4.2","steal-mocha":"^1.0.0","testee":"^0.4.0","vue":"^2.2.6","vuex":"^2.3.0"},"gitHead":"a1a6685727262b3f8e03931282b7bd6517488afb","_id":"feathers-vuex@0.2.1","_shasum":"f06cbc97c8591092884144db7934283ced35f6d7","_from":".","_npmVersion":"4.5.0","_nodeVersion":"7.6.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"shasum":"f06cbc97c8591092884144db7934283ced35f6d7","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-0.2.1.tgz","integrity":"sha512-OZKRpYb2JveFSQ92er4jf8x2C9gEapw9na6zdKqyuigDZJHIdz2htih2yEykICfes6a04BBfQ7GVs1VTB1FMbQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDpt0B4boWoTW7Jto3t7xLXtcsUaNgClwlAr+pwFcAvBwIhANSYNE0r/+PUtmAxJdgaEtWdmUXQcS2duU4FCkzAzAx6"}]},"maintainers":[{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/feathers-vuex-0.2.1.tgz_1492542512668_0.6976719333324581"}},"0.2.2":{"name":"feathers-vuex","description":"Implement Vuex as a Feathers Client plugin","version":"0.2.2","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard src/**/*.js test/**/*.js --fix","mocha":"mocha --opts mocha.opts","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run testee","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"clone":"^2.1.1","debug":"^2.6.3","deep-assign":"^2.0.0","feathers-commons":"^0.8.7","feathers-errors":"^2.6.3","feathers-query-filters":"^2.1.2","lodash.isobject":"^3.0.2","rubberduck":"^1.1.1","serialize-error":"^2.1.0"},"devDependencies":{"axios":"^0.16.1","babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^7.2.2","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.17.1","chai":"^3.5.0","feathers":"^2.1.1","feathers-authentication":"^1.2.2","feathers-authentication-client":"^0.3.1","feathers-authentication-jwt":"^0.3.1","feathers-hooks":"^2.0.0","feathers-memory":"^1.1.0","feathers-rest":"^1.7.2","feathers-socketio":"^1.5.2","istanbul":"^1.1.0-alpha.1","mocha":"^3.2.0","shx":"^0.2.2","socket.io-client":"^1.7.3","standard":"^10.0.2","steal":"^1.4.2","steal-mocha":"^1.0.0","testee":"^0.4.0","vue":"^2.2.6","vuex":"^2.3.0"},"gitHead":"17fcd7a02e6c639da57400e1ea36536229811af3","_id":"feathers-vuex@0.2.2","_shasum":"7e49d86283a2fe742dac453723867a4734fa11d5","_from":".","_npmVersion":"4.5.0","_nodeVersion":"7.6.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"shasum":"7e49d86283a2fe742dac453723867a4734fa11d5","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-0.2.2.tgz","integrity":"sha512-W5ZkhgYo/u3r0qtoe8FH44lKKR0k2dic5Xu3WgMaFusEN3hQh6VAj3qqBqo8d0beXdQO1/yZDtPU6VV3AcGsiA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE0HPE3qr5ICfxiXKpTQQZrM2vxZMW/44rE2cXtQ9bfWAiEAwgRvvO5iO4o6N2UA4xiOfoat7j8tgDl2zDt7X1i14/c="}]},"maintainers":[{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/feathers-vuex-0.2.2.tgz_1493403359069_0.5222815596498549"}},"0.3.0":{"name":"feathers-vuex","description":"Implement Vuex as a Feathers Client plugin","version":"0.3.0","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard src/**/*.js test/**/*.js --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"clone":"^2.1.1","debug":"^2.6.3","deep-assign":"^2.0.0","feathers-commons":"^0.8.7","feathers-errors":"^2.6.3","feathers-query-filters":"^2.1.2","lodash.isobject":"^3.0.2","rubberduck":"^1.1.1","serialize-error":"^2.1.0"},"devDependencies":{"axios":"^0.16.1","babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^7.2.2","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.17.1","chai":"^3.5.0","feathers":"^2.1.1","feathers-authentication":"^1.2.2","feathers-authentication-client":"^0.3.1","feathers-authentication-jwt":"^0.3.1","feathers-hooks":"^2.0.0","feathers-memory":"^1.1.0","feathers-rest":"^1.7.2","feathers-socketio":"^1.5.2","istanbul":"^1.1.0-alpha.1","mocha":"^3.2.0","shx":"^0.2.2","socket.io-client":"^1.7.3","standard":"^10.0.2","steal":"^1.4.2","steal-mocha":"^1.0.0","testee":"^0.4.0","vue":"^2.2.6","vuex":"^2.3.0"},"gitHead":"547ea427edbe510b5b938d854751f2c20d13325a","_id":"feathers-vuex@0.3.0","_shasum":"afa5048631b0e168b387f383c061ef9ee1ff9f77","_from":".","_npmVersion":"4.5.0","_nodeVersion":"7.6.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"shasum":"afa5048631b0e168b387f383c061ef9ee1ff9f77","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-0.3.0.tgz","integrity":"sha512-KbtabR/3cwOW0lVFAAhEusP0B9/2irG73zgbFSr9zHAqZdb4C+Mz1EB+Mmm4UEcqy1j+nP6H6KoNHjkFzr3evQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICKtqFMY3nOBzgvKyJ8cUJtLgQG3IWkg2fFCso1c+7FhAiBFXF9k/QcqJMtm6rY0dWc2+WixcD39cuId++Z4UVuKLA=="}]},"maintainers":[{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/feathers-vuex-0.3.0.tgz_1493619571701_0.14979784353636205"}},"0.3.1":{"name":"feathers-vuex","description":"Implement Vuex as a Feathers Client plugin","version":"0.3.1","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard src/**/*.js test/**/*.js --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"clone":"^2.1.1","debug":"^2.6.3","deep-assign":"^2.0.0","feathers-commons":"^0.8.7","feathers-errors":"^2.6.3","feathers-query-filters":"^2.1.2","lodash.isobject":"^3.0.2","rubberduck":"^1.1.1","serialize-error":"^2.1.0"},"devDependencies":{"axios":"^0.16.1","babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^7.2.2","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.17.1","chai":"^3.5.0","feathers":"^2.1.1","feathers-authentication":"^1.2.2","feathers-authentication-client":"^0.3.1","feathers-authentication-jwt":"^0.3.1","feathers-hooks":"^2.0.0","feathers-memory":"^1.1.0","feathers-rest":"^1.7.2","feathers-socketio":"^1.5.2","istanbul":"^1.1.0-alpha.1","mocha":"^3.2.0","shx":"^0.2.2","socket.io-client":"^1.7.3","standard":"^10.0.2","steal":"^1.4.2","steal-mocha":"^1.0.0","testee":"^0.4.0","vue":"^2.2.6","vuex":"^2.3.0"},"gitHead":"40cc1be6e9df13f35e0da55085f9c5a6b9d3f7cc","_id":"feathers-vuex@0.3.1","_shasum":"a12c6cd339d15efb754a5172c035208c6b115243","_from":".","_npmVersion":"4.5.0","_nodeVersion":"7.6.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"shasum":"a12c6cd339d15efb754a5172c035208c6b115243","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-0.3.1.tgz","integrity":"sha512-7GuwQPj645Db45GAiH4BvZKsk/o96E7fKP5Qu83ROPG1ZM7V088te0QnWbvxdqbnZaVTfn2up02/WQyEQvfh0A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+Cy/ZIikrHJg1Tj1ZX7zxHhvIEXB3YCfmrpzvv1TgzQIhAMrNjjRG/Rr3FCfUfvAocncl9WBoq8v6wjfZddep1Zao"}]},"maintainers":[{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/feathers-vuex-0.3.1.tgz_1493620478126_0.2588726943358779"}},"0.4.0":{"name":"feathers-vuex","description":"Implement Vuex as a Feathers Client plugin","version":"0.4.0","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard src/**/*.js test/**/*.js --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"clone":"^2.1.1","debug":"^2.6.3","deep-assign":"^2.0.0","feathers-commons":"^0.8.7","feathers-errors":"^2.6.3","feathers-query-filters":"^2.1.2","lodash.isobject":"^3.0.2","rubberduck":"^1.1.1","serialize-error":"^2.1.0"},"devDependencies":{"axios":"^0.16.1","babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^7.2.2","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.17.1","chai":"^3.5.0","feathers":"^2.1.1","feathers-authentication":"^1.2.2","feathers-authentication-client":"^0.3.1","feathers-authentication-jwt":"^0.3.1","feathers-hooks":"^2.0.0","feathers-memory":"^1.1.0","feathers-rest":"^1.7.2","feathers-socketio":"^1.5.2","istanbul":"^1.1.0-alpha.1","mocha":"^3.2.0","shx":"^0.2.2","socket.io-client":"^1.7.3","standard":"^10.0.2","steal":"^1.4.2","steal-mocha":"^1.0.0","testee":"^0.4.0","vue":"^2.2.6","vuex":"^2.3.0"},"gitHead":"9c2fb307a8b08710d188a70e0b64948d3e224e97","_id":"feathers-vuex@0.4.0","_shasum":"fdb37f2e7370f1e50ae75717cd329147d75b19dc","_from":".","_npmVersion":"4.5.0","_nodeVersion":"7.6.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"shasum":"fdb37f2e7370f1e50ae75717cd329147d75b19dc","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-0.4.0.tgz","integrity":"sha512-OjNO0bll4Wodtb3eTuJgvlBtJECXr6G23ZIcsgOw1sUqkebtT8wPVMT1lPvsEypGTTCqGUlk2vpvh3Oj0LP02w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDuMU0pVF8vFCqxOjW7b+u9s8oiBeUtupnUbFCnaxvczwIgO8TzwdePHe2vBfM4jp3wFazN0YkxFXdxy/nVshm9uc8="}]},"maintainers":[{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/feathers-vuex-0.4.0.tgz_1493620889995_0.0017046965658664703"}},"0.4.1":{"name":"feathers-vuex","description":"Implement Vuex as a Feathers Client plugin","version":"0.4.1","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard src/**/*.js test/**/*.js --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"clone":"^2.1.1","debug":"^2.6.3","deep-assign":"^2.0.0","feathers-commons":"^0.8.7","feathers-errors":"^2.6.3","feathers-query-filters":"^2.1.2","lodash.isobject":"^3.0.2","rubberduck":"^1.1.1","serialize-error":"^2.1.0"},"devDependencies":{"axios":"^0.16.1","babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^7.2.2","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.17.1","chai":"^3.5.0","feathers":"^2.1.1","feathers-authentication":"^1.2.2","feathers-authentication-client":"^0.3.1","feathers-authentication-jwt":"^0.3.1","feathers-hooks":"^2.0.0","feathers-memory":"^1.1.0","feathers-rest":"^1.7.2","feathers-socketio":"^1.5.2","istanbul":"^1.1.0-alpha.1","mocha":"^3.2.0","shx":"^0.2.2","socket.io-client":"^1.7.3","standard":"^10.0.2","steal":"^1.4.2","steal-mocha":"^1.0.0","testee":"^0.4.0","vue":"^2.2.6","vuex":"^2.3.0"},"gitHead":"fbe829cf97b76fb5850814a0dcf66e5d86d21933","_id":"feathers-vuex@0.4.1","_shasum":"f387d0fb68be1996ffbcd18c2c617fc405e28a44","_from":".","_npmVersion":"4.6.1","_nodeVersion":"7.6.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"shasum":"f387d0fb68be1996ffbcd18c2c617fc405e28a44","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-0.4.1.tgz","integrity":"sha512-Y+xGeYwrrrkCAxUK0fsMqosaSmg04GY3ORf3OidPzdaxPup5SrkcasjiUjxSm6HGwos+t60UP29B9fDuaBhf2A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAyMZI0bMSxXv2KdpX7ujlsAAXPhXucGPtpCD9UjtUvCAiEA/NRp5IIvItGNdnM73+8DxPV6I9RfHMgSSIhk3opRP7Y="}]},"maintainers":[{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex-0.4.1.tgz_1495768750660_0.7608570747543126"}},"0.4.2":{"name":"feathers-vuex","description":"Implement Vuex as a Feathers Client plugin","version":"0.4.2","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard src/**/*.js test/**/*.js --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"clone":"^2.1.1","debug":"^2.6.3","deep-assign":"^2.0.0","feathers-commons":"^0.8.7","feathers-errors":"^2.6.3","feathers-query-filters":"^2.1.2","lodash.isobject":"^3.0.2","rubberduck":"^1.1.1","serialize-error":"^2.1.0"},"devDependencies":{"axios":"^0.16.1","babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^7.2.2","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.17.1","chai":"^3.5.0","feathers":"^2.1.1","feathers-authentication":"^1.2.2","feathers-authentication-client":"^0.3.1","feathers-authentication-jwt":"^0.3.1","feathers-hooks":"^2.0.0","feathers-memory":"^1.1.0","feathers-rest":"^1.7.2","feathers-socketio":"^1.5.2","istanbul":"^1.1.0-alpha.1","mocha":"^3.2.0","shx":"^0.2.2","socket.io-client":"^1.7.3","standard":"^10.0.2","steal":"^1.4.2","steal-mocha":"^1.0.0","testee":"^0.4.0","vue":"^2.2.6","vuex":"^2.3.0"},"gitHead":"df408ed4a499d975bb015a5bcc55991aec865632","_id":"feathers-vuex@0.4.2","_npmVersion":"5.0.3","_nodeVersion":"7.6.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-bxa/PfNGqXtOrqEF3IZ2tYc4KBbKzblB1vCtfwDw0fZTl8SQluroAq2b6as5bDr6tPvcnFqfoJqkcbYFvBzOhA==","shasum":"1eb7ee6f93c4e1710bfd7d28983d6558106e25c6","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-0.4.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDACLUnzKnn+PHmhnAQDvaaQanjModxqqfBC42UT3CuvAIhAO3Q30ddBNjHd8N7FuVwypXU1gyZXhx2j0/VUYdcEJ+4"}]},"maintainers":[{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex-0.4.2.tgz_1496840530279_0.6779443137347698"}},"0.5.0":{"name":"feathers-vuex","description":"Implement Vuex as a Feathers Client plugin","version":"0.5.0","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard src/**/*.js test/**/*.js --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"clone":"^2.1.1","debug":"^2.6.3","deep-assign":"^2.0.0","feathers-commons":"^0.8.7","feathers-errors":"^2.6.3","feathers-query-filters":"^2.1.2","lodash.isobject":"^3.0.2","rubberduck":"^1.1.1","serialize-error":"^2.1.0"},"devDependencies":{"axios":"^0.16.1","babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^7.2.2","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.17.1","chai":"^3.5.0","feathers":"^2.1.1","feathers-authentication":"^1.2.2","feathers-authentication-client":"^0.3.1","feathers-authentication-jwt":"^0.3.1","feathers-hooks":"^2.0.0","feathers-memory":"^1.1.0","feathers-rest":"^1.7.2","feathers-socketio":"^1.5.2","istanbul":"^1.1.0-alpha.1","mocha":"^3.2.0","shx":"^0.2.2","socket.io-client":"^1.7.3","standard":"^10.0.2","steal":"^1.4.2","steal-mocha":"^1.0.0","testee":"^0.4.0","vue":"^2.2.6","vuex":"^2.3.0"},"gitHead":"a9008db6572569246ea852cb5f685d0b4cf9b69b","_id":"feathers-vuex@0.5.0","_npmVersion":"5.0.3","_nodeVersion":"8.1.2","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-XnDnQbTaCZQsC/lLgKbwnb8vJVzoi4Yro/plb+7jlfJGnskMs4ScjeI/dA+9shxL5/xNB0W953+guY8qxH7pCQ==","shasum":"e057160d001523e5c87070cc6f86ad0cfe53a0a9","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-0.5.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDLI5Sup/kRwOQlB0OWcfyZtG96ZbBUqxuW922OkKV+JQIhALIqmRBTu33Zxh/aHQLBWn+mWr7oaOWAlqHPRJ3I5HvH"}]},"maintainers":[{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex-0.5.0.tgz_1498542370525_0.6319325102958828"}},"0.6.0":{"name":"feathers-vuex","description":"Implement Vuex as a Feathers Client plugin","version":"0.6.0","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard src/**/*.js test/**/*.js --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"clone":"^2.1.1","debug":"^2.6.3","deep-assign":"^2.0.0","feathers-commons":"^0.8.7","feathers-errors":"^2.6.3","feathers-query-filters":"^2.1.2","lodash.isobject":"^3.0.2","rubberduck":"^1.1.1","serialize-error":"^2.1.0"},"devDependencies":{"axios":"^0.16.1","babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^7.2.2","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.17.1","chai":"^3.5.0","feathers":"^2.1.1","feathers-authentication":"^1.2.2","feathers-authentication-client":"^0.3.1","feathers-authentication-jwt":"^0.3.1","feathers-hooks":"^2.0.0","feathers-memory":"^1.1.0","feathers-rest":"^1.7.2","feathers-socketio":"^1.5.2","istanbul":"^1.1.0-alpha.1","mocha":"^3.2.0","shx":"^0.2.2","socket.io-client":"^1.7.3","standard":"^10.0.2","steal":"^1.4.2","steal-mocha":"^1.0.0","testee":"^0.4.0","vue":"^2.2.6","vuex":"^2.3.0"},"gitHead":"ad184c4a67f00268762506800e1bca8ec098780b","_id":"feathers-vuex@0.6.0","_npmVersion":"5.0.3","_nodeVersion":"8.1.2","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-DTnud11IbOEuCTjFAdeYdPjZDuCBPCt2lOTV+6Q9QxRjM5FUjmsUJytwGR0Gh17VBs0ZcbUKyoIUgYMCgUQZqQ==","shasum":"2490ca97c4f2218d3dcc168255c1dfb2f6bc13e4","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-0.6.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICYmsDXRlIxGURqKnxYub5ns/IWCvUQj3Nn1hPNJkAGBAiEA6CR/bdCL6SqDBdYA+9/jLPPQScxm3xdQeYkoaugIDE0="}]},"maintainers":[{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex-0.6.0.tgz_1498545801885_0.17154026869684458"}},"0.7.0":{"name":"feathers-vuex","description":"Implement Vuex as a Feathers Client plugin","version":"0.7.0","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard src/**/*.js test/**/*.js --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"clone":"^2.1.1","debug":"^2.6.3","deep-assign":"^2.0.0","feathers-commons":"^0.8.7","feathers-errors":"^2.6.3","feathers-query-filters":"^2.1.2","lodash.isobject":"^3.0.2","rubberduck":"^1.1.1","serialize-error":"^2.1.0"},"devDependencies":{"axios":"^0.16.1","babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^7.2.2","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.17.1","chai":"^3.5.0","feathers":"^2.1.1","feathers-authentication":"^1.2.2","feathers-authentication-client":"^0.3.1","feathers-authentication-jwt":"^0.3.1","feathers-hooks":"^2.0.0","feathers-memory":"^1.1.0","feathers-rest":"^1.7.2","feathers-socketio":"^1.5.2","istanbul":"^1.1.0-alpha.1","mocha":"^3.2.0","shx":"^0.2.2","socket.io-client":"^1.7.3","standard":"^10.0.2","steal":"^1.4.2","steal-mocha":"^1.0.0","testee":"^0.4.0","vue":"^2.2.6","vuex":"^2.3.0"},"gitHead":"d78eb884d5a8a558f63886454314bd6e33357ebb","_id":"feathers-vuex@0.7.0","_npmVersion":"5.0.3","_nodeVersion":"8.1.2","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-qCDFdD0FmxSA+6TMAwnC3fUv7OZe1qinwcrjTUY28ffPe/x1QfsejYdHcA9TtARNyT/9UhuGaiweTGDoaVUEag==","shasum":"43bac0b3dc5befb176430680ac2ead9b04483850","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-0.7.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDGu0hqMkcCwlSvylxgf1X6aO9M+NW5XiafK71g5MC6GQIhANpEZAjgX3PAkBU+2iDdf/E6R46S7U3rXhPDgKQMfcaG"}]},"maintainers":[{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex-0.7.0.tgz_1498568482290_0.44474836182780564"}},"0.7.1":{"name":"feathers-vuex","description":"Implement Vuex as a Feathers Client plugin","version":"0.7.1","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard src/**/*.js test/**/*.js --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"clone":"^2.1.1","debug":"^2.6.3","deep-assign":"^2.0.0","feathers-commons":"^0.8.7","feathers-errors":"^2.6.3","feathers-query-filters":"^2.1.2","lodash.isobject":"^3.0.2","rubberduck":"^1.1.1","serialize-error":"^2.1.0"},"devDependencies":{"axios":"^0.16.1","babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^7.2.2","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.17.1","chai":"^3.5.0","feathers":"^2.1.1","feathers-authentication":"^1.2.2","feathers-authentication-client":"^0.3.1","feathers-authentication-jwt":"^0.3.1","feathers-hooks":"^2.0.0","feathers-memory":"^1.1.0","feathers-rest":"^1.7.2","feathers-socketio":"^1.5.2","istanbul":"^1.1.0-alpha.1","mocha":"^3.2.0","shx":"^0.2.2","socket.io-client":"^1.7.3","standard":"^10.0.2","steal":"^1.4.2","steal-mocha":"^1.0.0","testee":"^0.4.0","vue":"^2.2.6","vuex":"^2.3.0"},"gitHead":"200ab760ebd1a13b9caa5f99ca18e9ed8e4bfec0","_id":"feathers-vuex@0.7.1","_npmVersion":"5.0.3","_nodeVersion":"8.1.2","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-CRl1chEBXlYwo7B7bFTpUCJT8+fo99WjB/kdQkrrlvrmVN3f5GXr0GEV3U2hCp2w21UG83wd11L4A0PzxhPGIA==","shasum":"1c2f19e3915d9bcca0728d2f03c228c9dc2a9d40","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-0.7.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCknlSNS+rZt0NO4246nd9MefeecDpH1nXAyCDB7GGGcgIgdHGwUoUBirFHh96bPMidLkoVlQ93DDwXxFG6JB68Qwk="}]},"maintainers":[{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex-0.7.1.tgz_1499493061676_0.8234056301880628"}},"0.7.2":{"name":"feathers-vuex","description":"Implement Vuex as a Feathers Client plugin","version":"0.7.2","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard src/**/*.js test/**/*.js --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"clone":"^2.1.1","debug":"^2.6.3","deep-assign":"^2.0.0","feathers-commons":"^0.8.7","feathers-errors":"^2.6.3","feathers-query-filters":"^2.1.2","lodash.isobject":"^3.0.2","rubberduck":"^1.1.1","serialize-error":"^2.1.0"},"devDependencies":{"axios":"^0.16.1","babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^7.2.2","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.17.1","chai":"^3.5.0","feathers":"^2.1.1","feathers-authentication":"^1.2.2","feathers-authentication-client":"^0.3.1","feathers-authentication-jwt":"^0.3.1","feathers-hooks":"^2.0.0","feathers-memory":"^1.1.0","feathers-rest":"^1.7.2","feathers-socketio":"^1.5.2","istanbul":"^1.1.0-alpha.1","mocha":"^3.2.0","shx":"^0.2.2","socket.io-client":"^1.7.3","standard":"^10.0.2","steal":"^1.4.2","steal-mocha":"^1.0.0","testee":"^0.4.0","vue":"^2.2.6","vuex":"^2.3.0"},"gitHead":"b836e5b54917e9c9406e3b9125915f42fae393ab","_id":"feathers-vuex@0.7.2","_npmVersion":"5.3.0","_nodeVersion":"8.2.1","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-GuRsvEusFLswF+YEM2BZtt9K23/RmN36vjUrdwwmeeB/4D8nEDq9d5i7Hlix82YrBS4PaBA2roLh0iBROav05A==","shasum":"1966148b3ed99dedd5356910a247f3633a7ba98b","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-0.7.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC1ZUox5PNeWuEFlCIteEmeFV1n+I4M7RxmJczQNkDNAgIhALVP9nRtoHQDXT3mxjweckNJYlZXG3K+h2bd56YUidWc"}]},"maintainers":[{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex-0.7.2.tgz_1501825796094_0.9013268311973661"}},"0.8.0":{"name":"feathers-vuex","description":"Implement Vuex as a Feathers Client plugin","version":"0.8.0","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard src/**/*.js test/**/*.js --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^2.6.3","feathers-commons":"^0.8.7","feathers-errors":"^2.6.3","feathers-query-filters":"^2.1.2","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","rubberduck":"^1.1.1","serialize-error":"^2.1.0"},"devDependencies":{"axios":"^0.16.1","babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^7.2.2","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.17.1","chai":"^3.5.0","feathers":"^2.1.1","feathers-authentication":"^1.2.2","feathers-authentication-client":"^0.3.1","feathers-authentication-jwt":"^0.3.1","feathers-hooks":"^2.0.0","feathers-memory":"^1.1.0","feathers-rest":"^1.7.2","feathers-socketio":"^1.5.2","istanbul":"^1.1.0-alpha.1","mocha":"^3.2.0","shx":"^0.2.2","socket.io-client":"^1.7.3","standard":"^10.0.2","steal":"^1.4.2","steal-mocha":"^1.0.0","testee":"^0.4.0","vue":"^2.2.6","vuex":"^2.3.0"},"gitHead":"a43cded8f8d96a6247effed00448450e13c8598c","_id":"feathers-vuex@0.8.0","_npmVersion":"5.3.0","_nodeVersion":"8.1.1","_npmUser":{"name":"daffl","email":"daff@neyeon.de"},"dist":{"integrity":"sha512-RwtRap6A4vBMIp6kHsxAmhlaUSC5MqHOFw5UYBEsH1zZMp9J+gNQEAlsfIbAveupacEnqUscXvmb/lS9RJNoeA==","shasum":"b0a6489f9573b2e3429d7e0841880c642751a060","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-0.8.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD4BritcO4JH+qAu+BKTSUU/1uZ2fr5ljPNUiwE8xulpgIhAKhXV1j+X1cqeMM1kh+ljP56c6UnyiSrpbY281CZrb4k"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex-0.8.0.tgz_1503018304168_0.6048605251125991"}},"1.0.0-pre.0":{"name":"feathers-vuex","description":"Implement Vuex as a Feathers Client plugin","version":"1.0.0-pre.0","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard src/**/*.js test/**/*.js --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^2.6.3","feathers-commons":"^0.8.7","feathers-errors":"^2.6.3","feathers-query-filters":"^2.1.2","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0"},"devDependencies":{"axios":"^0.16.1","babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^7.2.2","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.17.1","chai":"^3.5.0","feathers":"^2.1.1","feathers-authentication":"^1.2.2","feathers-authentication-client":"^0.3.1","feathers-authentication-jwt":"^0.3.1","feathers-hooks":"^2.0.0","feathers-memory":"^1.1.0","feathers-rest":"^1.7.2","feathers-socketio":"^1.5.2","istanbul":"^1.1.0-alpha.1","mocha":"^3.2.0","shx":"^0.2.2","socket.io-client":"^1.7.3","standard":"^10.0.2","steal":"^1.4.2","steal-mocha":"^1.0.0","testee":"^0.4.0","vue":"^2.2.6","vuex":"^2.3.0"},"gitHead":"cd36c40cb68010408f3be50703c3bc640232cb1b","_id":"feathers-vuex@1.0.0-pre.0","_npmVersion":"5.3.0","_nodeVersion":"8.2.1","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-UIQVaCXq9xfI2Znc/8mOmdNIJ4Ta7pt0KEp0qABZo4fDPtsQQMleA4ZbRsr11WJ/t/K5s7ldV4gq3XjnlMfdPQ==","shasum":"7d45f9cc38df1f82b3b099ab4209fcd17a94e476","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.0.0-pre.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICsKQB4UA+lZ8K0yraRe8VtFFdwG0nSEs4u4zUE4o+wWAiAygWuo7ikITm2C7YGVts6Z1pNRR8tAVEkyPmTEDUNt5A=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex-1.0.0-pre.0.tgz_1503372193438_0.7500575215090066"}},"1.0.0-pre.1":{"name":"feathers-vuex","description":"Implement Vuex as a Feathers Client plugin","version":"1.0.0-pre.1","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard src/**/*.js test/**/*.js --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^2.6.3","feathers-commons":"^0.8.7","feathers-errors":"^2.6.3","feathers-query-filters":"^2.1.2","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0"},"devDependencies":{"axios":"^0.16.1","babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^7.2.2","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.17.1","chai":"^3.5.0","feathers":"^2.1.1","feathers-authentication":"^1.2.2","feathers-authentication-client":"^0.3.1","feathers-authentication-jwt":"^0.3.1","feathers-hooks":"^2.0.0","feathers-memory":"^1.1.0","feathers-rest":"^1.7.2","feathers-socketio":"^1.5.2","istanbul":"^1.1.0-alpha.1","mocha":"^3.2.0","shx":"^0.2.2","socket.io-client":"^1.7.3","standard":"^10.0.2","steal":"^1.4.2","steal-mocha":"^1.0.0","testee":"^0.4.0","vue":"^2.2.6","vuex":"^2.3.0"},"gitHead":"f162a8dfb9f1abf8283afaf07fd55851f364a45a","_id":"feathers-vuex@1.0.0-pre.1","_npmVersion":"5.3.0","_nodeVersion":"8.2.1","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-5g+vOBUDu4Nwa+tT+WRAUCYyBn4ChzVEnLqJX/QnEdor3A3verfP0C3tLlqJm81mi684QlEUWcoaiMPq7FfYxg==","shasum":"2a8459f67486eed3c45c40035d4f3383e7eaff69","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.0.0-pre.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC196wcBzuYkUE7Fr3/7oFb57IeppiyUGe76JrtsUq+yAiEAyavxLudqBBQg3AY3QfQIcUaOkGntU0x3JD2aOJ8+9K4="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex-1.0.0-pre.1.tgz_1503408157114_0.5484710179734975"}},"1.0.0-pre.2":{"name":"feathers-vuex","description":"Implement Vuex as a Feathers Client plugin","version":"1.0.0-pre.2","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard src/**/*.js test/**/*.js --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"can-fixture-socket":"^0.7.0","debug":"^2.6.3","feathers-commons":"^0.8.7","feathers-errors":"^2.6.3","feathers-query-filters":"^2.1.2","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0"},"devDependencies":{"axios":"^0.16.1","babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^7.2.2","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.17.1","chai":"^3.5.0","feathers":"^2.1.1","feathers-authentication":"^1.2.2","feathers-authentication-client":"^0.3.1","feathers-authentication-jwt":"^0.3.1","feathers-hooks":"^2.0.0","feathers-memory":"^1.1.0","feathers-rest":"^1.7.2","feathers-socketio":"^1.5.2","istanbul":"^1.1.0-alpha.1","mocha":"^3.2.0","shx":"^0.2.2","socket.io-client":"^1.7.3","standard":"^10.0.2","steal":"^1.4.2","steal-mocha":"^1.0.0","testee":"^0.4.0","vue":"^2.2.6","vuex":"^2.3.0"},"gitHead":"b77488c7f1328a4d935988a213b4b02e59402aa9","_id":"feathers-vuex@1.0.0-pre.2","_npmVersion":"5.3.0","_nodeVersion":"8.2.1","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-0CavdRQMVAfzJ88e9vvC4YVayuZ2n7MUnfqtV3it4T72tneyWE/JPoxQOFyEgM+Syoo7LVcliaF9ylUEM/P0iw==","shasum":"82bab23b206248f199a219fa75746e562f8aa44c","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.0.0-pre.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGz5+KKUpZGt6TwGIVeMDMOEaBfjpUgfgnFbYHMv3J1YAiEArndZkdmwKYKIQl370PFavi6+WpByCsX/s7z0I2w0/Ko="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex-1.0.0-pre.2.tgz_1503551180832_0.5348323527723551"}},"1.0.0-pre.3":{"name":"feathers-vuex","description":"Implement Vuex as a Feathers Client plugin","version":"1.0.0-pre.3","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard src/**/*.js test/**/*.js --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"can-fixture-socket":"^0.7.0","debug":"^2.6.3","feathers-commons":"^0.8.7","feathers-errors":"^2.6.3","feathers-query-filters":"^2.1.2","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0"},"devDependencies":{"axios":"^0.16.1","babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^7.2.2","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.17.1","chai":"^3.5.0","feathers":"^2.1.1","feathers-authentication":"^1.2.2","feathers-authentication-client":"^0.3.1","feathers-authentication-jwt":"^0.3.1","feathers-hooks":"^2.0.0","feathers-memory":"^1.1.0","feathers-rest":"^1.7.2","feathers-socketio":"^1.5.2","istanbul":"^1.1.0-alpha.1","mocha":"^3.2.0","shx":"^0.2.2","socket.io-client":"^1.7.3","standard":"^10.0.2","steal":"^1.4.2","steal-mocha":"^1.0.0","testee":"^0.4.0","vue":"^2.2.6","vuex":"^2.3.0"},"gitHead":"98295d65a47f0f4cdfb778cbbf6d8247fb674fb8","_id":"feathers-vuex@1.0.0-pre.3","_npmVersion":"5.3.0","_nodeVersion":"8.2.1","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-l37pMC6EpfOHCNFwyifTJAogJWR92sn9VzTKlLS/J4NcXT/Y2B8lFbfP+TMdGimIC73J4mR8fjgMiqwHv5gunQ==","shasum":"e19db0bfb4e6b705b84a09c08759fffbbd542658","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.0.0-pre.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIElIfSpWPYecZ7ZAZaViQbAtXEa7/ho/+uJYDH8/31ByAiBFvENirp6y4LFhMljfyycrTinOjBMRvIDdHMCWp7uzkw=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex-1.0.0-pre.3.tgz_1503759090602_0.3841200233437121"}},"1.0.0":{"name":"feathers-vuex","description":"Implement Vuex as a Feathers Client plugin","version":"1.0.0","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"can-fixture-socket":"^0.7.0","debug":"^2.6.3","feathers-commons":"^0.8.7","feathers-errors":"^2.6.3","feathers-query-filters":"^2.1.2","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0"},"devDependencies":{"axios":"^0.16.1","babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^7.2.2","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.17.1","chai":"^3.5.0","feathers":"^2.1.1","feathers-authentication":"^1.2.2","feathers-authentication-client":"^0.3.1","feathers-authentication-jwt":"^0.3.1","feathers-hooks":"^2.0.0","feathers-memory":"^1.1.0","feathers-rest":"^1.7.2","feathers-socketio":"^1.5.2","istanbul":"^1.1.0-alpha.1","mocha":"^3.2.0","shx":"^0.2.2","socket.io-client":"^1.7.3","standard":"^10.0.2","steal":"^1.4.2","steal-mocha":"^1.0.0","testee":"^0.4.0","vue":"^2.2.6","vuex":"^2.3.0"},"gitHead":"c0225c088e17b9519db14a860466c74d859cf690","_id":"feathers-vuex@1.0.0","_npmVersion":"5.3.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-PUBWJqkJGMY8JfIB8KhsUnE1i2hrrRzGi/xNdMqQnwLVaWFBO/5z68ubUOD1Go/8/WqGBcRP4pOQhVj6lpr+Zw==","shasum":"5b7967606ad8e83e7e3e5ea67f2b01dc41b084eb","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.0.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHM3EyrhFb0ZQ30n+Z4wVAC4Ya+oHP7/ocUpRmr8Z+WJAiANi8kz+Hu9UZoazJ+h3sXO13yK9Jh8fyZptA+yxfUsAA=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex-1.0.0.tgz_1507645387091_0.9443983950186521"}},"1.0.1":{"name":"feathers-vuex","description":"Implement Vuex as a Feathers Client plugin","version":"1.0.1","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"can-fixture-socket":"^0.7.0","debug":"^2.6.3","feathers-commons":"^0.8.7","feathers-errors":"^2.6.3","feathers-query-filters":"^2.1.2","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0"},"devDependencies":{"axios":"^0.16.1","babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^7.2.2","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.17.1","chai":"^3.5.0","feathers":"^2.1.1","feathers-authentication":"^1.2.2","feathers-authentication-client":"^0.3.1","feathers-authentication-jwt":"^0.3.1","feathers-hooks":"^2.0.0","feathers-memory":"^1.1.0","feathers-rest":"^1.7.2","feathers-socketio":"^1.5.2","istanbul":"^1.1.0-alpha.1","mocha":"^3.2.0","shx":"^0.2.2","socket.io-client":"^1.7.3","standard":"^10.0.2","steal":"^1.4.2","steal-mocha":"^1.0.0","testee":"^0.4.0","vue":"^2.2.6","vuex":"^2.3.0"},"gitHead":"fcf5ab55f83971be7a51f11e88948b3ceb4039b2","_id":"feathers-vuex@1.0.1","_npmVersion":"5.3.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-KX3R//8xQN2Mpi69N8/iInfR1GmcsdC42EAiisVw4EL9sGyZJg2twazwjd+aJRYKiA6xntWkhNQLwkykWyqjeQ==","shasum":"7737689a2f2257a03bd899d2c4e708fd05af721f","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.0.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCHFt3VANragWQWJApsd0nK+clpB9uthxXmgxfF/NtD8wIgH0ZrdZTuGOo6qFsECN5yYEOoEdlq6nA+BlZ6KI+eVH4="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex-1.0.1.tgz_1507645453245_0.9658867863472551"}},"1.0.2":{"name":"feathers-vuex","description":"Implement Vuex as a Feathers Client plugin","version":"1.0.2","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"can-fixture-socket":"^0.7.1","debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.4.1","vue":"^2.4.4","vuex":"^2.4.1"},"gitHead":"212d1529567ea41816e8f1f6080fd98984b43082","_id":"feathers-vuex@1.0.2","_npmVersion":"5.3.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-0HM+X6H9J38gP17jQxBbdOp7n2SeNSVfeIu/Mt3n4aQAJ9dxzKocu1/IzVmfF+jsyYFND9qqiaSvIrKTJIqgdw==","shasum":"213e5067c51b4a83d48337b9771f4b9f34c765de","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.0.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCdIu1nAvRy3ruXzZ6hs25VE5ukWECk+Zcg/9ZpQDIymAIgDCproF0U4CpEGWVw1hg9BmZOO88ueUvkp2DbgVFYi/s="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex-1.0.2.tgz_1507645806305_0.9602744863368571"}},"1.0.3":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.0.3","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"can-fixture-socket":"^0.7.1","debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.4.1","vue":"^2.4.4","vuex":"^2.4.1"},"gitHead":"6a23c35d1110b38456a7d18cf853b93d3a6330a6","_id":"feathers-vuex@1.0.3","_npmVersion":"5.3.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-fYqzQEGZyZV8WbWrG3wuOAatuZEoZeWjBGTNx1PiHJmI0YX8YOyuTQTBRHhZkv3TYAFa5TAgnGIaGp66haf3Wg==","shasum":"903c85f19e5b95940fc88000c7475f608e4985c3","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.0.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCc+nUX4AjCLTd6zrBFbHjg+NHZ6D7VuTX+xVKryhXdxQIhAMxOvrKwLfwxXfpc4GKXyClNNXgppXlCUYARluPcL2Zd"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex-1.0.3.tgz_1507646112076_0.571321971481666"}},"1.0.4":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.0.4","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"can-fixture-socket":"^0.7.1","debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.4.1","vue":"^2.4.4","vuex":"^2.4.1"},"gitHead":"e1792c3bd2c5cd72e499bcd4a0dce6942ee174cd","_id":"feathers-vuex@1.0.4","_npmVersion":"5.4.2","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-WA1HwCV09BoSSnd2GsfEMToFShlItacmFYIAbGNq5UVS4278kkvaPDQ5mpfHpVzmEO3OHxyYHZRiVYqT+h94BA==","shasum":"1dd5fd313b6b3410a7cac88adf11523515a2cff4","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.0.4.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDqG8P6IzOgq1X4cNy8fl71hZuZL9sAgT3eMZC4JrXkjwIgE4Ao/Z53JfY3dZ+VQa3ufc/UmLrspIbS59oO7P66Kyc="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex-1.0.4.tgz_1507868133898_0.15413703699596226"}},"1.1.0":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.1.0","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"can-fixture-socket":"^0.7.1","debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.4.1","vue":"^2.4.4","vuex":"^2.4.1"},"gitHead":"0d34716c96f2dbaf24ebc5c46a6ad6fa24709e6c","_id":"feathers-vuex@1.1.0","_npmVersion":"5.5.1","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-/H+gD70WD0OTRxsn9mgcIpn9+swx8Lq8OSl+4BVbIanaRB1u0XR0Kp77VsBlxb0ZTk1wg7YzD+Y/0q7hNvuh5A==","shasum":"042ae52332d52e52d93770797ae22e5142f83944","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.1.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCF4L5k5hTt5w2B95HcrHb8PRhvNJF1EBKwUf6a9JD1bAIhANZqegziA+FLcnKZkNaFJoKL3tpZdFDcF3+q34oCf2bt"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex-1.1.0.tgz_1513346479318_0.20787316840142012"}},"1.1.1":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.1.1","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"can-fixture-socket":"^0.7.1","debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.4.1","vue":"^2.4.4","vuex":"^2.4.1"},"gitHead":"f7788b876160448609f3d1736e99032c81159cf8","_id":"feathers-vuex@1.1.1","_npmVersion":"5.5.1","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-PGyaTfHYcainA8SijBc4UErZLeHT0XYa2sQlPVGeO2hvVXbrrs7TD5J5wrJFBJuToiWwBlpqmj6UVI4Y7gVSXg==","shasum":"8e214f6cf9eac125571e4b94390c7ccc9e096594","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.1.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQClcQs5wdQ+YXqrFaqQQzJ2sUvog6A7b2NEt52jhkixPgIgN0USXKN4QxxZVIO1CmmYSJAajuUFv6BPEt6ReuXrN7I="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex-1.1.1.tgz_1513346737206_0.5360992725472897"}},"1.1.2":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.1.2","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"can-fixture-socket":"^0.7.1","debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.4.1","vue":"^2.4.4","vuex":"^2.4.1"},"gitHead":"c25b12f724ef20aaaaab4284987a87b460015464","_id":"feathers-vuex@1.1.2","_npmVersion":"5.6.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-a78XfNl+k4HmYCFVzAeVKH/yQwBwf2vbqik20cJ+PhO5FA+Pc8iNKOY3X2dzCDiel7krKpGLsWHPxmw1UnTBkg==","shasum":"3f1f215b80f0c33ba1d55476ae1abfdfc0b521cb","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.1.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC70flBf0Py7ADEPScNZSpmgCcQJRZ1lXVGFpLZ1KotLAIgLE9AhVMJPFh1Dsl9HsAb+qMFZrTBpCQY5Vxcg/Cy46c="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex-1.1.2.tgz_1515866273986_0.5947368433699012"}},"1.1.3":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.1.3","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.4.1","vue":"^2.4.4","vuex":"^2.4.1"},"gitHead":"3c05dbbee81871575bf8be99b5ca79cfe3b3a8d3","_id":"feathers-vuex@1.1.3","_npmVersion":"5.6.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-S1XJkFzr3xPbiAZdN+4adtdCCyzYbkFLWXXU9vlapARw8lvRwiwLbEgt0sHHE2aTI6/PuIdwtOYf75WZjA9XWg==","shasum":"da0d09289c4246e49c9ae9934b082badc18465bd","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.1.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDl9aWQa5tX/OVijuaXAHAl8voLpk/70TV3P8kscDM2EAiBst5DD7BXdtSZJSBGD7kVy4A/SRj35RxLx+axNVUXPEA=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex-1.1.3.tgz_1516373166937_0.24724573409184813"}},"1.1.4":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.1.4","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.4.1","vue":"^2.4.4","vuex":"^2.4.1"},"gitHead":"1bfab9763cb69302d0d3ad8fa5dc053565a17045","_id":"feathers-vuex@1.1.4","_npmVersion":"5.6.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-eyuUoKIN+Rp6Wt9bunPaoDfEvL/AYWZxik8dQTz+htxb20hEMZL5NQ+mty/5cDCCBZq6i6gEWpZyOCJCREsn8A==","shasum":"a55c9ecc1388258728862c143d970aa1dda4e9c6","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.1.4.tgz","fileCount":23,"unpackedSize":250617,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICOnGqLm1gi+u8BuT3Q3tBU56QBNGs35scYeJ8Bu3cgwAiAUvjfP0Zc32i7JzQx5tetuyxHui+jFPUl6ApPlmy1Zlg=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.1.4_1518022282383_0.011285934112946538"},"_hasShrinkwrap":false},"1.2.0-pre.0":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.2.0-pre.0","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.4.1","vue":"^2.4.4","vuex":"^2.4.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n> Integrate the Feathers Client into Vuex\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Important\nThe current version of `feathers-vuex` is not compatible with the latest version of `feathers-reactive` (0.5.x). To keep on using `feathers-vuex` install version 0.4.x.\n\n## Use\n`feathers-vuex` is a set of two utilities for integrating the Feathers Client into your Vuex store.  It allows you to eliminate boilerplate and easily customize the store.  To get it working, we first need a Feathers Client.  Note: as of version 1.0.0 `feathers-reactive` is no longer required to get socket updates.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers';\nimport socketio from '@feathersjs/socketio-client';\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth } = feathersVuex(feathersClient, { idField: '_id' })\nconst { serviceModule, serviceModel, servicePlugin } = service\n\nconst todoModule = serviceModule('todos')\nconst TodoModel = serviceModel(todoModule) // TodoModel is an extensible class\nconst todoPlugin = servicePlugin(todoModule, TodoModel)\n\nVue.use(Vuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    todoPlugin, // With our potentially customized TodoModel\n\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false // turn off socket event listeners. It's true by default\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    auth()\n  ]\n})\n```\n\nThe new `feathers-vuex` API is more Vuex-like.  All of the functionality remains the same, but it is no longer configured like a FeathersJS plugin.  While the previous functionality was nice for prototyping, it didn't work well in SSR scenarios, like with Nuxt.\n\nTo see `feathers-vuex` in a working vue-cli application, check out [`feathers-chat-vuex`](https://github.com/feathers-plus/feathers-chat-vuex).\n\n## A note about feathers-reactive\nPrevious versions of this plugin required both RxJS and `feathers-reactive` to receive realtime updates.  `feathers-vuex@1.0.0` has socket messaging support built in and takes advantage of Vuex reactivity, so RxJS and `feathers-reactive` are no longer required.\n\n## API Documentation\n\n### Global Configuration\n\nThe following default options are available for configuration:\n\n```js\nconst defaultOptions = {\n  idField: 'id', // The field in each record that will contain the id\n  autoRemove: false, // automatically remove records missing from responses (only use with feathers-rest)\n  nameStyle: 'short', // Determines the source of the module name. 'short' or 'path'\n  enableEvents: true, // Set to false to explicitly disable socket event handlers.\n  preferUpdate: false, // When true, calling modelInstance.save() will do an update instead of a patch.\n}\n```\n\nEach service module can also be individually configured.\n\n### The Vuex modules\n\nThere are two modules included:\n1. The Service module adds a Vuex store for new services.\n2. The Auth module sets up the Vuex store for authentication / logout.\n\n## Service Module\nThe `Service Module` sets up services in the Vuex store.  Each service will have the below default state in its store.\n\n### Service State\nEach service comes loaded with the following default state:\n```js\n{\n    ids: [],\n    keyedById: {}, // A hash map, keyed by id of each item\n    currentId: undefined, // The id of the item marked as current\n    copy: undefined, // A deep copy of the current item\n    idField: 'id',\n    servicePath: 'v1/todos' // The full service path\n    autoRemove: false, // Indicates that this service will not automatically remove results missing from subsequent requests.\n    paginate: false, // Indicates if pagination is enabled on the Feathers service.\n\n    isFindPending: false,\n    isGetPending: false,\n    isCreatePending: false,\n    isUpdatePending: false,\n    isPatchPending: false,\n    isRemovePending: false,\n\n    errorOnfind: undefined,\n    errorOnGet: undefined,\n    errorOnCreate: undefined,\n    errorOnUpdate: undefined,\n    errorOnPatch: undefined,\n    errorOnRemove: undefined\n  }\n```\n\nThe following attributes are available in each service module's state:\n\n- `ids {Array}` - an array of plain ids representing the ids that belong to each object in the `keyedById` map.\n- `keyedById {Object}` - a hash map keyed by the id of each item.\n- `currentId {Number|String}` - the id of the item marked as current.\n- `copy {Object}` - a deep copy of the current item at the moment it was marked as current. You can make changes to the copy without modifying the `current`.  You can then use the `commitCopy` mutation to save the changes as the `current` or `rejectCopy` to revert `copy` to once again match `current`.\n- `servicePath {String}` - the full service path, even if you alias the namespace to something else.\n- `idField {String}` - the name of the field that holds each item's id. *Default: `'id'`*\n- `paginate {Boolean}` - Indicates if the service has pagination turned on.  This changes the response of the `find` action and getter to match the response that Feathers gives.\n\nThe following state attributes allow you to bind to the pending state of requests:\n- `isFindPending {Boolean}` - `true` if there's a pending `find` request.  `false` if not.\n- `isGetPending {Boolean}` - `true` if there's a pending `get` request.  `false` if not.\n- `isCreatePending {Boolean}` - `true` if there's a pending `create` request.  `false` if not.\n- `isUpdatePending {Boolean}` - `true` if there's a pending `update` request.  `false` if not.\n- `isPatchPending {Boolean}` - `true` if there's a pending `patch` request.  `false` if not.\n- `isRemovePending {Boolean}` - `true` if there's a pending `remove` request.  `false` if not.\n\nThe following state attribute will be populated with any request error, serialized as a plain object:\n- `errorOnFind {Error}`\n- `errorOnGet {Error}`\n- `errorOnCreate {Error}`\n- `errorOnUpdate {Error}`\n- `errorOnPatch {Error}`\n- `errorOnRemo {Error}`\n\n### Service Getters\nService modules include the following getters:\n- `list {Array}` - an array of items. The array form of `keyedById`  Read only.\n- `find(params) {Function}` - a helper function that allows you to use the [Feathers Adapter Common API](https://docs.feathersjs.com/api/databases/common.html) and [Query API](https://docs.feathersjs.com/api/databases/querying.html) to pull data from the store.  This allows you to treat the store just like a local Feathers database adapter (but without hooks).\n  - `params {Object}` - an object with a `query` object and an optional `paginate` boolean property. The `query` is in the FeathersJS query format.  You can set `params.paginate` to `false` to disable pagination for a single request.\n- `get(id[, params]) {Function}` - a function that allows you to query the store for a single item, by id.  It works the same way as `get` requests in Feathers database adapters.\n  - `id {Number|String}` - the id of the data to be retrieved by id from the store.\n  - `params {Object}` - an object containing a Feathers `query` object.\n- `current {Object}` - the object representing the `currentId`. It's pulled from the `keyedById` state.\n- `getCopy {Object}` - An alias to the `state.copy`.\n\n### Service Mutations\nThe following mutations are included in each service module.\n> **Note:** you would typically not call these directly, but instead with `store.commit('removeItem', 'itemId')`. Using vuex's mapMutations on a Vue component can simplify that to `this.removeItem('itemId')`\n\n#### `addItem(state, item)`\nAdds a single item to the `keyedById` map.\n- `item {Object}` - The item to be added to the store.\n\n#### `addItems(state, items)`\nAdds an array of items to the `keyedById` map.\n- `items {Array}` - the items to be added to the store.\n\n#### `updateItem(state, item)`\nUpdates an item in the store to match the passed in `item`.\n- `item {Object}` the item, including `id`, to replace the currently-stored item.\n\n#### `updateItems(state, items)`\nUpdates multiple items in the store to match the passed in array of items.\n- `items {Array}` - An array of items.\n\n#### `removeItem(state, item)`\nRemoves a single item.  `item` can be\n- `item {Number|String|Object}` - The item or id of the item to be deleted.\n\n#### `removeItems(state, items)`\nRemoves the passed in items or ids from the store.\n- `items {Array}` - An array of ids or of objects with ids that will be removed from the data store.\n\n#### `setCurrent(state, item)`\n- `item {Number|String|Object}` - the object with id to be set as the current item, or the id of the object in the store that should become the `current` item.  Setting the `current` item or id also create the deep-cloned `copy`.\n\n#### `commitCopy(state)`\nSaves changes from the `copy` to the `current` item.\n\n#### `rejectCopy(state)`\nRe-copies the data from `current` to `copy`, restoring the original copy.\n\n#### `clearCurrent(state)`\nClears the `current` item, which also clears the copy.\n\n#### `clearList(state)`\nClears the `list`, excepting the `current` item.\n\n#### `clearAll(state)`\nClears all data from `ids`, `keyedById`, and `currentId`\n\n#### Mutations for Managing Pending State\nThe following mutations are called automatically by the service actions, and will rarely, if ever, need to be used manually.\n- `setFindPending(state)` - sets `isFindPending` to `true`\n- `unsetFindPending(state)` - sets `isFindPending` to `false`\n- `setGetPending(state)` - sets `isGetPending` to `true`\n- `unsetGetPending(state)` - sets `isGetPending` to `false`\n- `setCreatePending(state)` - sets `isCreatePending` to `true`\n- `unsetCreatePending(state)` - sets `isCreatePending` to `false`\n- `setUpdatePending(state)` - sets `isUpdatePending` to `true`\n- `unsetUpdatePending(state)` - sets `isUpdatePending` to `false`\n- `setPatchPending(state)` - sets `isPatchPending` to `true`\n- `unsetPatchPending(state)` - sets `isPatchPending` to `false`\n- `setRemovePending(state)` - sets `isRemovePending` to `true`\n- `unsetRemovePending(state)` - sets `isRemovePending` to `false`\n\n#### Mutations for Managing Errors\nThe following mutations are called automatically by the service actions, and will rarely need to be used manually.\n- `setFindError(state, error)`\n- `clearFindError(state)`\n- `setGetError(state, error)`\n- `clearGetError(state)`\n- `setCreateError(state, error)`\n- `clearCreateError(state)`\n- `setUpdateError(state, error)`\n- `clearUpdateError(state)`\n- `setPatchError(state, error)`\n- `clearPatchError(state)`\n- `setRemoveError(state, error)`\n- `clearRemoveError(state)`\n\n### Service Actions\nAn action is included for each of the Feathers service interface methods.  These actions will affect changes in both the Feathers API server and the Vuex store.\n\nAll of the [Feathers Service Methods](https://docs.feathersjs.com/api/databases/common.html#service-methods) are supported.  Because Vuex only supports providing a single argument to actions, there is a slight change in syntax that works well.  If you need to pass multiple arguments to a service method, pass an array to the action with the order of the array elements matching the order of the arguments.  See each method for examples.\n\n> Note: If you use the Feathers service methods, directly, the store will not change. Only the actions will cause store changes.\n\n#### `find(params)`\nQuery an array of records from the server & add to the Vuex store.\n- `params {Object}` - An object containing a `query` object and an optional `paginate` boolean.  You can set `params.paginate` to `false` to disable pagination for a single request.\n\n```js\nlet params = {query: {completed: true}}\nstore.dispatch('todos/find', params)\n```\n\nSee the section about pagination, below, for more information that is applicable to the `find` action.\n\n#### `get(id)` or `get([id, params])`\nQuery a single record from the server & add to Vuex store\n- `id {Number|String}` - the `id` of the record being requested from the API server.\n- `params {Object}` - An object containing a `query` object.\n\n```js\nstore.dispatch('todos/get', 1)\n\n// Use an array to pass params\nlet params = {}\nstore.dispatch('todos/get', [1, params])\n```\n\n#### `create(data)`\nCreate one or multiple records.\n- `data {Object|Array}` - if an object is provided, a single record will be created. If an array of objects is provided, multiple records will be created.\n\n```js\nlet newTodo = {description: 'write good tests'}\nstore.dispatch('todos/create', newTodo)\n```\n\n\n#### `update(paramArray)`\nUpdate (overwrite) a record.\n- `paramArray {Array}` - array containing the three parameters update takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will overwrite the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {id: 5, description: 'write your tests', completed: true}\nlet params = {}\n// Overwrite item 1 with the above data (FYI: Most databases won't let you change the id.)\nstore.dispatch('todos/update', [1, data, params])\n```\n\nAlternatively in a Vue component\n```\nimport { mapActions } from 'vuex'\nexport default {\n  methods: {\n    ...mapActions('todos', [ 'update' ]),\n    addTodo () {\n      let data = {id: 5, description: 'write your tests', completed: true}\n      this.update([1, data, {}])\n    }\n  }\n}\n```\n\n#### `patch(paramArray)`\nPatch (merge in changes) one or more records\n- `paramArray {Array}` - array containing the three parameters patch takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will be merged into the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {description: 'write your tests', completed: true}\nlet params = {}\nstore.dispatch('todos/patch', [1, data, params])\n```\n\n\n#### `remove(id)`\nRemove/delete the record with the given `id`.\n- `id {Number|String}` - the `id` of the existing record being requested from the API server.\n\n```js\nstore.dispatch('todos/remove', 1)\n```\n\n## Querying with Find & Pagination\nBoth the `find` action and the `find` getter support pagination.  There are differences in how they work.\n\n### The `find` action\n\nThe `find` action queries data from the remote server.  It returns a promise that resolves to the response from the server.  The presence of pagination data will be determined by the server.\n\n`feathers-vuex@1.0.0` can store pagination data on a per-query basis.  The `pagination` store attribute maps queries to their most-recent pagination data.  It's an empty object by default, but after performing a single query (with pagination in the response), it will have a `default` property.  This property stores pagination information for the query.  Here's what it will look like:\n\n**`params = { query: {} }`**\n```js\n{\n  pagination: {\n    default: {\n      query: {}, // Same as params.query\n      ids: [0, 1, 2], // the ids in the store for the records that were returned from the server\n      limit: 0, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\nIt's possible that you'll want to store pagination information for more than one query.  This might be for different components making queries against the same service, for example.  You can use the `params.qid` (query identifier) property to assign a name to the query.  If you set a `qid` of `mainListView`, for example, the pagination for this query will show up under `pagination.mainListView`.  The `pagination.default` property will be used any time a `params.qid` is not provided.  Here's an example of what this might look like:\n\n**`params = { query: { $limit: 1 }, qid: 'mainListView' }`**\n```js\n// Data in the store\n{\n  pagination: {\n    mainListView: {\n      query: { $limit: 1 }, // Same as params.query\n      ids: [0], // the ids in the store for the records that were returned from the server\n      limit: 1, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\n> Note: The `find` action no longer returns reactive lists.  The list data will still be reactive, but new matches that arrive from the server do NOT get automatically added to lists.  There are two solutions to this:\n- Use the `find` action to pull in data from the server.  Use the `find` getter to pull a reactive list from the store.\n- Configure the `feathers-reactive` plugin with RxJS on your Feathers Client instance.  [Read the docs for implementation details.](https://github.com/feathers-plus/feathers-reactive)\n\n### The `find` getter\n\nThe `find` getter queries data from the local store using the same Feathers query syntax as on the server.  It is synchronous and returns the results of the query with pagination.  Pagination cannot be disabled.  It accepts a params object with a `query` attribute.  It does not use any other special attributes.  The returned object looks just like a paginated result that you would receive from the server:\n\n**`params = { query: {} }`**\n```js\n// The returned results object\n{\n  data: [{ _id: 1, ...etc }, ...etc],\n  limit: 0,\n  skip: 0,\n  total: 3\n}\n```\n\n\n###\n\n## Customizing a Service's Default Store\n\nAs shown in the first example, the service module allows you to customize its store:\n\n```js\nconst store = new Vuex.Store({\n  plugins: [\n    // Add custom state, getters, mutations, or actions, if needed\n    service('things', {\n      state: {\n        test: true\n      },\n      getters: {\n        getSomeData () {\n          return 'some data'\n        }\n      },\n      mutations: {\n        setTestToFalse (state) {\n          state.test = false\n        },\n        setTestToTrue (state) {\n          state.test = true\n        }\n      },\n      actions: {\n        asyncStuff ({ commit, dispatch }, args) {\n          commit('setTestToTrue')\n\n          return doSomethingAsync(id, params)\n            .then(result => {\n              commit('setTestToFalse')\n              return dispatch('otherAsyncStuff', result)\n            })\n        },\n        otherAsyncStuff ({commit}, args) {\n          return new Promise.resolve(result)\n        }\n      }\n    })\n  ]\n})\n\nassert(store.getters['todos/oneTwoThree'] === 123, 'the custom getter was available')\nstore.dispatch('todos/trigger')\nassert(store.state.todos.isTrue === true, 'the custom action was run')\n```\n\n## Auth Module\nThe Auth module helps setup your app for login / logout.  It includes the following state by default:\n```js\n{\n  accessToken: undefined, // The JWT\n  payload: undefined, // The JWT payload\n\n  isAuthenticatePending: false,\n  isLogoutPending: false,\n\n  errorOnAuthenticate: undefined,\n  errorOnLogout: undefined\n}\n```\n\n### Actions\nThe following actions are included in the `auth` module:\n- `authenticate`: use instead of `feathersClient.authenticate()`\n- `logout`: use instead of `feathersClient.logout()`\nThe Vuex auth store may not update if you use the feathers client version.\n\n## Working with Auth & Nuxt\n\n`feathers-vuex@1.0.0` ships with utilities that help with Nuxt auth related to JSON Web Tokens (JWT).  The most important utility is the `initAuth` utility.  It's for use during Nuxt's `nuxtServerInit` method, and sets up auth data automatically.  Here's an example store that uses it:\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex, { initAuth } from 'feathers-vuex'\n\nconst { service, auth } = feathersVuex(feathersClient)\n\nconst createStore = () => {\n  return new Vuex.Store({\n    state: {},\n    mutations: {\n      increment (state) {\n        state.counter++\n      }\n    },\n    actions: {\n      nuxtServerInit ({ commit, dispatch }, { req }) {\n        return initAuth({\n          commit,\n          dispatch,\n          req,\n          moduleName: 'auth',\n          cookieName: 'feathers-jwt'\n        })\n      }\n    },\n    plugins: [\n      service('courses'),\n      auth({\n        state: {\n          publicPages: [\n            'login',\n            'signup'\n          ]\n        }\n      })\n    ]\n  })\n}\n\nexport default createStore\n```\n\nNotice in the above example, I've added a `publicPages` property to the auth state.  Let's now use this state to redirect the browser when it's not on a public page and there's no auth:\n\nIn your Nuxt project, create the file `/middleware/auth.js`.  Then edit the `nuxt.config.js` and add after the `head` property, add a string that references this routing middleware so it looks like this:\n\n*// nuxt.config.js*\n```js\nrouter: {\n  middleware: ['auth']\n},\n```\n\nNow open the middleware and paste the following content.  All it does is redirect the page if there's no auth data in the store.\n\n```js\n// If it's a private page and there's no payload, redirect.\nexport default function (context) {\n  const { store, redirect, route } = context\n  const { auth } = store.state\n\n  if (!auth.publicPages.includes(route.name) && !auth.payload) {\n    return redirect('login')\n  }\n}\n```\n\nFor a summary, the `initAuth` function will make auth available in the state without much configuration.\n\n### Authentication storage with Nuxt\n\nSince Nuxt is running both client- and server side, it has limits on the availability of certain browser specific variables like `window`. Because of that, trying to configure the feathers client to use `window.localStorage` will result in an error or unexpected / not working behaviour. There's a simple solution though:\n\nWhen you configure the auth module in your feathers-client, use [cookie-storage](https://www.npmjs.com/package/cookie-storage) instead of `window.localStorage` to store the authentication data inside a cookie.\n\n```\nimport { CookieStorage } from 'cookie-storage';\n\nconst feathersClient = feathers()\n  .configure(auth({ storage: new CookieStorage() }));\n```\n\n### Configuration\nYou can provide a `userService` in the auth plugin's options to automatically populate the user upon successful login.\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex from 'feathers-vuex'\n\nconst { auth } = feathersVuex(feathersClient, { idField: '_id' })\n\nconst store = new Vuex.Store({\n  plugins: [\n    auth({ userService: 'users' }) // if your user service endpoint is named 'users'\n  ]\n})\n```\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"3b66376b15ad2dfff2b2cb27b8c4284f88a8da9d","_id":"feathers-vuex@1.2.0-pre.0","_npmVersion":"5.6.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-zAM8pJt3Vla7t9p5fQBGVg+pVxhuKtujag1MJzs9eg0UArBHNjdFlBRDiFhH0jbcdkosEbE+UrJcw2Bdjap/RQ==","shasum":"20aa7573e6e81b03f60f99ec97bdfc443c2d6b3e","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.2.0-pre.0.tgz","fileCount":25,"unpackedSize":257717,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAc3HZOmOSvD8NL4yJSwr8bPniHY1GGLTMQVpkNiAFP5AiBzPKUb7ZqAap/PBaUmHSkgC71V1rHScQjk03+G/OYJsw=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.2.0-pre.0_1519234204995_0.7556560451018108"},"_hasShrinkwrap":false},"1.2.0-pre.1":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.2.0-pre.1","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.4.1","vue":"^2.4.4","vuex":"^2.4.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n> Integrate the Feathers Client into Vuex\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Important\nThe current version of `feathers-vuex` is not compatible with the latest version of `feathers-reactive` (0.5.x). To keep on using `feathers-vuex` install version 0.4.x.\n\n## Use\n`feathers-vuex` is a set of two utilities for integrating the Feathers Client into your Vuex store.  It allows you to eliminate boilerplate and easily customize the store.  To get it working, we first need a Feathers Client.  Note: as of version 1.0.0 `feathers-reactive` is no longer required to get socket updates.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers';\nimport socketio from '@feathersjs/socketio-client';\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\nconst { serviceModule, serviceModel, servicePlugin } = service\n\n\nconst api1Client = feathersVuex(feathersClient, { idField: '_id', apiPrefix: 'api1' })\nconst api2Client = feathersVuex(feathersClient2, { idField: '_id' })\n\n\nVue.use(FeathersVuex)\n\nconst todoModule = serviceModule('todos')\n\n// const Model = serviceModel(todoModule) // TodoModel is an extensible class\nconst Model = serviceModel()\nclass TodoModel = extends Model {}\nconst todoPlugin = servicePlugin(todoModule, TodoModel)\n\nconst TaskModel extends Model {}\n\nexport { TaskModel }\n\n\ncreated () {\n  this.todo = new this.$FeathersVuex.api1.Todo(data)\n}\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    servicePlugin('/tasks', TaskModel), // With our potentially customized TodoModel\n\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // turn off socket event listeners. It's true by default\n      modelName: 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    auth()\n  ]\n})\n```\n\nThe new `feathers-vuex` API is more Vuex-like.  All of the functionality remains the same, but it is no longer configured like a FeathersJS plugin.  While the previous functionality was nice for prototyping, it didn't work well in SSR scenarios, like with Nuxt.\n\nTo see `feathers-vuex` in a working vue-cli application, check out [`feathers-chat-vuex`](https://github.com/feathers-plus/feathers-chat-vuex).\n\n## A note about feathers-reactive\nPrevious versions of this plugin required both RxJS and `feathers-reactive` to receive realtime updates.  `feathers-vuex@1.0.0` has socket messaging support built in and takes advantage of Vuex reactivity, so RxJS and `feathers-reactive` are no longer required.\n\n## API Documentation\n\n### Global Configuration\n\nThe following default options are available for configuration:\n\n```js\nconst defaultOptions = {\n  idField: 'id', // The field in each record that will contain the id\n  autoRemove: false, // automatically remove records missing from responses (only use with feathers-rest)\n  nameStyle: 'short', // Determines the source of the module name. 'short' or 'path'\n  enableEvents: true, // Set to false to explicitly disable socket event handlers.\n  preferUpdate: false, // When true, calling modelInstance.save() will do an update instead of a patch.\n}\n```\n\nEach service module can also be individually configured.\n\n### The Vuex modules\n\nThere are two modules included:\n1. The Service module adds a Vuex store for new services.\n2. The Auth module sets up the Vuex store for authentication / logout.\n\n## Service Module\nThe `Service Module` sets up services in the Vuex store.  Each service will have the below default state in its store.\n\n### Service State\nEach service comes loaded with the following default state:\n```js\n{\n    ids: [],\n    keyedById: {}, // A hash map, keyed by id of each item\n    currentId: undefined, // The id of the item marked as current\n    copy: undefined, // A deep copy of the current item\n    idField: 'id',\n    servicePath: 'v1/todos' // The full service path\n    autoRemove: false, // Indicates that this service will not automatically remove results missing from subsequent requests.\n    paginate: false, // Indicates if pagination is enabled on the Feathers service.\n\n    isFindPending: false,\n    isGetPending: false,\n    isCreatePending: false,\n    isUpdatePending: false,\n    isPatchPending: false,\n    isRemovePending: false,\n\n    errorOnfind: undefined,\n    errorOnGet: undefined,\n    errorOnCreate: undefined,\n    errorOnUpdate: undefined,\n    errorOnPatch: undefined,\n    errorOnRemove: undefined\n  }\n```\n\nThe following attributes are available in each service module's state:\n\n- `ids {Array}` - an array of plain ids representing the ids that belong to each object in the `keyedById` map.\n- `keyedById {Object}` - a hash map keyed by the id of each item.\n- `currentId {Number|String}` - the id of the item marked as current.\n- `copy {Object}` - a deep copy of the current item at the moment it was marked as current. You can make changes to the copy without modifying the `current`.  You can then use the `commitCopy` mutation to save the changes as the `current` or `rejectCopy` to revert `copy` to once again match `current`.\n- `servicePath {String}` - the full service path, even if you alias the namespace to something else.\n- `idField {String}` - the name of the field that holds each item's id. *Default: `'id'`*\n- `paginate {Boolean}` - Indicates if the service has pagination turned on.  This changes the response of the `find` action and getter to match the response that Feathers gives.\n\nThe following state attributes allow you to bind to the pending state of requests:\n- `isFindPending {Boolean}` - `true` if there's a pending `find` request.  `false` if not.\n- `isGetPending {Boolean}` - `true` if there's a pending `get` request.  `false` if not.\n- `isCreatePending {Boolean}` - `true` if there's a pending `create` request.  `false` if not.\n- `isUpdatePending {Boolean}` - `true` if there's a pending `update` request.  `false` if not.\n- `isPatchPending {Boolean}` - `true` if there's a pending `patch` request.  `false` if not.\n- `isRemovePending {Boolean}` - `true` if there's a pending `remove` request.  `false` if not.\n\nThe following state attribute will be populated with any request error, serialized as a plain object:\n- `errorOnFind {Error}`\n- `errorOnGet {Error}`\n- `errorOnCreate {Error}`\n- `errorOnUpdate {Error}`\n- `errorOnPatch {Error}`\n- `errorOnRemo {Error}`\n\n### Service Getters\nService modules include the following getters:\n- `list {Array}` - an array of items. The array form of `keyedById`  Read only.\n- `find(params) {Function}` - a helper function that allows you to use the [Feathers Adapter Common API](https://docs.feathersjs.com/api/databases/common.html) and [Query API](https://docs.feathersjs.com/api/databases/querying.html) to pull data from the store.  This allows you to treat the store just like a local Feathers database adapter (but without hooks).\n  - `params {Object}` - an object with a `query` object and an optional `paginate` boolean property. The `query` is in the FeathersJS query format.  You can set `params.paginate` to `false` to disable pagination for a single request.\n- `get(id[, params]) {Function}` - a function that allows you to query the store for a single item, by id.  It works the same way as `get` requests in Feathers database adapters.\n  - `id {Number|String}` - the id of the data to be retrieved by id from the store.\n  - `params {Object}` - an object containing a Feathers `query` object.\n- `current {Object}` - the object representing the `currentId`. It's pulled from the `keyedById` state.\n- `getCopy {Object}` - An alias to the `state.copy`.\n\n### Service Mutations\nThe following mutations are included in each service module.\n> **Note:** you would typically not call these directly, but instead with `store.commit('removeItem', 'itemId')`. Using vuex's mapMutations on a Vue component can simplify that to `this.removeItem('itemId')`\n\n#### `addItem(state, item)`\nAdds a single item to the `keyedById` map.\n- `item {Object}` - The item to be added to the store.\n\n#### `addItems(state, items)`\nAdds an array of items to the `keyedById` map.\n- `items {Array}` - the items to be added to the store.\n\n#### `updateItem(state, item)`\nUpdates an item in the store to match the passed in `item`.\n- `item {Object}` the item, including `id`, to replace the currently-stored item.\n\n#### `updateItems(state, items)`\nUpdates multiple items in the store to match the passed in array of items.\n- `items {Array}` - An array of items.\n\n#### `removeItem(state, item)`\nRemoves a single item.  `item` can be\n- `item {Number|String|Object}` - The item or id of the item to be deleted.\n\n#### `removeItems(state, items)`\nRemoves the passed in items or ids from the store.\n- `items {Array}` - An array of ids or of objects with ids that will be removed from the data store.\n\n#### `setCurrent(state, item)`\n- `item {Number|String|Object}` - the object with id to be set as the current item, or the id of the object in the store that should become the `current` item.  Setting the `current` item or id also create the deep-cloned `copy`.\n\n#### `commitCopy(state)`\nSaves changes from the `copy` to the `current` item.\n\n#### `rejectCopy(state)`\nRe-copies the data from `current` to `copy`, restoring the original copy.\n\n#### `clearCurrent(state)`\nClears the `current` item, which also clears the copy.\n\n#### `clearList(state)`\nClears the `list`, excepting the `current` item.\n\n#### `clearAll(state)`\nClears all data from `ids`, `keyedById`, and `currentId`\n\n#### Mutations for Managing Pending State\nThe following mutations are called automatically by the service actions, and will rarely, if ever, need to be used manually.\n- `setFindPending(state)` - sets `isFindPending` to `true`\n- `unsetFindPending(state)` - sets `isFindPending` to `false`\n- `setGetPending(state)` - sets `isGetPending` to `true`\n- `unsetGetPending(state)` - sets `isGetPending` to `false`\n- `setCreatePending(state)` - sets `isCreatePending` to `true`\n- `unsetCreatePending(state)` - sets `isCreatePending` to `false`\n- `setUpdatePending(state)` - sets `isUpdatePending` to `true`\n- `unsetUpdatePending(state)` - sets `isUpdatePending` to `false`\n- `setPatchPending(state)` - sets `isPatchPending` to `true`\n- `unsetPatchPending(state)` - sets `isPatchPending` to `false`\n- `setRemovePending(state)` - sets `isRemovePending` to `true`\n- `unsetRemovePending(state)` - sets `isRemovePending` to `false`\n\n#### Mutations for Managing Errors\nThe following mutations are called automatically by the service actions, and will rarely need to be used manually.\n- `setFindError(state, error)`\n- `clearFindError(state)`\n- `setGetError(state, error)`\n- `clearGetError(state)`\n- `setCreateError(state, error)`\n- `clearCreateError(state)`\n- `setUpdateError(state, error)`\n- `clearUpdateError(state)`\n- `setPatchError(state, error)`\n- `clearPatchError(state)`\n- `setRemoveError(state, error)`\n- `clearRemoveError(state)`\n\n### Service Actions\nAn action is included for each of the Feathers service interface methods.  These actions will affect changes in both the Feathers API server and the Vuex store.\n\nAll of the [Feathers Service Methods](https://docs.feathersjs.com/api/databases/common.html#service-methods) are supported.  Because Vuex only supports providing a single argument to actions, there is a slight change in syntax that works well.  If you need to pass multiple arguments to a service method, pass an array to the action with the order of the array elements matching the order of the arguments.  See each method for examples.\n\n> Note: If you use the Feathers service methods, directly, the store will not change. Only the actions will cause store changes.\n\n#### `find(params)`\nQuery an array of records from the server & add to the Vuex store.\n- `params {Object}` - An object containing a `query` object and an optional `paginate` boolean.  You can set `params.paginate` to `false` to disable pagination for a single request.\n\n```js\nlet params = {query: {completed: true}}\nstore.dispatch('todos/find', params)\n```\n\nSee the section about pagination, below, for more information that is applicable to the `find` action.\n\n#### `get(id)` or `get([id, params])`\nQuery a single record from the server & add to Vuex store\n- `id {Number|String}` - the `id` of the record being requested from the API server.\n- `params {Object}` - An object containing a `query` object.\n\n```js\nstore.dispatch('todos/get', 1)\n\n// Use an array to pass params\nlet params = {}\nstore.dispatch('todos/get', [1, params])\n```\n\n#### `create(data)`\nCreate one or multiple records.\n- `data {Object|Array}` - if an object is provided, a single record will be created. If an array of objects is provided, multiple records will be created.\n\n```js\nlet newTodo = {description: 'write good tests'}\nstore.dispatch('todos/create', newTodo)\n```\n\n\n#### `update(paramArray)`\nUpdate (overwrite) a record.\n- `paramArray {Array}` - array containing the three parameters update takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will overwrite the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {id: 5, description: 'write your tests', completed: true}\nlet params = {}\n// Overwrite item 1 with the above data (FYI: Most databases won't let you change the id.)\nstore.dispatch('todos/update', [1, data, params])\n```\n\nAlternatively in a Vue component\n```\nimport { mapActions } from 'vuex'\nexport default {\n  methods: {\n    ...mapActions('todos', [ 'update' ]),\n    addTodo () {\n      let data = {id: 5, description: 'write your tests', completed: true}\n      this.update([1, data, {}])\n    }\n  }\n}\n```\n\n#### `patch(paramArray)`\nPatch (merge in changes) one or more records\n- `paramArray {Array}` - array containing the three parameters patch takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will be merged into the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {description: 'write your tests', completed: true}\nlet params = {}\nstore.dispatch('todos/patch', [1, data, params])\n```\n\n\n#### `remove(id)`\nRemove/delete the record with the given `id`.\n- `id {Number|String}` - the `id` of the existing record being requested from the API server.\n\n```js\nstore.dispatch('todos/remove', 1)\n```\n\n## Querying with Find & Pagination\nBoth the `find` action and the `find` getter support pagination.  There are differences in how they work.\n\n### The `find` action\n\nThe `find` action queries data from the remote server.  It returns a promise that resolves to the response from the server.  The presence of pagination data will be determined by the server.\n\n`feathers-vuex@1.0.0` can store pagination data on a per-query basis.  The `pagination` store attribute maps queries to their most-recent pagination data.  It's an empty object by default, but after performing a single query (with pagination in the response), it will have a `default` property.  This property stores pagination information for the query.  Here's what it will look like:\n\n**`params = { query: {} }`**\n```js\n{\n  pagination: {\n    default: {\n      query: {}, // Same as params.query\n      ids: [0, 1, 2], // the ids in the store for the records that were returned from the server\n      limit: 0, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\nIt's possible that you'll want to store pagination information for more than one query.  This might be for different components making queries against the same service, for example.  You can use the `params.qid` (query identifier) property to assign a name to the query.  If you set a `qid` of `mainListView`, for example, the pagination for this query will show up under `pagination.mainListView`.  The `pagination.default` property will be used any time a `params.qid` is not provided.  Here's an example of what this might look like:\n\n**`params = { query: { $limit: 1 }, qid: 'mainListView' }`**\n```js\n// Data in the store\n{\n  pagination: {\n    mainListView: {\n      query: { $limit: 1 }, // Same as params.query\n      ids: [0], // the ids in the store for the records that were returned from the server\n      limit: 1, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\n> Note: The `find` action no longer returns reactive lists.  The list data will still be reactive, but new matches that arrive from the server do NOT get automatically added to lists.  There are two solutions to this:\n- Use the `find` action to pull in data from the server.  Use the `find` getter to pull a reactive list from the store.\n- Configure the `feathers-reactive` plugin with RxJS on your Feathers Client instance.  [Read the docs for implementation details.](https://github.com/feathers-plus/feathers-reactive)\n\n### The `find` getter\n\nThe `find` getter queries data from the local store using the same Feathers query syntax as on the server.  It is synchronous and returns the results of the query with pagination.  Pagination cannot be disabled.  It accepts a params object with a `query` attribute.  It does not use any other special attributes.  The returned object looks just like a paginated result that you would receive from the server:\n\n**`params = { query: {} }`**\n```js\n// The returned results object\n{\n  data: [{ _id: 1, ...etc }, ...etc],\n  limit: 0,\n  skip: 0,\n  total: 3\n}\n```\n\n\n###\n\n## Customizing a Service's Default Store\n\nAs shown in the first example, the service module allows you to customize its store:\n\n```js\nconst store = new Vuex.Store({\n  plugins: [\n    // Add custom state, getters, mutations, or actions, if needed\n    service('things', {\n      state: {\n        test: true\n      },\n      getters: {\n        getSomeData () {\n          return 'some data'\n        }\n      },\n      mutations: {\n        setTestToFalse (state) {\n          state.test = false\n        },\n        setTestToTrue (state) {\n          state.test = true\n        }\n      },\n      actions: {\n        asyncStuff ({ commit, dispatch }, args) {\n          commit('setTestToTrue')\n\n          return doSomethingAsync(id, params)\n            .then(result => {\n              commit('setTestToFalse')\n              return dispatch('otherAsyncStuff', result)\n            })\n        },\n        otherAsyncStuff ({commit}, args) {\n          return new Promise.resolve(result)\n        }\n      }\n    })\n  ]\n})\n\nassert(store.getters['todos/oneTwoThree'] === 123, 'the custom getter was available')\nstore.dispatch('todos/trigger')\nassert(store.state.todos.isTrue === true, 'the custom action was run')\n```\n\n## Auth Module\nThe Auth module helps setup your app for login / logout.  It includes the following state by default:\n```js\n{\n  accessToken: undefined, // The JWT\n  payload: undefined, // The JWT payload\n\n  isAuthenticatePending: false,\n  isLogoutPending: false,\n\n  errorOnAuthenticate: undefined,\n  errorOnLogout: undefined\n}\n```\n\n### Actions\nThe following actions are included in the `auth` module:\n- `authenticate`: use instead of `feathersClient.authenticate()`\n- `logout`: use instead of `feathersClient.logout()`\nThe Vuex auth store may not update if you use the feathers client version.\n\n## Working with Auth & Nuxt\n\n`feathers-vuex@1.0.0` ships with utilities that help with Nuxt auth related to JSON Web Tokens (JWT).  The most important utility is the `initAuth` utility.  It's for use during Nuxt's `nuxtServerInit` method, and sets up auth data automatically.  Here's an example store that uses it:\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex, { initAuth } from 'feathers-vuex'\n\nconst { service, auth } = feathersVuex(feathersClient)\n\nconst createStore = () => {\n  return new Vuex.Store({\n    state: {},\n    mutations: {\n      increment (state) {\n        state.counter++\n      }\n    },\n    actions: {\n      nuxtServerInit ({ commit, dispatch }, { req }) {\n        return initAuth({\n          commit,\n          dispatch,\n          req,\n          moduleName: 'auth',\n          cookieName: 'feathers-jwt'\n        })\n      }\n    },\n    plugins: [\n      service('courses'),\n      auth({\n        state: {\n          publicPages: [\n            'login',\n            'signup'\n          ]\n        }\n      })\n    ]\n  })\n}\n\nexport default createStore\n```\n\nNotice in the above example, I've added a `publicPages` property to the auth state.  Let's now use this state to redirect the browser when it's not on a public page and there's no auth:\n\nIn your Nuxt project, create the file `/middleware/auth.js`.  Then edit the `nuxt.config.js` and add after the `head` property, add a string that references this routing middleware so it looks like this:\n\n*// nuxt.config.js*\n```js\nrouter: {\n  middleware: ['auth']\n},\n```\n\nNow open the middleware and paste the following content.  All it does is redirect the page if there's no auth data in the store.\n\n```js\n// If it's a private page and there's no payload, redirect.\nexport default function (context) {\n  const { store, redirect, route } = context\n  const { auth } = store.state\n\n  if (!auth.publicPages.includes(route.name) && !auth.payload) {\n    return redirect('login')\n  }\n}\n```\n\nFor a summary, the `initAuth` function will make auth available in the state without much configuration.\n\n### Authentication storage with Nuxt\n\nSince Nuxt is running both client- and server side, it has limits on the availability of certain browser specific variables like `window`. Because of that, trying to configure the feathers client to use `window.localStorage` will result in an error or unexpected / not working behaviour. There's a simple solution though:\n\nWhen you configure the auth module in your feathers-client, use [cookie-storage](https://www.npmjs.com/package/cookie-storage) instead of `window.localStorage` to store the authentication data inside a cookie.\n\n```\nimport { CookieStorage } from 'cookie-storage';\n\nconst feathersClient = feathers()\n  .configure(auth({ storage: new CookieStorage() }));\n```\n\n### Configuration\nYou can provide a `userService` in the auth plugin's options to automatically populate the user upon successful login.\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex from 'feathers-vuex'\n\nconst { auth } = feathersVuex(feathersClient, { idField: '_id' })\n\nconst store = new Vuex.Store({\n  plugins: [\n    auth({ userService: 'users' }) // if your user service endpoint is named 'users'\n  ]\n})\n```\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"d824ca5c2e8ed528d54d39ab147aa0817cb70f92","_id":"feathers-vuex@1.2.0-pre.1","_npmVersion":"5.6.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-oHFZ5ESjSUEqoBR7R8WC3xH5Gv4z22k4CClRJ7nYjDj8CkxJ3VV0nv7o9UvQ/9Y3Xxhg5A9hy+oplbUplQeDug==","shasum":"96daa40f0ab6685c2fe47cd9bb27285f1a9cdb8b","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.2.0-pre.1.tgz","fileCount":26,"unpackedSize":261624,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID9m/3QkFd7W4sR/PtYhH4N/PlcKoiJWUVJk2VCWqBwSAiEA5SzFiRiHzKoGrClJYeSbh3CPN/4AtJnIwAjMshNso/w="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.2.0-pre.1_1519274213974_0.9289887453153125"},"_hasShrinkwrap":false},"1.2.0-pre.2":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.2.0-pre.2","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.4.1","vue":"^2.4.4","vuex":"^2.4.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n> Integrate the Feathers Client into Vuex\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Important\nThe current version of `feathers-vuex` is not compatible with the latest version of `feathers-reactive` (0.5.x). To keep on using `feathers-vuex` install version 0.4.x.\n\n## Use\n`feathers-vuex` is a set of two utilities for integrating the Feathers Client into your Vuex store.  It allows you to eliminate boilerplate and easily customize the store.  To get it working, we first need a Feathers Client.  Note: as of version 1.0.0 `feathers-reactive` is no longer required to get socket updates.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers';\nimport socketio from '@feathersjs/socketio-client';\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\nconst { serviceModule, serviceModel, servicePlugin } = service\n\n\nconst api1Client = feathersVuex(feathersClient, { idField: '_id', apiPrefix: 'api1' })\nconst api2Client = feathersVuex(feathersClient2, { idField: '_id' })\n\n\nVue.use(FeathersVuex)\n\nconst todoModule = serviceModule('todos')\n\n// const Model = serviceModel(todoModule) // TodoModel is an extensible class\nconst Model = serviceModel()\nclass TodoModel = extends Model {}\nconst todoPlugin = servicePlugin(todoModule, TodoModel)\n\nconst TaskModel extends Model {}\n\nexport { TaskModel }\n\n\ncreated () {\n  this.todo = new this.$FeathersVuex.api1.Todo(data)\n}\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    servicePlugin('/tasks', TaskModel), // With our potentially customized TodoModel\n\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // turn off socket event listeners. It's true by default\n      modelName: 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    auth()\n  ]\n})\n```\n\nThe new `feathers-vuex` API is more Vuex-like.  All of the functionality remains the same, but it is no longer configured like a FeathersJS plugin.  While the previous functionality was nice for prototyping, it didn't work well in SSR scenarios, like with Nuxt.\n\nTo see `feathers-vuex` in a working vue-cli application, check out [`feathers-chat-vuex`](https://github.com/feathers-plus/feathers-chat-vuex).\n\n## A note about feathers-reactive\nPrevious versions of this plugin required both RxJS and `feathers-reactive` to receive realtime updates.  `feathers-vuex@1.0.0` has socket messaging support built in and takes advantage of Vuex reactivity, so RxJS and `feathers-reactive` are no longer required.\n\n## API Documentation\n\n### Global Configuration\n\nThe following default options are available for configuration:\n\n```js\nconst defaultOptions = {\n  idField: 'id', // The field in each record that will contain the id\n  autoRemove: false, // automatically remove records missing from responses (only use with feathers-rest)\n  nameStyle: 'short', // Determines the source of the module name. 'short' or 'path'\n  enableEvents: true, // Set to false to explicitly disable socket event handlers.\n  preferUpdate: false, // When true, calling modelInstance.save() will do an update instead of a patch.\n}\n```\n\nEach service module can also be individually configured.\n\n### The Vuex modules\n\nThere are two modules included:\n1. The Service module adds a Vuex store for new services.\n2. The Auth module sets up the Vuex store for authentication / logout.\n\n## Service Module\nThe `Service Module` sets up services in the Vuex store.  Each service will have the below default state in its store.\n\n### Service State\nEach service comes loaded with the following default state:\n```js\n{\n    ids: [],\n    keyedById: {}, // A hash map, keyed by id of each item\n    currentId: undefined, // The id of the item marked as current\n    copy: undefined, // A deep copy of the current item\n    idField: 'id',\n    servicePath: 'v1/todos' // The full service path\n    autoRemove: false, // Indicates that this service will not automatically remove results missing from subsequent requests.\n    paginate: false, // Indicates if pagination is enabled on the Feathers service.\n\n    isFindPending: false,\n    isGetPending: false,\n    isCreatePending: false,\n    isUpdatePending: false,\n    isPatchPending: false,\n    isRemovePending: false,\n\n    errorOnfind: undefined,\n    errorOnGet: undefined,\n    errorOnCreate: undefined,\n    errorOnUpdate: undefined,\n    errorOnPatch: undefined,\n    errorOnRemove: undefined\n  }\n```\n\nThe following attributes are available in each service module's state:\n\n- `ids {Array}` - an array of plain ids representing the ids that belong to each object in the `keyedById` map.\n- `keyedById {Object}` - a hash map keyed by the id of each item.\n- `currentId {Number|String}` - the id of the item marked as current.\n- `copy {Object}` - a deep copy of the current item at the moment it was marked as current. You can make changes to the copy without modifying the `current`.  You can then use the `commitCopy` mutation to save the changes as the `current` or `rejectCopy` to revert `copy` to once again match `current`.\n- `servicePath {String}` - the full service path, even if you alias the namespace to something else.\n- `idField {String}` - the name of the field that holds each item's id. *Default: `'id'`*\n- `paginate {Boolean}` - Indicates if the service has pagination turned on.  This changes the response of the `find` action and getter to match the response that Feathers gives.\n\nThe following state attributes allow you to bind to the pending state of requests:\n- `isFindPending {Boolean}` - `true` if there's a pending `find` request.  `false` if not.\n- `isGetPending {Boolean}` - `true` if there's a pending `get` request.  `false` if not.\n- `isCreatePending {Boolean}` - `true` if there's a pending `create` request.  `false` if not.\n- `isUpdatePending {Boolean}` - `true` if there's a pending `update` request.  `false` if not.\n- `isPatchPending {Boolean}` - `true` if there's a pending `patch` request.  `false` if not.\n- `isRemovePending {Boolean}` - `true` if there's a pending `remove` request.  `false` if not.\n\nThe following state attribute will be populated with any request error, serialized as a plain object:\n- `errorOnFind {Error}`\n- `errorOnGet {Error}`\n- `errorOnCreate {Error}`\n- `errorOnUpdate {Error}`\n- `errorOnPatch {Error}`\n- `errorOnRemo {Error}`\n\n### Service Getters\nService modules include the following getters:\n- `list {Array}` - an array of items. The array form of `keyedById`  Read only.\n- `find(params) {Function}` - a helper function that allows you to use the [Feathers Adapter Common API](https://docs.feathersjs.com/api/databases/common.html) and [Query API](https://docs.feathersjs.com/api/databases/querying.html) to pull data from the store.  This allows you to treat the store just like a local Feathers database adapter (but without hooks).\n  - `params {Object}` - an object with a `query` object and an optional `paginate` boolean property. The `query` is in the FeathersJS query format.  You can set `params.paginate` to `false` to disable pagination for a single request.\n- `get(id[, params]) {Function}` - a function that allows you to query the store for a single item, by id.  It works the same way as `get` requests in Feathers database adapters.\n  - `id {Number|String}` - the id of the data to be retrieved by id from the store.\n  - `params {Object}` - an object containing a Feathers `query` object.\n- `current {Object}` - the object representing the `currentId`. It's pulled from the `keyedById` state.\n- `getCopy {Object}` - An alias to the `state.copy`.\n\n### Service Mutations\nThe following mutations are included in each service module.\n> **Note:** you would typically not call these directly, but instead with `store.commit('removeItem', 'itemId')`. Using vuex's mapMutations on a Vue component can simplify that to `this.removeItem('itemId')`\n\n#### `addItem(state, item)`\nAdds a single item to the `keyedById` map.\n- `item {Object}` - The item to be added to the store.\n\n#### `addItems(state, items)`\nAdds an array of items to the `keyedById` map.\n- `items {Array}` - the items to be added to the store.\n\n#### `updateItem(state, item)`\nUpdates an item in the store to match the passed in `item`.\n- `item {Object}` the item, including `id`, to replace the currently-stored item.\n\n#### `updateItems(state, items)`\nUpdates multiple items in the store to match the passed in array of items.\n- `items {Array}` - An array of items.\n\n#### `removeItem(state, item)`\nRemoves a single item.  `item` can be\n- `item {Number|String|Object}` - The item or id of the item to be deleted.\n\n#### `removeItems(state, items)`\nRemoves the passed in items or ids from the store.\n- `items {Array}` - An array of ids or of objects with ids that will be removed from the data store.\n\n#### `setCurrent(state, item)`\n- `item {Number|String|Object}` - the object with id to be set as the current item, or the id of the object in the store that should become the `current` item.  Setting the `current` item or id also create the deep-cloned `copy`.\n\n#### `commitCopy(state)`\nSaves changes from the `copy` to the `current` item.\n\n#### `rejectCopy(state)`\nRe-copies the data from `current` to `copy`, restoring the original copy.\n\n#### `clearCurrent(state)`\nClears the `current` item, which also clears the copy.\n\n#### `clearList(state)`\nClears the `list`, excepting the `current` item.\n\n#### `clearAll(state)`\nClears all data from `ids`, `keyedById`, and `currentId`\n\n#### Mutations for Managing Pending State\nThe following mutations are called automatically by the service actions, and will rarely, if ever, need to be used manually.\n- `setFindPending(state)` - sets `isFindPending` to `true`\n- `unsetFindPending(state)` - sets `isFindPending` to `false`\n- `setGetPending(state)` - sets `isGetPending` to `true`\n- `unsetGetPending(state)` - sets `isGetPending` to `false`\n- `setCreatePending(state)` - sets `isCreatePending` to `true`\n- `unsetCreatePending(state)` - sets `isCreatePending` to `false`\n- `setUpdatePending(state)` - sets `isUpdatePending` to `true`\n- `unsetUpdatePending(state)` - sets `isUpdatePending` to `false`\n- `setPatchPending(state)` - sets `isPatchPending` to `true`\n- `unsetPatchPending(state)` - sets `isPatchPending` to `false`\n- `setRemovePending(state)` - sets `isRemovePending` to `true`\n- `unsetRemovePending(state)` - sets `isRemovePending` to `false`\n\n#### Mutations for Managing Errors\nThe following mutations are called automatically by the service actions, and will rarely need to be used manually.\n- `setFindError(state, error)`\n- `clearFindError(state)`\n- `setGetError(state, error)`\n- `clearGetError(state)`\n- `setCreateError(state, error)`\n- `clearCreateError(state)`\n- `setUpdateError(state, error)`\n- `clearUpdateError(state)`\n- `setPatchError(state, error)`\n- `clearPatchError(state)`\n- `setRemoveError(state, error)`\n- `clearRemoveError(state)`\n\n### Service Actions\nAn action is included for each of the Feathers service interface methods.  These actions will affect changes in both the Feathers API server and the Vuex store.\n\nAll of the [Feathers Service Methods](https://docs.feathersjs.com/api/databases/common.html#service-methods) are supported.  Because Vuex only supports providing a single argument to actions, there is a slight change in syntax that works well.  If you need to pass multiple arguments to a service method, pass an array to the action with the order of the array elements matching the order of the arguments.  See each method for examples.\n\n> Note: If you use the Feathers service methods, directly, the store will not change. Only the actions will cause store changes.\n\n#### `find(params)`\nQuery an array of records from the server & add to the Vuex store.\n- `params {Object}` - An object containing a `query` object and an optional `paginate` boolean.  You can set `params.paginate` to `false` to disable pagination for a single request.\n\n```js\nlet params = {query: {completed: true}}\nstore.dispatch('todos/find', params)\n```\n\nSee the section about pagination, below, for more information that is applicable to the `find` action.\n\n#### `get(id)` or `get([id, params])`\nQuery a single record from the server & add to Vuex store\n- `id {Number|String}` - the `id` of the record being requested from the API server.\n- `params {Object}` - An object containing a `query` object.\n\n```js\nstore.dispatch('todos/get', 1)\n\n// Use an array to pass params\nlet params = {}\nstore.dispatch('todos/get', [1, params])\n```\n\n#### `create(data)`\nCreate one or multiple records.\n- `data {Object|Array}` - if an object is provided, a single record will be created. If an array of objects is provided, multiple records will be created.\n\n```js\nlet newTodo = {description: 'write good tests'}\nstore.dispatch('todos/create', newTodo)\n```\n\n\n#### `update(paramArray)`\nUpdate (overwrite) a record.\n- `paramArray {Array}` - array containing the three parameters update takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will overwrite the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {id: 5, description: 'write your tests', completed: true}\nlet params = {}\n// Overwrite item 1 with the above data (FYI: Most databases won't let you change the id.)\nstore.dispatch('todos/update', [1, data, params])\n```\n\nAlternatively in a Vue component\n```\nimport { mapActions } from 'vuex'\nexport default {\n  methods: {\n    ...mapActions('todos', [ 'update' ]),\n    addTodo () {\n      let data = {id: 5, description: 'write your tests', completed: true}\n      this.update([1, data, {}])\n    }\n  }\n}\n```\n\n#### `patch(paramArray)`\nPatch (merge in changes) one or more records\n- `paramArray {Array}` - array containing the three parameters patch takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will be merged into the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {description: 'write your tests', completed: true}\nlet params = {}\nstore.dispatch('todos/patch', [1, data, params])\n```\n\n\n#### `remove(id)`\nRemove/delete the record with the given `id`.\n- `id {Number|String}` - the `id` of the existing record being requested from the API server.\n\n```js\nstore.dispatch('todos/remove', 1)\n```\n\n## Querying with Find & Pagination\nBoth the `find` action and the `find` getter support pagination.  There are differences in how they work.\n\n### The `find` action\n\nThe `find` action queries data from the remote server.  It returns a promise that resolves to the response from the server.  The presence of pagination data will be determined by the server.\n\n`feathers-vuex@1.0.0` can store pagination data on a per-query basis.  The `pagination` store attribute maps queries to their most-recent pagination data.  It's an empty object by default, but after performing a single query (with pagination in the response), it will have a `default` property.  This property stores pagination information for the query.  Here's what it will look like:\n\n**`params = { query: {} }`**\n```js\n{\n  pagination: {\n    default: {\n      query: {}, // Same as params.query\n      ids: [0, 1, 2], // the ids in the store for the records that were returned from the server\n      limit: 0, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\nIt's possible that you'll want to store pagination information for more than one query.  This might be for different components making queries against the same service, for example.  You can use the `params.qid` (query identifier) property to assign a name to the query.  If you set a `qid` of `mainListView`, for example, the pagination for this query will show up under `pagination.mainListView`.  The `pagination.default` property will be used any time a `params.qid` is not provided.  Here's an example of what this might look like:\n\n**`params = { query: { $limit: 1 }, qid: 'mainListView' }`**\n```js\n// Data in the store\n{\n  pagination: {\n    mainListView: {\n      query: { $limit: 1 }, // Same as params.query\n      ids: [0], // the ids in the store for the records that were returned from the server\n      limit: 1, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\n> Note: The `find` action no longer returns reactive lists.  The list data will still be reactive, but new matches that arrive from the server do NOT get automatically added to lists.  There are two solutions to this:\n- Use the `find` action to pull in data from the server.  Use the `find` getter to pull a reactive list from the store.\n- Configure the `feathers-reactive` plugin with RxJS on your Feathers Client instance.  [Read the docs for implementation details.](https://github.com/feathers-plus/feathers-reactive)\n\n### The `find` getter\n\nThe `find` getter queries data from the local store using the same Feathers query syntax as on the server.  It is synchronous and returns the results of the query with pagination.  Pagination cannot be disabled.  It accepts a params object with a `query` attribute.  It does not use any other special attributes.  The returned object looks just like a paginated result that you would receive from the server:\n\n**`params = { query: {} }`**\n```js\n// The returned results object\n{\n  data: [{ _id: 1, ...etc }, ...etc],\n  limit: 0,\n  skip: 0,\n  total: 3\n}\n```\n\n\n###\n\n## Customizing a Service's Default Store\n\nAs shown in the first example, the service module allows you to customize its store:\n\n```js\nconst store = new Vuex.Store({\n  plugins: [\n    // Add custom state, getters, mutations, or actions, if needed\n    service('things', {\n      state: {\n        test: true\n      },\n      getters: {\n        getSomeData () {\n          return 'some data'\n        }\n      },\n      mutations: {\n        setTestToFalse (state) {\n          state.test = false\n        },\n        setTestToTrue (state) {\n          state.test = true\n        }\n      },\n      actions: {\n        asyncStuff ({ commit, dispatch }, args) {\n          commit('setTestToTrue')\n\n          return doSomethingAsync(id, params)\n            .then(result => {\n              commit('setTestToFalse')\n              return dispatch('otherAsyncStuff', result)\n            })\n        },\n        otherAsyncStuff ({commit}, args) {\n          return new Promise.resolve(result)\n        }\n      }\n    })\n  ]\n})\n\nassert(store.getters['todos/oneTwoThree'] === 123, 'the custom getter was available')\nstore.dispatch('todos/trigger')\nassert(store.state.todos.isTrue === true, 'the custom action was run')\n```\n\n## Auth Module\nThe Auth module helps setup your app for login / logout.  It includes the following state by default:\n```js\n{\n  accessToken: undefined, // The JWT\n  payload: undefined, // The JWT payload\n\n  isAuthenticatePending: false,\n  isLogoutPending: false,\n\n  errorOnAuthenticate: undefined,\n  errorOnLogout: undefined\n}\n```\n\n### Actions\nThe following actions are included in the `auth` module:\n- `authenticate`: use instead of `feathersClient.authenticate()`\n- `logout`: use instead of `feathersClient.logout()`\nThe Vuex auth store may not update if you use the feathers client version.\n\n## Working with Auth & Nuxt\n\n`feathers-vuex@1.0.0` ships with utilities that help with Nuxt auth related to JSON Web Tokens (JWT).  The most important utility is the `initAuth` utility.  It's for use during Nuxt's `nuxtServerInit` method, and sets up auth data automatically.  Here's an example store that uses it:\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex, { initAuth } from 'feathers-vuex'\n\nconst { service, auth } = feathersVuex(feathersClient)\n\nconst createStore = () => {\n  return new Vuex.Store({\n    state: {},\n    mutations: {\n      increment (state) {\n        state.counter++\n      }\n    },\n    actions: {\n      nuxtServerInit ({ commit, dispatch }, { req }) {\n        return initAuth({\n          commit,\n          dispatch,\n          req,\n          moduleName: 'auth',\n          cookieName: 'feathers-jwt'\n        })\n      }\n    },\n    plugins: [\n      service('courses'),\n      auth({\n        state: {\n          publicPages: [\n            'login',\n            'signup'\n          ]\n        }\n      })\n    ]\n  })\n}\n\nexport default createStore\n```\n\nNotice in the above example, I've added a `publicPages` property to the auth state.  Let's now use this state to redirect the browser when it's not on a public page and there's no auth:\n\nIn your Nuxt project, create the file `/middleware/auth.js`.  Then edit the `nuxt.config.js` and add after the `head` property, add a string that references this routing middleware so it looks like this:\n\n*// nuxt.config.js*\n```js\nrouter: {\n  middleware: ['auth']\n},\n```\n\nNow open the middleware and paste the following content.  All it does is redirect the page if there's no auth data in the store.\n\n```js\n// If it's a private page and there's no payload, redirect.\nexport default function (context) {\n  const { store, redirect, route } = context\n  const { auth } = store.state\n\n  if (!auth.publicPages.includes(route.name) && !auth.payload) {\n    return redirect('login')\n  }\n}\n```\n\nFor a summary, the `initAuth` function will make auth available in the state without much configuration.\n\n### Authentication storage with Nuxt\n\nSince Nuxt is running both client- and server side, it has limits on the availability of certain browser specific variables like `window`. Because of that, trying to configure the feathers client to use `window.localStorage` will result in an error or unexpected / not working behaviour. There's a simple solution though:\n\nWhen you configure the auth module in your feathers-client, use [cookie-storage](https://www.npmjs.com/package/cookie-storage) instead of `window.localStorage` to store the authentication data inside a cookie.\n\n```\nimport { CookieStorage } from 'cookie-storage';\n\nconst feathersClient = feathers()\n  .configure(auth({ storage: new CookieStorage() }));\n```\n\n### Configuration\nYou can provide a `userService` in the auth plugin's options to automatically populate the user upon successful login.\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex from 'feathers-vuex'\n\nconst { auth } = feathersVuex(feathersClient, { idField: '_id' })\n\nconst store = new Vuex.Store({\n  plugins: [\n    auth({ userService: 'users' }) // if your user service endpoint is named 'users'\n  ]\n})\n```\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"20d9eb38c127019b6b3dcfa07d5ef66b60e7f9ea","_id":"feathers-vuex@1.2.0-pre.2","_npmVersion":"5.6.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-nGLqFhDV7DgurCTrN+qgTFqkYIj0pC3GK5t7z2ChPXu9VduFEGJkgLLeQVSEK+gGu96Bg9z4NY22cVpkl1jDMA==","shasum":"44596da2326953b99de1e97a85bf64504efcbb0d","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.2.0-pre.2.tgz","fileCount":26,"unpackedSize":265170,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCrHsE7eqAW2KGTpmm05Kvr5OHh1uaMpIPQaIJQ0NO54gIgVtub2BONIfht/jI5ncrryqVblLi1qtVJFzdQE5J4pJM="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.2.0-pre.2_1520627804426_0.8810657807847182"},"_hasShrinkwrap":false},"1.2.0-pre.3":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.2.0-pre.3","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.4.1","vue":"^2.4.4","vuex":"^2.4.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n> Integrate the Feathers Client into Vuex\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Important\nThe current version of `feathers-vuex` is not compatible with the latest version of `feathers-reactive` (0.5.x). To keep on using `feathers-vuex` install version 0.4.x.\n\n## Use\n`feathers-vuex` is a set of two utilities for integrating the Feathers Client into your Vuex store.  It allows you to eliminate boilerplate and easily customize the store.  To get it working, we first need a Feathers Client.  Note: as of version 1.0.0 `feathers-reactive` is no longer required to get socket updates.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers';\nimport socketio from '@feathersjs/socketio-client';\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\nconst { serviceModule, serviceModel, servicePlugin } = service\n\n\nconst api1Client = feathersVuex(feathersClient, { idField: '_id', apiPrefix: 'api1' })\nconst api2Client = feathersVuex(feathersClient2, { idField: '_id' })\n\n\nVue.use(FeathersVuex)\n\nconst todoModule = serviceModule('todos')\n\n// const Model = serviceModel(todoModule) // TodoModel is an extensible class\nconst Model = serviceModel()\nclass TodoModel = extends Model {}\nconst todoPlugin = servicePlugin(todoModule, TodoModel)\n\nconst TaskModel extends Model {}\n\nexport { TaskModel }\n\n\ncreated () {\n  this.todo = new this.$FeathersVuex.api1.Todo(data)\n}\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    servicePlugin('/tasks', TaskModel), // With our potentially customized TodoModel\n\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // turn off socket event listeners. It's true by default\n      modelName: 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    auth()\n  ]\n})\n```\n\nThe new `feathers-vuex` API is more Vuex-like.  All of the functionality remains the same, but it is no longer configured like a FeathersJS plugin.  While the previous functionality was nice for prototyping, it didn't work well in SSR scenarios, like with Nuxt.\n\nTo see `feathers-vuex` in a working vue-cli application, check out [`feathers-chat-vuex`](https://github.com/feathers-plus/feathers-chat-vuex).\n\n## A note about feathers-reactive\nPrevious versions of this plugin required both RxJS and `feathers-reactive` to receive realtime updates.  `feathers-vuex@1.0.0` has socket messaging support built in and takes advantage of Vuex reactivity, so RxJS and `feathers-reactive` are no longer required.\n\n## API Documentation\n\n### Global Configuration\n\nThe following default options are available for configuration:\n\n```js\nconst defaultOptions = {\n  idField: 'id', // The field in each record that will contain the id\n  autoRemove: false, // automatically remove records missing from responses (only use with feathers-rest)\n  nameStyle: 'short', // Determines the source of the module name. 'short' or 'path'\n  enableEvents: true, // Set to false to explicitly disable socket event handlers.\n  preferUpdate: false, // When true, calling modelInstance.save() will do an update instead of a patch.\n}\n```\n\nEach service module can also be individually configured.\n\n### The Vuex modules\n\nThere are two modules included:\n1. The Service module adds a Vuex store for new services.\n2. The Auth module sets up the Vuex store for authentication / logout.\n\n## Service Module\nThe `Service Module` sets up services in the Vuex store.  Each service will have the below default state in its store.\n\n### Service State\nEach service comes loaded with the following default state:\n```js\n{\n    ids: [],\n    keyedById: {}, // A hash map, keyed by id of each item\n    currentId: undefined, // The id of the item marked as current\n    copy: undefined, // A deep copy of the current item\n    idField: 'id',\n    servicePath: 'v1/todos' // The full service path\n    autoRemove: false, // Indicates that this service will not automatically remove results missing from subsequent requests.\n    paginate: false, // Indicates if pagination is enabled on the Feathers service.\n\n    isFindPending: false,\n    isGetPending: false,\n    isCreatePending: false,\n    isUpdatePending: false,\n    isPatchPending: false,\n    isRemovePending: false,\n\n    errorOnfind: undefined,\n    errorOnGet: undefined,\n    errorOnCreate: undefined,\n    errorOnUpdate: undefined,\n    errorOnPatch: undefined,\n    errorOnRemove: undefined\n  }\n```\n\nThe following attributes are available in each service module's state:\n\n- `ids {Array}` - an array of plain ids representing the ids that belong to each object in the `keyedById` map.\n- `keyedById {Object}` - a hash map keyed by the id of each item.\n- `currentId {Number|String}` - the id of the item marked as current.\n- `copy {Object}` - a deep copy of the current item at the moment it was marked as current. You can make changes to the copy without modifying the `current`.  You can then use the `commitCopy` mutation to save the changes as the `current` or `rejectCopy` to revert `copy` to once again match `current`.\n- `servicePath {String}` - the full service path, even if you alias the namespace to something else.\n- `idField {String}` - the name of the field that holds each item's id. *Default: `'id'`*\n- `paginate {Boolean}` - Indicates if the service has pagination turned on.  This changes the response of the `find` action and getter to match the response that Feathers gives.\n\nThe following state attributes allow you to bind to the pending state of requests:\n- `isFindPending {Boolean}` - `true` if there's a pending `find` request.  `false` if not.\n- `isGetPending {Boolean}` - `true` if there's a pending `get` request.  `false` if not.\n- `isCreatePending {Boolean}` - `true` if there's a pending `create` request.  `false` if not.\n- `isUpdatePending {Boolean}` - `true` if there's a pending `update` request.  `false` if not.\n- `isPatchPending {Boolean}` - `true` if there's a pending `patch` request.  `false` if not.\n- `isRemovePending {Boolean}` - `true` if there's a pending `remove` request.  `false` if not.\n\nThe following state attribute will be populated with any request error, serialized as a plain object:\n- `errorOnFind {Error}`\n- `errorOnGet {Error}`\n- `errorOnCreate {Error}`\n- `errorOnUpdate {Error}`\n- `errorOnPatch {Error}`\n- `errorOnRemo {Error}`\n\n### Service Getters\nService modules include the following getters:\n- `list {Array}` - an array of items. The array form of `keyedById`  Read only.\n- `find(params) {Function}` - a helper function that allows you to use the [Feathers Adapter Common API](https://docs.feathersjs.com/api/databases/common.html) and [Query API](https://docs.feathersjs.com/api/databases/querying.html) to pull data from the store.  This allows you to treat the store just like a local Feathers database adapter (but without hooks).\n  - `params {Object}` - an object with a `query` object and an optional `paginate` boolean property. The `query` is in the FeathersJS query format.  You can set `params.paginate` to `false` to disable pagination for a single request.\n- `get(id[, params]) {Function}` - a function that allows you to query the store for a single item, by id.  It works the same way as `get` requests in Feathers database adapters.\n  - `id {Number|String}` - the id of the data to be retrieved by id from the store.\n  - `params {Object}` - an object containing a Feathers `query` object.\n- `current {Object}` - the object representing the `currentId`. It's pulled from the `keyedById` state.\n- `getCopy {Object}` - An alias to the `state.copy`.\n\n### Service Mutations\nThe following mutations are included in each service module.\n> **Note:** you would typically not call these directly, but instead with `store.commit('removeItem', 'itemId')`. Using vuex's mapMutations on a Vue component can simplify that to `this.removeItem('itemId')`\n\n#### `addItem(state, item)`\nAdds a single item to the `keyedById` map.\n- `item {Object}` - The item to be added to the store.\n\n#### `addItems(state, items)`\nAdds an array of items to the `keyedById` map.\n- `items {Array}` - the items to be added to the store.\n\n#### `updateItem(state, item)`\nUpdates an item in the store to match the passed in `item`.\n- `item {Object}` the item, including `id`, to replace the currently-stored item.\n\n#### `updateItems(state, items)`\nUpdates multiple items in the store to match the passed in array of items.\n- `items {Array}` - An array of items.\n\n#### `removeItem(state, item)`\nRemoves a single item.  `item` can be\n- `item {Number|String|Object}` - The item or id of the item to be deleted.\n\n#### `removeItems(state, items)`\nRemoves the passed in items or ids from the store.\n- `items {Array}` - An array of ids or of objects with ids that will be removed from the data store.\n\n#### `setCurrent(state, item)`\n- `item {Number|String|Object}` - the object with id to be set as the current item, or the id of the object in the store that should become the `current` item.  Setting the `current` item or id also create the deep-cloned `copy`.\n\n#### `commitCopy(state)`\nSaves changes from the `copy` to the `current` item.\n\n#### `rejectCopy(state)`\nRe-copies the data from `current` to `copy`, restoring the original copy.\n\n#### `clearCurrent(state)`\nClears the `current` item, which also clears the copy.\n\n#### `clearList(state)`\nClears the `list`, excepting the `current` item.\n\n#### `clearAll(state)`\nClears all data from `ids`, `keyedById`, and `currentId`\n\n#### Mutations for Managing Pending State\nThe following mutations are called automatically by the service actions, and will rarely, if ever, need to be used manually.\n- `setFindPending(state)` - sets `isFindPending` to `true`\n- `unsetFindPending(state)` - sets `isFindPending` to `false`\n- `setGetPending(state)` - sets `isGetPending` to `true`\n- `unsetGetPending(state)` - sets `isGetPending` to `false`\n- `setCreatePending(state)` - sets `isCreatePending` to `true`\n- `unsetCreatePending(state)` - sets `isCreatePending` to `false`\n- `setUpdatePending(state)` - sets `isUpdatePending` to `true`\n- `unsetUpdatePending(state)` - sets `isUpdatePending` to `false`\n- `setPatchPending(state)` - sets `isPatchPending` to `true`\n- `unsetPatchPending(state)` - sets `isPatchPending` to `false`\n- `setRemovePending(state)` - sets `isRemovePending` to `true`\n- `unsetRemovePending(state)` - sets `isRemovePending` to `false`\n\n#### Mutations for Managing Errors\nThe following mutations are called automatically by the service actions, and will rarely need to be used manually.\n- `setFindError(state, error)`\n- `clearFindError(state)`\n- `setGetError(state, error)`\n- `clearGetError(state)`\n- `setCreateError(state, error)`\n- `clearCreateError(state)`\n- `setUpdateError(state, error)`\n- `clearUpdateError(state)`\n- `setPatchError(state, error)`\n- `clearPatchError(state)`\n- `setRemoveError(state, error)`\n- `clearRemoveError(state)`\n\n### Service Actions\nAn action is included for each of the Feathers service interface methods.  These actions will affect changes in both the Feathers API server and the Vuex store.\n\nAll of the [Feathers Service Methods](https://docs.feathersjs.com/api/databases/common.html#service-methods) are supported.  Because Vuex only supports providing a single argument to actions, there is a slight change in syntax that works well.  If you need to pass multiple arguments to a service method, pass an array to the action with the order of the array elements matching the order of the arguments.  See each method for examples.\n\n> Note: If you use the Feathers service methods, directly, the store will not change. Only the actions will cause store changes.\n\n#### `find(params)`\nQuery an array of records from the server & add to the Vuex store.\n- `params {Object}` - An object containing a `query` object and an optional `paginate` boolean.  You can set `params.paginate` to `false` to disable pagination for a single request.\n\n```js\nlet params = {query: {completed: true}}\nstore.dispatch('todos/find', params)\n```\n\nSee the section about pagination, below, for more information that is applicable to the `find` action.\n\n#### `get(id)` or `get([id, params])`\nQuery a single record from the server & add to Vuex store\n- `id {Number|String}` - the `id` of the record being requested from the API server.\n- `params {Object}` - An object containing a `query` object.\n\n```js\nstore.dispatch('todos/get', 1)\n\n// Use an array to pass params\nlet params = {}\nstore.dispatch('todos/get', [1, params])\n```\n\n#### `create(data)`\nCreate one or multiple records.\n- `data {Object|Array}` - if an object is provided, a single record will be created. If an array of objects is provided, multiple records will be created.\n\n```js\nlet newTodo = {description: 'write good tests'}\nstore.dispatch('todos/create', newTodo)\n```\n\n\n#### `update(paramArray)`\nUpdate (overwrite) a record.\n- `paramArray {Array}` - array containing the three parameters update takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will overwrite the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {id: 5, description: 'write your tests', completed: true}\nlet params = {}\n// Overwrite item 1 with the above data (FYI: Most databases won't let you change the id.)\nstore.dispatch('todos/update', [1, data, params])\n```\n\nAlternatively in a Vue component\n```\nimport { mapActions } from 'vuex'\nexport default {\n  methods: {\n    ...mapActions('todos', [ 'update' ]),\n    addTodo () {\n      let data = {id: 5, description: 'write your tests', completed: true}\n      this.update([1, data, {}])\n    }\n  }\n}\n```\n\n#### `patch(paramArray)`\nPatch (merge in changes) one or more records\n- `paramArray {Array}` - array containing the three parameters patch takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will be merged into the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {description: 'write your tests', completed: true}\nlet params = {}\nstore.dispatch('todos/patch', [1, data, params])\n```\n\n\n#### `remove(id)`\nRemove/delete the record with the given `id`.\n- `id {Number|String}` - the `id` of the existing record being requested from the API server.\n\n```js\nstore.dispatch('todos/remove', 1)\n```\n\n## Querying with Find & Pagination\nBoth the `find` action and the `find` getter support pagination.  There are differences in how they work.\n\n### The `find` action\n\nThe `find` action queries data from the remote server.  It returns a promise that resolves to the response from the server.  The presence of pagination data will be determined by the server.\n\n`feathers-vuex@1.0.0` can store pagination data on a per-query basis.  The `pagination` store attribute maps queries to their most-recent pagination data.  It's an empty object by default, but after performing a single query (with pagination in the response), it will have a `default` property.  This property stores pagination information for the query.  Here's what it will look like:\n\n**`params = { query: {} }`**\n```js\n{\n  pagination: {\n    default: {\n      query: {}, // Same as params.query\n      ids: [0, 1, 2], // the ids in the store for the records that were returned from the server\n      limit: 0, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\nIt's possible that you'll want to store pagination information for more than one query.  This might be for different components making queries against the same service, for example.  You can use the `params.qid` (query identifier) property to assign a name to the query.  If you set a `qid` of `mainListView`, for example, the pagination for this query will show up under `pagination.mainListView`.  The `pagination.default` property will be used any time a `params.qid` is not provided.  Here's an example of what this might look like:\n\n**`params = { query: { $limit: 1 }, qid: 'mainListView' }`**\n```js\n// Data in the store\n{\n  pagination: {\n    mainListView: {\n      query: { $limit: 1 }, // Same as params.query\n      ids: [0], // the ids in the store for the records that were returned from the server\n      limit: 1, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\n> Note: The `find` action no longer returns reactive lists.  The list data will still be reactive, but new matches that arrive from the server do NOT get automatically added to lists.  There are two solutions to this:\n- Use the `find` action to pull in data from the server.  Use the `find` getter to pull a reactive list from the store.\n- Configure the `feathers-reactive` plugin with RxJS on your Feathers Client instance.  [Read the docs for implementation details.](https://github.com/feathers-plus/feathers-reactive)\n\n### The `find` getter\n\nThe `find` getter queries data from the local store using the same Feathers query syntax as on the server.  It is synchronous and returns the results of the query with pagination.  Pagination cannot be disabled.  It accepts a params object with a `query` attribute.  It does not use any other special attributes.  The returned object looks just like a paginated result that you would receive from the server:\n\n**`params = { query: {} }`**\n```js\n// The returned results object\n{\n  data: [{ _id: 1, ...etc }, ...etc],\n  limit: 0,\n  skip: 0,\n  total: 3\n}\n```\n\n\n###\n\n## Customizing a Service's Default Store\n\nAs shown in the first example, the service module allows you to customize its store:\n\n```js\nconst store = new Vuex.Store({\n  plugins: [\n    // Add custom state, getters, mutations, or actions, if needed\n    service('things', {\n      state: {\n        test: true\n      },\n      getters: {\n        getSomeData () {\n          return 'some data'\n        }\n      },\n      mutations: {\n        setTestToFalse (state) {\n          state.test = false\n        },\n        setTestToTrue (state) {\n          state.test = true\n        }\n      },\n      actions: {\n        asyncStuff ({ commit, dispatch }, args) {\n          commit('setTestToTrue')\n\n          return doSomethingAsync(id, params)\n            .then(result => {\n              commit('setTestToFalse')\n              return dispatch('otherAsyncStuff', result)\n            })\n        },\n        otherAsyncStuff ({commit}, args) {\n          return new Promise.resolve(result)\n        }\n      }\n    })\n  ]\n})\n\nassert(store.getters['todos/oneTwoThree'] === 123, 'the custom getter was available')\nstore.dispatch('todos/trigger')\nassert(store.state.todos.isTrue === true, 'the custom action was run')\n```\n\n## Auth Module\nThe Auth module helps setup your app for login / logout.  It includes the following state by default:\n```js\n{\n  accessToken: undefined, // The JWT\n  payload: undefined, // The JWT payload\n\n  isAuthenticatePending: false,\n  isLogoutPending: false,\n\n  errorOnAuthenticate: undefined,\n  errorOnLogout: undefined\n}\n```\n\n### Actions\nThe following actions are included in the `auth` module:\n- `authenticate`: use instead of `feathersClient.authenticate()`\n- `logout`: use instead of `feathersClient.logout()`\nThe Vuex auth store may not update if you use the feathers client version.\n\n## Working with Auth & Nuxt\n\n`feathers-vuex@1.0.0` ships with utilities that help with Nuxt auth related to JSON Web Tokens (JWT).  The most important utility is the `initAuth` utility.  It's for use during Nuxt's `nuxtServerInit` method, and sets up auth data automatically.  Here's an example store that uses it:\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex, { initAuth } from 'feathers-vuex'\n\nconst { service, auth } = feathersVuex(feathersClient)\n\nconst createStore = () => {\n  return new Vuex.Store({\n    state: {},\n    mutations: {\n      increment (state) {\n        state.counter++\n      }\n    },\n    actions: {\n      nuxtServerInit ({ commit, dispatch }, { req }) {\n        return initAuth({\n          commit,\n          dispatch,\n          req,\n          moduleName: 'auth',\n          cookieName: 'feathers-jwt'\n        })\n      }\n    },\n    plugins: [\n      service('courses'),\n      auth({\n        state: {\n          publicPages: [\n            'login',\n            'signup'\n          ]\n        }\n      })\n    ]\n  })\n}\n\nexport default createStore\n```\n\nNotice in the above example, I've added a `publicPages` property to the auth state.  Let's now use this state to redirect the browser when it's not on a public page and there's no auth:\n\nIn your Nuxt project, create the file `/middleware/auth.js`.  Then edit the `nuxt.config.js` and add after the `head` property, add a string that references this routing middleware so it looks like this:\n\n*// nuxt.config.js*\n```js\nrouter: {\n  middleware: ['auth']\n},\n```\n\nNow open the middleware and paste the following content.  All it does is redirect the page if there's no auth data in the store.\n\n```js\n// If it's a private page and there's no payload, redirect.\nexport default function (context) {\n  const { store, redirect, route } = context\n  const { auth } = store.state\n\n  if (!auth.publicPages.includes(route.name) && !auth.payload) {\n    return redirect('login')\n  }\n}\n```\n\nFor a summary, the `initAuth` function will make auth available in the state without much configuration.\n\n### Authentication storage with Nuxt\n\nSince Nuxt is running both client- and server side, it has limits on the availability of certain browser specific variables like `window`. Because of that, trying to configure the feathers client to use `window.localStorage` will result in an error or unexpected / not working behaviour. There's a simple solution though:\n\nWhen you configure the auth module in your feathers-client, use [cookie-storage](https://www.npmjs.com/package/cookie-storage) instead of `window.localStorage` to store the authentication data inside a cookie.\n\n```\nimport { CookieStorage } from 'cookie-storage';\n\nconst feathersClient = feathers()\n  .configure(auth({ storage: new CookieStorage() }));\n```\n\n### Configuration\nYou can provide a `userService` in the auth plugin's options to automatically populate the user upon successful login.\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex from 'feathers-vuex'\n\nconst { auth } = feathersVuex(feathersClient, { idField: '_id' })\n\nconst store = new Vuex.Store({\n  plugins: [\n    auth({ userService: 'users' }) // if your user service endpoint is named 'users'\n  ]\n})\n```\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"936c01d2103feabcf0a28156aef3a1eeaf12cd97","_id":"feathers-vuex@1.2.0-pre.3","_npmVersion":"5.6.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-2zhUVmku1B95+mzmLMEtdNL8B6+XTz/fz3nVjsPVBYuqcDVFKAPbnUj71ExeM55uvGPzXh0KoLtj7gHQ0K0f7A==","shasum":"a794e28e929f67419caba763741e651a2edfb8ca","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.2.0-pre.3.tgz","fileCount":26,"unpackedSize":265169,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAz3DBLykz0xsTWpLGYl1Gbd0dZLPEFlCPRLxu8iMAEtAiEAn0/cuAu1fMQtJgS9UKb3a08fwbPMcY6lBEMV2tj8DTc="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.2.0-pre.3_1520659142675_0.19038595601146513"},"_hasShrinkwrap":false},"1.2.0-pre.4":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.2.0-pre.4","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.4.1","vue":"^2.4.4","vuex":"^2.4.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n> Integrate the Feathers Client into Vuex\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Important\nThe current version of `feathers-vuex` is not compatible with the latest version of `feathers-reactive` (0.5.x). To keep on using `feathers-vuex` install version 0.4.x.\n\n## Use\n`feathers-vuex` is a set of two utilities for integrating the Feathers Client into your Vuex store.  It allows you to eliminate boilerplate and easily customize the store.  To get it working, we first need a Feathers Client.  Note: as of version 1.0.0 `feathers-reactive` is no longer required to get socket updates.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers';\nimport socketio from '@feathersjs/socketio-client';\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\nconst { serviceModule, serviceModel, servicePlugin } = service\n\n\nconst api1Client = feathersVuex(feathersClient, { idField: '_id', apiPrefix: 'api1' })\nconst api2Client = feathersVuex(feathersClient2, { idField: '_id' })\n\n\nVue.use(FeathersVuex)\n\nconst todoModule = serviceModule('todos')\n\n// const Model = serviceModel(todoModule) // TodoModel is an extensible class\nconst Model = serviceModel()\nclass TodoModel = extends Model {}\nconst todoPlugin = servicePlugin(todoModule, TodoModel)\n\nconst TaskModel extends Model {}\n\nexport { TaskModel }\n\n\ncreated () {\n  this.todo = new this.$FeathersVuex.api1.Todo(data)\n}\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    servicePlugin('/tasks', TaskModel), // With our potentially customized TodoModel\n\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // turn off socket event listeners. It's true by default\n      modelName: 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    auth()\n  ]\n})\n```\n\nThe new `feathers-vuex` API is more Vuex-like.  All of the functionality remains the same, but it is no longer configured like a FeathersJS plugin.  While the previous functionality was nice for prototyping, it didn't work well in SSR scenarios, like with Nuxt.\n\nTo see `feathers-vuex` in a working vue-cli application, check out [`feathers-chat-vuex`](https://github.com/feathers-plus/feathers-chat-vuex).\n\n## A note about feathers-reactive\nPrevious versions of this plugin required both RxJS and `feathers-reactive` to receive realtime updates.  `feathers-vuex@1.0.0` has socket messaging support built in and takes advantage of Vuex reactivity, so RxJS and `feathers-reactive` are no longer required.\n\n## API Documentation\n\n### Global Configuration\n\nThe following default options are available for configuration:\n\n```js\nconst defaultOptions = {\n  idField: 'id', // The field in each record that will contain the id\n  autoRemove: false, // automatically remove records missing from responses (only use with feathers-rest)\n  nameStyle: 'short', // Determines the source of the module name. 'short' or 'path'\n  enableEvents: true, // Set to false to explicitly disable socket event handlers.\n  preferUpdate: false, // When true, calling modelInstance.save() will do an update instead of a patch.\n}\n```\n\nEach service module can also be individually configured.\n\n### The Vuex modules\n\nThere are two modules included:\n1. The Service module adds a Vuex store for new services.\n2. The Auth module sets up the Vuex store for authentication / logout.\n\n## Service Module\nThe `Service Module` sets up services in the Vuex store.  Each service will have the below default state in its store.\n\n### Service State\nEach service comes loaded with the following default state:\n```js\n{\n    ids: [],\n    keyedById: {}, // A hash map, keyed by id of each item\n    currentId: undefined, // The id of the item marked as current\n    copy: undefined, // A deep copy of the current item\n    idField: 'id',\n    servicePath: 'v1/todos' // The full service path\n    autoRemove: false, // Indicates that this service will not automatically remove results missing from subsequent requests.\n    paginate: false, // Indicates if pagination is enabled on the Feathers service.\n\n    isFindPending: false,\n    isGetPending: false,\n    isCreatePending: false,\n    isUpdatePending: false,\n    isPatchPending: false,\n    isRemovePending: false,\n\n    errorOnfind: undefined,\n    errorOnGet: undefined,\n    errorOnCreate: undefined,\n    errorOnUpdate: undefined,\n    errorOnPatch: undefined,\n    errorOnRemove: undefined\n  }\n```\n\nThe following attributes are available in each service module's state:\n\n- `ids {Array}` - an array of plain ids representing the ids that belong to each object in the `keyedById` map.\n- `keyedById {Object}` - a hash map keyed by the id of each item.\n- `currentId {Number|String}` - the id of the item marked as current.\n- `copy {Object}` - a deep copy of the current item at the moment it was marked as current. You can make changes to the copy without modifying the `current`.  You can then use the `commitCopy` mutation to save the changes as the `current` or `rejectCopy` to revert `copy` to once again match `current`.\n- `servicePath {String}` - the full service path, even if you alias the namespace to something else.\n- `idField {String}` - the name of the field that holds each item's id. *Default: `'id'`*\n- `paginate {Boolean}` - Indicates if the service has pagination turned on.  This changes the response of the `find` action and getter to match the response that Feathers gives.\n\nThe following state attributes allow you to bind to the pending state of requests:\n- `isFindPending {Boolean}` - `true` if there's a pending `find` request.  `false` if not.\n- `isGetPending {Boolean}` - `true` if there's a pending `get` request.  `false` if not.\n- `isCreatePending {Boolean}` - `true` if there's a pending `create` request.  `false` if not.\n- `isUpdatePending {Boolean}` - `true` if there's a pending `update` request.  `false` if not.\n- `isPatchPending {Boolean}` - `true` if there's a pending `patch` request.  `false` if not.\n- `isRemovePending {Boolean}` - `true` if there's a pending `remove` request.  `false` if not.\n\nThe following state attribute will be populated with any request error, serialized as a plain object:\n- `errorOnFind {Error}`\n- `errorOnGet {Error}`\n- `errorOnCreate {Error}`\n- `errorOnUpdate {Error}`\n- `errorOnPatch {Error}`\n- `errorOnRemo {Error}`\n\n### Service Getters\nService modules include the following getters:\n- `list {Array}` - an array of items. The array form of `keyedById`  Read only.\n- `find(params) {Function}` - a helper function that allows you to use the [Feathers Adapter Common API](https://docs.feathersjs.com/api/databases/common.html) and [Query API](https://docs.feathersjs.com/api/databases/querying.html) to pull data from the store.  This allows you to treat the store just like a local Feathers database adapter (but without hooks).\n  - `params {Object}` - an object with a `query` object and an optional `paginate` boolean property. The `query` is in the FeathersJS query format.  You can set `params.paginate` to `false` to disable pagination for a single request.\n- `get(id[, params]) {Function}` - a function that allows you to query the store for a single item, by id.  It works the same way as `get` requests in Feathers database adapters.\n  - `id {Number|String}` - the id of the data to be retrieved by id from the store.\n  - `params {Object}` - an object containing a Feathers `query` object.\n- `current {Object}` - the object representing the `currentId`. It's pulled from the `keyedById` state.\n- `getCopy {Object}` - An alias to the `state.copy`.\n\n### Service Mutations\nThe following mutations are included in each service module.\n> **Note:** you would typically not call these directly, but instead with `store.commit('removeItem', 'itemId')`. Using vuex's mapMutations on a Vue component can simplify that to `this.removeItem('itemId')`\n\n#### `addItem(state, item)`\nAdds a single item to the `keyedById` map.\n- `item {Object}` - The item to be added to the store.\n\n#### `addItems(state, items)`\nAdds an array of items to the `keyedById` map.\n- `items {Array}` - the items to be added to the store.\n\n#### `updateItem(state, item)`\nUpdates an item in the store to match the passed in `item`.\n- `item {Object}` the item, including `id`, to replace the currently-stored item.\n\n#### `updateItems(state, items)`\nUpdates multiple items in the store to match the passed in array of items.\n- `items {Array}` - An array of items.\n\n#### `removeItem(state, item)`\nRemoves a single item.  `item` can be\n- `item {Number|String|Object}` - The item or id of the item to be deleted.\n\n#### `removeItems(state, items)`\nRemoves the passed in items or ids from the store.\n- `items {Array}` - An array of ids or of objects with ids that will be removed from the data store.\n\n#### `setCurrent(state, item)`\n- `item {Number|String|Object}` - the object with id to be set as the current item, or the id of the object in the store that should become the `current` item.  Setting the `current` item or id also create the deep-cloned `copy`.\n\n#### `commitCopy(state)`\nSaves changes from the `copy` to the `current` item.\n\n#### `rejectCopy(state)`\nRe-copies the data from `current` to `copy`, restoring the original copy.\n\n#### `clearCurrent(state)`\nClears the `current` item, which also clears the copy.\n\n#### `clearList(state)`\nClears the `list`, excepting the `current` item.\n\n#### `clearAll(state)`\nClears all data from `ids`, `keyedById`, and `currentId`\n\n#### Mutations for Managing Pending State\nThe following mutations are called automatically by the service actions, and will rarely, if ever, need to be used manually.\n- `setFindPending(state)` - sets `isFindPending` to `true`\n- `unsetFindPending(state)` - sets `isFindPending` to `false`\n- `setGetPending(state)` - sets `isGetPending` to `true`\n- `unsetGetPending(state)` - sets `isGetPending` to `false`\n- `setCreatePending(state)` - sets `isCreatePending` to `true`\n- `unsetCreatePending(state)` - sets `isCreatePending` to `false`\n- `setUpdatePending(state)` - sets `isUpdatePending` to `true`\n- `unsetUpdatePending(state)` - sets `isUpdatePending` to `false`\n- `setPatchPending(state)` - sets `isPatchPending` to `true`\n- `unsetPatchPending(state)` - sets `isPatchPending` to `false`\n- `setRemovePending(state)` - sets `isRemovePending` to `true`\n- `unsetRemovePending(state)` - sets `isRemovePending` to `false`\n\n#### Mutations for Managing Errors\nThe following mutations are called automatically by the service actions, and will rarely need to be used manually.\n- `setFindError(state, error)`\n- `clearFindError(state)`\n- `setGetError(state, error)`\n- `clearGetError(state)`\n- `setCreateError(state, error)`\n- `clearCreateError(state)`\n- `setUpdateError(state, error)`\n- `clearUpdateError(state)`\n- `setPatchError(state, error)`\n- `clearPatchError(state)`\n- `setRemoveError(state, error)`\n- `clearRemoveError(state)`\n\n### Service Actions\nAn action is included for each of the Feathers service interface methods.  These actions will affect changes in both the Feathers API server and the Vuex store.\n\nAll of the [Feathers Service Methods](https://docs.feathersjs.com/api/databases/common.html#service-methods) are supported.  Because Vuex only supports providing a single argument to actions, there is a slight change in syntax that works well.  If you need to pass multiple arguments to a service method, pass an array to the action with the order of the array elements matching the order of the arguments.  See each method for examples.\n\n> Note: If you use the Feathers service methods, directly, the store will not change. Only the actions will cause store changes.\n\n#### `find(params)`\nQuery an array of records from the server & add to the Vuex store.\n- `params {Object}` - An object containing a `query` object and an optional `paginate` boolean.  You can set `params.paginate` to `false` to disable pagination for a single request.\n\n```js\nlet params = {query: {completed: true}}\nstore.dispatch('todos/find', params)\n```\n\nSee the section about pagination, below, for more information that is applicable to the `find` action.\n\n#### `get(id)` or `get([id, params])`\nQuery a single record from the server & add to Vuex store\n- `id {Number|String}` - the `id` of the record being requested from the API server.\n- `params {Object}` - An object containing a `query` object.\n\n```js\nstore.dispatch('todos/get', 1)\n\n// Use an array to pass params\nlet params = {}\nstore.dispatch('todos/get', [1, params])\n```\n\n#### `create(data)`\nCreate one or multiple records.\n- `data {Object|Array}` - if an object is provided, a single record will be created. If an array of objects is provided, multiple records will be created.\n\n```js\nlet newTodo = {description: 'write good tests'}\nstore.dispatch('todos/create', newTodo)\n```\n\n\n#### `update(paramArray)`\nUpdate (overwrite) a record.\n- `paramArray {Array}` - array containing the three parameters update takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will overwrite the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {id: 5, description: 'write your tests', completed: true}\nlet params = {}\n// Overwrite item 1 with the above data (FYI: Most databases won't let you change the id.)\nstore.dispatch('todos/update', [1, data, params])\n```\n\nAlternatively in a Vue component\n```\nimport { mapActions } from 'vuex'\nexport default {\n  methods: {\n    ...mapActions('todos', [ 'update' ]),\n    addTodo () {\n      let data = {id: 5, description: 'write your tests', completed: true}\n      this.update([1, data, {}])\n    }\n  }\n}\n```\n\n#### `patch(paramArray)`\nPatch (merge in changes) one or more records\n- `paramArray {Array}` - array containing the three parameters patch takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will be merged into the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {description: 'write your tests', completed: true}\nlet params = {}\nstore.dispatch('todos/patch', [1, data, params])\n```\n\n\n#### `remove(id)`\nRemove/delete the record with the given `id`.\n- `id {Number|String}` - the `id` of the existing record being requested from the API server.\n\n```js\nstore.dispatch('todos/remove', 1)\n```\n\n## Querying with Find & Pagination\nBoth the `find` action and the `find` getter support pagination.  There are differences in how they work.\n\n### The `find` action\n\nThe `find` action queries data from the remote server.  It returns a promise that resolves to the response from the server.  The presence of pagination data will be determined by the server.\n\n`feathers-vuex@1.0.0` can store pagination data on a per-query basis.  The `pagination` store attribute maps queries to their most-recent pagination data.  It's an empty object by default, but after performing a single query (with pagination in the response), it will have a `default` property.  This property stores pagination information for the query.  Here's what it will look like:\n\n**`params = { query: {} }`**\n```js\n{\n  pagination: {\n    default: {\n      query: {}, // Same as params.query\n      ids: [0, 1, 2], // the ids in the store for the records that were returned from the server\n      limit: 0, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\nIt's possible that you'll want to store pagination information for more than one query.  This might be for different components making queries against the same service, for example.  You can use the `params.qid` (query identifier) property to assign a name to the query.  If you set a `qid` of `mainListView`, for example, the pagination for this query will show up under `pagination.mainListView`.  The `pagination.default` property will be used any time a `params.qid` is not provided.  Here's an example of what this might look like:\n\n**`params = { query: { $limit: 1 }, qid: 'mainListView' }`**\n```js\n// Data in the store\n{\n  pagination: {\n    mainListView: {\n      query: { $limit: 1 }, // Same as params.query\n      ids: [0], // the ids in the store for the records that were returned from the server\n      limit: 1, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\n> Note: The `find` action no longer returns reactive lists.  The list data will still be reactive, but new matches that arrive from the server do NOT get automatically added to lists.  There are two solutions to this:\n- Use the `find` action to pull in data from the server.  Use the `find` getter to pull a reactive list from the store.\n- Configure the `feathers-reactive` plugin with RxJS on your Feathers Client instance.  [Read the docs for implementation details.](https://github.com/feathers-plus/feathers-reactive)\n\n### The `find` getter\n\nThe `find` getter queries data from the local store using the same Feathers query syntax as on the server.  It is synchronous and returns the results of the query with pagination.  Pagination cannot be disabled.  It accepts a params object with a `query` attribute.  It does not use any other special attributes.  The returned object looks just like a paginated result that you would receive from the server:\n\n**`params = { query: {} }`**\n```js\n// The returned results object\n{\n  data: [{ _id: 1, ...etc }, ...etc],\n  limit: 0,\n  skip: 0,\n  total: 3\n}\n```\n\n\n###\n\n## Customizing a Service's Default Store\n\nAs shown in the first example, the service module allows you to customize its store:\n\n```js\nconst store = new Vuex.Store({\n  plugins: [\n    // Add custom state, getters, mutations, or actions, if needed\n    service('things', {\n      state: {\n        test: true\n      },\n      getters: {\n        getSomeData () {\n          return 'some data'\n        }\n      },\n      mutations: {\n        setTestToFalse (state) {\n          state.test = false\n        },\n        setTestToTrue (state) {\n          state.test = true\n        }\n      },\n      actions: {\n        asyncStuff ({ commit, dispatch }, args) {\n          commit('setTestToTrue')\n\n          return doSomethingAsync(id, params)\n            .then(result => {\n              commit('setTestToFalse')\n              return dispatch('otherAsyncStuff', result)\n            })\n        },\n        otherAsyncStuff ({commit}, args) {\n          return new Promise.resolve(result)\n        }\n      }\n    })\n  ]\n})\n\nassert(store.getters['todos/oneTwoThree'] === 123, 'the custom getter was available')\nstore.dispatch('todos/trigger')\nassert(store.state.todos.isTrue === true, 'the custom action was run')\n```\n\n## Auth Module\nThe Auth module helps setup your app for login / logout.  It includes the following state by default:\n```js\n{\n  accessToken: undefined, // The JWT\n  payload: undefined, // The JWT payload\n\n  isAuthenticatePending: false,\n  isLogoutPending: false,\n\n  errorOnAuthenticate: undefined,\n  errorOnLogout: undefined\n}\n```\n\n### Actions\nThe following actions are included in the `auth` module:\n- `authenticate`: use instead of `feathersClient.authenticate()`\n- `logout`: use instead of `feathersClient.logout()`\nThe Vuex auth store may not update if you use the feathers client version.\n\n## Working with Auth & Nuxt\n\n`feathers-vuex@1.0.0` ships with utilities that help with Nuxt auth related to JSON Web Tokens (JWT).  The most important utility is the `initAuth` utility.  It's for use during Nuxt's `nuxtServerInit` method, and sets up auth data automatically.  Here's an example store that uses it:\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex, { initAuth } from 'feathers-vuex'\n\nconst { service, auth } = feathersVuex(feathersClient)\n\nconst createStore = () => {\n  return new Vuex.Store({\n    state: {},\n    mutations: {\n      increment (state) {\n        state.counter++\n      }\n    },\n    actions: {\n      nuxtServerInit ({ commit, dispatch }, { req }) {\n        return initAuth({\n          commit,\n          dispatch,\n          req,\n          moduleName: 'auth',\n          cookieName: 'feathers-jwt'\n        })\n      }\n    },\n    plugins: [\n      service('courses'),\n      auth({\n        state: {\n          publicPages: [\n            'login',\n            'signup'\n          ]\n        }\n      })\n    ]\n  })\n}\n\nexport default createStore\n```\n\nNotice in the above example, I've added a `publicPages` property to the auth state.  Let's now use this state to redirect the browser when it's not on a public page and there's no auth:\n\nIn your Nuxt project, create the file `/middleware/auth.js`.  Then edit the `nuxt.config.js` and add after the `head` property, add a string that references this routing middleware so it looks like this:\n\n*// nuxt.config.js*\n```js\nrouter: {\n  middleware: ['auth']\n},\n```\n\nNow open the middleware and paste the following content.  All it does is redirect the page if there's no auth data in the store.\n\n```js\n// If it's a private page and there's no payload, redirect.\nexport default function (context) {\n  const { store, redirect, route } = context\n  const { auth } = store.state\n\n  if (!auth.publicPages.includes(route.name) && !auth.payload) {\n    return redirect('login')\n  }\n}\n```\n\nFor a summary, the `initAuth` function will make auth available in the state without much configuration.\n\n### Authentication storage with Nuxt\n\nSince Nuxt is running both client- and server side, it has limits on the availability of certain browser specific variables like `window`. Because of that, trying to configure the feathers client to use `window.localStorage` will result in an error or unexpected / not working behaviour. There's a simple solution though:\n\nWhen you configure the auth module in your feathers-client, use [cookie-storage](https://www.npmjs.com/package/cookie-storage) instead of `window.localStorage` to store the authentication data inside a cookie.\n\n```\nimport { CookieStorage } from 'cookie-storage';\n\nconst feathersClient = feathers()\n  .configure(auth({ storage: new CookieStorage() }));\n```\n\n### Configuration\nYou can provide a `userService` in the auth plugin's options to automatically populate the user upon successful login.\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex from 'feathers-vuex'\n\nconst { auth } = feathersVuex(feathersClient, { idField: '_id' })\n\nconst store = new Vuex.Store({\n  plugins: [\n    auth({ userService: 'users' }) // if your user service endpoint is named 'users'\n  ]\n})\n```\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"fe70210cd736d68efd31f53b3f3013531f40da3e","_id":"feathers-vuex@1.2.0-pre.4","_npmVersion":"5.6.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-2O3/yHV5Bv4fgWdO9f/TZQL74b3r1ig9eZbmExzY7sitzvbUjXYinIAlsJRnAscYqIBoJ15jPWudQjfrJPFKcA==","shasum":"f33e3f221d3e30760377308e6c4bdfcb80d42ac7","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.2.0-pre.4.tgz","fileCount":26,"unpackedSize":265287,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICZcfXEDGUR8oHWphpW0h1E8scPd0Tvf+DbjVVJCjtjvAiEAhBTB5fzfBcESj8P7d+1W6aOyQeBInt/vF3hvTps3aT0="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.2.0-pre.4_1520689890500_0.6869014147228103"},"_hasShrinkwrap":false},"1.2.0-pre.5":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.2.0-pre.5","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.4.1","vue":"^2.4.4","vuex":"^2.4.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n> Integrate the Feathers Client into Vuex\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Important\nThe current version of `feathers-vuex` is not compatible with the latest version of `feathers-reactive` (0.5.x). To keep on using `feathers-vuex` install version 0.4.x.\n\n## Use\n`feathers-vuex` is a set of two utilities for integrating the Feathers Client into your Vuex store.  It allows you to eliminate boilerplate and easily customize the store.  To get it working, we first need a Feathers Client.  Note: as of version 1.0.0 `feathers-reactive` is no longer required to get socket updates.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers';\nimport socketio from '@feathersjs/socketio-client';\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\nconst { serviceModule, serviceModel, servicePlugin } = service\n\n\nconst api1Client = feathersVuex(feathersClient, { idField: '_id', apiPrefix: 'api1' })\nconst api2Client = feathersVuex(feathersClient2, { idField: '_id' })\n\n\nVue.use(FeathersVuex)\n\nconst todoModule = serviceModule('todos')\n\n// const Model = serviceModel(todoModule) // TodoModel is an extensible class\nconst Model = serviceModel()\nclass TodoModel = extends Model {}\nconst todoPlugin = servicePlugin(todoModule, TodoModel)\n\nconst TaskModel extends Model {}\n\nexport { TaskModel }\n\n\ncreated () {\n  this.todo = new this.$FeathersVuex.api1.Todo(data)\n}\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    servicePlugin('/tasks', TaskModel), // With our potentially customized TodoModel\n\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // turn off socket event listeners. It's true by default\n      modelName: 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    auth()\n  ]\n})\n```\n\nThe new `feathers-vuex` API is more Vuex-like.  All of the functionality remains the same, but it is no longer configured like a FeathersJS plugin.  While the previous functionality was nice for prototyping, it didn't work well in SSR scenarios, like with Nuxt.\n\nTo see `feathers-vuex` in a working vue-cli application, check out [`feathers-chat-vuex`](https://github.com/feathers-plus/feathers-chat-vuex).\n\n## A note about feathers-reactive\nPrevious versions of this plugin required both RxJS and `feathers-reactive` to receive realtime updates.  `feathers-vuex@1.0.0` has socket messaging support built in and takes advantage of Vuex reactivity, so RxJS and `feathers-reactive` are no longer required.\n\n## API Documentation\n\n### Global Configuration\n\nThe following default options are available for configuration:\n\n```js\nconst defaultOptions = {\n  idField: 'id', // The field in each record that will contain the id\n  autoRemove: false, // automatically remove records missing from responses (only use with feathers-rest)\n  nameStyle: 'short', // Determines the source of the module name. 'short' or 'path'\n  enableEvents: true, // Set to false to explicitly disable socket event handlers.\n  preferUpdate: false, // When true, calling modelInstance.save() will do an update instead of a patch.\n}\n```\n\nEach service module can also be individually configured.\n\n### The Vuex modules\n\nThere are two modules included:\n1. The Service module adds a Vuex store for new services.\n2. The Auth module sets up the Vuex store for authentication / logout.\n\n## Service Module\nThe `Service Module` sets up services in the Vuex store.  Each service will have the below default state in its store.\n\n### Service State\nEach service comes loaded with the following default state:\n```js\n{\n    ids: [],\n    keyedById: {}, // A hash map, keyed by id of each item\n    currentId: undefined, // The id of the item marked as current\n    copy: undefined, // A deep copy of the current item\n    idField: 'id',\n    servicePath: 'v1/todos' // The full service path\n    autoRemove: false, // Indicates that this service will not automatically remove results missing from subsequent requests.\n    paginate: false, // Indicates if pagination is enabled on the Feathers service.\n\n    isFindPending: false,\n    isGetPending: false,\n    isCreatePending: false,\n    isUpdatePending: false,\n    isPatchPending: false,\n    isRemovePending: false,\n\n    errorOnfind: undefined,\n    errorOnGet: undefined,\n    errorOnCreate: undefined,\n    errorOnUpdate: undefined,\n    errorOnPatch: undefined,\n    errorOnRemove: undefined\n  }\n```\n\nThe following attributes are available in each service module's state:\n\n- `ids {Array}` - an array of plain ids representing the ids that belong to each object in the `keyedById` map.\n- `keyedById {Object}` - a hash map keyed by the id of each item.\n- `currentId {Number|String}` - the id of the item marked as current.\n- `copy {Object}` - a deep copy of the current item at the moment it was marked as current. You can make changes to the copy without modifying the `current`.  You can then use the `commitCopy` mutation to save the changes as the `current` or `rejectCopy` to revert `copy` to once again match `current`.\n- `servicePath {String}` - the full service path, even if you alias the namespace to something else.\n- `idField {String}` - the name of the field that holds each item's id. *Default: `'id'`*\n- `paginate {Boolean}` - Indicates if the service has pagination turned on.  This changes the response of the `find` action and getter to match the response that Feathers gives.\n\nThe following state attributes allow you to bind to the pending state of requests:\n- `isFindPending {Boolean}` - `true` if there's a pending `find` request.  `false` if not.\n- `isGetPending {Boolean}` - `true` if there's a pending `get` request.  `false` if not.\n- `isCreatePending {Boolean}` - `true` if there's a pending `create` request.  `false` if not.\n- `isUpdatePending {Boolean}` - `true` if there's a pending `update` request.  `false` if not.\n- `isPatchPending {Boolean}` - `true` if there's a pending `patch` request.  `false` if not.\n- `isRemovePending {Boolean}` - `true` if there's a pending `remove` request.  `false` if not.\n\nThe following state attribute will be populated with any request error, serialized as a plain object:\n- `errorOnFind {Error}`\n- `errorOnGet {Error}`\n- `errorOnCreate {Error}`\n- `errorOnUpdate {Error}`\n- `errorOnPatch {Error}`\n- `errorOnRemo {Error}`\n\n### Service Getters\nService modules include the following getters:\n- `list {Array}` - an array of items. The array form of `keyedById`  Read only.\n- `find(params) {Function}` - a helper function that allows you to use the [Feathers Adapter Common API](https://docs.feathersjs.com/api/databases/common.html) and [Query API](https://docs.feathersjs.com/api/databases/querying.html) to pull data from the store.  This allows you to treat the store just like a local Feathers database adapter (but without hooks).\n  - `params {Object}` - an object with a `query` object and an optional `paginate` boolean property. The `query` is in the FeathersJS query format.  You can set `params.paginate` to `false` to disable pagination for a single request.\n- `get(id[, params]) {Function}` - a function that allows you to query the store for a single item, by id.  It works the same way as `get` requests in Feathers database adapters.\n  - `id {Number|String}` - the id of the data to be retrieved by id from the store.\n  - `params {Object}` - an object containing a Feathers `query` object.\n- `current {Object}` - the object representing the `currentId`. It's pulled from the `keyedById` state.\n- `getCopy {Object}` - An alias to the `state.copy`.\n\n### Service Mutations\nThe following mutations are included in each service module.\n> **Note:** you would typically not call these directly, but instead with `store.commit('removeItem', 'itemId')`. Using vuex's mapMutations on a Vue component can simplify that to `this.removeItem('itemId')`\n\n#### `addItem(state, item)`\nAdds a single item to the `keyedById` map.\n- `item {Object}` - The item to be added to the store.\n\n#### `addItems(state, items)`\nAdds an array of items to the `keyedById` map.\n- `items {Array}` - the items to be added to the store.\n\n#### `updateItem(state, item)`\nUpdates an item in the store to match the passed in `item`.\n- `item {Object}` the item, including `id`, to replace the currently-stored item.\n\n#### `updateItems(state, items)`\nUpdates multiple items in the store to match the passed in array of items.\n- `items {Array}` - An array of items.\n\n#### `removeItem(state, item)`\nRemoves a single item.  `item` can be\n- `item {Number|String|Object}` - The item or id of the item to be deleted.\n\n#### `removeItems(state, items)`\nRemoves the passed in items or ids from the store.\n- `items {Array}` - An array of ids or of objects with ids that will be removed from the data store.\n\n#### `setCurrent(state, item)`\n- `item {Number|String|Object}` - the object with id to be set as the current item, or the id of the object in the store that should become the `current` item.  Setting the `current` item or id also create the deep-cloned `copy`.\n\n#### `commitCopy(state)`\nSaves changes from the `copy` to the `current` item.\n\n#### `rejectCopy(state)`\nRe-copies the data from `current` to `copy`, restoring the original copy.\n\n#### `clearCurrent(state)`\nClears the `current` item, which also clears the copy.\n\n#### `clearList(state)`\nClears the `list`, excepting the `current` item.\n\n#### `clearAll(state)`\nClears all data from `ids`, `keyedById`, and `currentId`\n\n#### Mutations for Managing Pending State\nThe following mutations are called automatically by the service actions, and will rarely, if ever, need to be used manually.\n- `setFindPending(state)` - sets `isFindPending` to `true`\n- `unsetFindPending(state)` - sets `isFindPending` to `false`\n- `setGetPending(state)` - sets `isGetPending` to `true`\n- `unsetGetPending(state)` - sets `isGetPending` to `false`\n- `setCreatePending(state)` - sets `isCreatePending` to `true`\n- `unsetCreatePending(state)` - sets `isCreatePending` to `false`\n- `setUpdatePending(state)` - sets `isUpdatePending` to `true`\n- `unsetUpdatePending(state)` - sets `isUpdatePending` to `false`\n- `setPatchPending(state)` - sets `isPatchPending` to `true`\n- `unsetPatchPending(state)` - sets `isPatchPending` to `false`\n- `setRemovePending(state)` - sets `isRemovePending` to `true`\n- `unsetRemovePending(state)` - sets `isRemovePending` to `false`\n\n#### Mutations for Managing Errors\nThe following mutations are called automatically by the service actions, and will rarely need to be used manually.\n- `setFindError(state, error)`\n- `clearFindError(state)`\n- `setGetError(state, error)`\n- `clearGetError(state)`\n- `setCreateError(state, error)`\n- `clearCreateError(state)`\n- `setUpdateError(state, error)`\n- `clearUpdateError(state)`\n- `setPatchError(state, error)`\n- `clearPatchError(state)`\n- `setRemoveError(state, error)`\n- `clearRemoveError(state)`\n\n### Service Actions\nAn action is included for each of the Feathers service interface methods.  These actions will affect changes in both the Feathers API server and the Vuex store.\n\nAll of the [Feathers Service Methods](https://docs.feathersjs.com/api/databases/common.html#service-methods) are supported.  Because Vuex only supports providing a single argument to actions, there is a slight change in syntax that works well.  If you need to pass multiple arguments to a service method, pass an array to the action with the order of the array elements matching the order of the arguments.  See each method for examples.\n\n> Note: If you use the Feathers service methods, directly, the store will not change. Only the actions will cause store changes.\n\n#### `find(params)`\nQuery an array of records from the server & add to the Vuex store.\n- `params {Object}` - An object containing a `query` object and an optional `paginate` boolean.  You can set `params.paginate` to `false` to disable pagination for a single request.\n\n```js\nlet params = {query: {completed: true}}\nstore.dispatch('todos/find', params)\n```\n\nSee the section about pagination, below, for more information that is applicable to the `find` action.\n\n#### `get(id)` or `get([id, params])`\nQuery a single record from the server & add to Vuex store\n- `id {Number|String}` - the `id` of the record being requested from the API server.\n- `params {Object}` - An object containing a `query` object.\n\n```js\nstore.dispatch('todos/get', 1)\n\n// Use an array to pass params\nlet params = {}\nstore.dispatch('todos/get', [1, params])\n```\n\n#### `create(data)`\nCreate one or multiple records.\n- `data {Object|Array}` - if an object is provided, a single record will be created. If an array of objects is provided, multiple records will be created.\n\n```js\nlet newTodo = {description: 'write good tests'}\nstore.dispatch('todos/create', newTodo)\n```\n\n\n#### `update(paramArray)`\nUpdate (overwrite) a record.\n- `paramArray {Array}` - array containing the three parameters update takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will overwrite the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {id: 5, description: 'write your tests', completed: true}\nlet params = {}\n// Overwrite item 1 with the above data (FYI: Most databases won't let you change the id.)\nstore.dispatch('todos/update', [1, data, params])\n```\n\nAlternatively in a Vue component\n```\nimport { mapActions } from 'vuex'\nexport default {\n  methods: {\n    ...mapActions('todos', [ 'update' ]),\n    addTodo () {\n      let data = {id: 5, description: 'write your tests', completed: true}\n      this.update([1, data, {}])\n    }\n  }\n}\n```\n\n#### `patch(paramArray)`\nPatch (merge in changes) one or more records\n- `paramArray {Array}` - array containing the three parameters patch takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will be merged into the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {description: 'write your tests', completed: true}\nlet params = {}\nstore.dispatch('todos/patch', [1, data, params])\n```\n\n\n#### `remove(id)`\nRemove/delete the record with the given `id`.\n- `id {Number|String}` - the `id` of the existing record being requested from the API server.\n\n```js\nstore.dispatch('todos/remove', 1)\n```\n\n## Querying with Find & Pagination\nBoth the `find` action and the `find` getter support pagination.  There are differences in how they work.\n\n### The `find` action\n\nThe `find` action queries data from the remote server.  It returns a promise that resolves to the response from the server.  The presence of pagination data will be determined by the server.\n\n`feathers-vuex@1.0.0` can store pagination data on a per-query basis.  The `pagination` store attribute maps queries to their most-recent pagination data.  It's an empty object by default, but after performing a single query (with pagination in the response), it will have a `default` property.  This property stores pagination information for the query.  Here's what it will look like:\n\n**`params = { query: {} }`**\n```js\n{\n  pagination: {\n    default: {\n      query: {}, // Same as params.query\n      ids: [0, 1, 2], // the ids in the store for the records that were returned from the server\n      limit: 0, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\nIt's possible that you'll want to store pagination information for more than one query.  This might be for different components making queries against the same service, for example.  You can use the `params.qid` (query identifier) property to assign a name to the query.  If you set a `qid` of `mainListView`, for example, the pagination for this query will show up under `pagination.mainListView`.  The `pagination.default` property will be used any time a `params.qid` is not provided.  Here's an example of what this might look like:\n\n**`params = { query: { $limit: 1 }, qid: 'mainListView' }`**\n```js\n// Data in the store\n{\n  pagination: {\n    mainListView: {\n      query: { $limit: 1 }, // Same as params.query\n      ids: [0], // the ids in the store for the records that were returned from the server\n      limit: 1, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\n> Note: The `find` action no longer returns reactive lists.  The list data will still be reactive, but new matches that arrive from the server do NOT get automatically added to lists.  There are two solutions to this:\n- Use the `find` action to pull in data from the server.  Use the `find` getter to pull a reactive list from the store.\n- Configure the `feathers-reactive` plugin with RxJS on your Feathers Client instance.  [Read the docs for implementation details.](https://github.com/feathers-plus/feathers-reactive)\n\n### The `find` getter\n\nThe `find` getter queries data from the local store using the same Feathers query syntax as on the server.  It is synchronous and returns the results of the query with pagination.  Pagination cannot be disabled.  It accepts a params object with a `query` attribute.  It does not use any other special attributes.  The returned object looks just like a paginated result that you would receive from the server:\n\n**`params = { query: {} }`**\n```js\n// The returned results object\n{\n  data: [{ _id: 1, ...etc }, ...etc],\n  limit: 0,\n  skip: 0,\n  total: 3\n}\n```\n\n\n###\n\n## Customizing a Service's Default Store\n\nAs shown in the first example, the service module allows you to customize its store:\n\n```js\nconst store = new Vuex.Store({\n  plugins: [\n    // Add custom state, getters, mutations, or actions, if needed\n    service('things', {\n      state: {\n        test: true\n      },\n      getters: {\n        getSomeData () {\n          return 'some data'\n        }\n      },\n      mutations: {\n        setTestToFalse (state) {\n          state.test = false\n        },\n        setTestToTrue (state) {\n          state.test = true\n        }\n      },\n      actions: {\n        asyncStuff ({ commit, dispatch }, args) {\n          commit('setTestToTrue')\n\n          return doSomethingAsync(id, params)\n            .then(result => {\n              commit('setTestToFalse')\n              return dispatch('otherAsyncStuff', result)\n            })\n        },\n        otherAsyncStuff ({commit}, args) {\n          return new Promise.resolve(result)\n        }\n      }\n    })\n  ]\n})\n\nassert(store.getters['todos/oneTwoThree'] === 123, 'the custom getter was available')\nstore.dispatch('todos/trigger')\nassert(store.state.todos.isTrue === true, 'the custom action was run')\n```\n\n## Auth Module\nThe Auth module helps setup your app for login / logout.  It includes the following state by default:\n```js\n{\n  accessToken: undefined, // The JWT\n  payload: undefined, // The JWT payload\n\n  isAuthenticatePending: false,\n  isLogoutPending: false,\n\n  errorOnAuthenticate: undefined,\n  errorOnLogout: undefined\n}\n```\n\n### Actions\nThe following actions are included in the `auth` module:\n- `authenticate`: use instead of `feathersClient.authenticate()`\n- `logout`: use instead of `feathersClient.logout()`\nThe Vuex auth store may not update if you use the feathers client version.\n\n## Working with Auth & Nuxt\n\n`feathers-vuex@1.0.0` ships with utilities that help with Nuxt auth related to JSON Web Tokens (JWT).  The most important utility is the `initAuth` utility.  It's for use during Nuxt's `nuxtServerInit` method, and sets up auth data automatically.  Here's an example store that uses it:\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex, { initAuth } from 'feathers-vuex'\n\nconst { service, auth } = feathersVuex(feathersClient)\n\nconst createStore = () => {\n  return new Vuex.Store({\n    state: {},\n    mutations: {\n      increment (state) {\n        state.counter++\n      }\n    },\n    actions: {\n      nuxtServerInit ({ commit, dispatch }, { req }) {\n        return initAuth({\n          commit,\n          dispatch,\n          req,\n          moduleName: 'auth',\n          cookieName: 'feathers-jwt'\n        })\n      }\n    },\n    plugins: [\n      service('courses'),\n      auth({\n        state: {\n          publicPages: [\n            'login',\n            'signup'\n          ]\n        }\n      })\n    ]\n  })\n}\n\nexport default createStore\n```\n\nNotice in the above example, I've added a `publicPages` property to the auth state.  Let's now use this state to redirect the browser when it's not on a public page and there's no auth:\n\nIn your Nuxt project, create the file `/middleware/auth.js`.  Then edit the `nuxt.config.js` and add after the `head` property, add a string that references this routing middleware so it looks like this:\n\n*// nuxt.config.js*\n```js\nrouter: {\n  middleware: ['auth']\n},\n```\n\nNow open the middleware and paste the following content.  All it does is redirect the page if there's no auth data in the store.\n\n```js\n// If it's a private page and there's no payload, redirect.\nexport default function (context) {\n  const { store, redirect, route } = context\n  const { auth } = store.state\n\n  if (!auth.publicPages.includes(route.name) && !auth.payload) {\n    return redirect('login')\n  }\n}\n```\n\nFor a summary, the `initAuth` function will make auth available in the state without much configuration.\n\n### Authentication storage with Nuxt\n\nSince Nuxt is running both client- and server side, it has limits on the availability of certain browser specific variables like `window`. Because of that, trying to configure the feathers client to use `window.localStorage` will result in an error or unexpected / not working behaviour. There's a simple solution though:\n\nWhen you configure the auth module in your feathers-client, use [cookie-storage](https://www.npmjs.com/package/cookie-storage) instead of `window.localStorage` to store the authentication data inside a cookie.\n\n```\nimport { CookieStorage } from 'cookie-storage';\n\nconst feathersClient = feathers()\n  .configure(auth({ storage: new CookieStorage() }));\n```\n\n### Configuration\nYou can provide a `userService` in the auth plugin's options to automatically populate the user upon successful login.\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex from 'feathers-vuex'\n\nconst { auth } = feathersVuex(feathersClient, { idField: '_id' })\n\nconst store = new Vuex.Store({\n  plugins: [\n    auth({ userService: 'users' }) // if your user service endpoint is named 'users'\n  ]\n})\n```\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"c0a4a9d7d9bb7584a95d4135af7d60217191b16b","_id":"feathers-vuex@1.2.0-pre.5","_npmVersion":"5.6.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-g64nQ/T6UOTetryWBoG746tKwpvK72sV3Ga+7TOdrRM7lZ95A0GzF0w83zTh/5ZgEvuXwlAFsQuUJ9ZmPmdHcw==","shasum":"1bb816038dc639bb2c55ba09b0d653d8faece09b","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.2.0-pre.5.tgz","fileCount":26,"unpackedSize":265292,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBGsfG8RcMQNkAxxrpkH8uSlgcPT9fI6D3PQV9eGUTp9AiEAqJhkInmF9gS9j5KdmwHk9oWS9Rsbo7Wiwr11TtNUxuk="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.2.0-pre.5_1520690259608_0.4285915248611283"},"_hasShrinkwrap":false},"1.2.0-pre.6":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.2.0-pre.6","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.4.1","vue":"^2.4.4","vuex":"^2.4.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n> Integrate the Feathers Client into Vuex\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Important\nThe current version of `feathers-vuex` is not compatible with the latest version of `feathers-reactive` (0.5.x). To keep on using `feathers-vuex` install version 0.4.x.\n\n## Use\n`feathers-vuex` is a set of two utilities for integrating the Feathers Client into your Vuex store.  It allows you to eliminate boilerplate and easily customize the store.  To get it working, we first need a Feathers Client.  Note: as of version 1.0.0 `feathers-reactive` is no longer required to get socket updates.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers';\nimport socketio from '@feathersjs/socketio-client';\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\nconst { serviceModule, serviceModel, servicePlugin } = service\n\n\nconst api1Client = feathersVuex(feathersClient, { idField: '_id', apiPrefix: 'api1' })\nconst api2Client = feathersVuex(feathersClient2, { idField: '_id' })\n\n\nVue.use(FeathersVuex)\n\nconst todoModule = serviceModule('todos')\n\n// const Model = serviceModel(todoModule) // TodoModel is an extensible class\nconst Model = serviceModel()\nclass TodoModel = extends Model {}\nconst todoPlugin = servicePlugin(todoModule, TodoModel)\n\nconst TaskModel extends Model {}\n\nexport { TaskModel }\n\n\ncreated () {\n  this.todo = new this.$FeathersVuex.api1.Todo(data)\n}\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    servicePlugin('/tasks', TaskModel), // With our potentially customized TodoModel\n\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // turn off socket event listeners. It's true by default\n      modelName: 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    auth()\n  ]\n})\n```\n\nThe new `feathers-vuex` API is more Vuex-like.  All of the functionality remains the same, but it is no longer configured like a FeathersJS plugin.  While the previous functionality was nice for prototyping, it didn't work well in SSR scenarios, like with Nuxt.\n\nTo see `feathers-vuex` in a working vue-cli application, check out [`feathers-chat-vuex`](https://github.com/feathers-plus/feathers-chat-vuex).\n\n## A note about feathers-reactive\nPrevious versions of this plugin required both RxJS and `feathers-reactive` to receive realtime updates.  `feathers-vuex@1.0.0` has socket messaging support built in and takes advantage of Vuex reactivity, so RxJS and `feathers-reactive` are no longer required.\n\n## API Documentation\n\n### Global Configuration\n\nThe following default options are available for configuration:\n\n```js\nconst defaultOptions = {\n  idField: 'id', // The field in each record that will contain the id\n  autoRemove: false, // automatically remove records missing from responses (only use with feathers-rest)\n  nameStyle: 'short', // Determines the source of the module name. 'short' or 'path'\n  enableEvents: true, // Set to false to explicitly disable socket event handlers.\n  preferUpdate: false, // When true, calling modelInstance.save() will do an update instead of a patch.\n}\n```\n\nEach service module can also be individually configured.\n\n### The Vuex modules\n\nThere are two modules included:\n1. The Service module adds a Vuex store for new services.\n2. The Auth module sets up the Vuex store for authentication / logout.\n\n## Service Module\nThe `Service Module` sets up services in the Vuex store.  Each service will have the below default state in its store.\n\n### Service State\nEach service comes loaded with the following default state:\n```js\n{\n    ids: [],\n    keyedById: {}, // A hash map, keyed by id of each item\n    currentId: undefined, // The id of the item marked as current\n    copy: undefined, // A deep copy of the current item\n    idField: 'id',\n    servicePath: 'v1/todos' // The full service path\n    autoRemove: false, // Indicates that this service will not automatically remove results missing from subsequent requests.\n    paginate: false, // Indicates if pagination is enabled on the Feathers service.\n\n    isFindPending: false,\n    isGetPending: false,\n    isCreatePending: false,\n    isUpdatePending: false,\n    isPatchPending: false,\n    isRemovePending: false,\n\n    errorOnfind: undefined,\n    errorOnGet: undefined,\n    errorOnCreate: undefined,\n    errorOnUpdate: undefined,\n    errorOnPatch: undefined,\n    errorOnRemove: undefined\n  }\n```\n\nThe following attributes are available in each service module's state:\n\n- `ids {Array}` - an array of plain ids representing the ids that belong to each object in the `keyedById` map.\n- `keyedById {Object}` - a hash map keyed by the id of each item.\n- `currentId {Number|String}` - the id of the item marked as current.\n- `copy {Object}` - a deep copy of the current item at the moment it was marked as current. You can make changes to the copy without modifying the `current`.  You can then use the `commitCopy` mutation to save the changes as the `current` or `rejectCopy` to revert `copy` to once again match `current`.\n- `servicePath {String}` - the full service path, even if you alias the namespace to something else.\n- `idField {String}` - the name of the field that holds each item's id. *Default: `'id'`*\n- `paginate {Boolean}` - Indicates if the service has pagination turned on.  This changes the response of the `find` action and getter to match the response that Feathers gives.\n\nThe following state attributes allow you to bind to the pending state of requests:\n- `isFindPending {Boolean}` - `true` if there's a pending `find` request.  `false` if not.\n- `isGetPending {Boolean}` - `true` if there's a pending `get` request.  `false` if not.\n- `isCreatePending {Boolean}` - `true` if there's a pending `create` request.  `false` if not.\n- `isUpdatePending {Boolean}` - `true` if there's a pending `update` request.  `false` if not.\n- `isPatchPending {Boolean}` - `true` if there's a pending `patch` request.  `false` if not.\n- `isRemovePending {Boolean}` - `true` if there's a pending `remove` request.  `false` if not.\n\nThe following state attribute will be populated with any request error, serialized as a plain object:\n- `errorOnFind {Error}`\n- `errorOnGet {Error}`\n- `errorOnCreate {Error}`\n- `errorOnUpdate {Error}`\n- `errorOnPatch {Error}`\n- `errorOnRemo {Error}`\n\n### Service Getters\nService modules include the following getters:\n- `list {Array}` - an array of items. The array form of `keyedById`  Read only.\n- `find(params) {Function}` - a helper function that allows you to use the [Feathers Adapter Common API](https://docs.feathersjs.com/api/databases/common.html) and [Query API](https://docs.feathersjs.com/api/databases/querying.html) to pull data from the store.  This allows you to treat the store just like a local Feathers database adapter (but without hooks).\n  - `params {Object}` - an object with a `query` object and an optional `paginate` boolean property. The `query` is in the FeathersJS query format.  You can set `params.paginate` to `false` to disable pagination for a single request.\n- `get(id[, params]) {Function}` - a function that allows you to query the store for a single item, by id.  It works the same way as `get` requests in Feathers database adapters.\n  - `id {Number|String}` - the id of the data to be retrieved by id from the store.\n  - `params {Object}` - an object containing a Feathers `query` object.\n- `current {Object}` - the object representing the `currentId`. It's pulled from the `keyedById` state.\n- `getCopy {Object}` - An alias to the `state.copy`.\n\n### Service Mutations\nThe following mutations are included in each service module.\n> **Note:** you would typically not call these directly, but instead with `store.commit('removeItem', 'itemId')`. Using vuex's mapMutations on a Vue component can simplify that to `this.removeItem('itemId')`\n\n#### `addItem(state, item)`\nAdds a single item to the `keyedById` map.\n- `item {Object}` - The item to be added to the store.\n\n#### `addItems(state, items)`\nAdds an array of items to the `keyedById` map.\n- `items {Array}` - the items to be added to the store.\n\n#### `updateItem(state, item)`\nUpdates an item in the store to match the passed in `item`.\n- `item {Object}` the item, including `id`, to replace the currently-stored item.\n\n#### `updateItems(state, items)`\nUpdates multiple items in the store to match the passed in array of items.\n- `items {Array}` - An array of items.\n\n#### `removeItem(state, item)`\nRemoves a single item.  `item` can be\n- `item {Number|String|Object}` - The item or id of the item to be deleted.\n\n#### `removeItems(state, items)`\nRemoves the passed in items or ids from the store.\n- `items {Array}` - An array of ids or of objects with ids that will be removed from the data store.\n\n#### `setCurrent(state, item)`\n- `item {Number|String|Object}` - the object with id to be set as the current item, or the id of the object in the store that should become the `current` item.  Setting the `current` item or id also create the deep-cloned `copy`.\n\n#### `commitCopy(state)`\nSaves changes from the `copy` to the `current` item.\n\n#### `rejectCopy(state)`\nRe-copies the data from `current` to `copy`, restoring the original copy.\n\n#### `clearCurrent(state)`\nClears the `current` item, which also clears the copy.\n\n#### `clearList(state)`\nClears the `list`, excepting the `current` item.\n\n#### `clearAll(state)`\nClears all data from `ids`, `keyedById`, and `currentId`\n\n#### Mutations for Managing Pending State\nThe following mutations are called automatically by the service actions, and will rarely, if ever, need to be used manually.\n- `setFindPending(state)` - sets `isFindPending` to `true`\n- `unsetFindPending(state)` - sets `isFindPending` to `false`\n- `setGetPending(state)` - sets `isGetPending` to `true`\n- `unsetGetPending(state)` - sets `isGetPending` to `false`\n- `setCreatePending(state)` - sets `isCreatePending` to `true`\n- `unsetCreatePending(state)` - sets `isCreatePending` to `false`\n- `setUpdatePending(state)` - sets `isUpdatePending` to `true`\n- `unsetUpdatePending(state)` - sets `isUpdatePending` to `false`\n- `setPatchPending(state)` - sets `isPatchPending` to `true`\n- `unsetPatchPending(state)` - sets `isPatchPending` to `false`\n- `setRemovePending(state)` - sets `isRemovePending` to `true`\n- `unsetRemovePending(state)` - sets `isRemovePending` to `false`\n\n#### Mutations for Managing Errors\nThe following mutations are called automatically by the service actions, and will rarely need to be used manually.\n- `setFindError(state, error)`\n- `clearFindError(state)`\n- `setGetError(state, error)`\n- `clearGetError(state)`\n- `setCreateError(state, error)`\n- `clearCreateError(state)`\n- `setUpdateError(state, error)`\n- `clearUpdateError(state)`\n- `setPatchError(state, error)`\n- `clearPatchError(state)`\n- `setRemoveError(state, error)`\n- `clearRemoveError(state)`\n\n### Service Actions\nAn action is included for each of the Feathers service interface methods.  These actions will affect changes in both the Feathers API server and the Vuex store.\n\nAll of the [Feathers Service Methods](https://docs.feathersjs.com/api/databases/common.html#service-methods) are supported.  Because Vuex only supports providing a single argument to actions, there is a slight change in syntax that works well.  If you need to pass multiple arguments to a service method, pass an array to the action with the order of the array elements matching the order of the arguments.  See each method for examples.\n\n> Note: If you use the Feathers service methods, directly, the store will not change. Only the actions will cause store changes.\n\n#### `find(params)`\nQuery an array of records from the server & add to the Vuex store.\n- `params {Object}` - An object containing a `query` object and an optional `paginate` boolean.  You can set `params.paginate` to `false` to disable pagination for a single request.\n\n```js\nlet params = {query: {completed: true}}\nstore.dispatch('todos/find', params)\n```\n\nSee the section about pagination, below, for more information that is applicable to the `find` action.\n\n#### `get(id)` or `get([id, params])`\nQuery a single record from the server & add to Vuex store\n- `id {Number|String}` - the `id` of the record being requested from the API server.\n- `params {Object}` - An object containing a `query` object.\n\n```js\nstore.dispatch('todos/get', 1)\n\n// Use an array to pass params\nlet params = {}\nstore.dispatch('todos/get', [1, params])\n```\n\n#### `create(data)`\nCreate one or multiple records.\n- `data {Object|Array}` - if an object is provided, a single record will be created. If an array of objects is provided, multiple records will be created.\n\n```js\nlet newTodo = {description: 'write good tests'}\nstore.dispatch('todos/create', newTodo)\n```\n\n\n#### `update(paramArray)`\nUpdate (overwrite) a record.\n- `paramArray {Array}` - array containing the three parameters update takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will overwrite the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {id: 5, description: 'write your tests', completed: true}\nlet params = {}\n// Overwrite item 1 with the above data (FYI: Most databases won't let you change the id.)\nstore.dispatch('todos/update', [1, data, params])\n```\n\nAlternatively in a Vue component\n```\nimport { mapActions } from 'vuex'\nexport default {\n  methods: {\n    ...mapActions('todos', [ 'update' ]),\n    addTodo () {\n      let data = {id: 5, description: 'write your tests', completed: true}\n      this.update([1, data, {}])\n    }\n  }\n}\n```\n\n#### `patch(paramArray)`\nPatch (merge in changes) one or more records\n- `paramArray {Array}` - array containing the three parameters patch takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will be merged into the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {description: 'write your tests', completed: true}\nlet params = {}\nstore.dispatch('todos/patch', [1, data, params])\n```\n\n\n#### `remove(id)`\nRemove/delete the record with the given `id`.\n- `id {Number|String}` - the `id` of the existing record being requested from the API server.\n\n```js\nstore.dispatch('todos/remove', 1)\n```\n\n## Querying with Find & Pagination\nBoth the `find` action and the `find` getter support pagination.  There are differences in how they work.\n\n### The `find` action\n\nThe `find` action queries data from the remote server.  It returns a promise that resolves to the response from the server.  The presence of pagination data will be determined by the server.\n\n`feathers-vuex@1.0.0` can store pagination data on a per-query basis.  The `pagination` store attribute maps queries to their most-recent pagination data.  It's an empty object by default, but after performing a single query (with pagination in the response), it will have a `default` property.  This property stores pagination information for the query.  Here's what it will look like:\n\n**`params = { query: {} }`**\n```js\n{\n  pagination: {\n    default: {\n      query: {}, // Same as params.query\n      ids: [0, 1, 2], // the ids in the store for the records that were returned from the server\n      limit: 0, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\nIt's possible that you'll want to store pagination information for more than one query.  This might be for different components making queries against the same service, for example.  You can use the `params.qid` (query identifier) property to assign a name to the query.  If you set a `qid` of `mainListView`, for example, the pagination for this query will show up under `pagination.mainListView`.  The `pagination.default` property will be used any time a `params.qid` is not provided.  Here's an example of what this might look like:\n\n**`params = { query: { $limit: 1 }, qid: 'mainListView' }`**\n```js\n// Data in the store\n{\n  pagination: {\n    mainListView: {\n      query: { $limit: 1 }, // Same as params.query\n      ids: [0], // the ids in the store for the records that were returned from the server\n      limit: 1, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\n> Note: The `find` action no longer returns reactive lists.  The list data will still be reactive, but new matches that arrive from the server do NOT get automatically added to lists.  There are two solutions to this:\n- Use the `find` action to pull in data from the server.  Use the `find` getter to pull a reactive list from the store.\n- Configure the `feathers-reactive` plugin with RxJS on your Feathers Client instance.  [Read the docs for implementation details.](https://github.com/feathers-plus/feathers-reactive)\n\n### The `find` getter\n\nThe `find` getter queries data from the local store using the same Feathers query syntax as on the server.  It is synchronous and returns the results of the query with pagination.  Pagination cannot be disabled.  It accepts a params object with a `query` attribute.  It does not use any other special attributes.  The returned object looks just like a paginated result that you would receive from the server:\n\n**`params = { query: {} }`**\n```js\n// The returned results object\n{\n  data: [{ _id: 1, ...etc }, ...etc],\n  limit: 0,\n  skip: 0,\n  total: 3\n}\n```\n\n\n###\n\n## Customizing a Service's Default Store\n\nAs shown in the first example, the service module allows you to customize its store:\n\n```js\nconst store = new Vuex.Store({\n  plugins: [\n    // Add custom state, getters, mutations, or actions, if needed\n    service('things', {\n      state: {\n        test: true\n      },\n      getters: {\n        getSomeData () {\n          return 'some data'\n        }\n      },\n      mutations: {\n        setTestToFalse (state) {\n          state.test = false\n        },\n        setTestToTrue (state) {\n          state.test = true\n        }\n      },\n      actions: {\n        asyncStuff ({ commit, dispatch }, args) {\n          commit('setTestToTrue')\n\n          return doSomethingAsync(id, params)\n            .then(result => {\n              commit('setTestToFalse')\n              return dispatch('otherAsyncStuff', result)\n            })\n        },\n        otherAsyncStuff ({commit}, args) {\n          return new Promise.resolve(result)\n        }\n      }\n    })\n  ]\n})\n\nassert(store.getters['todos/oneTwoThree'] === 123, 'the custom getter was available')\nstore.dispatch('todos/trigger')\nassert(store.state.todos.isTrue === true, 'the custom action was run')\n```\n\n## Auth Module\nThe Auth module helps setup your app for login / logout.  It includes the following state by default:\n```js\n{\n  accessToken: undefined, // The JWT\n  payload: undefined, // The JWT payload\n\n  isAuthenticatePending: false,\n  isLogoutPending: false,\n\n  errorOnAuthenticate: undefined,\n  errorOnLogout: undefined\n}\n```\n\n### Actions\nThe following actions are included in the `auth` module:\n- `authenticate`: use instead of `feathersClient.authenticate()`\n- `logout`: use instead of `feathersClient.logout()`\nThe Vuex auth store may not update if you use the feathers client version.\n\n## Working with Auth & Nuxt\n\n`feathers-vuex@1.0.0` ships with utilities that help with Nuxt auth related to JSON Web Tokens (JWT).  The most important utility is the `initAuth` utility.  It's for use during Nuxt's `nuxtServerInit` method, and sets up auth data automatically.  Here's an example store that uses it:\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex, { initAuth } from 'feathers-vuex'\n\nconst { service, auth } = feathersVuex(feathersClient)\n\nconst createStore = () => {\n  return new Vuex.Store({\n    state: {},\n    mutations: {\n      increment (state) {\n        state.counter++\n      }\n    },\n    actions: {\n      nuxtServerInit ({ commit, dispatch }, { req }) {\n        return initAuth({\n          commit,\n          dispatch,\n          req,\n          moduleName: 'auth',\n          cookieName: 'feathers-jwt'\n        })\n      }\n    },\n    plugins: [\n      service('courses'),\n      auth({\n        state: {\n          publicPages: [\n            'login',\n            'signup'\n          ]\n        }\n      })\n    ]\n  })\n}\n\nexport default createStore\n```\n\nNotice in the above example, I've added a `publicPages` property to the auth state.  Let's now use this state to redirect the browser when it's not on a public page and there's no auth:\n\nIn your Nuxt project, create the file `/middleware/auth.js`.  Then edit the `nuxt.config.js` and add after the `head` property, add a string that references this routing middleware so it looks like this:\n\n*// nuxt.config.js*\n```js\nrouter: {\n  middleware: ['auth']\n},\n```\n\nNow open the middleware and paste the following content.  All it does is redirect the page if there's no auth data in the store.\n\n```js\n// If it's a private page and there's no payload, redirect.\nexport default function (context) {\n  const { store, redirect, route } = context\n  const { auth } = store.state\n\n  if (!auth.publicPages.includes(route.name) && !auth.payload) {\n    return redirect('login')\n  }\n}\n```\n\nFor a summary, the `initAuth` function will make auth available in the state without much configuration.\n\n### Authentication storage with Nuxt\n\nSince Nuxt is running both client- and server side, it has limits on the availability of certain browser specific variables like `window`. Because of that, trying to configure the feathers client to use `window.localStorage` will result in an error or unexpected / not working behaviour. There's a simple solution though:\n\nWhen you configure the auth module in your feathers-client, use [cookie-storage](https://www.npmjs.com/package/cookie-storage) instead of `window.localStorage` to store the authentication data inside a cookie.\n\n```\nimport { CookieStorage } from 'cookie-storage';\n\nconst feathersClient = feathers()\n  .configure(auth({ storage: new CookieStorage() }));\n```\n\n### Configuration\nYou can provide a `userService` in the auth plugin's options to automatically populate the user upon successful login.\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex from 'feathers-vuex'\n\nconst { auth } = feathersVuex(feathersClient, { idField: '_id' })\n\nconst store = new Vuex.Store({\n  plugins: [\n    auth({ userService: 'users' }) // if your user service endpoint is named 'users'\n  ]\n})\n```\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"094ae6ad67325cb4e36c02f5305321e3f38356b3","_id":"feathers-vuex@1.2.0-pre.6","_npmVersion":"5.6.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-uWab1kyaVKIYMo5733PHadmb1OoJirYdu4i9liyzJJ0FZCPGHm+BL2EPtJFHF6i3QKqhLwVtRii+ov5teRF6RA==","shasum":"47fe81ca2b34bbfb8d3b8ee8eccd4cef2c463cfb","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.2.0-pre.6.tgz","fileCount":26,"unpackedSize":265364,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD4QGqMAev+lFDA/34L1/3YWjHgr3D/hDIYbaWwrVqe8AIhAOWPJuO+HWPc8ipm9BEWzHJP4XMAiaCVCgmna3kOY3I/"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.2.0-pre.6_1520691380022_0.4091551588751745"},"_hasShrinkwrap":false},"1.2.0-pre.7":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.2.0-pre.7","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.4.1","vue":"^2.4.4","vuex":"^2.4.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n> Integrate the Feathers Client into Vuex\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Important\nThe current version of `feathers-vuex` is not compatible with the latest version of `feathers-reactive` (0.5.x). To keep on using `feathers-vuex` install version 0.4.x.\n\n## Use\n`feathers-vuex` is a set of two utilities for integrating the Feathers Client into your Vuex store.  It allows you to eliminate boilerplate and easily customize the store.  To get it working, we first need a Feathers Client.  Note: as of version 1.0.0 `feathers-reactive` is no longer required to get socket updates.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers';\nimport socketio from '@feathersjs/socketio-client';\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\nconst { serviceModule, serviceModel, servicePlugin } = service\n\n\nconst api1Client = feathersVuex(feathersClient, { idField: '_id', apiPrefix: 'api1' })\nconst api2Client = feathersVuex(feathersClient2, { idField: '_id' })\n\n\nVue.use(FeathersVuex)\n\nconst todoModule = serviceModule('todos')\n\n// const Model = serviceModel(todoModule) // TodoModel is an extensible class\nconst Model = serviceModel()\nclass TodoModel = extends Model {}\nconst todoPlugin = servicePlugin(todoModule, TodoModel)\n\nconst TaskModel extends Model {}\n\nexport { TaskModel }\n\n\ncreated () {\n  this.todo = new this.$FeathersVuex.api1.Todo(data)\n}\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    servicePlugin('/tasks', TaskModel), // With our potentially customized TodoModel\n\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // turn off socket event listeners. It's true by default\n      modelName: 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    auth()\n  ]\n})\n```\n\nThe new `feathers-vuex` API is more Vuex-like.  All of the functionality remains the same, but it is no longer configured like a FeathersJS plugin.  While the previous functionality was nice for prototyping, it didn't work well in SSR scenarios, like with Nuxt.\n\nTo see `feathers-vuex` in a working vue-cli application, check out [`feathers-chat-vuex`](https://github.com/feathers-plus/feathers-chat-vuex).\n\n## A note about feathers-reactive\nPrevious versions of this plugin required both RxJS and `feathers-reactive` to receive realtime updates.  `feathers-vuex@1.0.0` has socket messaging support built in and takes advantage of Vuex reactivity, so RxJS and `feathers-reactive` are no longer required.\n\n## API Documentation\n\n### Global Configuration\n\nThe following default options are available for configuration:\n\n```js\nconst defaultOptions = {\n  idField: 'id', // The field in each record that will contain the id\n  autoRemove: false, // automatically remove records missing from responses (only use with feathers-rest)\n  nameStyle: 'short', // Determines the source of the module name. 'short' or 'path'\n  enableEvents: true, // Set to false to explicitly disable socket event handlers.\n  preferUpdate: false, // When true, calling modelInstance.save() will do an update instead of a patch.\n}\n```\n\nEach service module can also be individually configured.\n\n### The Vuex modules\n\nThere are two modules included:\n1. The Service module adds a Vuex store for new services.\n2. The Auth module sets up the Vuex store for authentication / logout.\n\n## Service Module\nThe `Service Module` sets up services in the Vuex store.  Each service will have the below default state in its store.\n\n### Service State\nEach service comes loaded with the following default state:\n```js\n{\n    ids: [],\n    keyedById: {}, // A hash map, keyed by id of each item\n    currentId: undefined, // The id of the item marked as current\n    copy: undefined, // A deep copy of the current item\n    idField: 'id',\n    servicePath: 'v1/todos' // The full service path\n    autoRemove: false, // Indicates that this service will not automatically remove results missing from subsequent requests.\n    paginate: false, // Indicates if pagination is enabled on the Feathers service.\n\n    isFindPending: false,\n    isGetPending: false,\n    isCreatePending: false,\n    isUpdatePending: false,\n    isPatchPending: false,\n    isRemovePending: false,\n\n    errorOnfind: undefined,\n    errorOnGet: undefined,\n    errorOnCreate: undefined,\n    errorOnUpdate: undefined,\n    errorOnPatch: undefined,\n    errorOnRemove: undefined\n  }\n```\n\nThe following attributes are available in each service module's state:\n\n- `ids {Array}` - an array of plain ids representing the ids that belong to each object in the `keyedById` map.\n- `keyedById {Object}` - a hash map keyed by the id of each item.\n- `currentId {Number|String}` - the id of the item marked as current.\n- `copy {Object}` - a deep copy of the current item at the moment it was marked as current. You can make changes to the copy without modifying the `current`.  You can then use the `commitCopy` mutation to save the changes as the `current` or `rejectCopy` to revert `copy` to once again match `current`.\n- `servicePath {String}` - the full service path, even if you alias the namespace to something else.\n- `idField {String}` - the name of the field that holds each item's id. *Default: `'id'`*\n- `paginate {Boolean}` - Indicates if the service has pagination turned on.  This changes the response of the `find` action and getter to match the response that Feathers gives.\n\nThe following state attributes allow you to bind to the pending state of requests:\n- `isFindPending {Boolean}` - `true` if there's a pending `find` request.  `false` if not.\n- `isGetPending {Boolean}` - `true` if there's a pending `get` request.  `false` if not.\n- `isCreatePending {Boolean}` - `true` if there's a pending `create` request.  `false` if not.\n- `isUpdatePending {Boolean}` - `true` if there's a pending `update` request.  `false` if not.\n- `isPatchPending {Boolean}` - `true` if there's a pending `patch` request.  `false` if not.\n- `isRemovePending {Boolean}` - `true` if there's a pending `remove` request.  `false` if not.\n\nThe following state attribute will be populated with any request error, serialized as a plain object:\n- `errorOnFind {Error}`\n- `errorOnGet {Error}`\n- `errorOnCreate {Error}`\n- `errorOnUpdate {Error}`\n- `errorOnPatch {Error}`\n- `errorOnRemo {Error}`\n\n### Service Getters\nService modules include the following getters:\n- `list {Array}` - an array of items. The array form of `keyedById`  Read only.\n- `find(params) {Function}` - a helper function that allows you to use the [Feathers Adapter Common API](https://docs.feathersjs.com/api/databases/common.html) and [Query API](https://docs.feathersjs.com/api/databases/querying.html) to pull data from the store.  This allows you to treat the store just like a local Feathers database adapter (but without hooks).\n  - `params {Object}` - an object with a `query` object and an optional `paginate` boolean property. The `query` is in the FeathersJS query format.  You can set `params.paginate` to `false` to disable pagination for a single request.\n- `get(id[, params]) {Function}` - a function that allows you to query the store for a single item, by id.  It works the same way as `get` requests in Feathers database adapters.\n  - `id {Number|String}` - the id of the data to be retrieved by id from the store.\n  - `params {Object}` - an object containing a Feathers `query` object.\n- `current {Object}` - the object representing the `currentId`. It's pulled from the `keyedById` state.\n- `getCopy {Object}` - An alias to the `state.copy`.\n\n### Service Mutations\nThe following mutations are included in each service module.\n> **Note:** you would typically not call these directly, but instead with `store.commit('removeItem', 'itemId')`. Using vuex's mapMutations on a Vue component can simplify that to `this.removeItem('itemId')`\n\n#### `addItem(state, item)`\nAdds a single item to the `keyedById` map.\n- `item {Object}` - The item to be added to the store.\n\n#### `addItems(state, items)`\nAdds an array of items to the `keyedById` map.\n- `items {Array}` - the items to be added to the store.\n\n#### `updateItem(state, item)`\nUpdates an item in the store to match the passed in `item`.\n- `item {Object}` the item, including `id`, to replace the currently-stored item.\n\n#### `updateItems(state, items)`\nUpdates multiple items in the store to match the passed in array of items.\n- `items {Array}` - An array of items.\n\n#### `removeItem(state, item)`\nRemoves a single item.  `item` can be\n- `item {Number|String|Object}` - The item or id of the item to be deleted.\n\n#### `removeItems(state, items)`\nRemoves the passed in items or ids from the store.\n- `items {Array}` - An array of ids or of objects with ids that will be removed from the data store.\n\n#### `setCurrent(state, item)`\n- `item {Number|String|Object}` - the object with id to be set as the current item, or the id of the object in the store that should become the `current` item.  Setting the `current` item or id also create the deep-cloned `copy`.\n\n#### `commitCopy(state)`\nSaves changes from the `copy` to the `current` item.\n\n#### `rejectCopy(state)`\nRe-copies the data from `current` to `copy`, restoring the original copy.\n\n#### `clearCurrent(state)`\nClears the `current` item, which also clears the copy.\n\n#### `clearList(state)`\nClears the `list`, excepting the `current` item.\n\n#### `clearAll(state)`\nClears all data from `ids`, `keyedById`, and `currentId`\n\n#### Mutations for Managing Pending State\nThe following mutations are called automatically by the service actions, and will rarely, if ever, need to be used manually.\n- `setFindPending(state)` - sets `isFindPending` to `true`\n- `unsetFindPending(state)` - sets `isFindPending` to `false`\n- `setGetPending(state)` - sets `isGetPending` to `true`\n- `unsetGetPending(state)` - sets `isGetPending` to `false`\n- `setCreatePending(state)` - sets `isCreatePending` to `true`\n- `unsetCreatePending(state)` - sets `isCreatePending` to `false`\n- `setUpdatePending(state)` - sets `isUpdatePending` to `true`\n- `unsetUpdatePending(state)` - sets `isUpdatePending` to `false`\n- `setPatchPending(state)` - sets `isPatchPending` to `true`\n- `unsetPatchPending(state)` - sets `isPatchPending` to `false`\n- `setRemovePending(state)` - sets `isRemovePending` to `true`\n- `unsetRemovePending(state)` - sets `isRemovePending` to `false`\n\n#### Mutations for Managing Errors\nThe following mutations are called automatically by the service actions, and will rarely need to be used manually.\n- `setFindError(state, error)`\n- `clearFindError(state)`\n- `setGetError(state, error)`\n- `clearGetError(state)`\n- `setCreateError(state, error)`\n- `clearCreateError(state)`\n- `setUpdateError(state, error)`\n- `clearUpdateError(state)`\n- `setPatchError(state, error)`\n- `clearPatchError(state)`\n- `setRemoveError(state, error)`\n- `clearRemoveError(state)`\n\n### Service Actions\nAn action is included for each of the Feathers service interface methods.  These actions will affect changes in both the Feathers API server and the Vuex store.\n\nAll of the [Feathers Service Methods](https://docs.feathersjs.com/api/databases/common.html#service-methods) are supported.  Because Vuex only supports providing a single argument to actions, there is a slight change in syntax that works well.  If you need to pass multiple arguments to a service method, pass an array to the action with the order of the array elements matching the order of the arguments.  See each method for examples.\n\n> Note: If you use the Feathers service methods, directly, the store will not change. Only the actions will cause store changes.\n\n#### `find(params)`\nQuery an array of records from the server & add to the Vuex store.\n- `params {Object}` - An object containing a `query` object and an optional `paginate` boolean.  You can set `params.paginate` to `false` to disable pagination for a single request.\n\n```js\nlet params = {query: {completed: true}}\nstore.dispatch('todos/find', params)\n```\n\nSee the section about pagination, below, for more information that is applicable to the `find` action.\n\n#### `get(id)` or `get([id, params])`\nQuery a single record from the server & add to Vuex store\n- `id {Number|String}` - the `id` of the record being requested from the API server.\n- `params {Object}` - An object containing a `query` object.\n\n```js\nstore.dispatch('todos/get', 1)\n\n// Use an array to pass params\nlet params = {}\nstore.dispatch('todos/get', [1, params])\n```\n\n#### `create(data)`\nCreate one or multiple records.\n- `data {Object|Array}` - if an object is provided, a single record will be created. If an array of objects is provided, multiple records will be created.\n\n```js\nlet newTodo = {description: 'write good tests'}\nstore.dispatch('todos/create', newTodo)\n```\n\n\n#### `update(paramArray)`\nUpdate (overwrite) a record.\n- `paramArray {Array}` - array containing the three parameters update takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will overwrite the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {id: 5, description: 'write your tests', completed: true}\nlet params = {}\n// Overwrite item 1 with the above data (FYI: Most databases won't let you change the id.)\nstore.dispatch('todos/update', [1, data, params])\n```\n\nAlternatively in a Vue component\n```\nimport { mapActions } from 'vuex'\nexport default {\n  methods: {\n    ...mapActions('todos', [ 'update' ]),\n    addTodo () {\n      let data = {id: 5, description: 'write your tests', completed: true}\n      this.update([1, data, {}])\n    }\n  }\n}\n```\n\n#### `patch(paramArray)`\nPatch (merge in changes) one or more records\n- `paramArray {Array}` - array containing the three parameters patch takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will be merged into the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {description: 'write your tests', completed: true}\nlet params = {}\nstore.dispatch('todos/patch', [1, data, params])\n```\n\n\n#### `remove(id)`\nRemove/delete the record with the given `id`.\n- `id {Number|String}` - the `id` of the existing record being requested from the API server.\n\n```js\nstore.dispatch('todos/remove', 1)\n```\n\n## Querying with Find & Pagination\nBoth the `find` action and the `find` getter support pagination.  There are differences in how they work.\n\n### The `find` action\n\nThe `find` action queries data from the remote server.  It returns a promise that resolves to the response from the server.  The presence of pagination data will be determined by the server.\n\n`feathers-vuex@1.0.0` can store pagination data on a per-query basis.  The `pagination` store attribute maps queries to their most-recent pagination data.  It's an empty object by default, but after performing a single query (with pagination in the response), it will have a `default` property.  This property stores pagination information for the query.  Here's what it will look like:\n\n**`params = { query: {} }`**\n```js\n{\n  pagination: {\n    default: {\n      query: {}, // Same as params.query\n      ids: [0, 1, 2], // the ids in the store for the records that were returned from the server\n      limit: 0, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\nIt's possible that you'll want to store pagination information for more than one query.  This might be for different components making queries against the same service, for example.  You can use the `params.qid` (query identifier) property to assign a name to the query.  If you set a `qid` of `mainListView`, for example, the pagination for this query will show up under `pagination.mainListView`.  The `pagination.default` property will be used any time a `params.qid` is not provided.  Here's an example of what this might look like:\n\n**`params = { query: { $limit: 1 }, qid: 'mainListView' }`**\n```js\n// Data in the store\n{\n  pagination: {\n    mainListView: {\n      query: { $limit: 1 }, // Same as params.query\n      ids: [0], // the ids in the store for the records that were returned from the server\n      limit: 1, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\n> Note: The `find` action no longer returns reactive lists.  The list data will still be reactive, but new matches that arrive from the server do NOT get automatically added to lists.  There are two solutions to this:\n- Use the `find` action to pull in data from the server.  Use the `find` getter to pull a reactive list from the store.\n- Configure the `feathers-reactive` plugin with RxJS on your Feathers Client instance.  [Read the docs for implementation details.](https://github.com/feathers-plus/feathers-reactive)\n\n### The `find` getter\n\nThe `find` getter queries data from the local store using the same Feathers query syntax as on the server.  It is synchronous and returns the results of the query with pagination.  Pagination cannot be disabled.  It accepts a params object with a `query` attribute.  It does not use any other special attributes.  The returned object looks just like a paginated result that you would receive from the server:\n\n**`params = { query: {} }`**\n```js\n// The returned results object\n{\n  data: [{ _id: 1, ...etc }, ...etc],\n  limit: 0,\n  skip: 0,\n  total: 3\n}\n```\n\n\n###\n\n## Customizing a Service's Default Store\n\nAs shown in the first example, the service module allows you to customize its store:\n\n```js\nconst store = new Vuex.Store({\n  plugins: [\n    // Add custom state, getters, mutations, or actions, if needed\n    service('things', {\n      state: {\n        test: true\n      },\n      getters: {\n        getSomeData () {\n          return 'some data'\n        }\n      },\n      mutations: {\n        setTestToFalse (state) {\n          state.test = false\n        },\n        setTestToTrue (state) {\n          state.test = true\n        }\n      },\n      actions: {\n        asyncStuff ({ commit, dispatch }, args) {\n          commit('setTestToTrue')\n\n          return doSomethingAsync(id, params)\n            .then(result => {\n              commit('setTestToFalse')\n              return dispatch('otherAsyncStuff', result)\n            })\n        },\n        otherAsyncStuff ({commit}, args) {\n          return new Promise.resolve(result)\n        }\n      }\n    })\n  ]\n})\n\nassert(store.getters['todos/oneTwoThree'] === 123, 'the custom getter was available')\nstore.dispatch('todos/trigger')\nassert(store.state.todos.isTrue === true, 'the custom action was run')\n```\n\n## Auth Module\nThe Auth module helps setup your app for login / logout.  It includes the following state by default:\n```js\n{\n  accessToken: undefined, // The JWT\n  payload: undefined, // The JWT payload\n\n  isAuthenticatePending: false,\n  isLogoutPending: false,\n\n  errorOnAuthenticate: undefined,\n  errorOnLogout: undefined\n}\n```\n\n### Actions\nThe following actions are included in the `auth` module:\n- `authenticate`: use instead of `feathersClient.authenticate()`\n- `logout`: use instead of `feathersClient.logout()`\nThe Vuex auth store may not update if you use the feathers client version.\n\n## Working with Auth & Nuxt\n\n`feathers-vuex@1.0.0` ships with utilities that help with Nuxt auth related to JSON Web Tokens (JWT).  The most important utility is the `initAuth` utility.  It's for use during Nuxt's `nuxtServerInit` method, and sets up auth data automatically.  Here's an example store that uses it:\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex, { initAuth } from 'feathers-vuex'\n\nconst { service, auth } = feathersVuex(feathersClient)\n\nconst createStore = () => {\n  return new Vuex.Store({\n    state: {},\n    mutations: {\n      increment (state) {\n        state.counter++\n      }\n    },\n    actions: {\n      nuxtServerInit ({ commit, dispatch }, { req }) {\n        return initAuth({\n          commit,\n          dispatch,\n          req,\n          moduleName: 'auth',\n          cookieName: 'feathers-jwt'\n        })\n      }\n    },\n    plugins: [\n      service('courses'),\n      auth({\n        state: {\n          publicPages: [\n            'login',\n            'signup'\n          ]\n        }\n      })\n    ]\n  })\n}\n\nexport default createStore\n```\n\nNotice in the above example, I've added a `publicPages` property to the auth state.  Let's now use this state to redirect the browser when it's not on a public page and there's no auth:\n\nIn your Nuxt project, create the file `/middleware/auth.js`.  Then edit the `nuxt.config.js` and add after the `head` property, add a string that references this routing middleware so it looks like this:\n\n*// nuxt.config.js*\n```js\nrouter: {\n  middleware: ['auth']\n},\n```\n\nNow open the middleware and paste the following content.  All it does is redirect the page if there's no auth data in the store.\n\n```js\n// If it's a private page and there's no payload, redirect.\nexport default function (context) {\n  const { store, redirect, route } = context\n  const { auth } = store.state\n\n  if (!auth.publicPages.includes(route.name) && !auth.payload) {\n    return redirect('login')\n  }\n}\n```\n\nFor a summary, the `initAuth` function will make auth available in the state without much configuration.\n\n### Authentication storage with Nuxt\n\nSince Nuxt is running both client- and server side, it has limits on the availability of certain browser specific variables like `window`. Because of that, trying to configure the feathers client to use `window.localStorage` will result in an error or unexpected / not working behaviour. There's a simple solution though:\n\nWhen you configure the auth module in your feathers-client, use [cookie-storage](https://www.npmjs.com/package/cookie-storage) instead of `window.localStorage` to store the authentication data inside a cookie.\n\n```\nimport { CookieStorage } from 'cookie-storage';\n\nconst feathersClient = feathers()\n  .configure(auth({ storage: new CookieStorage() }));\n```\n\n### Configuration\nYou can provide a `userService` in the auth plugin's options to automatically populate the user upon successful login.\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex from 'feathers-vuex'\n\nconst { auth } = feathersVuex(feathersClient, { idField: '_id' })\n\nconst store = new Vuex.Store({\n  plugins: [\n    auth({ userService: 'users' }) // if your user service endpoint is named 'users'\n  ]\n})\n```\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"7ab369e0907daf27aa6764890b71db569f21cb6a","_id":"feathers-vuex@1.2.0-pre.7","_npmVersion":"5.6.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-+Y9/NCjSMC6oPnwsBhMvD63FrLEY3BU7Y7t/bGWOt1zvRbggB0eYE66tE9MULbxN6k0JeWetrkrgL7A+Dh0NnQ==","shasum":"f91d418a6f76bec0586cb51c26452d89aab26cd8","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.2.0-pre.7.tgz","fileCount":26,"unpackedSize":265364,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHf/M/JQVV6R7NazRJ/MtBQwwxQAkCeDegYgK9ZpjICFAiEAv6Rkpw7UWa9I5Y3y8TfH2D2yKEFIUvN7/HzBtwgE194="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.2.0-pre.7_1520691626569_0.07905370136350642"},"_hasShrinkwrap":false},"1.2.0-pre.8":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.2.0-pre.8","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.4.1","vue":"^2.4.4","vuex":"^2.4.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n> Integrate the Feathers Client into Vuex\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Important\nThe current version of `feathers-vuex` is not compatible with the latest version of `feathers-reactive` (0.5.x). To keep on using `feathers-vuex` install version 0.4.x.\n\n## Use\n`feathers-vuex` is a set of two utilities for integrating the Feathers Client into your Vuex store.  It allows you to eliminate boilerplate and easily customize the store.  To get it working, we first need a Feathers Client.  Note: as of version 1.0.0 `feathers-reactive` is no longer required to get socket updates.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers';\nimport socketio from '@feathersjs/socketio-client';\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\nconst { serviceModule, serviceModel, servicePlugin } = service\n\n\nconst api1Client = feathersVuex(feathersClient, { idField: '_id', apiPrefix: 'api1' })\nconst api2Client = feathersVuex(feathersClient2, { idField: '_id' })\n\n\nVue.use(FeathersVuex)\n\nconst todoModule = serviceModule('todos')\n\n// const Model = serviceModel(todoModule) // TodoModel is an extensible class\nconst Model = serviceModel()\nclass TodoModel = extends Model {}\nconst todoPlugin = servicePlugin(todoModule, TodoModel)\n\nconst TaskModel extends Model {}\n\nexport { TaskModel }\n\n\ncreated () {\n  this.todo = new this.$FeathersVuex.api1.Todo(data)\n}\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    servicePlugin('/tasks', TaskModel), // With our potentially customized TodoModel\n\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // turn off socket event listeners. It's true by default\n      modelName: 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    auth()\n  ]\n})\n```\n\nThe new `feathers-vuex` API is more Vuex-like.  All of the functionality remains the same, but it is no longer configured like a FeathersJS plugin.  While the previous functionality was nice for prototyping, it didn't work well in SSR scenarios, like with Nuxt.\n\nTo see `feathers-vuex` in a working vue-cli application, check out [`feathers-chat-vuex`](https://github.com/feathers-plus/feathers-chat-vuex).\n\n## A note about feathers-reactive\nPrevious versions of this plugin required both RxJS and `feathers-reactive` to receive realtime updates.  `feathers-vuex@1.0.0` has socket messaging support built in and takes advantage of Vuex reactivity, so RxJS and `feathers-reactive` are no longer required.\n\n## API Documentation\n\n### Global Configuration\n\nThe following default options are available for configuration:\n\n```js\nconst defaultOptions = {\n  idField: 'id', // The field in each record that will contain the id\n  autoRemove: false, // automatically remove records missing from responses (only use with feathers-rest)\n  nameStyle: 'short', // Determines the source of the module name. 'short' or 'path'\n  enableEvents: true, // Set to false to explicitly disable socket event handlers.\n  preferUpdate: false, // When true, calling modelInstance.save() will do an update instead of a patch.\n}\n```\n\nEach service module can also be individually configured.\n\n### The Vuex modules\n\nThere are two modules included:\n1. The Service module adds a Vuex store for new services.\n2. The Auth module sets up the Vuex store for authentication / logout.\n\n## Service Module\nThe `Service Module` sets up services in the Vuex store.  Each service will have the below default state in its store.\n\n### Service State\nEach service comes loaded with the following default state:\n```js\n{\n    ids: [],\n    keyedById: {}, // A hash map, keyed by id of each item\n    currentId: undefined, // The id of the item marked as current\n    copy: undefined, // A deep copy of the current item\n    idField: 'id',\n    servicePath: 'v1/todos' // The full service path\n    autoRemove: false, // Indicates that this service will not automatically remove results missing from subsequent requests.\n    paginate: false, // Indicates if pagination is enabled on the Feathers service.\n\n    isFindPending: false,\n    isGetPending: false,\n    isCreatePending: false,\n    isUpdatePending: false,\n    isPatchPending: false,\n    isRemovePending: false,\n\n    errorOnfind: undefined,\n    errorOnGet: undefined,\n    errorOnCreate: undefined,\n    errorOnUpdate: undefined,\n    errorOnPatch: undefined,\n    errorOnRemove: undefined\n  }\n```\n\nThe following attributes are available in each service module's state:\n\n- `ids {Array}` - an array of plain ids representing the ids that belong to each object in the `keyedById` map.\n- `keyedById {Object}` - a hash map keyed by the id of each item.\n- `currentId {Number|String}` - the id of the item marked as current.\n- `copy {Object}` - a deep copy of the current item at the moment it was marked as current. You can make changes to the copy without modifying the `current`.  You can then use the `commitCopy` mutation to save the changes as the `current` or `rejectCopy` to revert `copy` to once again match `current`.\n- `servicePath {String}` - the full service path, even if you alias the namespace to something else.\n- `idField {String}` - the name of the field that holds each item's id. *Default: `'id'`*\n- `paginate {Boolean}` - Indicates if the service has pagination turned on.  This changes the response of the `find` action and getter to match the response that Feathers gives.\n\nThe following state attributes allow you to bind to the pending state of requests:\n- `isFindPending {Boolean}` - `true` if there's a pending `find` request.  `false` if not.\n- `isGetPending {Boolean}` - `true` if there's a pending `get` request.  `false` if not.\n- `isCreatePending {Boolean}` - `true` if there's a pending `create` request.  `false` if not.\n- `isUpdatePending {Boolean}` - `true` if there's a pending `update` request.  `false` if not.\n- `isPatchPending {Boolean}` - `true` if there's a pending `patch` request.  `false` if not.\n- `isRemovePending {Boolean}` - `true` if there's a pending `remove` request.  `false` if not.\n\nThe following state attribute will be populated with any request error, serialized as a plain object:\n- `errorOnFind {Error}`\n- `errorOnGet {Error}`\n- `errorOnCreate {Error}`\n- `errorOnUpdate {Error}`\n- `errorOnPatch {Error}`\n- `errorOnRemo {Error}`\n\n### Service Getters\nService modules include the following getters:\n- `list {Array}` - an array of items. The array form of `keyedById`  Read only.\n- `find(params) {Function}` - a helper function that allows you to use the [Feathers Adapter Common API](https://docs.feathersjs.com/api/databases/common.html) and [Query API](https://docs.feathersjs.com/api/databases/querying.html) to pull data from the store.  This allows you to treat the store just like a local Feathers database adapter (but without hooks).\n  - `params {Object}` - an object with a `query` object and an optional `paginate` boolean property. The `query` is in the FeathersJS query format.  You can set `params.paginate` to `false` to disable pagination for a single request.\n- `get(id[, params]) {Function}` - a function that allows you to query the store for a single item, by id.  It works the same way as `get` requests in Feathers database adapters.\n  - `id {Number|String}` - the id of the data to be retrieved by id from the store.\n  - `params {Object}` - an object containing a Feathers `query` object.\n- `current {Object}` - the object representing the `currentId`. It's pulled from the `keyedById` state.\n- `getCopy {Object}` - An alias to the `state.copy`.\n\n### Service Mutations\nThe following mutations are included in each service module.\n> **Note:** you would typically not call these directly, but instead with `store.commit('removeItem', 'itemId')`. Using vuex's mapMutations on a Vue component can simplify that to `this.removeItem('itemId')`\n\n#### `addItem(state, item)`\nAdds a single item to the `keyedById` map.\n- `item {Object}` - The item to be added to the store.\n\n#### `addItems(state, items)`\nAdds an array of items to the `keyedById` map.\n- `items {Array}` - the items to be added to the store.\n\n#### `updateItem(state, item)`\nUpdates an item in the store to match the passed in `item`.\n- `item {Object}` the item, including `id`, to replace the currently-stored item.\n\n#### `updateItems(state, items)`\nUpdates multiple items in the store to match the passed in array of items.\n- `items {Array}` - An array of items.\n\n#### `removeItem(state, item)`\nRemoves a single item.  `item` can be\n- `item {Number|String|Object}` - The item or id of the item to be deleted.\n\n#### `removeItems(state, items)`\nRemoves the passed in items or ids from the store.\n- `items {Array}` - An array of ids or of objects with ids that will be removed from the data store.\n\n#### `setCurrent(state, item)`\n- `item {Number|String|Object}` - the object with id to be set as the current item, or the id of the object in the store that should become the `current` item.  Setting the `current` item or id also create the deep-cloned `copy`.\n\n#### `commitCopy(state)`\nSaves changes from the `copy` to the `current` item.\n\n#### `rejectCopy(state)`\nRe-copies the data from `current` to `copy`, restoring the original copy.\n\n#### `clearCurrent(state)`\nClears the `current` item, which also clears the copy.\n\n#### `clearList(state)`\nClears the `list`, excepting the `current` item.\n\n#### `clearAll(state)`\nClears all data from `ids`, `keyedById`, and `currentId`\n\n#### Mutations for Managing Pending State\nThe following mutations are called automatically by the service actions, and will rarely, if ever, need to be used manually.\n- `setFindPending(state)` - sets `isFindPending` to `true`\n- `unsetFindPending(state)` - sets `isFindPending` to `false`\n- `setGetPending(state)` - sets `isGetPending` to `true`\n- `unsetGetPending(state)` - sets `isGetPending` to `false`\n- `setCreatePending(state)` - sets `isCreatePending` to `true`\n- `unsetCreatePending(state)` - sets `isCreatePending` to `false`\n- `setUpdatePending(state)` - sets `isUpdatePending` to `true`\n- `unsetUpdatePending(state)` - sets `isUpdatePending` to `false`\n- `setPatchPending(state)` - sets `isPatchPending` to `true`\n- `unsetPatchPending(state)` - sets `isPatchPending` to `false`\n- `setRemovePending(state)` - sets `isRemovePending` to `true`\n- `unsetRemovePending(state)` - sets `isRemovePending` to `false`\n\n#### Mutations for Managing Errors\nThe following mutations are called automatically by the service actions, and will rarely need to be used manually.\n- `setFindError(state, error)`\n- `clearFindError(state)`\n- `setGetError(state, error)`\n- `clearGetError(state)`\n- `setCreateError(state, error)`\n- `clearCreateError(state)`\n- `setUpdateError(state, error)`\n- `clearUpdateError(state)`\n- `setPatchError(state, error)`\n- `clearPatchError(state)`\n- `setRemoveError(state, error)`\n- `clearRemoveError(state)`\n\n### Service Actions\nAn action is included for each of the Feathers service interface methods.  These actions will affect changes in both the Feathers API server and the Vuex store.\n\nAll of the [Feathers Service Methods](https://docs.feathersjs.com/api/databases/common.html#service-methods) are supported.  Because Vuex only supports providing a single argument to actions, there is a slight change in syntax that works well.  If you need to pass multiple arguments to a service method, pass an array to the action with the order of the array elements matching the order of the arguments.  See each method for examples.\n\n> Note: If you use the Feathers service methods, directly, the store will not change. Only the actions will cause store changes.\n\n#### `find(params)`\nQuery an array of records from the server & add to the Vuex store.\n- `params {Object}` - An object containing a `query` object and an optional `paginate` boolean.  You can set `params.paginate` to `false` to disable pagination for a single request.\n\n```js\nlet params = {query: {completed: true}}\nstore.dispatch('todos/find', params)\n```\n\nSee the section about pagination, below, for more information that is applicable to the `find` action.\n\n#### `get(id)` or `get([id, params])`\nQuery a single record from the server & add to Vuex store\n- `id {Number|String}` - the `id` of the record being requested from the API server.\n- `params {Object}` - An object containing a `query` object.\n\n```js\nstore.dispatch('todos/get', 1)\n\n// Use an array to pass params\nlet params = {}\nstore.dispatch('todos/get', [1, params])\n```\n\n#### `create(data)`\nCreate one or multiple records.\n- `data {Object|Array}` - if an object is provided, a single record will be created. If an array of objects is provided, multiple records will be created.\n\n```js\nlet newTodo = {description: 'write good tests'}\nstore.dispatch('todos/create', newTodo)\n```\n\n\n#### `update(paramArray)`\nUpdate (overwrite) a record.\n- `paramArray {Array}` - array containing the three parameters update takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will overwrite the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {id: 5, description: 'write your tests', completed: true}\nlet params = {}\n// Overwrite item 1 with the above data (FYI: Most databases won't let you change the id.)\nstore.dispatch('todos/update', [1, data, params])\n```\n\nAlternatively in a Vue component\n```\nimport { mapActions } from 'vuex'\nexport default {\n  methods: {\n    ...mapActions('todos', [ 'update' ]),\n    addTodo () {\n      let data = {id: 5, description: 'write your tests', completed: true}\n      this.update([1, data, {}])\n    }\n  }\n}\n```\n\n#### `patch(paramArray)`\nPatch (merge in changes) one or more records\n- `paramArray {Array}` - array containing the three parameters patch takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will be merged into the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {description: 'write your tests', completed: true}\nlet params = {}\nstore.dispatch('todos/patch', [1, data, params])\n```\n\n\n#### `remove(id)`\nRemove/delete the record with the given `id`.\n- `id {Number|String}` - the `id` of the existing record being requested from the API server.\n\n```js\nstore.dispatch('todos/remove', 1)\n```\n\n## Querying with Find & Pagination\nBoth the `find` action and the `find` getter support pagination.  There are differences in how they work.\n\n### The `find` action\n\nThe `find` action queries data from the remote server.  It returns a promise that resolves to the response from the server.  The presence of pagination data will be determined by the server.\n\n`feathers-vuex@1.0.0` can store pagination data on a per-query basis.  The `pagination` store attribute maps queries to their most-recent pagination data.  It's an empty object by default, but after performing a single query (with pagination in the response), it will have a `default` property.  This property stores pagination information for the query.  Here's what it will look like:\n\n**`params = { query: {} }`**\n```js\n{\n  pagination: {\n    default: {\n      query: {}, // Same as params.query\n      ids: [0, 1, 2], // the ids in the store for the records that were returned from the server\n      limit: 0, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\nIt's possible that you'll want to store pagination information for more than one query.  This might be for different components making queries against the same service, for example.  You can use the `params.qid` (query identifier) property to assign a name to the query.  If you set a `qid` of `mainListView`, for example, the pagination for this query will show up under `pagination.mainListView`.  The `pagination.default` property will be used any time a `params.qid` is not provided.  Here's an example of what this might look like:\n\n**`params = { query: { $limit: 1 }, qid: 'mainListView' }`**\n```js\n// Data in the store\n{\n  pagination: {\n    mainListView: {\n      query: { $limit: 1 }, // Same as params.query\n      ids: [0], // the ids in the store for the records that were returned from the server\n      limit: 1, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\n> Note: The `find` action no longer returns reactive lists.  The list data will still be reactive, but new matches that arrive from the server do NOT get automatically added to lists.  There are two solutions to this:\n- Use the `find` action to pull in data from the server.  Use the `find` getter to pull a reactive list from the store.\n- Configure the `feathers-reactive` plugin with RxJS on your Feathers Client instance.  [Read the docs for implementation details.](https://github.com/feathers-plus/feathers-reactive)\n\n### The `find` getter\n\nThe `find` getter queries data from the local store using the same Feathers query syntax as on the server.  It is synchronous and returns the results of the query with pagination.  Pagination cannot be disabled.  It accepts a params object with a `query` attribute.  It does not use any other special attributes.  The returned object looks just like a paginated result that you would receive from the server:\n\n**`params = { query: {} }`**\n```js\n// The returned results object\n{\n  data: [{ _id: 1, ...etc }, ...etc],\n  limit: 0,\n  skip: 0,\n  total: 3\n}\n```\n\n\n###\n\n## Customizing a Service's Default Store\n\nAs shown in the first example, the service module allows you to customize its store:\n\n```js\nconst store = new Vuex.Store({\n  plugins: [\n    // Add custom state, getters, mutations, or actions, if needed\n    service('things', {\n      state: {\n        test: true\n      },\n      getters: {\n        getSomeData () {\n          return 'some data'\n        }\n      },\n      mutations: {\n        setTestToFalse (state) {\n          state.test = false\n        },\n        setTestToTrue (state) {\n          state.test = true\n        }\n      },\n      actions: {\n        asyncStuff ({ commit, dispatch }, args) {\n          commit('setTestToTrue')\n\n          return doSomethingAsync(id, params)\n            .then(result => {\n              commit('setTestToFalse')\n              return dispatch('otherAsyncStuff', result)\n            })\n        },\n        otherAsyncStuff ({commit}, args) {\n          return new Promise.resolve(result)\n        }\n      }\n    })\n  ]\n})\n\nassert(store.getters['todos/oneTwoThree'] === 123, 'the custom getter was available')\nstore.dispatch('todos/trigger')\nassert(store.state.todos.isTrue === true, 'the custom action was run')\n```\n\n## Auth Module\nThe Auth module helps setup your app for login / logout.  It includes the following state by default:\n```js\n{\n  accessToken: undefined, // The JWT\n  payload: undefined, // The JWT payload\n\n  isAuthenticatePending: false,\n  isLogoutPending: false,\n\n  errorOnAuthenticate: undefined,\n  errorOnLogout: undefined\n}\n```\n\n### Actions\nThe following actions are included in the `auth` module:\n- `authenticate`: use instead of `feathersClient.authenticate()`\n- `logout`: use instead of `feathersClient.logout()`\nThe Vuex auth store may not update if you use the feathers client version.\n\n## Working with Auth & Nuxt\n\n`feathers-vuex@1.0.0` ships with utilities that help with Nuxt auth related to JSON Web Tokens (JWT).  The most important utility is the `initAuth` utility.  It's for use during Nuxt's `nuxtServerInit` method, and sets up auth data automatically.  Here's an example store that uses it:\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex, { initAuth } from 'feathers-vuex'\n\nconst { service, auth } = feathersVuex(feathersClient)\n\nconst createStore = () => {\n  return new Vuex.Store({\n    state: {},\n    mutations: {\n      increment (state) {\n        state.counter++\n      }\n    },\n    actions: {\n      nuxtServerInit ({ commit, dispatch }, { req }) {\n        return initAuth({\n          commit,\n          dispatch,\n          req,\n          moduleName: 'auth',\n          cookieName: 'feathers-jwt'\n        })\n      }\n    },\n    plugins: [\n      service('courses'),\n      auth({\n        state: {\n          publicPages: [\n            'login',\n            'signup'\n          ]\n        }\n      })\n    ]\n  })\n}\n\nexport default createStore\n```\n\nNotice in the above example, I've added a `publicPages` property to the auth state.  Let's now use this state to redirect the browser when it's not on a public page and there's no auth:\n\nIn your Nuxt project, create the file `/middleware/auth.js`.  Then edit the `nuxt.config.js` and add after the `head` property, add a string that references this routing middleware so it looks like this:\n\n*// nuxt.config.js*\n```js\nrouter: {\n  middleware: ['auth']\n},\n```\n\nNow open the middleware and paste the following content.  All it does is redirect the page if there's no auth data in the store.\n\n```js\n// If it's a private page and there's no payload, redirect.\nexport default function (context) {\n  const { store, redirect, route } = context\n  const { auth } = store.state\n\n  if (!auth.publicPages.includes(route.name) && !auth.payload) {\n    return redirect('login')\n  }\n}\n```\n\nFor a summary, the `initAuth` function will make auth available in the state without much configuration.\n\n### Authentication storage with Nuxt\n\nSince Nuxt is running both client- and server side, it has limits on the availability of certain browser specific variables like `window`. Because of that, trying to configure the feathers client to use `window.localStorage` will result in an error or unexpected / not working behaviour. There's a simple solution though:\n\nWhen you configure the auth module in your feathers-client, use [cookie-storage](https://www.npmjs.com/package/cookie-storage) instead of `window.localStorage` to store the authentication data inside a cookie.\n\n```\nimport { CookieStorage } from 'cookie-storage';\n\nconst feathersClient = feathers()\n  .configure(auth({ storage: new CookieStorage() }));\n```\n\n### Configuration\nYou can provide a `userService` in the auth plugin's options to automatically populate the user upon successful login.\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex from 'feathers-vuex'\n\nconst { auth } = feathersVuex(feathersClient, { idField: '_id' })\n\nconst store = new Vuex.Store({\n  plugins: [\n    auth({ userService: 'users' }) // if your user service endpoint is named 'users'\n  ]\n})\n```\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"8c453680766f2d7327f26d03130f7ee067bed74c","_id":"feathers-vuex@1.2.0-pre.8","_npmVersion":"5.6.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-KPX5wMzCqFwluZPhx3Esxw4ec5ZjOTfmcW6AjlXnoGZEXhpnzhPaYLU6N4yGOW6mGLri/Tkk4S0TnE7QCQWODA==","shasum":"cd7225879f06371292be26654b7862ce15825058","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.2.0-pre.8.tgz","fileCount":26,"unpackedSize":265356,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDfEwtdRVyZXLmbvkMZCyVfhdZ8XDyY32PykbZNXp8OZgIgXadZo9ZHISw10sKaq+dukk8KTANCUVpJkbm6a2cYO/M="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.2.0-pre.8_1520691983790_0.2514284580835191"},"_hasShrinkwrap":false},"1.2.0-pre.9":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.2.0-pre.9","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.4.1","vue":"^2.4.4","vuex":"^2.4.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n> Integrate the Feathers Client into Vuex\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Important\nThe current version of `feathers-vuex` is not compatible with the latest version of `feathers-reactive` (0.5.x). To keep on using `feathers-vuex` install version 0.4.x.\n\n## Use\n`feathers-vuex` is a set of two utilities for integrating the Feathers Client into your Vuex store.  It allows you to eliminate boilerplate and easily customize the store.  To get it working, we first need a Feathers Client.  Note: as of version 1.0.0 `feathers-reactive` is no longer required to get socket updates.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers';\nimport socketio from '@feathersjs/socketio-client';\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\nconst { serviceModule, serviceModel, servicePlugin } = service\n\n\nconst api1Client = feathersVuex(feathersClient, { idField: '_id', apiPrefix: 'api1' })\nconst api2Client = feathersVuex(feathersClient2, { idField: '_id' })\n\n\nVue.use(FeathersVuex)\n\nconst todoModule = serviceModule('todos')\n\n// const Model = serviceModel(todoModule) // TodoModel is an extensible class\nconst Model = serviceModel()\nclass TodoModel = extends Model {}\nconst todoPlugin = servicePlugin(todoModule, TodoModel)\n\nconst TaskModel extends Model {}\n\nexport { TaskModel }\n\n\ncreated () {\n  this.todo = new this.$FeathersVuex.api1.Todo(data)\n}\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    servicePlugin('/tasks', TaskModel), // With our potentially customized TodoModel\n\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // turn off socket event listeners. It's true by default\n      modelName: 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    auth()\n  ]\n})\n```\n\nThe new `feathers-vuex` API is more Vuex-like.  All of the functionality remains the same, but it is no longer configured like a FeathersJS plugin.  While the previous functionality was nice for prototyping, it didn't work well in SSR scenarios, like with Nuxt.\n\nTo see `feathers-vuex` in a working vue-cli application, check out [`feathers-chat-vuex`](https://github.com/feathers-plus/feathers-chat-vuex).\n\n## A note about feathers-reactive\nPrevious versions of this plugin required both RxJS and `feathers-reactive` to receive realtime updates.  `feathers-vuex@1.0.0` has socket messaging support built in and takes advantage of Vuex reactivity, so RxJS and `feathers-reactive` are no longer required.\n\n## API Documentation\n\n### Global Configuration\n\nThe following default options are available for configuration:\n\n```js\nconst defaultOptions = {\n  idField: 'id', // The field in each record that will contain the id\n  autoRemove: false, // automatically remove records missing from responses (only use with feathers-rest)\n  nameStyle: 'short', // Determines the source of the module name. 'short' or 'path'\n  enableEvents: true, // Set to false to explicitly disable socket event handlers.\n  preferUpdate: false, // When true, calling modelInstance.save() will do an update instead of a patch.\n}\n```\n\nEach service module can also be individually configured.\n\n### The Vuex modules\n\nThere are two modules included:\n1. The Service module adds a Vuex store for new services.\n2. The Auth module sets up the Vuex store for authentication / logout.\n\n## Service Module\nThe `Service Module` sets up services in the Vuex store.  Each service will have the below default state in its store.\n\n### Service State\nEach service comes loaded with the following default state:\n```js\n{\n    ids: [],\n    keyedById: {}, // A hash map, keyed by id of each item\n    currentId: undefined, // The id of the item marked as current\n    copy: undefined, // A deep copy of the current item\n    idField: 'id',\n    servicePath: 'v1/todos' // The full service path\n    autoRemove: false, // Indicates that this service will not automatically remove results missing from subsequent requests.\n    paginate: false, // Indicates if pagination is enabled on the Feathers service.\n\n    isFindPending: false,\n    isGetPending: false,\n    isCreatePending: false,\n    isUpdatePending: false,\n    isPatchPending: false,\n    isRemovePending: false,\n\n    errorOnfind: undefined,\n    errorOnGet: undefined,\n    errorOnCreate: undefined,\n    errorOnUpdate: undefined,\n    errorOnPatch: undefined,\n    errorOnRemove: undefined\n  }\n```\n\nThe following attributes are available in each service module's state:\n\n- `ids {Array}` - an array of plain ids representing the ids that belong to each object in the `keyedById` map.\n- `keyedById {Object}` - a hash map keyed by the id of each item.\n- `currentId {Number|String}` - the id of the item marked as current.\n- `copy {Object}` - a deep copy of the current item at the moment it was marked as current. You can make changes to the copy without modifying the `current`.  You can then use the `commitCopy` mutation to save the changes as the `current` or `rejectCopy` to revert `copy` to once again match `current`.\n- `servicePath {String}` - the full service path, even if you alias the namespace to something else.\n- `idField {String}` - the name of the field that holds each item's id. *Default: `'id'`*\n- `paginate {Boolean}` - Indicates if the service has pagination turned on.  This changes the response of the `find` action and getter to match the response that Feathers gives.\n\nThe following state attributes allow you to bind to the pending state of requests:\n- `isFindPending {Boolean}` - `true` if there's a pending `find` request.  `false` if not.\n- `isGetPending {Boolean}` - `true` if there's a pending `get` request.  `false` if not.\n- `isCreatePending {Boolean}` - `true` if there's a pending `create` request.  `false` if not.\n- `isUpdatePending {Boolean}` - `true` if there's a pending `update` request.  `false` if not.\n- `isPatchPending {Boolean}` - `true` if there's a pending `patch` request.  `false` if not.\n- `isRemovePending {Boolean}` - `true` if there's a pending `remove` request.  `false` if not.\n\nThe following state attribute will be populated with any request error, serialized as a plain object:\n- `errorOnFind {Error}`\n- `errorOnGet {Error}`\n- `errorOnCreate {Error}`\n- `errorOnUpdate {Error}`\n- `errorOnPatch {Error}`\n- `errorOnRemo {Error}`\n\n### Service Getters\nService modules include the following getters:\n- `list {Array}` - an array of items. The array form of `keyedById`  Read only.\n- `find(params) {Function}` - a helper function that allows you to use the [Feathers Adapter Common API](https://docs.feathersjs.com/api/databases/common.html) and [Query API](https://docs.feathersjs.com/api/databases/querying.html) to pull data from the store.  This allows you to treat the store just like a local Feathers database adapter (but without hooks).\n  - `params {Object}` - an object with a `query` object and an optional `paginate` boolean property. The `query` is in the FeathersJS query format.  You can set `params.paginate` to `false` to disable pagination for a single request.\n- `get(id[, params]) {Function}` - a function that allows you to query the store for a single item, by id.  It works the same way as `get` requests in Feathers database adapters.\n  - `id {Number|String}` - the id of the data to be retrieved by id from the store.\n  - `params {Object}` - an object containing a Feathers `query` object.\n- `current {Object}` - the object representing the `currentId`. It's pulled from the `keyedById` state.\n- `getCopy {Object}` - An alias to the `state.copy`.\n\n### Service Mutations\nThe following mutations are included in each service module.\n> **Note:** you would typically not call these directly, but instead with `store.commit('removeItem', 'itemId')`. Using vuex's mapMutations on a Vue component can simplify that to `this.removeItem('itemId')`\n\n#### `addItem(state, item)`\nAdds a single item to the `keyedById` map.\n- `item {Object}` - The item to be added to the store.\n\n#### `addItems(state, items)`\nAdds an array of items to the `keyedById` map.\n- `items {Array}` - the items to be added to the store.\n\n#### `updateItem(state, item)`\nUpdates an item in the store to match the passed in `item`.\n- `item {Object}` the item, including `id`, to replace the currently-stored item.\n\n#### `updateItems(state, items)`\nUpdates multiple items in the store to match the passed in array of items.\n- `items {Array}` - An array of items.\n\n#### `removeItem(state, item)`\nRemoves a single item.  `item` can be\n- `item {Number|String|Object}` - The item or id of the item to be deleted.\n\n#### `removeItems(state, items)`\nRemoves the passed in items or ids from the store.\n- `items {Array}` - An array of ids or of objects with ids that will be removed from the data store.\n\n#### `setCurrent(state, item)`\n- `item {Number|String|Object}` - the object with id to be set as the current item, or the id of the object in the store that should become the `current` item.  Setting the `current` item or id also create the deep-cloned `copy`.\n\n#### `commitCopy(state)`\nSaves changes from the `copy` to the `current` item.\n\n#### `rejectCopy(state)`\nRe-copies the data from `current` to `copy`, restoring the original copy.\n\n#### `clearCurrent(state)`\nClears the `current` item, which also clears the copy.\n\n#### `clearList(state)`\nClears the `list`, excepting the `current` item.\n\n#### `clearAll(state)`\nClears all data from `ids`, `keyedById`, and `currentId`\n\n#### Mutations for Managing Pending State\nThe following mutations are called automatically by the service actions, and will rarely, if ever, need to be used manually.\n- `setFindPending(state)` - sets `isFindPending` to `true`\n- `unsetFindPending(state)` - sets `isFindPending` to `false`\n- `setGetPending(state)` - sets `isGetPending` to `true`\n- `unsetGetPending(state)` - sets `isGetPending` to `false`\n- `setCreatePending(state)` - sets `isCreatePending` to `true`\n- `unsetCreatePending(state)` - sets `isCreatePending` to `false`\n- `setUpdatePending(state)` - sets `isUpdatePending` to `true`\n- `unsetUpdatePending(state)` - sets `isUpdatePending` to `false`\n- `setPatchPending(state)` - sets `isPatchPending` to `true`\n- `unsetPatchPending(state)` - sets `isPatchPending` to `false`\n- `setRemovePending(state)` - sets `isRemovePending` to `true`\n- `unsetRemovePending(state)` - sets `isRemovePending` to `false`\n\n#### Mutations for Managing Errors\nThe following mutations are called automatically by the service actions, and will rarely need to be used manually.\n- `setFindError(state, error)`\n- `clearFindError(state)`\n- `setGetError(state, error)`\n- `clearGetError(state)`\n- `setCreateError(state, error)`\n- `clearCreateError(state)`\n- `setUpdateError(state, error)`\n- `clearUpdateError(state)`\n- `setPatchError(state, error)`\n- `clearPatchError(state)`\n- `setRemoveError(state, error)`\n- `clearRemoveError(state)`\n\n### Service Actions\nAn action is included for each of the Feathers service interface methods.  These actions will affect changes in both the Feathers API server and the Vuex store.\n\nAll of the [Feathers Service Methods](https://docs.feathersjs.com/api/databases/common.html#service-methods) are supported.  Because Vuex only supports providing a single argument to actions, there is a slight change in syntax that works well.  If you need to pass multiple arguments to a service method, pass an array to the action with the order of the array elements matching the order of the arguments.  See each method for examples.\n\n> Note: If you use the Feathers service methods, directly, the store will not change. Only the actions will cause store changes.\n\n#### `find(params)`\nQuery an array of records from the server & add to the Vuex store.\n- `params {Object}` - An object containing a `query` object and an optional `paginate` boolean.  You can set `params.paginate` to `false` to disable pagination for a single request.\n\n```js\nlet params = {query: {completed: true}}\nstore.dispatch('todos/find', params)\n```\n\nSee the section about pagination, below, for more information that is applicable to the `find` action.\n\n#### `get(id)` or `get([id, params])`\nQuery a single record from the server & add to Vuex store\n- `id {Number|String}` - the `id` of the record being requested from the API server.\n- `params {Object}` - An object containing a `query` object.\n\n```js\nstore.dispatch('todos/get', 1)\n\n// Use an array to pass params\nlet params = {}\nstore.dispatch('todos/get', [1, params])\n```\n\n#### `create(data)`\nCreate one or multiple records.\n- `data {Object|Array}` - if an object is provided, a single record will be created. If an array of objects is provided, multiple records will be created.\n\n```js\nlet newTodo = {description: 'write good tests'}\nstore.dispatch('todos/create', newTodo)\n```\n\n\n#### `update(paramArray)`\nUpdate (overwrite) a record.\n- `paramArray {Array}` - array containing the three parameters update takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will overwrite the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {id: 5, description: 'write your tests', completed: true}\nlet params = {}\n// Overwrite item 1 with the above data (FYI: Most databases won't let you change the id.)\nstore.dispatch('todos/update', [1, data, params])\n```\n\nAlternatively in a Vue component\n```\nimport { mapActions } from 'vuex'\nexport default {\n  methods: {\n    ...mapActions('todos', [ 'update' ]),\n    addTodo () {\n      let data = {id: 5, description: 'write your tests', completed: true}\n      this.update([1, data, {}])\n    }\n  }\n}\n```\n\n#### `patch(paramArray)`\nPatch (merge in changes) one or more records\n- `paramArray {Array}` - array containing the three parameters patch takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will be merged into the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {description: 'write your tests', completed: true}\nlet params = {}\nstore.dispatch('todos/patch', [1, data, params])\n```\n\n\n#### `remove(id)`\nRemove/delete the record with the given `id`.\n- `id {Number|String}` - the `id` of the existing record being requested from the API server.\n\n```js\nstore.dispatch('todos/remove', 1)\n```\n\n## Querying with Find & Pagination\nBoth the `find` action and the `find` getter support pagination.  There are differences in how they work.\n\n### The `find` action\n\nThe `find` action queries data from the remote server.  It returns a promise that resolves to the response from the server.  The presence of pagination data will be determined by the server.\n\n`feathers-vuex@1.0.0` can store pagination data on a per-query basis.  The `pagination` store attribute maps queries to their most-recent pagination data.  It's an empty object by default, but after performing a single query (with pagination in the response), it will have a `default` property.  This property stores pagination information for the query.  Here's what it will look like:\n\n**`params = { query: {} }`**\n```js\n{\n  pagination: {\n    default: {\n      query: {}, // Same as params.query\n      ids: [0, 1, 2], // the ids in the store for the records that were returned from the server\n      limit: 0, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\nIt's possible that you'll want to store pagination information for more than one query.  This might be for different components making queries against the same service, for example.  You can use the `params.qid` (query identifier) property to assign a name to the query.  If you set a `qid` of `mainListView`, for example, the pagination for this query will show up under `pagination.mainListView`.  The `pagination.default` property will be used any time a `params.qid` is not provided.  Here's an example of what this might look like:\n\n**`params = { query: { $limit: 1 }, qid: 'mainListView' }`**\n```js\n// Data in the store\n{\n  pagination: {\n    mainListView: {\n      query: { $limit: 1 }, // Same as params.query\n      ids: [0], // the ids in the store for the records that were returned from the server\n      limit: 1, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\n> Note: The `find` action no longer returns reactive lists.  The list data will still be reactive, but new matches that arrive from the server do NOT get automatically added to lists.  There are two solutions to this:\n- Use the `find` action to pull in data from the server.  Use the `find` getter to pull a reactive list from the store.\n- Configure the `feathers-reactive` plugin with RxJS on your Feathers Client instance.  [Read the docs for implementation details.](https://github.com/feathers-plus/feathers-reactive)\n\n### The `find` getter\n\nThe `find` getter queries data from the local store using the same Feathers query syntax as on the server.  It is synchronous and returns the results of the query with pagination.  Pagination cannot be disabled.  It accepts a params object with a `query` attribute.  It does not use any other special attributes.  The returned object looks just like a paginated result that you would receive from the server:\n\n**`params = { query: {} }`**\n```js\n// The returned results object\n{\n  data: [{ _id: 1, ...etc }, ...etc],\n  limit: 0,\n  skip: 0,\n  total: 3\n}\n```\n\n\n###\n\n## Customizing a Service's Default Store\n\nAs shown in the first example, the service module allows you to customize its store:\n\n```js\nconst store = new Vuex.Store({\n  plugins: [\n    // Add custom state, getters, mutations, or actions, if needed\n    service('things', {\n      state: {\n        test: true\n      },\n      getters: {\n        getSomeData () {\n          return 'some data'\n        }\n      },\n      mutations: {\n        setTestToFalse (state) {\n          state.test = false\n        },\n        setTestToTrue (state) {\n          state.test = true\n        }\n      },\n      actions: {\n        asyncStuff ({ commit, dispatch }, args) {\n          commit('setTestToTrue')\n\n          return doSomethingAsync(id, params)\n            .then(result => {\n              commit('setTestToFalse')\n              return dispatch('otherAsyncStuff', result)\n            })\n        },\n        otherAsyncStuff ({commit}, args) {\n          return new Promise.resolve(result)\n        }\n      }\n    })\n  ]\n})\n\nassert(store.getters['todos/oneTwoThree'] === 123, 'the custom getter was available')\nstore.dispatch('todos/trigger')\nassert(store.state.todos.isTrue === true, 'the custom action was run')\n```\n\n## Auth Module\nThe Auth module helps setup your app for login / logout.  It includes the following state by default:\n```js\n{\n  accessToken: undefined, // The JWT\n  payload: undefined, // The JWT payload\n\n  isAuthenticatePending: false,\n  isLogoutPending: false,\n\n  errorOnAuthenticate: undefined,\n  errorOnLogout: undefined\n}\n```\n\n### Actions\nThe following actions are included in the `auth` module:\n- `authenticate`: use instead of `feathersClient.authenticate()`\n- `logout`: use instead of `feathersClient.logout()`\nThe Vuex auth store may not update if you use the feathers client version.\n\n## Working with Auth & Nuxt\n\n`feathers-vuex@1.0.0` ships with utilities that help with Nuxt auth related to JSON Web Tokens (JWT).  The most important utility is the `initAuth` utility.  It's for use during Nuxt's `nuxtServerInit` method, and sets up auth data automatically.  Here's an example store that uses it:\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex, { initAuth } from 'feathers-vuex'\n\nconst { service, auth } = feathersVuex(feathersClient)\n\nconst createStore = () => {\n  return new Vuex.Store({\n    state: {},\n    mutations: {\n      increment (state) {\n        state.counter++\n      }\n    },\n    actions: {\n      nuxtServerInit ({ commit, dispatch }, { req }) {\n        return initAuth({\n          commit,\n          dispatch,\n          req,\n          moduleName: 'auth',\n          cookieName: 'feathers-jwt'\n        })\n      }\n    },\n    plugins: [\n      service('courses'),\n      auth({\n        state: {\n          publicPages: [\n            'login',\n            'signup'\n          ]\n        }\n      })\n    ]\n  })\n}\n\nexport default createStore\n```\n\nNotice in the above example, I've added a `publicPages` property to the auth state.  Let's now use this state to redirect the browser when it's not on a public page and there's no auth:\n\nIn your Nuxt project, create the file `/middleware/auth.js`.  Then edit the `nuxt.config.js` and add after the `head` property, add a string that references this routing middleware so it looks like this:\n\n*// nuxt.config.js*\n```js\nrouter: {\n  middleware: ['auth']\n},\n```\n\nNow open the middleware and paste the following content.  All it does is redirect the page if there's no auth data in the store.\n\n```js\n// If it's a private page and there's no payload, redirect.\nexport default function (context) {\n  const { store, redirect, route } = context\n  const { auth } = store.state\n\n  if (!auth.publicPages.includes(route.name) && !auth.payload) {\n    return redirect('login')\n  }\n}\n```\n\nFor a summary, the `initAuth` function will make auth available in the state without much configuration.\n\n### Authentication storage with Nuxt\n\nSince Nuxt is running both client- and server side, it has limits on the availability of certain browser specific variables like `window`. Because of that, trying to configure the feathers client to use `window.localStorage` will result in an error or unexpected / not working behaviour. There's a simple solution though:\n\nWhen you configure the auth module in your feathers-client, use [cookie-storage](https://www.npmjs.com/package/cookie-storage) instead of `window.localStorage` to store the authentication data inside a cookie.\n\n```\nimport { CookieStorage } from 'cookie-storage';\n\nconst feathersClient = feathers()\n  .configure(auth({ storage: new CookieStorage() }));\n```\n\n### Configuration\nYou can provide a `userService` in the auth plugin's options to automatically populate the user upon successful login.\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex from 'feathers-vuex'\n\nconst { auth } = feathersVuex(feathersClient, { idField: '_id' })\n\nconst store = new Vuex.Store({\n  plugins: [\n    auth({ userService: 'users' }) // if your user service endpoint is named 'users'\n  ]\n})\n```\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"2b3c461836626cd7373cbce534f3899d3de037b5","_id":"feathers-vuex@1.2.0-pre.9","_npmVersion":"5.6.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-ALOjG7gAdq+e2F8D2CIUkmRyKmzc5L+wWAadGWMbgvnHx0ZYPrnkZdRqSxTiiS/KunqYV0LY/mefQPs8jGcZ5g==","shasum":"82ed149f44826db5f3bc7810b6e2529bae8e907c","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.2.0-pre.9.tgz","fileCount":26,"unpackedSize":266504,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFvOgak/NJV++ZaB6VgZr5CmtfWb0VUP4aC2cHDk2RC6AiBXOWsxmazIFoMqCHRKqq/+Qw2+WEIwuP2G/pzCj7hrLA=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.2.0-pre.9_1521175549538_0.8904482554697712"},"_hasShrinkwrap":false},"1.2.0-pre.10":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.2.0-pre.10","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.4.1","vue":"^2.4.4","vuex":"^2.4.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n> Integrate the Feathers Client into Vuex\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Important\nThe current version of `feathers-vuex` is not compatible with the latest version of `feathers-reactive` (0.5.x). To keep on using `feathers-vuex` install version 0.4.x.\n\n## Use\n`feathers-vuex` is a set of two utilities for integrating the Feathers Client into your Vuex store.  It allows you to eliminate boilerplate and easily customize the store.  To get it working, we first need a Feathers Client.  Note: as of version 1.0.0 `feathers-reactive` is no longer required to get socket updates.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers';\nimport socketio from '@feathersjs/socketio-client';\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\nconst { serviceModule, serviceModel, servicePlugin } = service\n\n\nconst api1Client = feathersVuex(feathersClient, { idField: '_id', apiPrefix: 'api1' })\nconst api2Client = feathersVuex(feathersClient2, { idField: '_id' })\n\n\nVue.use(FeathersVuex)\n\nconst todoModule = serviceModule('todos')\n\n// const Model = serviceModel(todoModule) // TodoModel is an extensible class\nconst Model = serviceModel()\nclass TodoModel = extends Model {}\nconst todoPlugin = servicePlugin(todoModule, TodoModel)\n\nconst TaskModel extends Model {}\n\nexport { TaskModel }\n\n\ncreated () {\n  this.todo = new this.$FeathersVuex.api1.Todo(data)\n}\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    servicePlugin('/tasks', TaskModel), // With our potentially customized TodoModel\n\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // turn off socket event listeners. It's true by default\n      modelName: 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    auth()\n  ]\n})\n```\n\nThe new `feathers-vuex` API is more Vuex-like.  All of the functionality remains the same, but it is no longer configured like a FeathersJS plugin.  While the previous functionality was nice for prototyping, it didn't work well in SSR scenarios, like with Nuxt.\n\nTo see `feathers-vuex` in a working vue-cli application, check out [`feathers-chat-vuex`](https://github.com/feathers-plus/feathers-chat-vuex).\n\n## A note about feathers-reactive\nPrevious versions of this plugin required both RxJS and `feathers-reactive` to receive realtime updates.  `feathers-vuex@1.0.0` has socket messaging support built in and takes advantage of Vuex reactivity, so RxJS and `feathers-reactive` are no longer required.\n\n## API Documentation\n\n### Global Configuration\n\nThe following default options are available for configuration:\n\n```js\nconst defaultOptions = {\n  idField: 'id', // The field in each record that will contain the id\n  autoRemove: false, // automatically remove records missing from responses (only use with feathers-rest)\n  nameStyle: 'short', // Determines the source of the module name. 'short' or 'path'\n  enableEvents: true, // Set to false to explicitly disable socket event handlers.\n  preferUpdate: false, // When true, calling modelInstance.save() will do an update instead of a patch.\n}\n```\n\nEach service module can also be individually configured.\n\n### The Vuex modules\n\nThere are two modules included:\n1. The Service module adds a Vuex store for new services.\n2. The Auth module sets up the Vuex store for authentication / logout.\n\n## Service Module\nThe `Service Module` sets up services in the Vuex store.  Each service will have the below default state in its store.\n\n### Service State\nEach service comes loaded with the following default state:\n```js\n{\n    ids: [],\n    keyedById: {}, // A hash map, keyed by id of each item\n    currentId: undefined, // The id of the item marked as current\n    copy: undefined, // A deep copy of the current item\n    idField: 'id',\n    servicePath: 'v1/todos' // The full service path\n    autoRemove: false, // Indicates that this service will not automatically remove results missing from subsequent requests.\n    paginate: false, // Indicates if pagination is enabled on the Feathers service.\n\n    isFindPending: false,\n    isGetPending: false,\n    isCreatePending: false,\n    isUpdatePending: false,\n    isPatchPending: false,\n    isRemovePending: false,\n\n    errorOnfind: undefined,\n    errorOnGet: undefined,\n    errorOnCreate: undefined,\n    errorOnUpdate: undefined,\n    errorOnPatch: undefined,\n    errorOnRemove: undefined\n  }\n```\n\nThe following attributes are available in each service module's state:\n\n- `ids {Array}` - an array of plain ids representing the ids that belong to each object in the `keyedById` map.\n- `keyedById {Object}` - a hash map keyed by the id of each item.\n- `currentId {Number|String}` - the id of the item marked as current.\n- `copy {Object}` - a deep copy of the current item at the moment it was marked as current. You can make changes to the copy without modifying the `current`.  You can then use the `commitCopy` mutation to save the changes as the `current` or `rejectCopy` to revert `copy` to once again match `current`.\n- `servicePath {String}` - the full service path, even if you alias the namespace to something else.\n- `idField {String}` - the name of the field that holds each item's id. *Default: `'id'`*\n- `paginate {Boolean}` - Indicates if the service has pagination turned on.  This changes the response of the `find` action and getter to match the response that Feathers gives.\n\nThe following state attributes allow you to bind to the pending state of requests:\n- `isFindPending {Boolean}` - `true` if there's a pending `find` request.  `false` if not.\n- `isGetPending {Boolean}` - `true` if there's a pending `get` request.  `false` if not.\n- `isCreatePending {Boolean}` - `true` if there's a pending `create` request.  `false` if not.\n- `isUpdatePending {Boolean}` - `true` if there's a pending `update` request.  `false` if not.\n- `isPatchPending {Boolean}` - `true` if there's a pending `patch` request.  `false` if not.\n- `isRemovePending {Boolean}` - `true` if there's a pending `remove` request.  `false` if not.\n\nThe following state attribute will be populated with any request error, serialized as a plain object:\n- `errorOnFind {Error}`\n- `errorOnGet {Error}`\n- `errorOnCreate {Error}`\n- `errorOnUpdate {Error}`\n- `errorOnPatch {Error}`\n- `errorOnRemo {Error}`\n\n### Service Getters\nService modules include the following getters:\n- `list {Array}` - an array of items. The array form of `keyedById`  Read only.\n- `find(params) {Function}` - a helper function that allows you to use the [Feathers Adapter Common API](https://docs.feathersjs.com/api/databases/common.html) and [Query API](https://docs.feathersjs.com/api/databases/querying.html) to pull data from the store.  This allows you to treat the store just like a local Feathers database adapter (but without hooks).\n  - `params {Object}` - an object with a `query` object and an optional `paginate` boolean property. The `query` is in the FeathersJS query format.  You can set `params.paginate` to `false` to disable pagination for a single request.\n- `get(id[, params]) {Function}` - a function that allows you to query the store for a single item, by id.  It works the same way as `get` requests in Feathers database adapters.\n  - `id {Number|String}` - the id of the data to be retrieved by id from the store.\n  - `params {Object}` - an object containing a Feathers `query` object.\n- `current {Object}` - the object representing the `currentId`. It's pulled from the `keyedById` state.\n- `getCopy {Object}` - An alias to the `state.copy`.\n\n### Service Mutations\nThe following mutations are included in each service module.\n> **Note:** you would typically not call these directly, but instead with `store.commit('removeItem', 'itemId')`. Using vuex's mapMutations on a Vue component can simplify that to `this.removeItem('itemId')`\n\n#### `addItem(state, item)`\nAdds a single item to the `keyedById` map.\n- `item {Object}` - The item to be added to the store.\n\n#### `addItems(state, items)`\nAdds an array of items to the `keyedById` map.\n- `items {Array}` - the items to be added to the store.\n\n#### `updateItem(state, item)`\nUpdates an item in the store to match the passed in `item`.\n- `item {Object}` the item, including `id`, to replace the currently-stored item.\n\n#### `updateItems(state, items)`\nUpdates multiple items in the store to match the passed in array of items.\n- `items {Array}` - An array of items.\n\n#### `removeItem(state, item)`\nRemoves a single item.  `item` can be\n- `item {Number|String|Object}` - The item or id of the item to be deleted.\n\n#### `removeItems(state, items)`\nRemoves the passed in items or ids from the store.\n- `items {Array}` - An array of ids or of objects with ids that will be removed from the data store.\n\n#### `setCurrent(state, item)`\n- `item {Number|String|Object}` - the object with id to be set as the current item, or the id of the object in the store that should become the `current` item.  Setting the `current` item or id also create the deep-cloned `copy`.\n\n#### `commitCopy(state)`\nSaves changes from the `copy` to the `current` item.\n\n#### `rejectCopy(state)`\nRe-copies the data from `current` to `copy`, restoring the original copy.\n\n#### `clearCurrent(state)`\nClears the `current` item, which also clears the copy.\n\n#### `clearList(state)`\nClears the `list`, excepting the `current` item.\n\n#### `clearAll(state)`\nClears all data from `ids`, `keyedById`, and `currentId`\n\n#### Mutations for Managing Pending State\nThe following mutations are called automatically by the service actions, and will rarely, if ever, need to be used manually.\n- `setFindPending(state)` - sets `isFindPending` to `true`\n- `unsetFindPending(state)` - sets `isFindPending` to `false`\n- `setGetPending(state)` - sets `isGetPending` to `true`\n- `unsetGetPending(state)` - sets `isGetPending` to `false`\n- `setCreatePending(state)` - sets `isCreatePending` to `true`\n- `unsetCreatePending(state)` - sets `isCreatePending` to `false`\n- `setUpdatePending(state)` - sets `isUpdatePending` to `true`\n- `unsetUpdatePending(state)` - sets `isUpdatePending` to `false`\n- `setPatchPending(state)` - sets `isPatchPending` to `true`\n- `unsetPatchPending(state)` - sets `isPatchPending` to `false`\n- `setRemovePending(state)` - sets `isRemovePending` to `true`\n- `unsetRemovePending(state)` - sets `isRemovePending` to `false`\n\n#### Mutations for Managing Errors\nThe following mutations are called automatically by the service actions, and will rarely need to be used manually.\n- `setFindError(state, error)`\n- `clearFindError(state)`\n- `setGetError(state, error)`\n- `clearGetError(state)`\n- `setCreateError(state, error)`\n- `clearCreateError(state)`\n- `setUpdateError(state, error)`\n- `clearUpdateError(state)`\n- `setPatchError(state, error)`\n- `clearPatchError(state)`\n- `setRemoveError(state, error)`\n- `clearRemoveError(state)`\n\n### Service Actions\nAn action is included for each of the Feathers service interface methods.  These actions will affect changes in both the Feathers API server and the Vuex store.\n\nAll of the [Feathers Service Methods](https://docs.feathersjs.com/api/databases/common.html#service-methods) are supported.  Because Vuex only supports providing a single argument to actions, there is a slight change in syntax that works well.  If you need to pass multiple arguments to a service method, pass an array to the action with the order of the array elements matching the order of the arguments.  See each method for examples.\n\n> Note: If you use the Feathers service methods, directly, the store will not change. Only the actions will cause store changes.\n\n#### `find(params)`\nQuery an array of records from the server & add to the Vuex store.\n- `params {Object}` - An object containing a `query` object and an optional `paginate` boolean.  You can set `params.paginate` to `false` to disable pagination for a single request.\n\n```js\nlet params = {query: {completed: true}}\nstore.dispatch('todos/find', params)\n```\n\nSee the section about pagination, below, for more information that is applicable to the `find` action.\n\n#### `get(id)` or `get([id, params])`\nQuery a single record from the server & add to Vuex store\n- `id {Number|String}` - the `id` of the record being requested from the API server.\n- `params {Object}` - An object containing a `query` object.\n\n```js\nstore.dispatch('todos/get', 1)\n\n// Use an array to pass params\nlet params = {}\nstore.dispatch('todos/get', [1, params])\n```\n\n#### `create(data)`\nCreate one or multiple records.\n- `data {Object|Array}` - if an object is provided, a single record will be created. If an array of objects is provided, multiple records will be created.\n\n```js\nlet newTodo = {description: 'write good tests'}\nstore.dispatch('todos/create', newTodo)\n```\n\n\n#### `update(paramArray)`\nUpdate (overwrite) a record.\n- `paramArray {Array}` - array containing the three parameters update takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will overwrite the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {id: 5, description: 'write your tests', completed: true}\nlet params = {}\n// Overwrite item 1 with the above data (FYI: Most databases won't let you change the id.)\nstore.dispatch('todos/update', [1, data, params])\n```\n\nAlternatively in a Vue component\n```\nimport { mapActions } from 'vuex'\nexport default {\n  methods: {\n    ...mapActions('todos', [ 'update' ]),\n    addTodo () {\n      let data = {id: 5, description: 'write your tests', completed: true}\n      this.update([1, data, {}])\n    }\n  }\n}\n```\n\n#### `patch(paramArray)`\nPatch (merge in changes) one or more records\n- `paramArray {Array}` - array containing the three parameters patch takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will be merged into the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {description: 'write your tests', completed: true}\nlet params = {}\nstore.dispatch('todos/patch', [1, data, params])\n```\n\n\n#### `remove(id)`\nRemove/delete the record with the given `id`.\n- `id {Number|String}` - the `id` of the existing record being requested from the API server.\n\n```js\nstore.dispatch('todos/remove', 1)\n```\n\n## Querying with Find & Pagination\nBoth the `find` action and the `find` getter support pagination.  There are differences in how they work.\n\n### The `find` action\n\nThe `find` action queries data from the remote server.  It returns a promise that resolves to the response from the server.  The presence of pagination data will be determined by the server.\n\n`feathers-vuex@1.0.0` can store pagination data on a per-query basis.  The `pagination` store attribute maps queries to their most-recent pagination data.  It's an empty object by default, but after performing a single query (with pagination in the response), it will have a `default` property.  This property stores pagination information for the query.  Here's what it will look like:\n\n**`params = { query: {} }`**\n```js\n{\n  pagination: {\n    default: {\n      query: {}, // Same as params.query\n      ids: [0, 1, 2], // the ids in the store for the records that were returned from the server\n      limit: 0, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\nIt's possible that you'll want to store pagination information for more than one query.  This might be for different components making queries against the same service, for example.  You can use the `params.qid` (query identifier) property to assign a name to the query.  If you set a `qid` of `mainListView`, for example, the pagination for this query will show up under `pagination.mainListView`.  The `pagination.default` property will be used any time a `params.qid` is not provided.  Here's an example of what this might look like:\n\n**`params = { query: { $limit: 1 }, qid: 'mainListView' }`**\n```js\n// Data in the store\n{\n  pagination: {\n    mainListView: {\n      query: { $limit: 1 }, // Same as params.query\n      ids: [0], // the ids in the store for the records that were returned from the server\n      limit: 1, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\n> Note: The `find` action no longer returns reactive lists.  The list data will still be reactive, but new matches that arrive from the server do NOT get automatically added to lists.  There are two solutions to this:\n- Use the `find` action to pull in data from the server.  Use the `find` getter to pull a reactive list from the store.\n- Configure the `feathers-reactive` plugin with RxJS on your Feathers Client instance.  [Read the docs for implementation details.](https://github.com/feathers-plus/feathers-reactive)\n\n### The `find` getter\n\nThe `find` getter queries data from the local store using the same Feathers query syntax as on the server.  It is synchronous and returns the results of the query with pagination.  Pagination cannot be disabled.  It accepts a params object with a `query` attribute.  It does not use any other special attributes.  The returned object looks just like a paginated result that you would receive from the server:\n\n**`params = { query: {} }`**\n```js\n// The returned results object\n{\n  data: [{ _id: 1, ...etc }, ...etc],\n  limit: 0,\n  skip: 0,\n  total: 3\n}\n```\n\n\n###\n\n## Customizing a Service's Default Store\n\nAs shown in the first example, the service module allows you to customize its store:\n\n```js\nconst store = new Vuex.Store({\n  plugins: [\n    // Add custom state, getters, mutations, or actions, if needed\n    service('things', {\n      state: {\n        test: true\n      },\n      getters: {\n        getSomeData () {\n          return 'some data'\n        }\n      },\n      mutations: {\n        setTestToFalse (state) {\n          state.test = false\n        },\n        setTestToTrue (state) {\n          state.test = true\n        }\n      },\n      actions: {\n        asyncStuff ({ commit, dispatch }, args) {\n          commit('setTestToTrue')\n\n          return doSomethingAsync(id, params)\n            .then(result => {\n              commit('setTestToFalse')\n              return dispatch('otherAsyncStuff', result)\n            })\n        },\n        otherAsyncStuff ({commit}, args) {\n          return new Promise.resolve(result)\n        }\n      }\n    })\n  ]\n})\n\nassert(store.getters['todos/oneTwoThree'] === 123, 'the custom getter was available')\nstore.dispatch('todos/trigger')\nassert(store.state.todos.isTrue === true, 'the custom action was run')\n```\n\n## Auth Module\nThe Auth module helps setup your app for login / logout.  It includes the following state by default:\n```js\n{\n  accessToken: undefined, // The JWT\n  payload: undefined, // The JWT payload\n\n  isAuthenticatePending: false,\n  isLogoutPending: false,\n\n  errorOnAuthenticate: undefined,\n  errorOnLogout: undefined\n}\n```\n\n### Actions\nThe following actions are included in the `auth` module:\n- `authenticate`: use instead of `feathersClient.authenticate()`\n- `logout`: use instead of `feathersClient.logout()`\nThe Vuex auth store may not update if you use the feathers client version.\n\n## Working with Auth & Nuxt\n\n`feathers-vuex@1.0.0` ships with utilities that help with Nuxt auth related to JSON Web Tokens (JWT).  The most important utility is the `initAuth` utility.  It's for use during Nuxt's `nuxtServerInit` method, and sets up auth data automatically.  Here's an example store that uses it:\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex, { initAuth } from 'feathers-vuex'\n\nconst { service, auth } = feathersVuex(feathersClient)\n\nconst createStore = () => {\n  return new Vuex.Store({\n    state: {},\n    mutations: {\n      increment (state) {\n        state.counter++\n      }\n    },\n    actions: {\n      nuxtServerInit ({ commit, dispatch }, { req }) {\n        return initAuth({\n          commit,\n          dispatch,\n          req,\n          moduleName: 'auth',\n          cookieName: 'feathers-jwt'\n        })\n      }\n    },\n    plugins: [\n      service('courses'),\n      auth({\n        state: {\n          publicPages: [\n            'login',\n            'signup'\n          ]\n        }\n      })\n    ]\n  })\n}\n\nexport default createStore\n```\n\nNotice in the above example, I've added a `publicPages` property to the auth state.  Let's now use this state to redirect the browser when it's not on a public page and there's no auth:\n\nIn your Nuxt project, create the file `/middleware/auth.js`.  Then edit the `nuxt.config.js` and add after the `head` property, add a string that references this routing middleware so it looks like this:\n\n*// nuxt.config.js*\n```js\nrouter: {\n  middleware: ['auth']\n},\n```\n\nNow open the middleware and paste the following content.  All it does is redirect the page if there's no auth data in the store.\n\n```js\n// If it's a private page and there's no payload, redirect.\nexport default function (context) {\n  const { store, redirect, route } = context\n  const { auth } = store.state\n\n  if (!auth.publicPages.includes(route.name) && !auth.payload) {\n    return redirect('login')\n  }\n}\n```\n\nFor a summary, the `initAuth` function will make auth available in the state without much configuration.\n\n### Authentication storage with Nuxt\n\nSince Nuxt is running both client- and server side, it has limits on the availability of certain browser specific variables like `window`. Because of that, trying to configure the feathers client to use `window.localStorage` will result in an error or unexpected / not working behaviour. There's a simple solution though:\n\nWhen you configure the auth module in your feathers-client, use [cookie-storage](https://www.npmjs.com/package/cookie-storage) instead of `window.localStorage` to store the authentication data inside a cookie.\n\n```\nimport { CookieStorage } from 'cookie-storage';\n\nconst feathersClient = feathers()\n  .configure(auth({ storage: new CookieStorage() }));\n```\n\n### Configuration\nYou can provide a `userService` in the auth plugin's options to automatically populate the user upon successful login.\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex from 'feathers-vuex'\n\nconst { auth } = feathersVuex(feathersClient, { idField: '_id' })\n\nconst store = new Vuex.Store({\n  plugins: [\n    auth({ userService: 'users' }) // if your user service endpoint is named 'users'\n  ]\n})\n```\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"5c006c0d855367a40cca1c1904dbcc915f5830d8","_id":"feathers-vuex@1.2.0-pre.10","_npmVersion":"5.6.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-XGEJffIkUEfCligjxf81fnrUSW20+uxA8h0PIx71VH8v4g24g6xPt4ZR50Boa+cAZPg/DrHM66ROgT00Y45tqA==","shasum":"ac8bd6883d16e1f82d92bc3614ee92fcc6c85f3c","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.2.0-pre.10.tgz","fileCount":26,"unpackedSize":266554,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEY6siLmY3BohCTbnUgCd7/AR4vFTJ2yzvDCJGqBNUwuAiEA8Ak8lwJT8DniCsg4Vlh+55HEum0GE93mDIUiBRRND+w="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.2.0-pre.10_1521417070231_0.30902328394197776"},"_hasShrinkwrap":false},"1.2.0-pre.11":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.2.0-pre.11","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.4.1","vue":"^2.4.4","vuex":"^2.4.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n> Integrate the Feathers Client into Vuex\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Important\nThe current version of `feathers-vuex` is not compatible with the latest version of `feathers-reactive` (0.5.x). To keep on using `feathers-vuex` install version 0.4.x.\n\n## Use\n`feathers-vuex` is a set of two utilities for integrating the Feathers Client into your Vuex store.  It allows you to eliminate boilerplate and easily customize the store.  To get it working, we first need a Feathers Client.  Note: as of version 1.0.0 `feathers-reactive` is no longer required to get socket updates.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers';\nimport socketio from '@feathersjs/socketio-client';\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\nconst { serviceModule, serviceModel, servicePlugin } = service\n\n\nconst api1Client = feathersVuex(feathersClient, { idField: '_id', apiPrefix: 'api1' })\nconst api2Client = feathersVuex(feathersClient2, { idField: '_id' })\n\n\nVue.use(FeathersVuex)\n\nconst todoModule = serviceModule('todos')\n\n// const Model = serviceModel(todoModule) // TodoModel is an extensible class\nconst Model = serviceModel()\nclass TodoModel = extends Model {}\nconst todoPlugin = servicePlugin(todoModule, TodoModel)\n\nconst TaskModel extends Model {}\n\nexport { TaskModel }\n\n\ncreated () {\n  this.todo = new this.$FeathersVuex.api1.Todo(data)\n}\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    servicePlugin('/tasks', TaskModel), // With our potentially customized TodoModel\n\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // turn off socket event listeners. It's true by default\n      modelName: 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    auth()\n  ]\n})\n```\n\nThe new `feathers-vuex` API is more Vuex-like.  All of the functionality remains the same, but it is no longer configured like a FeathersJS plugin.  While the previous functionality was nice for prototyping, it didn't work well in SSR scenarios, like with Nuxt.\n\nTo see `feathers-vuex` in a working vue-cli application, check out [`feathers-chat-vuex`](https://github.com/feathers-plus/feathers-chat-vuex).\n\n## A note about feathers-reactive\nPrevious versions of this plugin required both RxJS and `feathers-reactive` to receive realtime updates.  `feathers-vuex@1.0.0` has socket messaging support built in and takes advantage of Vuex reactivity, so RxJS and `feathers-reactive` are no longer required.\n\n## API Documentation\n\n### Global Configuration\n\nThe following default options are available for configuration:\n\n```js\nconst defaultOptions = {\n  idField: 'id', // The field in each record that will contain the id\n  autoRemove: false, // automatically remove records missing from responses (only use with feathers-rest)\n  nameStyle: 'short', // Determines the source of the module name. 'short' or 'path'\n  enableEvents: true, // Set to false to explicitly disable socket event handlers.\n  preferUpdate: false, // When true, calling modelInstance.save() will do an update instead of a patch.\n}\n```\n\nEach service module can also be individually configured.\n\n### The Vuex modules\n\nThere are two modules included:\n1. The Service module adds a Vuex store for new services.\n2. The Auth module sets up the Vuex store for authentication / logout.\n\n## Service Module\nThe `Service Module` sets up services in the Vuex store.  Each service will have the below default state in its store.\n\n### Service State\nEach service comes loaded with the following default state:\n```js\n{\n    ids: [],\n    keyedById: {}, // A hash map, keyed by id of each item\n    currentId: undefined, // The id of the item marked as current\n    copy: undefined, // A deep copy of the current item\n    idField: 'id',\n    servicePath: 'v1/todos' // The full service path\n    autoRemove: false, // Indicates that this service will not automatically remove results missing from subsequent requests.\n    paginate: false, // Indicates if pagination is enabled on the Feathers service.\n\n    isFindPending: false,\n    isGetPending: false,\n    isCreatePending: false,\n    isUpdatePending: false,\n    isPatchPending: false,\n    isRemovePending: false,\n\n    errorOnfind: undefined,\n    errorOnGet: undefined,\n    errorOnCreate: undefined,\n    errorOnUpdate: undefined,\n    errorOnPatch: undefined,\n    errorOnRemove: undefined\n  }\n```\n\nThe following attributes are available in each service module's state:\n\n- `ids {Array}` - an array of plain ids representing the ids that belong to each object in the `keyedById` map.\n- `keyedById {Object}` - a hash map keyed by the id of each item.\n- `currentId {Number|String}` - the id of the item marked as current.\n- `copy {Object}` - a deep copy of the current item at the moment it was marked as current. You can make changes to the copy without modifying the `current`.  You can then use the `commitCopy` mutation to save the changes as the `current` or `rejectCopy` to revert `copy` to once again match `current`.\n- `servicePath {String}` - the full service path, even if you alias the namespace to something else.\n- `idField {String}` - the name of the field that holds each item's id. *Default: `'id'`*\n- `paginate {Boolean}` - Indicates if the service has pagination turned on.  This changes the response of the `find` action and getter to match the response that Feathers gives.\n\nThe following state attributes allow you to bind to the pending state of requests:\n- `isFindPending {Boolean}` - `true` if there's a pending `find` request.  `false` if not.\n- `isGetPending {Boolean}` - `true` if there's a pending `get` request.  `false` if not.\n- `isCreatePending {Boolean}` - `true` if there's a pending `create` request.  `false` if not.\n- `isUpdatePending {Boolean}` - `true` if there's a pending `update` request.  `false` if not.\n- `isPatchPending {Boolean}` - `true` if there's a pending `patch` request.  `false` if not.\n- `isRemovePending {Boolean}` - `true` if there's a pending `remove` request.  `false` if not.\n\nThe following state attribute will be populated with any request error, serialized as a plain object:\n- `errorOnFind {Error}`\n- `errorOnGet {Error}`\n- `errorOnCreate {Error}`\n- `errorOnUpdate {Error}`\n- `errorOnPatch {Error}`\n- `errorOnRemo {Error}`\n\n### Service Getters\nService modules include the following getters:\n- `list {Array}` - an array of items. The array form of `keyedById`  Read only.\n- `find(params) {Function}` - a helper function that allows you to use the [Feathers Adapter Common API](https://docs.feathersjs.com/api/databases/common.html) and [Query API](https://docs.feathersjs.com/api/databases/querying.html) to pull data from the store.  This allows you to treat the store just like a local Feathers database adapter (but without hooks).\n  - `params {Object}` - an object with a `query` object and an optional `paginate` boolean property. The `query` is in the FeathersJS query format.  You can set `params.paginate` to `false` to disable pagination for a single request.\n- `get(id[, params]) {Function}` - a function that allows you to query the store for a single item, by id.  It works the same way as `get` requests in Feathers database adapters.\n  - `id {Number|String}` - the id of the data to be retrieved by id from the store.\n  - `params {Object}` - an object containing a Feathers `query` object.\n- `current {Object}` - the object representing the `currentId`. It's pulled from the `keyedById` state.\n- `getCopy {Object}` - An alias to the `state.copy`.\n\n### Service Mutations\nThe following mutations are included in each service module.\n> **Note:** you would typically not call these directly, but instead with `store.commit('removeItem', 'itemId')`. Using vuex's mapMutations on a Vue component can simplify that to `this.removeItem('itemId')`\n\n#### `addItem(state, item)`\nAdds a single item to the `keyedById` map.\n- `item {Object}` - The item to be added to the store.\n\n#### `addItems(state, items)`\nAdds an array of items to the `keyedById` map.\n- `items {Array}` - the items to be added to the store.\n\n#### `updateItem(state, item)`\nUpdates an item in the store to match the passed in `item`.\n- `item {Object}` the item, including `id`, to replace the currently-stored item.\n\n#### `updateItems(state, items)`\nUpdates multiple items in the store to match the passed in array of items.\n- `items {Array}` - An array of items.\n\n#### `removeItem(state, item)`\nRemoves a single item.  `item` can be\n- `item {Number|String|Object}` - The item or id of the item to be deleted.\n\n#### `removeItems(state, items)`\nRemoves the passed in items or ids from the store.\n- `items {Array}` - An array of ids or of objects with ids that will be removed from the data store.\n\n#### `setCurrent(state, item)`\n- `item {Number|String|Object}` - the object with id to be set as the current item, or the id of the object in the store that should become the `current` item.  Setting the `current` item or id also create the deep-cloned `copy`.\n\n#### `commitCopy(state)`\nSaves changes from the `copy` to the `current` item.\n\n#### `rejectCopy(state)`\nRe-copies the data from `current` to `copy`, restoring the original copy.\n\n#### `clearCurrent(state)`\nClears the `current` item, which also clears the copy.\n\n#### `clearList(state)`\nClears the `list`, excepting the `current` item.\n\n#### `clearAll(state)`\nClears all data from `ids`, `keyedById`, and `currentId`\n\n#### Mutations for Managing Pending State\nThe following mutations are called automatically by the service actions, and will rarely, if ever, need to be used manually.\n- `setFindPending(state)` - sets `isFindPending` to `true`\n- `unsetFindPending(state)` - sets `isFindPending` to `false`\n- `setGetPending(state)` - sets `isGetPending` to `true`\n- `unsetGetPending(state)` - sets `isGetPending` to `false`\n- `setCreatePending(state)` - sets `isCreatePending` to `true`\n- `unsetCreatePending(state)` - sets `isCreatePending` to `false`\n- `setUpdatePending(state)` - sets `isUpdatePending` to `true`\n- `unsetUpdatePending(state)` - sets `isUpdatePending` to `false`\n- `setPatchPending(state)` - sets `isPatchPending` to `true`\n- `unsetPatchPending(state)` - sets `isPatchPending` to `false`\n- `setRemovePending(state)` - sets `isRemovePending` to `true`\n- `unsetRemovePending(state)` - sets `isRemovePending` to `false`\n\n#### Mutations for Managing Errors\nThe following mutations are called automatically by the service actions, and will rarely need to be used manually.\n- `setFindError(state, error)`\n- `clearFindError(state)`\n- `setGetError(state, error)`\n- `clearGetError(state)`\n- `setCreateError(state, error)`\n- `clearCreateError(state)`\n- `setUpdateError(state, error)`\n- `clearUpdateError(state)`\n- `setPatchError(state, error)`\n- `clearPatchError(state)`\n- `setRemoveError(state, error)`\n- `clearRemoveError(state)`\n\n### Service Actions\nAn action is included for each of the Feathers service interface methods.  These actions will affect changes in both the Feathers API server and the Vuex store.\n\nAll of the [Feathers Service Methods](https://docs.feathersjs.com/api/databases/common.html#service-methods) are supported.  Because Vuex only supports providing a single argument to actions, there is a slight change in syntax that works well.  If you need to pass multiple arguments to a service method, pass an array to the action with the order of the array elements matching the order of the arguments.  See each method for examples.\n\n> Note: If you use the Feathers service methods, directly, the store will not change. Only the actions will cause store changes.\n\n#### `find(params)`\nQuery an array of records from the server & add to the Vuex store.\n- `params {Object}` - An object containing a `query` object and an optional `paginate` boolean.  You can set `params.paginate` to `false` to disable pagination for a single request.\n\n```js\nlet params = {query: {completed: true}}\nstore.dispatch('todos/find', params)\n```\n\nSee the section about pagination, below, for more information that is applicable to the `find` action.\n\n#### `get(id)` or `get([id, params])`\nQuery a single record from the server & add to Vuex store\n- `id {Number|String}` - the `id` of the record being requested from the API server.\n- `params {Object}` - An object containing a `query` object.\n\n```js\nstore.dispatch('todos/get', 1)\n\n// Use an array to pass params\nlet params = {}\nstore.dispatch('todos/get', [1, params])\n```\n\n#### `create(data)`\nCreate one or multiple records.\n- `data {Object|Array}` - if an object is provided, a single record will be created. If an array of objects is provided, multiple records will be created.\n\n```js\nlet newTodo = {description: 'write good tests'}\nstore.dispatch('todos/create', newTodo)\n```\n\n\n#### `update(paramArray)`\nUpdate (overwrite) a record.\n- `paramArray {Array}` - array containing the three parameters update takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will overwrite the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {id: 5, description: 'write your tests', completed: true}\nlet params = {}\n// Overwrite item 1 with the above data (FYI: Most databases won't let you change the id.)\nstore.dispatch('todos/update', [1, data, params])\n```\n\nAlternatively in a Vue component\n```\nimport { mapActions } from 'vuex'\nexport default {\n  methods: {\n    ...mapActions('todos', [ 'update' ]),\n    addTodo () {\n      let data = {id: 5, description: 'write your tests', completed: true}\n      this.update([1, data, {}])\n    }\n  }\n}\n```\n\n#### `patch(paramArray)`\nPatch (merge in changes) one or more records\n- `paramArray {Array}` - array containing the three parameters patch takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will be merged into the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {description: 'write your tests', completed: true}\nlet params = {}\nstore.dispatch('todos/patch', [1, data, params])\n```\n\n\n#### `remove(id)`\nRemove/delete the record with the given `id`.\n- `id {Number|String}` - the `id` of the existing record being requested from the API server.\n\n```js\nstore.dispatch('todos/remove', 1)\n```\n\n## Querying with Find & Pagination\nBoth the `find` action and the `find` getter support pagination.  There are differences in how they work.\n\n### The `find` action\n\nThe `find` action queries data from the remote server.  It returns a promise that resolves to the response from the server.  The presence of pagination data will be determined by the server.\n\n`feathers-vuex@1.0.0` can store pagination data on a per-query basis.  The `pagination` store attribute maps queries to their most-recent pagination data.  It's an empty object by default, but after performing a single query (with pagination in the response), it will have a `default` property.  This property stores pagination information for the query.  Here's what it will look like:\n\n**`params = { query: {} }`**\n```js\n{\n  pagination: {\n    default: {\n      query: {}, // Same as params.query\n      ids: [0, 1, 2], // the ids in the store for the records that were returned from the server\n      limit: 0, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\nIt's possible that you'll want to store pagination information for more than one query.  This might be for different components making queries against the same service, for example.  You can use the `params.qid` (query identifier) property to assign a name to the query.  If you set a `qid` of `mainListView`, for example, the pagination for this query will show up under `pagination.mainListView`.  The `pagination.default` property will be used any time a `params.qid` is not provided.  Here's an example of what this might look like:\n\n**`params = { query: { $limit: 1 }, qid: 'mainListView' }`**\n```js\n// Data in the store\n{\n  pagination: {\n    mainListView: {\n      query: { $limit: 1 }, // Same as params.query\n      ids: [0], // the ids in the store for the records that were returned from the server\n      limit: 1, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\n> Note: The `find` action no longer returns reactive lists.  The list data will still be reactive, but new matches that arrive from the server do NOT get automatically added to lists.  There are two solutions to this:\n- Use the `find` action to pull in data from the server.  Use the `find` getter to pull a reactive list from the store.\n- Configure the `feathers-reactive` plugin with RxJS on your Feathers Client instance.  [Read the docs for implementation details.](https://github.com/feathers-plus/feathers-reactive)\n\n### The `find` getter\n\nThe `find` getter queries data from the local store using the same Feathers query syntax as on the server.  It is synchronous and returns the results of the query with pagination.  Pagination cannot be disabled.  It accepts a params object with a `query` attribute.  It does not use any other special attributes.  The returned object looks just like a paginated result that you would receive from the server:\n\n**`params = { query: {} }`**\n```js\n// The returned results object\n{\n  data: [{ _id: 1, ...etc }, ...etc],\n  limit: 0,\n  skip: 0,\n  total: 3\n}\n```\n\n\n###\n\n## Customizing a Service's Default Store\n\nAs shown in the first example, the service module allows you to customize its store:\n\n```js\nconst store = new Vuex.Store({\n  plugins: [\n    // Add custom state, getters, mutations, or actions, if needed\n    service('things', {\n      state: {\n        test: true\n      },\n      getters: {\n        getSomeData () {\n          return 'some data'\n        }\n      },\n      mutations: {\n        setTestToFalse (state) {\n          state.test = false\n        },\n        setTestToTrue (state) {\n          state.test = true\n        }\n      },\n      actions: {\n        asyncStuff ({ commit, dispatch }, args) {\n          commit('setTestToTrue')\n\n          return doSomethingAsync(id, params)\n            .then(result => {\n              commit('setTestToFalse')\n              return dispatch('otherAsyncStuff', result)\n            })\n        },\n        otherAsyncStuff ({commit}, args) {\n          return new Promise.resolve(result)\n        }\n      }\n    })\n  ]\n})\n\nassert(store.getters['todos/oneTwoThree'] === 123, 'the custom getter was available')\nstore.dispatch('todos/trigger')\nassert(store.state.todos.isTrue === true, 'the custom action was run')\n```\n\n## Auth Module\nThe Auth module helps setup your app for login / logout.  It includes the following state by default:\n```js\n{\n  accessToken: undefined, // The JWT\n  payload: undefined, // The JWT payload\n\n  isAuthenticatePending: false,\n  isLogoutPending: false,\n\n  errorOnAuthenticate: undefined,\n  errorOnLogout: undefined\n}\n```\n\n### Actions\nThe following actions are included in the `auth` module:\n- `authenticate`: use instead of `feathersClient.authenticate()`\n- `logout`: use instead of `feathersClient.logout()`\nThe Vuex auth store may not update if you use the feathers client version.\n\n## Working with Auth & Nuxt\n\n`feathers-vuex@1.0.0` ships with utilities that help with Nuxt auth related to JSON Web Tokens (JWT).  The most important utility is the `initAuth` utility.  It's for use during Nuxt's `nuxtServerInit` method, and sets up auth data automatically.  Here's an example store that uses it:\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex, { initAuth } from 'feathers-vuex'\n\nconst { service, auth } = feathersVuex(feathersClient)\n\nconst createStore = () => {\n  return new Vuex.Store({\n    state: {},\n    mutations: {\n      increment (state) {\n        state.counter++\n      }\n    },\n    actions: {\n      nuxtServerInit ({ commit, dispatch }, { req }) {\n        return initAuth({\n          commit,\n          dispatch,\n          req,\n          moduleName: 'auth',\n          cookieName: 'feathers-jwt'\n        })\n      }\n    },\n    plugins: [\n      service('courses'),\n      auth({\n        state: {\n          publicPages: [\n            'login',\n            'signup'\n          ]\n        }\n      })\n    ]\n  })\n}\n\nexport default createStore\n```\n\nNotice in the above example, I've added a `publicPages` property to the auth state.  Let's now use this state to redirect the browser when it's not on a public page and there's no auth:\n\nIn your Nuxt project, create the file `/middleware/auth.js`.  Then edit the `nuxt.config.js` and add after the `head` property, add a string that references this routing middleware so it looks like this:\n\n*// nuxt.config.js*\n```js\nrouter: {\n  middleware: ['auth']\n},\n```\n\nNow open the middleware and paste the following content.  All it does is redirect the page if there's no auth data in the store.\n\n```js\n// If it's a private page and there's no payload, redirect.\nexport default function (context) {\n  const { store, redirect, route } = context\n  const { auth } = store.state\n\n  if (!auth.publicPages.includes(route.name) && !auth.payload) {\n    return redirect('login')\n  }\n}\n```\n\nFor a summary, the `initAuth` function will make auth available in the state without much configuration.\n\n### Authentication storage with Nuxt\n\nSince Nuxt is running both client- and server side, it has limits on the availability of certain browser specific variables like `window`. Because of that, trying to configure the feathers client to use `window.localStorage` will result in an error or unexpected / not working behaviour. There's a simple solution though:\n\nWhen you configure the auth module in your feathers-client, use [cookie-storage](https://www.npmjs.com/package/cookie-storage) instead of `window.localStorage` to store the authentication data inside a cookie.\n\n```\nimport { CookieStorage } from 'cookie-storage';\n\nconst feathersClient = feathers()\n  .configure(auth({ storage: new CookieStorage() }));\n```\n\n### Configuration\nYou can provide a `userService` in the auth plugin's options to automatically populate the user upon successful login.\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex from 'feathers-vuex'\n\nconst { auth } = feathersVuex(feathersClient, { idField: '_id' })\n\nconst store = new Vuex.Store({\n  plugins: [\n    auth({ userService: 'users' }) // if your user service endpoint is named 'users'\n  ]\n})\n```\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"49a5dfb1cb82b520c981c9e19049939a562415f1","_id":"feathers-vuex@1.2.0-pre.11","_npmVersion":"5.6.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-1kK6+U+cMXxHptfuYqUVcJOQETmP38RiyZ9qFKbSJFzcFXhHS61MF/xSME2Bq/AdFv5i2uNiahefS90VPL497A==","shasum":"372d32cc6840cea439c4d2d757a9c88658f9651c","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.2.0-pre.11.tgz","fileCount":26,"unpackedSize":266589,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDANOn0jDYdRYCiAsEgE3TxIrtkrJQjncWry9w6Tgr6vwIhAKIzN9ts3enJJ4PqBW1MLLJVYjK6dCzBXaSGmeDsOLlE"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.2.0-pre.11_1521417285452_0.8021811393047615"},"_hasShrinkwrap":false},"1.2.0-pre.12":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.2.0-pre.12","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.4.1","vue":"^2.4.4","vuex":"^2.4.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n> Integrate the Feathers Client into Vuex\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Important\nThe current version of `feathers-vuex` is not compatible with the latest version of `feathers-reactive` (0.5.x). To keep on using `feathers-vuex` install version 0.4.x.\n\n## Use\n`feathers-vuex` is a set of two utilities for integrating the Feathers Client into your Vuex store.  It allows you to eliminate boilerplate and easily customize the store.  To get it working, we first need a Feathers Client.  Note: as of version 1.0.0 `feathers-reactive` is no longer required to get socket updates.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers';\nimport socketio from '@feathersjs/socketio-client';\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\nconst { serviceModule, serviceModel, servicePlugin } = service\n\n\nconst api1Client = feathersVuex(feathersClient, { idField: '_id', apiPrefix: 'api1' })\nconst api2Client = feathersVuex(feathersClient2, { idField: '_id' })\n\n\nVue.use(FeathersVuex)\n\nconst todoModule = serviceModule('todos')\n\n// const Model = serviceModel(todoModule) // TodoModel is an extensible class\nconst Model = serviceModel()\nclass TodoModel = extends Model {}\nconst todoPlugin = servicePlugin(todoModule, TodoModel)\n\nconst TaskModel extends Model {}\n\nexport { TaskModel }\n\n\ncreated () {\n  this.todo = new this.$FeathersVuex.api1.Todo(data)\n}\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    servicePlugin('/tasks', TaskModel), // With our potentially customized TodoModel\n\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // turn off socket event listeners. It's true by default\n      modelName: 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    auth()\n  ]\n})\n```\n\nThe new `feathers-vuex` API is more Vuex-like.  All of the functionality remains the same, but it is no longer configured like a FeathersJS plugin.  While the previous functionality was nice for prototyping, it didn't work well in SSR scenarios, like with Nuxt.\n\nTo see `feathers-vuex` in a working vue-cli application, check out [`feathers-chat-vuex`](https://github.com/feathers-plus/feathers-chat-vuex).\n\n## A note about feathers-reactive\nPrevious versions of this plugin required both RxJS and `feathers-reactive` to receive realtime updates.  `feathers-vuex@1.0.0` has socket messaging support built in and takes advantage of Vuex reactivity, so RxJS and `feathers-reactive` are no longer required.\n\n## API Documentation\n\n### Global Configuration\n\nThe following default options are available for configuration:\n\n```js\nconst defaultOptions = {\n  idField: 'id', // The field in each record that will contain the id\n  autoRemove: false, // automatically remove records missing from responses (only use with feathers-rest)\n  nameStyle: 'short', // Determines the source of the module name. 'short' or 'path'\n  enableEvents: true, // Set to false to explicitly disable socket event handlers.\n  preferUpdate: false, // When true, calling modelInstance.save() will do an update instead of a patch.\n}\n```\n\nEach service module can also be individually configured.\n\n### The Vuex modules\n\nThere are two modules included:\n1. The Service module adds a Vuex store for new services.\n2. The Auth module sets up the Vuex store for authentication / logout.\n\n## Service Module\nThe `Service Module` sets up services in the Vuex store.  Each service will have the below default state in its store.\n\n### Service State\nEach service comes loaded with the following default state:\n```js\n{\n    ids: [],\n    keyedById: {}, // A hash map, keyed by id of each item\n    currentId: undefined, // The id of the item marked as current\n    copy: undefined, // A deep copy of the current item\n    idField: 'id',\n    servicePath: 'v1/todos' // The full service path\n    autoRemove: false, // Indicates that this service will not automatically remove results missing from subsequent requests.\n    paginate: false, // Indicates if pagination is enabled on the Feathers service.\n\n    isFindPending: false,\n    isGetPending: false,\n    isCreatePending: false,\n    isUpdatePending: false,\n    isPatchPending: false,\n    isRemovePending: false,\n\n    errorOnfind: undefined,\n    errorOnGet: undefined,\n    errorOnCreate: undefined,\n    errorOnUpdate: undefined,\n    errorOnPatch: undefined,\n    errorOnRemove: undefined\n  }\n```\n\nThe following attributes are available in each service module's state:\n\n- `ids {Array}` - an array of plain ids representing the ids that belong to each object in the `keyedById` map.\n- `keyedById {Object}` - a hash map keyed by the id of each item.\n- `currentId {Number|String}` - the id of the item marked as current.\n- `copy {Object}` - a deep copy of the current item at the moment it was marked as current. You can make changes to the copy without modifying the `current`.  You can then use the `commitCopy` mutation to save the changes as the `current` or `rejectCopy` to revert `copy` to once again match `current`.\n- `servicePath {String}` - the full service path, even if you alias the namespace to something else.\n- `idField {String}` - the name of the field that holds each item's id. *Default: `'id'`*\n- `paginate {Boolean}` - Indicates if the service has pagination turned on.  This changes the response of the `find` action and getter to match the response that Feathers gives.\n\nThe following state attributes allow you to bind to the pending state of requests:\n- `isFindPending {Boolean}` - `true` if there's a pending `find` request.  `false` if not.\n- `isGetPending {Boolean}` - `true` if there's a pending `get` request.  `false` if not.\n- `isCreatePending {Boolean}` - `true` if there's a pending `create` request.  `false` if not.\n- `isUpdatePending {Boolean}` - `true` if there's a pending `update` request.  `false` if not.\n- `isPatchPending {Boolean}` - `true` if there's a pending `patch` request.  `false` if not.\n- `isRemovePending {Boolean}` - `true` if there's a pending `remove` request.  `false` if not.\n\nThe following state attribute will be populated with any request error, serialized as a plain object:\n- `errorOnFind {Error}`\n- `errorOnGet {Error}`\n- `errorOnCreate {Error}`\n- `errorOnUpdate {Error}`\n- `errorOnPatch {Error}`\n- `errorOnRemo {Error}`\n\n### Service Getters\nService modules include the following getters:\n- `list {Array}` - an array of items. The array form of `keyedById`  Read only.\n- `find(params) {Function}` - a helper function that allows you to use the [Feathers Adapter Common API](https://docs.feathersjs.com/api/databases/common.html) and [Query API](https://docs.feathersjs.com/api/databases/querying.html) to pull data from the store.  This allows you to treat the store just like a local Feathers database adapter (but without hooks).\n  - `params {Object}` - an object with a `query` object and an optional `paginate` boolean property. The `query` is in the FeathersJS query format.  You can set `params.paginate` to `false` to disable pagination for a single request.\n- `get(id[, params]) {Function}` - a function that allows you to query the store for a single item, by id.  It works the same way as `get` requests in Feathers database adapters.\n  - `id {Number|String}` - the id of the data to be retrieved by id from the store.\n  - `params {Object}` - an object containing a Feathers `query` object.\n- `current {Object}` - the object representing the `currentId`. It's pulled from the `keyedById` state.\n- `getCopy {Object}` - An alias to the `state.copy`.\n\n### Service Mutations\nThe following mutations are included in each service module.\n> **Note:** you would typically not call these directly, but instead with `store.commit('removeItem', 'itemId')`. Using vuex's mapMutations on a Vue component can simplify that to `this.removeItem('itemId')`\n\n#### `addItem(state, item)`\nAdds a single item to the `keyedById` map.\n- `item {Object}` - The item to be added to the store.\n\n#### `addItems(state, items)`\nAdds an array of items to the `keyedById` map.\n- `items {Array}` - the items to be added to the store.\n\n#### `updateItem(state, item)`\nUpdates an item in the store to match the passed in `item`.\n- `item {Object}` the item, including `id`, to replace the currently-stored item.\n\n#### `updateItems(state, items)`\nUpdates multiple items in the store to match the passed in array of items.\n- `items {Array}` - An array of items.\n\n#### `removeItem(state, item)`\nRemoves a single item.  `item` can be\n- `item {Number|String|Object}` - The item or id of the item to be deleted.\n\n#### `removeItems(state, items)`\nRemoves the passed in items or ids from the store.\n- `items {Array}` - An array of ids or of objects with ids that will be removed from the data store.\n\n#### `setCurrent(state, item)`\n- `item {Number|String|Object}` - the object with id to be set as the current item, or the id of the object in the store that should become the `current` item.  Setting the `current` item or id also create the deep-cloned `copy`.\n\n#### `commitCopy(state)`\nSaves changes from the `copy` to the `current` item.\n\n#### `rejectCopy(state)`\nRe-copies the data from `current` to `copy`, restoring the original copy.\n\n#### `clearCurrent(state)`\nClears the `current` item, which also clears the copy.\n\n#### `clearList(state)`\nClears the `list`, excepting the `current` item.\n\n#### `clearAll(state)`\nClears all data from `ids`, `keyedById`, and `currentId`\n\n#### Mutations for Managing Pending State\nThe following mutations are called automatically by the service actions, and will rarely, if ever, need to be used manually.\n- `setFindPending(state)` - sets `isFindPending` to `true`\n- `unsetFindPending(state)` - sets `isFindPending` to `false`\n- `setGetPending(state)` - sets `isGetPending` to `true`\n- `unsetGetPending(state)` - sets `isGetPending` to `false`\n- `setCreatePending(state)` - sets `isCreatePending` to `true`\n- `unsetCreatePending(state)` - sets `isCreatePending` to `false`\n- `setUpdatePending(state)` - sets `isUpdatePending` to `true`\n- `unsetUpdatePending(state)` - sets `isUpdatePending` to `false`\n- `setPatchPending(state)` - sets `isPatchPending` to `true`\n- `unsetPatchPending(state)` - sets `isPatchPending` to `false`\n- `setRemovePending(state)` - sets `isRemovePending` to `true`\n- `unsetRemovePending(state)` - sets `isRemovePending` to `false`\n\n#### Mutations for Managing Errors\nThe following mutations are called automatically by the service actions, and will rarely need to be used manually.\n- `setFindError(state, error)`\n- `clearFindError(state)`\n- `setGetError(state, error)`\n- `clearGetError(state)`\n- `setCreateError(state, error)`\n- `clearCreateError(state)`\n- `setUpdateError(state, error)`\n- `clearUpdateError(state)`\n- `setPatchError(state, error)`\n- `clearPatchError(state)`\n- `setRemoveError(state, error)`\n- `clearRemoveError(state)`\n\n### Service Actions\nAn action is included for each of the Feathers service interface methods.  These actions will affect changes in both the Feathers API server and the Vuex store.\n\nAll of the [Feathers Service Methods](https://docs.feathersjs.com/api/databases/common.html#service-methods) are supported.  Because Vuex only supports providing a single argument to actions, there is a slight change in syntax that works well.  If you need to pass multiple arguments to a service method, pass an array to the action with the order of the array elements matching the order of the arguments.  See each method for examples.\n\n> Note: If you use the Feathers service methods, directly, the store will not change. Only the actions will cause store changes.\n\n#### `find(params)`\nQuery an array of records from the server & add to the Vuex store.\n- `params {Object}` - An object containing a `query` object and an optional `paginate` boolean.  You can set `params.paginate` to `false` to disable pagination for a single request.\n\n```js\nlet params = {query: {completed: true}}\nstore.dispatch('todos/find', params)\n```\n\nSee the section about pagination, below, for more information that is applicable to the `find` action.\n\n#### `get(id)` or `get([id, params])`\nQuery a single record from the server & add to Vuex store\n- `id {Number|String}` - the `id` of the record being requested from the API server.\n- `params {Object}` - An object containing a `query` object.\n\n```js\nstore.dispatch('todos/get', 1)\n\n// Use an array to pass params\nlet params = {}\nstore.dispatch('todos/get', [1, params])\n```\n\n#### `create(data)`\nCreate one or multiple records.\n- `data {Object|Array}` - if an object is provided, a single record will be created. If an array of objects is provided, multiple records will be created.\n\n```js\nlet newTodo = {description: 'write good tests'}\nstore.dispatch('todos/create', newTodo)\n```\n\n\n#### `update(paramArray)`\nUpdate (overwrite) a record.\n- `paramArray {Array}` - array containing the three parameters update takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will overwrite the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {id: 5, description: 'write your tests', completed: true}\nlet params = {}\n// Overwrite item 1 with the above data (FYI: Most databases won't let you change the id.)\nstore.dispatch('todos/update', [1, data, params])\n```\n\nAlternatively in a Vue component\n```\nimport { mapActions } from 'vuex'\nexport default {\n  methods: {\n    ...mapActions('todos', [ 'update' ]),\n    addTodo () {\n      let data = {id: 5, description: 'write your tests', completed: true}\n      this.update([1, data, {}])\n    }\n  }\n}\n```\n\n#### `patch(paramArray)`\nPatch (merge in changes) one or more records\n- `paramArray {Array}` - array containing the three parameters patch takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will be merged into the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {description: 'write your tests', completed: true}\nlet params = {}\nstore.dispatch('todos/patch', [1, data, params])\n```\n\n\n#### `remove(id)`\nRemove/delete the record with the given `id`.\n- `id {Number|String}` - the `id` of the existing record being requested from the API server.\n\n```js\nstore.dispatch('todos/remove', 1)\n```\n\n## Querying with Find & Pagination\nBoth the `find` action and the `find` getter support pagination.  There are differences in how they work.\n\n### The `find` action\n\nThe `find` action queries data from the remote server.  It returns a promise that resolves to the response from the server.  The presence of pagination data will be determined by the server.\n\n`feathers-vuex@1.0.0` can store pagination data on a per-query basis.  The `pagination` store attribute maps queries to their most-recent pagination data.  It's an empty object by default, but after performing a single query (with pagination in the response), it will have a `default` property.  This property stores pagination information for the query.  Here's what it will look like:\n\n**`params = { query: {} }`**\n```js\n{\n  pagination: {\n    default: {\n      query: {}, // Same as params.query\n      ids: [0, 1, 2], // the ids in the store for the records that were returned from the server\n      limit: 0, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\nIt's possible that you'll want to store pagination information for more than one query.  This might be for different components making queries against the same service, for example.  You can use the `params.qid` (query identifier) property to assign a name to the query.  If you set a `qid` of `mainListView`, for example, the pagination for this query will show up under `pagination.mainListView`.  The `pagination.default` property will be used any time a `params.qid` is not provided.  Here's an example of what this might look like:\n\n**`params = { query: { $limit: 1 }, qid: 'mainListView' }`**\n```js\n// Data in the store\n{\n  pagination: {\n    mainListView: {\n      query: { $limit: 1 }, // Same as params.query\n      ids: [0], // the ids in the store for the records that were returned from the server\n      limit: 1, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\n> Note: The `find` action no longer returns reactive lists.  The list data will still be reactive, but new matches that arrive from the server do NOT get automatically added to lists.  There are two solutions to this:\n- Use the `find` action to pull in data from the server.  Use the `find` getter to pull a reactive list from the store.\n- Configure the `feathers-reactive` plugin with RxJS on your Feathers Client instance.  [Read the docs for implementation details.](https://github.com/feathers-plus/feathers-reactive)\n\n### The `find` getter\n\nThe `find` getter queries data from the local store using the same Feathers query syntax as on the server.  It is synchronous and returns the results of the query with pagination.  Pagination cannot be disabled.  It accepts a params object with a `query` attribute.  It does not use any other special attributes.  The returned object looks just like a paginated result that you would receive from the server:\n\n**`params = { query: {} }`**\n```js\n// The returned results object\n{\n  data: [{ _id: 1, ...etc }, ...etc],\n  limit: 0,\n  skip: 0,\n  total: 3\n}\n```\n\n\n###\n\n## Customizing a Service's Default Store\n\nAs shown in the first example, the service module allows you to customize its store:\n\n```js\nconst store = new Vuex.Store({\n  plugins: [\n    // Add custom state, getters, mutations, or actions, if needed\n    service('things', {\n      state: {\n        test: true\n      },\n      getters: {\n        getSomeData () {\n          return 'some data'\n        }\n      },\n      mutations: {\n        setTestToFalse (state) {\n          state.test = false\n        },\n        setTestToTrue (state) {\n          state.test = true\n        }\n      },\n      actions: {\n        asyncStuff ({ commit, dispatch }, args) {\n          commit('setTestToTrue')\n\n          return doSomethingAsync(id, params)\n            .then(result => {\n              commit('setTestToFalse')\n              return dispatch('otherAsyncStuff', result)\n            })\n        },\n        otherAsyncStuff ({commit}, args) {\n          return new Promise.resolve(result)\n        }\n      }\n    })\n  ]\n})\n\nassert(store.getters['todos/oneTwoThree'] === 123, 'the custom getter was available')\nstore.dispatch('todos/trigger')\nassert(store.state.todos.isTrue === true, 'the custom action was run')\n```\n\n## Auth Module\nThe Auth module helps setup your app for login / logout.  It includes the following state by default:\n```js\n{\n  accessToken: undefined, // The JWT\n  payload: undefined, // The JWT payload\n\n  isAuthenticatePending: false,\n  isLogoutPending: false,\n\n  errorOnAuthenticate: undefined,\n  errorOnLogout: undefined\n}\n```\n\n### Actions\nThe following actions are included in the `auth` module:\n- `authenticate`: use instead of `feathersClient.authenticate()`\n- `logout`: use instead of `feathersClient.logout()`\nThe Vuex auth store may not update if you use the feathers client version.\n\n## Working with Auth & Nuxt\n\n`feathers-vuex@1.0.0` ships with utilities that help with Nuxt auth related to JSON Web Tokens (JWT).  The most important utility is the `initAuth` utility.  It's for use during Nuxt's `nuxtServerInit` method, and sets up auth data automatically.  Here's an example store that uses it:\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex, { initAuth } from 'feathers-vuex'\n\nconst { service, auth } = feathersVuex(feathersClient)\n\nconst createStore = () => {\n  return new Vuex.Store({\n    state: {},\n    mutations: {\n      increment (state) {\n        state.counter++\n      }\n    },\n    actions: {\n      nuxtServerInit ({ commit, dispatch }, { req }) {\n        return initAuth({\n          commit,\n          dispatch,\n          req,\n          moduleName: 'auth',\n          cookieName: 'feathers-jwt'\n        })\n      }\n    },\n    plugins: [\n      service('courses'),\n      auth({\n        state: {\n          publicPages: [\n            'login',\n            'signup'\n          ]\n        }\n      })\n    ]\n  })\n}\n\nexport default createStore\n```\n\nNotice in the above example, I've added a `publicPages` property to the auth state.  Let's now use this state to redirect the browser when it's not on a public page and there's no auth:\n\nIn your Nuxt project, create the file `/middleware/auth.js`.  Then edit the `nuxt.config.js` and add after the `head` property, add a string that references this routing middleware so it looks like this:\n\n*// nuxt.config.js*\n```js\nrouter: {\n  middleware: ['auth']\n},\n```\n\nNow open the middleware and paste the following content.  All it does is redirect the page if there's no auth data in the store.\n\n```js\n// If it's a private page and there's no payload, redirect.\nexport default function (context) {\n  const { store, redirect, route } = context\n  const { auth } = store.state\n\n  if (!auth.publicPages.includes(route.name) && !auth.payload) {\n    return redirect('login')\n  }\n}\n```\n\nFor a summary, the `initAuth` function will make auth available in the state without much configuration.\n\n### Authentication storage with Nuxt\n\nSince Nuxt is running both client- and server side, it has limits on the availability of certain browser specific variables like `window`. Because of that, trying to configure the feathers client to use `window.localStorage` will result in an error or unexpected / not working behaviour. There's a simple solution though:\n\nWhen you configure the auth module in your feathers-client, use [cookie-storage](https://www.npmjs.com/package/cookie-storage) instead of `window.localStorage` to store the authentication data inside a cookie.\n\n```\nimport { CookieStorage } from 'cookie-storage';\n\nconst feathersClient = feathers()\n  .configure(auth({ storage: new CookieStorage() }));\n```\n\n### Configuration\nYou can provide a `userService` in the auth plugin's options to automatically populate the user upon successful login.\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex from 'feathers-vuex'\n\nconst { auth } = feathersVuex(feathersClient, { idField: '_id' })\n\nconst store = new Vuex.Store({\n  plugins: [\n    auth({ userService: 'users' }) // if your user service endpoint is named 'users'\n  ]\n})\n```\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"13cff02efd514bcbeabedfe2766a7d33c7d31877","_id":"feathers-vuex@1.2.0-pre.12","_npmVersion":"5.6.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-jufrbbntw3JR0Yzeb2iMxDkwAT8OsdR5n8zOxusB4kkqApwo/m9Hymj/E9CrxHQgbGULdN+pL36LdJ5dsCz7ig==","shasum":"99c19a451fa0056bd88f4904f0fe67f4325537b9","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.2.0-pre.12.tgz","fileCount":26,"unpackedSize":268662,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA/+zETYRWMgjSM5RET4GvHiRv3seU0YibRN/eME2X3eAiB74v0ZgONR/yEdSMzUaNdkDI0AHb2nxeFalTuISZptbA=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.2.0-pre.12_1522109297384_0.2925177699145345"},"_hasShrinkwrap":false},"1.2.0-pre.13":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.2.0-pre.13","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.4.1","vue":"^2.4.4","vuex":"^2.4.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n> Integrate the Feathers Client into Vuex\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Important\nThe current version of `feathers-vuex` is not compatible with the latest version of `feathers-reactive` (0.5.x). To keep on using `feathers-vuex` install version 0.4.x.\n\n## Use\n`feathers-vuex` is a set of two utilities for integrating the Feathers Client into your Vuex store.  It allows you to eliminate boilerplate and easily customize the store.  To get it working, we first need a Feathers Client.  Note: as of version 1.0.0 `feathers-reactive` is no longer required to get socket updates.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers';\nimport socketio from '@feathersjs/socketio-client';\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\nconst { serviceModule, serviceModel, servicePlugin } = service\n\n\nconst api1Client = feathersVuex(feathersClient, { idField: '_id', apiPrefix: 'api1' })\nconst api2Client = feathersVuex(feathersClient2, { idField: '_id' })\n\n\nVue.use(FeathersVuex)\n\nconst todoModule = serviceModule('todos')\n\n// const Model = serviceModel(todoModule) // TodoModel is an extensible class\nconst Model = serviceModel()\nclass TodoModel = extends Model {}\nconst todoPlugin = servicePlugin(todoModule, TodoModel)\n\nconst TaskModel extends Model {}\n\nexport { TaskModel }\n\n\ncreated () {\n  this.todo = new this.$FeathersVuex.api1.Todo(data)\n}\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    servicePlugin('/tasks', TaskModel), // With our potentially customized TodoModel\n\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // turn off socket event listeners. It's true by default\n      modelName: 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    auth()\n  ]\n})\n```\n\nThe new `feathers-vuex` API is more Vuex-like.  All of the functionality remains the same, but it is no longer configured like a FeathersJS plugin.  While the previous functionality was nice for prototyping, it didn't work well in SSR scenarios, like with Nuxt.\n\nTo see `feathers-vuex` in a working vue-cli application, check out [`feathers-chat-vuex`](https://github.com/feathers-plus/feathers-chat-vuex).\n\n## A note about feathers-reactive\nPrevious versions of this plugin required both RxJS and `feathers-reactive` to receive realtime updates.  `feathers-vuex@1.0.0` has socket messaging support built in and takes advantage of Vuex reactivity, so RxJS and `feathers-reactive` are no longer required.\n\n## API Documentation\n\n### Global Configuration\n\nThe following default options are available for configuration:\n\n```js\nconst defaultOptions = {\n  idField: 'id', // The field in each record that will contain the id\n  autoRemove: false, // automatically remove records missing from responses (only use with feathers-rest)\n  nameStyle: 'short', // Determines the source of the module name. 'short' or 'path'\n  enableEvents: true, // Set to false to explicitly disable socket event handlers.\n  preferUpdate: false, // When true, calling modelInstance.save() will do an update instead of a patch.\n}\n```\n\nEach service module can also be individually configured.\n\n### The Vuex modules\n\nThere are two modules included:\n1. The Service module adds a Vuex store for new services.\n2. The Auth module sets up the Vuex store for authentication / logout.\n\n## Service Module\nThe `Service Module` sets up services in the Vuex store.  Each service will have the below default state in its store.\n\n### Service State\nEach service comes loaded with the following default state:\n```js\n{\n    ids: [],\n    keyedById: {}, // A hash map, keyed by id of each item\n    currentId: undefined, // The id of the item marked as current\n    copy: undefined, // A deep copy of the current item\n    idField: 'id',\n    servicePath: 'v1/todos' // The full service path\n    autoRemove: false, // Indicates that this service will not automatically remove results missing from subsequent requests.\n    paginate: false, // Indicates if pagination is enabled on the Feathers service.\n\n    isFindPending: false,\n    isGetPending: false,\n    isCreatePending: false,\n    isUpdatePending: false,\n    isPatchPending: false,\n    isRemovePending: false,\n\n    errorOnfind: undefined,\n    errorOnGet: undefined,\n    errorOnCreate: undefined,\n    errorOnUpdate: undefined,\n    errorOnPatch: undefined,\n    errorOnRemove: undefined\n  }\n```\n\nThe following attributes are available in each service module's state:\n\n- `ids {Array}` - an array of plain ids representing the ids that belong to each object in the `keyedById` map.\n- `keyedById {Object}` - a hash map keyed by the id of each item.\n- `currentId {Number|String}` - the id of the item marked as current.\n- `copy {Object}` - a deep copy of the current item at the moment it was marked as current. You can make changes to the copy without modifying the `current`.  You can then use the `commitCopy` mutation to save the changes as the `current` or `rejectCopy` to revert `copy` to once again match `current`.\n- `servicePath {String}` - the full service path, even if you alias the namespace to something else.\n- `idField {String}` - the name of the field that holds each item's id. *Default: `'id'`*\n- `paginate {Boolean}` - Indicates if the service has pagination turned on.  This changes the response of the `find` action and getter to match the response that Feathers gives.\n\nThe following state attributes allow you to bind to the pending state of requests:\n- `isFindPending {Boolean}` - `true` if there's a pending `find` request.  `false` if not.\n- `isGetPending {Boolean}` - `true` if there's a pending `get` request.  `false` if not.\n- `isCreatePending {Boolean}` - `true` if there's a pending `create` request.  `false` if not.\n- `isUpdatePending {Boolean}` - `true` if there's a pending `update` request.  `false` if not.\n- `isPatchPending {Boolean}` - `true` if there's a pending `patch` request.  `false` if not.\n- `isRemovePending {Boolean}` - `true` if there's a pending `remove` request.  `false` if not.\n\nThe following state attribute will be populated with any request error, serialized as a plain object:\n- `errorOnFind {Error}`\n- `errorOnGet {Error}`\n- `errorOnCreate {Error}`\n- `errorOnUpdate {Error}`\n- `errorOnPatch {Error}`\n- `errorOnRemo {Error}`\n\n### Service Getters\nService modules include the following getters:\n- `list {Array}` - an array of items. The array form of `keyedById`  Read only.\n- `find(params) {Function}` - a helper function that allows you to use the [Feathers Adapter Common API](https://docs.feathersjs.com/api/databases/common.html) and [Query API](https://docs.feathersjs.com/api/databases/querying.html) to pull data from the store.  This allows you to treat the store just like a local Feathers database adapter (but without hooks).\n  - `params {Object}` - an object with a `query` object and an optional `paginate` boolean property. The `query` is in the FeathersJS query format.  You can set `params.paginate` to `false` to disable pagination for a single request.\n- `get(id[, params]) {Function}` - a function that allows you to query the store for a single item, by id.  It works the same way as `get` requests in Feathers database adapters.\n  - `id {Number|String}` - the id of the data to be retrieved by id from the store.\n  - `params {Object}` - an object containing a Feathers `query` object.\n- `current {Object}` - the object representing the `currentId`. It's pulled from the `keyedById` state.\n- `getCopy {Object}` - An alias to the `state.copy`.\n\n### Service Mutations\nThe following mutations are included in each service module.\n> **Note:** you would typically not call these directly, but instead with `store.commit('removeItem', 'itemId')`. Using vuex's mapMutations on a Vue component can simplify that to `this.removeItem('itemId')`\n\n#### `addItem(state, item)`\nAdds a single item to the `keyedById` map.\n- `item {Object}` - The item to be added to the store.\n\n#### `addItems(state, items)`\nAdds an array of items to the `keyedById` map.\n- `items {Array}` - the items to be added to the store.\n\n#### `updateItem(state, item)`\nUpdates an item in the store to match the passed in `item`.\n- `item {Object}` the item, including `id`, to replace the currently-stored item.\n\n#### `updateItems(state, items)`\nUpdates multiple items in the store to match the passed in array of items.\n- `items {Array}` - An array of items.\n\n#### `removeItem(state, item)`\nRemoves a single item.  `item` can be\n- `item {Number|String|Object}` - The item or id of the item to be deleted.\n\n#### `removeItems(state, items)`\nRemoves the passed in items or ids from the store.\n- `items {Array}` - An array of ids or of objects with ids that will be removed from the data store.\n\n#### `setCurrent(state, item)`\n- `item {Number|String|Object}` - the object with id to be set as the current item, or the id of the object in the store that should become the `current` item.  Setting the `current` item or id also create the deep-cloned `copy`.\n\n#### `commitCopy(state)`\nSaves changes from the `copy` to the `current` item.\n\n#### `rejectCopy(state)`\nRe-copies the data from `current` to `copy`, restoring the original copy.\n\n#### `clearCurrent(state)`\nClears the `current` item, which also clears the copy.\n\n#### `clearList(state)`\nClears the `list`, excepting the `current` item.\n\n#### `clearAll(state)`\nClears all data from `ids`, `keyedById`, and `currentId`\n\n#### Mutations for Managing Pending State\nThe following mutations are called automatically by the service actions, and will rarely, if ever, need to be used manually.\n- `setFindPending(state)` - sets `isFindPending` to `true`\n- `unsetFindPending(state)` - sets `isFindPending` to `false`\n- `setGetPending(state)` - sets `isGetPending` to `true`\n- `unsetGetPending(state)` - sets `isGetPending` to `false`\n- `setCreatePending(state)` - sets `isCreatePending` to `true`\n- `unsetCreatePending(state)` - sets `isCreatePending` to `false`\n- `setUpdatePending(state)` - sets `isUpdatePending` to `true`\n- `unsetUpdatePending(state)` - sets `isUpdatePending` to `false`\n- `setPatchPending(state)` - sets `isPatchPending` to `true`\n- `unsetPatchPending(state)` - sets `isPatchPending` to `false`\n- `setRemovePending(state)` - sets `isRemovePending` to `true`\n- `unsetRemovePending(state)` - sets `isRemovePending` to `false`\n\n#### Mutations for Managing Errors\nThe following mutations are called automatically by the service actions, and will rarely need to be used manually.\n- `setFindError(state, error)`\n- `clearFindError(state)`\n- `setGetError(state, error)`\n- `clearGetError(state)`\n- `setCreateError(state, error)`\n- `clearCreateError(state)`\n- `setUpdateError(state, error)`\n- `clearUpdateError(state)`\n- `setPatchError(state, error)`\n- `clearPatchError(state)`\n- `setRemoveError(state, error)`\n- `clearRemoveError(state)`\n\n### Service Actions\nAn action is included for each of the Feathers service interface methods.  These actions will affect changes in both the Feathers API server and the Vuex store.\n\nAll of the [Feathers Service Methods](https://docs.feathersjs.com/api/databases/common.html#service-methods) are supported.  Because Vuex only supports providing a single argument to actions, there is a slight change in syntax that works well.  If you need to pass multiple arguments to a service method, pass an array to the action with the order of the array elements matching the order of the arguments.  See each method for examples.\n\n> Note: If you use the Feathers service methods, directly, the store will not change. Only the actions will cause store changes.\n\n#### `find(params)`\nQuery an array of records from the server & add to the Vuex store.\n- `params {Object}` - An object containing a `query` object and an optional `paginate` boolean.  You can set `params.paginate` to `false` to disable pagination for a single request.\n\n```js\nlet params = {query: {completed: true}}\nstore.dispatch('todos/find', params)\n```\n\nSee the section about pagination, below, for more information that is applicable to the `find` action.\n\n#### `get(id)` or `get([id, params])`\nQuery a single record from the server & add to Vuex store\n- `id {Number|String}` - the `id` of the record being requested from the API server.\n- `params {Object}` - An object containing a `query` object.\n\n```js\nstore.dispatch('todos/get', 1)\n\n// Use an array to pass params\nlet params = {}\nstore.dispatch('todos/get', [1, params])\n```\n\n#### `create(data)`\nCreate one or multiple records.\n- `data {Object|Array}` - if an object is provided, a single record will be created. If an array of objects is provided, multiple records will be created.\n\n```js\nlet newTodo = {description: 'write good tests'}\nstore.dispatch('todos/create', newTodo)\n```\n\n\n#### `update(paramArray)`\nUpdate (overwrite) a record.\n- `paramArray {Array}` - array containing the three parameters update takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will overwrite the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {id: 5, description: 'write your tests', completed: true}\nlet params = {}\n// Overwrite item 1 with the above data (FYI: Most databases won't let you change the id.)\nstore.dispatch('todos/update', [1, data, params])\n```\n\nAlternatively in a Vue component\n```\nimport { mapActions } from 'vuex'\nexport default {\n  methods: {\n    ...mapActions('todos', [ 'update' ]),\n    addTodo () {\n      let data = {id: 5, description: 'write your tests', completed: true}\n      this.update([1, data, {}])\n    }\n  }\n}\n```\n\n#### `patch(paramArray)`\nPatch (merge in changes) one or more records\n- `paramArray {Array}` - array containing the three parameters patch takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will be merged into the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {description: 'write your tests', completed: true}\nlet params = {}\nstore.dispatch('todos/patch', [1, data, params])\n```\n\n\n#### `remove(id)`\nRemove/delete the record with the given `id`.\n- `id {Number|String}` - the `id` of the existing record being requested from the API server.\n\n```js\nstore.dispatch('todos/remove', 1)\n```\n\n## Querying with Find & Pagination\nBoth the `find` action and the `find` getter support pagination.  There are differences in how they work.\n\n### The `find` action\n\nThe `find` action queries data from the remote server.  It returns a promise that resolves to the response from the server.  The presence of pagination data will be determined by the server.\n\n`feathers-vuex@1.0.0` can store pagination data on a per-query basis.  The `pagination` store attribute maps queries to their most-recent pagination data.  It's an empty object by default, but after performing a single query (with pagination in the response), it will have a `default` property.  This property stores pagination information for the query.  Here's what it will look like:\n\n**`params = { query: {} }`**\n```js\n{\n  pagination: {\n    default: {\n      query: {}, // Same as params.query\n      ids: [0, 1, 2], // the ids in the store for the records that were returned from the server\n      limit: 0, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\nIt's possible that you'll want to store pagination information for more than one query.  This might be for different components making queries against the same service, for example.  You can use the `params.qid` (query identifier) property to assign a name to the query.  If you set a `qid` of `mainListView`, for example, the pagination for this query will show up under `pagination.mainListView`.  The `pagination.default` property will be used any time a `params.qid` is not provided.  Here's an example of what this might look like:\n\n**`params = { query: { $limit: 1 }, qid: 'mainListView' }`**\n```js\n// Data in the store\n{\n  pagination: {\n    mainListView: {\n      query: { $limit: 1 }, // Same as params.query\n      ids: [0], // the ids in the store for the records that were returned from the server\n      limit: 1, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\n> Note: The `find` action no longer returns reactive lists.  The list data will still be reactive, but new matches that arrive from the server do NOT get automatically added to lists.  There are two solutions to this:\n- Use the `find` action to pull in data from the server.  Use the `find` getter to pull a reactive list from the store.\n- Configure the `feathers-reactive` plugin with RxJS on your Feathers Client instance.  [Read the docs for implementation details.](https://github.com/feathers-plus/feathers-reactive)\n\n### The `find` getter\n\nThe `find` getter queries data from the local store using the same Feathers query syntax as on the server.  It is synchronous and returns the results of the query with pagination.  Pagination cannot be disabled.  It accepts a params object with a `query` attribute.  It does not use any other special attributes.  The returned object looks just like a paginated result that you would receive from the server:\n\n**`params = { query: {} }`**\n```js\n// The returned results object\n{\n  data: [{ _id: 1, ...etc }, ...etc],\n  limit: 0,\n  skip: 0,\n  total: 3\n}\n```\n\n\n###\n\n## Customizing a Service's Default Store\n\nAs shown in the first example, the service module allows you to customize its store:\n\n```js\nconst store = new Vuex.Store({\n  plugins: [\n    // Add custom state, getters, mutations, or actions, if needed\n    service('things', {\n      state: {\n        test: true\n      },\n      getters: {\n        getSomeData () {\n          return 'some data'\n        }\n      },\n      mutations: {\n        setTestToFalse (state) {\n          state.test = false\n        },\n        setTestToTrue (state) {\n          state.test = true\n        }\n      },\n      actions: {\n        asyncStuff ({ commit, dispatch }, args) {\n          commit('setTestToTrue')\n\n          return doSomethingAsync(id, params)\n            .then(result => {\n              commit('setTestToFalse')\n              return dispatch('otherAsyncStuff', result)\n            })\n        },\n        otherAsyncStuff ({commit}, args) {\n          return new Promise.resolve(result)\n        }\n      }\n    })\n  ]\n})\n\nassert(store.getters['todos/oneTwoThree'] === 123, 'the custom getter was available')\nstore.dispatch('todos/trigger')\nassert(store.state.todos.isTrue === true, 'the custom action was run')\n```\n\n## Auth Module\nThe Auth module helps setup your app for login / logout.  It includes the following state by default:\n```js\n{\n  accessToken: undefined, // The JWT\n  payload: undefined, // The JWT payload\n\n  isAuthenticatePending: false,\n  isLogoutPending: false,\n\n  errorOnAuthenticate: undefined,\n  errorOnLogout: undefined\n}\n```\n\n### Actions\nThe following actions are included in the `auth` module:\n- `authenticate`: use instead of `feathersClient.authenticate()`\n- `logout`: use instead of `feathersClient.logout()`\nThe Vuex auth store may not update if you use the feathers client version.\n\n## Working with Auth & Nuxt\n\n`feathers-vuex@1.0.0` ships with utilities that help with Nuxt auth related to JSON Web Tokens (JWT).  The most important utility is the `initAuth` utility.  It's for use during Nuxt's `nuxtServerInit` method, and sets up auth data automatically.  Here's an example store that uses it:\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex, { initAuth } from 'feathers-vuex'\n\nconst { service, auth } = feathersVuex(feathersClient)\n\nconst createStore = () => {\n  return new Vuex.Store({\n    state: {},\n    mutations: {\n      increment (state) {\n        state.counter++\n      }\n    },\n    actions: {\n      nuxtServerInit ({ commit, dispatch }, { req }) {\n        return initAuth({\n          commit,\n          dispatch,\n          req,\n          moduleName: 'auth',\n          cookieName: 'feathers-jwt'\n        })\n      }\n    },\n    plugins: [\n      service('courses'),\n      auth({\n        state: {\n          publicPages: [\n            'login',\n            'signup'\n          ]\n        }\n      })\n    ]\n  })\n}\n\nexport default createStore\n```\n\nNotice in the above example, I've added a `publicPages` property to the auth state.  Let's now use this state to redirect the browser when it's not on a public page and there's no auth:\n\nIn your Nuxt project, create the file `/middleware/auth.js`.  Then edit the `nuxt.config.js` and add after the `head` property, add a string that references this routing middleware so it looks like this:\n\n*// nuxt.config.js*\n```js\nrouter: {\n  middleware: ['auth']\n},\n```\n\nNow open the middleware and paste the following content.  All it does is redirect the page if there's no auth data in the store.\n\n```js\n// If it's a private page and there's no payload, redirect.\nexport default function (context) {\n  const { store, redirect, route } = context\n  const { auth } = store.state\n\n  if (!auth.publicPages.includes(route.name) && !auth.payload) {\n    return redirect('login')\n  }\n}\n```\n\nFor a summary, the `initAuth` function will make auth available in the state without much configuration.\n\n### Authentication storage with Nuxt\n\nSince Nuxt is running both client- and server side, it has limits on the availability of certain browser specific variables like `window`. Because of that, trying to configure the feathers client to use `window.localStorage` will result in an error or unexpected / not working behaviour. There's a simple solution though:\n\nWhen you configure the auth module in your feathers-client, use [cookie-storage](https://www.npmjs.com/package/cookie-storage) instead of `window.localStorage` to store the authentication data inside a cookie.\n\n```\nimport { CookieStorage } from 'cookie-storage';\n\nconst feathersClient = feathers()\n  .configure(auth({ storage: new CookieStorage() }));\n```\n\n### Configuration\nYou can provide a `userService` in the auth plugin's options to automatically populate the user upon successful login.\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex from 'feathers-vuex'\n\nconst { auth } = feathersVuex(feathersClient, { idField: '_id' })\n\nconst store = new Vuex.Store({\n  plugins: [\n    auth({ userService: 'users' }) // if your user service endpoint is named 'users'\n  ]\n})\n```\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"743ffc55b59f82cc15062f5773b335b0a7108982","_id":"feathers-vuex@1.2.0-pre.13","_npmVersion":"5.8.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-4lqFmWPE7t4GfVNG5n2lceUHIyDjKimjq2RiheLWpThDK5XwamSJujoN+6aOBME+XId80mA3DuVe7yjT6B4lKw==","shasum":"98a95a5531c1b1f01533db5dd7fd3f2653bda782","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.2.0-pre.13.tgz","fileCount":26,"unpackedSize":287427,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDqTcdkt14cKgc5NHFHesg5a4EA1C7ZvKjujoKvRd8vqgIgQia6uEVsxp1rgAml1PB8Tnnkf65FZ1zfn8Z50/MhnN8="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.2.0-pre.13_1522626459207_0.5711008416435055"},"_hasShrinkwrap":false},"1.2.0-pre.14":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.2.0-pre.14","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.4.1","vue":"^2.4.4","vuex":"^2.4.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n> Integrate the Feathers Client into Vuex\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Important\nThe current version of `feathers-vuex` no longer requires (nor does it support) using `feathers-reactive` (0.5.x). `feathers-vuex` now takes full advantage of Vue's built-in reactivity.  If you still need to use `feathers-vuex` with `feathers-reactive`, install `feathers-vuex@0.4.x`.\n\n## Use\n`feathers-vuex` is a set of two utilities for integrating the Feathers Client into your Vuex store.  It allows you to eliminate boilerplate and easily customize the store.  To get it working, we first need a Feathers Client.  Note: as of version 1.0.0 `feathers-reactive` is no longer required to get socket updates.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\nconst { serviceModule, serviceModel, servicePlugin } = service\n\n\nconst api1Client = feathersVuex(feathersClient, { idField: '_id', apiPrefix: 'api1' })\nconst api2Client = feathersVuex(feathersClient2, { idField: '_id' })\n\n\nVue.use(FeathersVuex)\n\nconst todoModule = serviceModule('todos')\n\n// const Model = serviceModel(todoModule) // TodoModel is an extensible class\nconst Model = serviceModel()\nclass TodoModel = extends Model {}\nconst todoPlugin = servicePlugin(todoModule, TodoModel)\n\nconst TaskModel extends Model {}\n\nexport { TaskModel }\n\n\ncreated () {\n  this.todo = new this.$FeathersVuex.api1.Todo(data)\n}\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    servicePlugin('/tasks', TaskModel), // With our potentially customized TodoModel\n\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // turn off socket event listeners. It's true by default\n      modelName: 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    auth()\n  ]\n})\n```\n\nThe new `feathers-vuex` API is more Vuex-like.  All of the functionality remains the same, but it is no longer configured like a FeathersJS plugin.  While the previous functionality was nice for prototyping, it didn't work well in SSR scenarios, like with Nuxt.\n\nTo see `feathers-vuex` in a working vue-cli application, check out [`feathers-chat-vuex`](https://github.com/feathers-plus/feathers-chat-vuex).\n\n## A note about feathers-reactive\nPrevious versions of this plugin required both RxJS and `feathers-reactive` to receive realtime updates.  `feathers-vuex@1.0.0` has socket messaging support built in and takes advantage of Vuex reactivity, so RxJS and `feathers-reactive` are no longer required.\n\n## API Documentation\n\n### Global Configuration\n\nThe following default options are available for configuration:\n\n```js\nconst defaultOptions = {\n  idField: 'id', // The field in each record that will contain the id\n  autoRemove: false, // automatically remove records missing from responses (only use with feathers-rest)\n  nameStyle: 'short', // Determines the source of the module name. 'short' or 'path'\n  enableEvents: true, // Set to false to explicitly disable socket event handlers.\n  preferUpdate: false, // When true, calling modelInstance.save() will do an update instead of a patch.\n}\n```\n\nEach service module can also be individually configured.\n\n### The Vuex modules\n\nThere are two modules included:\n1. The Service module adds a Vuex store for new services.\n2. The Auth module sets up the Vuex store for authentication / logout.\n\n## Service Module\nThe `Service Module` sets up services in the Vuex store.  Each service will have the below default state in its store.\n\n### Service State\nEach service comes loaded with the following default state:\n```js\n{\n    ids: [],\n    keyedById: {}, // A hash map, keyed by id of each item\n    currentId: undefined, // The id of the item marked as current\n    copy: undefined, // A deep copy of the current item\n    idField: 'id',\n    servicePath: 'v1/todos' // The full service path\n    autoRemove: false, // Indicates that this service will not automatically remove results missing from subsequent requests.\n    paginate: false, // Indicates if pagination is enabled on the Feathers service.\n\n    isFindPending: false,\n    isGetPending: false,\n    isCreatePending: false,\n    isUpdatePending: false,\n    isPatchPending: false,\n    isRemovePending: false,\n\n    errorOnfind: undefined,\n    errorOnGet: undefined,\n    errorOnCreate: undefined,\n    errorOnUpdate: undefined,\n    errorOnPatch: undefined,\n    errorOnRemove: undefined\n  }\n```\n\nThe following attributes are available in each service module's state:\n\n- `ids {Array}` - an array of plain ids representing the ids that belong to each object in the `keyedById` map.\n- `keyedById {Object}` - a hash map keyed by the id of each item.\n- `currentId {Number|String}` - the id of the item marked as current.\n- `copy {Object}` - a deep copy of the current item at the moment it was marked as current. You can make changes to the copy without modifying the `current`.  You can then use the `commitCopy` mutation to save the changes as the `current` or `rejectCopy` to revert `copy` to once again match `current`.\n- `servicePath {String}` - the full service path, even if you alias the namespace to something else.\n- `idField {String}` - the name of the field that holds each item's id. *Default: `'id'`*\n- `paginate {Boolean}` - Indicates if the service has pagination turned on.  This changes the response of the `find` action and getter to match the response that Feathers gives.\n\nThe following state attributes allow you to bind to the pending state of requests:\n- `isFindPending {Boolean}` - `true` if there's a pending `find` request.  `false` if not.\n- `isGetPending {Boolean}` - `true` if there's a pending `get` request.  `false` if not.\n- `isCreatePending {Boolean}` - `true` if there's a pending `create` request.  `false` if not.\n- `isUpdatePending {Boolean}` - `true` if there's a pending `update` request.  `false` if not.\n- `isPatchPending {Boolean}` - `true` if there's a pending `patch` request.  `false` if not.\n- `isRemovePending {Boolean}` - `true` if there's a pending `remove` request.  `false` if not.\n\nThe following state attribute will be populated with any request error, serialized as a plain object:\n- `errorOnFind {Error}`\n- `errorOnGet {Error}`\n- `errorOnCreate {Error}`\n- `errorOnUpdate {Error}`\n- `errorOnPatch {Error}`\n- `errorOnRemo {Error}`\n\n### Service Getters\nService modules include the following getters:\n- `list {Array}` - an array of items. The array form of `keyedById`  Read only.\n- `find(params) {Function}` - a helper function that allows you to use the [Feathers Adapter Common API](https://docs.feathersjs.com/api/databases/common.html) and [Query API](https://docs.feathersjs.com/api/databases/querying.html) to pull data from the store.  This allows you to treat the store just like a local Feathers database adapter (but without hooks).\n  - `params {Object}` - an object with a `query` object and an optional `paginate` boolean property. The `query` is in the FeathersJS query format.  You can set `params.paginate` to `false` to disable pagination for a single request.\n- `get(id[, params]) {Function}` - a function that allows you to query the store for a single item, by id.  It works the same way as `get` requests in Feathers database adapters.\n  - `id {Number|String}` - the id of the data to be retrieved by id from the store.\n  - `params {Object}` - an object containing a Feathers `query` object.\n- `current {Object}` - the object representing the `currentId`. It's pulled from the `keyedById` state.\n- `getCopy {Object}` - An alias to the `state.copy`.\n\n### Service Mutations\nThe following mutations are included in each service module.\n> **Note:** you would typically not call these directly, but instead with `store.commit('removeItem', 'itemId')`. Using vuex's mapMutations on a Vue component can simplify that to `this.removeItem('itemId')`\n\n#### `addItem(state, item)`\nAdds a single item to the `keyedById` map.\n- `item {Object}` - The item to be added to the store.\n\n#### `addItems(state, items)`\nAdds an array of items to the `keyedById` map.\n- `items {Array}` - the items to be added to the store.\n\n#### `updateItem(state, item)`\nUpdates an item in the store to match the passed in `item`.\n- `item {Object}` the item, including `id`, to replace the currently-stored item.\n\n#### `updateItems(state, items)`\nUpdates multiple items in the store to match the passed in array of items.\n- `items {Array}` - An array of items.\n\n#### `removeItem(state, item)`\nRemoves a single item.  `item` can be\n- `item {Number|String|Object}` - The item or id of the item to be deleted.\n\n#### `removeItems(state, items)`\nRemoves the passed in items or ids from the store.\n- `items {Array}` - An array of ids or of objects with ids that will be removed from the data store.\n\n#### `setCurrent(state, item)`\n- `item {Number|String|Object}` - the object with id to be set as the current item, or the id of the object in the store that should become the `current` item.  Setting the `current` item or id also create the deep-cloned `copy`.\n\n#### `commitCopy(state)`\nSaves changes from the `copy` to the `current` item.\n\n#### `rejectCopy(state)`\nRe-copies the data from `current` to `copy`, restoring the original copy.\n\n#### `clearCurrent(state)`\nClears the `current` item, which also clears the copy.\n\n#### `clearList(state)`\nClears the `list`, excepting the `current` item.\n\n#### `clearAll(state)`\nClears all data from `ids`, `keyedById`, and `currentId`\n\n#### Mutations for Managing Pending State\nThe following mutations are called automatically by the service actions, and will rarely, if ever, need to be used manually.\n- `setFindPending(state)` - sets `isFindPending` to `true`\n- `unsetFindPending(state)` - sets `isFindPending` to `false`\n- `setGetPending(state)` - sets `isGetPending` to `true`\n- `unsetGetPending(state)` - sets `isGetPending` to `false`\n- `setCreatePending(state)` - sets `isCreatePending` to `true`\n- `unsetCreatePending(state)` - sets `isCreatePending` to `false`\n- `setUpdatePending(state)` - sets `isUpdatePending` to `true`\n- `unsetUpdatePending(state)` - sets `isUpdatePending` to `false`\n- `setPatchPending(state)` - sets `isPatchPending` to `true`\n- `unsetPatchPending(state)` - sets `isPatchPending` to `false`\n- `setRemovePending(state)` - sets `isRemovePending` to `true`\n- `unsetRemovePending(state)` - sets `isRemovePending` to `false`\n\n#### Mutations for Managing Errors\nThe following mutations are called automatically by the service actions, and will rarely need to be used manually.\n- `setFindError(state, error)`\n- `clearFindError(state)`\n- `setGetError(state, error)`\n- `clearGetError(state)`\n- `setCreateError(state, error)`\n- `clearCreateError(state)`\n- `setUpdateError(state, error)`\n- `clearUpdateError(state)`\n- `setPatchError(state, error)`\n- `clearPatchError(state)`\n- `setRemoveError(state, error)`\n- `clearRemoveError(state)`\n\n### Service Actions\nAn action is included for each of the Feathers service interface methods.  These actions will affect changes in both the Feathers API server and the Vuex store.\n\nAll of the [Feathers Service Methods](https://docs.feathersjs.com/api/databases/common.html#service-methods) are supported.  Because Vuex only supports providing a single argument to actions, there is a slight change in syntax that works well.  If you need to pass multiple arguments to a service method, pass an array to the action with the order of the array elements matching the order of the arguments.  See each method for examples.\n\n> Note: If you use the Feathers service methods, directly, the store will not change. Only the actions will cause store changes.\n\n#### `find(params)`\nQuery an array of records from the server & add to the Vuex store.\n- `params {Object}` - An object containing a `query` object and an optional `paginate` boolean.  You can set `params.paginate` to `false` to disable pagination for a single request.\n\n```js\nlet params = {query: {completed: true}}\nstore.dispatch('todos/find', params)\n```\n\nSee the section about pagination, below, for more information that is applicable to the `find` action.\n\n#### `get(id)` or `get([id, params])`\nQuery a single record from the server & add to Vuex store\n- `id {Number|String}` - the `id` of the record being requested from the API server.\n- `params {Object}` - An object containing a `query` object.\n\n```js\nstore.dispatch('todos/get', 1)\n\n// Use an array to pass params\nlet params = {}\nstore.dispatch('todos/get', [1, params])\n```\n\n#### `create(data)`\nCreate one or multiple records.\n- `data {Object|Array}` - if an object is provided, a single record will be created. If an array of objects is provided, multiple records will be created.\n\n```js\nlet newTodo = {description: 'write good tests'}\nstore.dispatch('todos/create', newTodo)\n```\n\n\n#### `update(paramArray)`\nUpdate (overwrite) a record.\n- `paramArray {Array}` - array containing the three parameters update takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will overwrite the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {id: 5, description: 'write your tests', completed: true}\nlet params = {}\n// Overwrite item 1 with the above data (FYI: Most databases won't let you change the id.)\nstore.dispatch('todos/update', [1, data, params])\n```\n\nAlternatively in a Vue component\n```\nimport { mapActions } from 'vuex'\nexport default {\n  methods: {\n    ...mapActions('todos', [ 'update' ]),\n    addTodo () {\n      let data = {id: 5, description: 'write your tests', completed: true}\n      this.update([1, data, {}])\n    }\n  }\n}\n```\n\n#### `patch(paramArray)`\nPatch (merge in changes) one or more records\n- `paramArray {Array}` - array containing the three parameters patch takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will be merged into the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {description: 'write your tests', completed: true}\nlet params = {}\nstore.dispatch('todos/patch', [1, data, params])\n```\n\n\n#### `remove(id)`\nRemove/delete the record with the given `id`.\n- `id {Number|String}` - the `id` of the existing record being requested from the API server.\n\n```js\nstore.dispatch('todos/remove', 1)\n```\n\n## Querying with Find & Pagination\nBoth the `find` action and the `find` getter support pagination.  There are differences in how they work.\n\n### The `find` action\n\nThe `find` action queries data from the remote server.  It returns a promise that resolves to the response from the server.  The presence of pagination data will be determined by the server.\n\n`feathers-vuex@1.0.0` can store pagination data on a per-query basis.  The `pagination` store attribute maps queries to their most-recent pagination data.  It's an empty object by default, but after performing a single query (with pagination in the response), it will have a `default` property.  This property stores pagination information for the query.  Here's what it will look like:\n\n**`params = { query: {} }`**\n```js\n{\n  pagination: {\n    default: {\n      query: {}, // Same as params.query\n      ids: [0, 1, 2], // the ids in the store for the records that were returned from the server\n      limit: 0, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\nIt's possible that you'll want to store pagination information for more than one query.  This might be for different components making queries against the same service, for example.  You can use the `params.qid` (query identifier) property to assign a name to the query.  If you set a `qid` of `mainListView`, for example, the pagination for this query will show up under `pagination.mainListView`.  The `pagination.default` property will be used any time a `params.qid` is not provided.  Here's an example of what this might look like:\n\n**`params = { query: { $limit: 1 }, qid: 'mainListView' }`**\n```js\n// Data in the store\n{\n  pagination: {\n    mainListView: {\n      query: { $limit: 1 }, // Same as params.query\n      ids: [0], // the ids in the store for the records that were returned from the server\n      limit: 1, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\n> Note: The `find` action no longer returns reactive lists.  The list data will still be reactive, but new matches that arrive from the server do NOT get automatically added to lists.  There are two solutions to this:\n- Use the `find` action to pull in data from the server.  Use the `find` getter to pull a reactive list from the store.\n- Configure the `feathers-reactive` plugin with RxJS on your Feathers Client instance.  [Read the docs for implementation details.](https://github.com/feathers-plus/feathers-reactive)\n\n### The `find` getter\n\nThe `find` getter queries data from the local store using the same Feathers query syntax as on the server.  It is synchronous and returns the results of the query with pagination.  Pagination cannot be disabled.  It accepts a params object with a `query` attribute.  It does not use any other special attributes.  The returned object looks just like a paginated result that you would receive from the server:\n\n**`params = { query: {} }`**\n```js\n// The returned results object\n{\n  data: [{ _id: 1, ...etc }, ...etc],\n  limit: 0,\n  skip: 0,\n  total: 3\n}\n```\n\n\n###\n\n## Customizing a Service's Default Store\n\nAs shown in the first example, the service module allows you to customize its store:\n\n```js\nconst store = new Vuex.Store({\n  plugins: [\n    // Add custom state, getters, mutations, or actions, if needed\n    service('things', {\n      state: {\n        test: true\n      },\n      getters: {\n        getSomeData () {\n          return 'some data'\n        }\n      },\n      mutations: {\n        setTestToFalse (state) {\n          state.test = false\n        },\n        setTestToTrue (state) {\n          state.test = true\n        }\n      },\n      actions: {\n        asyncStuff ({ commit, dispatch }, args) {\n          commit('setTestToTrue')\n\n          return doSomethingAsync(id, params)\n            .then(result => {\n              commit('setTestToFalse')\n              return dispatch('otherAsyncStuff', result)\n            })\n        },\n        otherAsyncStuff ({commit}, args) {\n          return new Promise.resolve(result)\n        }\n      }\n    })\n  ]\n})\n\nassert(store.getters['todos/oneTwoThree'] === 123, 'the custom getter was available')\nstore.dispatch('todos/trigger')\nassert(store.state.todos.isTrue === true, 'the custom action was run')\n```\n\n## Auth Module\nThe Auth module helps setup your app for login / logout.  It includes the following state by default:\n```js\n{\n  accessToken: undefined, // The JWT\n  payload: undefined, // The JWT payload\n\n  isAuthenticatePending: false,\n  isLogoutPending: false,\n\n  errorOnAuthenticate: undefined,\n  errorOnLogout: undefined\n}\n```\n\n### Actions\nThe following actions are included in the `auth` module:\n- `authenticate`: use instead of `feathersClient.authenticate()`\n- `logout`: use instead of `feathersClient.logout()`\nThe Vuex auth store may not update if you use the feathers client version.\n\n## Working with Auth & Nuxt\n\n`feathers-vuex@1.0.0` ships with utilities that help with Nuxt auth related to JSON Web Tokens (JWT).  The most important utility is the `initAuth` utility.  It's for use during Nuxt's `nuxtServerInit` method, and sets up auth data automatically.  Here's an example store that uses it:\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex, { initAuth } from 'feathers-vuex'\n\nconst { service, auth } = feathersVuex(feathersClient)\n\nconst createStore = () => {\n  return new Vuex.Store({\n    state: {},\n    mutations: {\n      increment (state) {\n        state.counter++\n      }\n    },\n    actions: {\n      nuxtServerInit ({ commit, dispatch }, { req }) {\n        return initAuth({\n          commit,\n          dispatch,\n          req,\n          moduleName: 'auth',\n          cookieName: 'feathers-jwt'\n        })\n      }\n    },\n    plugins: [\n      service('courses'),\n      auth({\n        state: {\n          publicPages: [\n            'login',\n            'signup'\n          ]\n        }\n      })\n    ]\n  })\n}\n\nexport default createStore\n```\n\nNotice in the above example, I've added a `publicPages` property to the auth state.  Let's now use this state to redirect the browser when it's not on a public page and there's no auth:\n\nIn your Nuxt project, create the file `/middleware/auth.js`.  Then edit the `nuxt.config.js` and add after the `head` property, add a string that references this routing middleware so it looks like this:\n\n*// nuxt.config.js*\n```js\nrouter: {\n  middleware: ['auth']\n},\n```\n\nNow open the middleware and paste the following content.  All it does is redirect the page if there's no auth data in the store.\n\n```js\n// If it's a private page and there's no payload, redirect.\nexport default function (context) {\n  const { store, redirect, route } = context\n  const { auth } = store.state\n\n  if (!auth.publicPages.includes(route.name) && !auth.payload) {\n    return redirect('login')\n  }\n}\n```\n\nFor a summary, the `initAuth` function will make auth available in the state without much configuration.\n\n### Authentication storage with Nuxt\n\nSince Nuxt is running both client- and server side, it has limits on the availability of certain browser specific variables like `window`. Because of that, trying to configure the feathers client to use `window.localStorage` will result in an error or unexpected / not working behaviour. There's a simple solution though:\n\nWhen you configure the auth module in your feathers-client, use [cookie-storage](https://www.npmjs.com/package/cookie-storage) instead of `window.localStorage` to store the authentication data inside a cookie.\n\n```\nimport { CookieStorage } from 'cookie-storage'\n\nconst feathersClient = feathers()\n  .configure(auth({ storage: new CookieStorage() }))\n```\n\n### Configuration\nYou can provide a `userService` in the auth plugin's options to automatically populate the user upon successful login.\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex from 'feathers-vuex'\n\nconst { auth } = feathersVuex(feathersClient, { idField: '_id' })\n\nconst store = new Vuex.Store({\n  plugins: [\n    auth({ userService: 'users' }) // if your user service endpoint is named 'users'\n  ]\n})\n```\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"efac5b4b308d8732cb2e3915c82bef437988eec4","_id":"feathers-vuex@1.2.0-pre.14","_npmVersion":"5.8.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-Nn047s3QUBZdp3USs8B0t3UoBZ3GqhujjWaczlASxW+SZQvIqcnMCN8TsVxM0UD+5lcsRJvAvakd5pGHToIdzQ==","shasum":"cac4242ad4c017b33358531d018ec529d098c8f1","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.2.0-pre.14.tgz","fileCount":26,"unpackedSize":287798,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGtsOXttDZpv3rUrtUt85Juq2/87pOvMA85q/ctaehXTAiAmA0kQNlF7HhZ4xE/NvzTndOTgVffe90N4BfEbWhyFuA=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.2.0-pre.14_1522626960504_0.7429318487200371"},"_hasShrinkwrap":false},"1.2.0-pre.15":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.2.0-pre.15","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && npm run changelog && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.4.1","vue":"^2.4.4","vuex":"^2.4.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n> Integrate the Feathers Client into Vuex\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Important\nThe current version of `feathers-vuex` no longer requires (nor does it support) using `feathers-reactive` (0.5.x). `feathers-vuex` now takes full advantage of Vue's built-in reactivity.  If you still need to use `feathers-vuex` with `feathers-reactive`, install `feathers-vuex@0.4.x`.\n\n## Use\n`feathers-vuex` is a set of two utilities for integrating the Feathers Client into your Vuex store.  It allows you to eliminate boilerplate and easily customize the store.  To get it working, we first need a Feathers Client.  Note: as of version 1.0.0 `feathers-reactive` is no longer required to get socket updates.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\nconst { serviceModule, serviceModel, servicePlugin } = service\n\n\nconst api1Client = feathersVuex(feathersClient, { idField: '_id', apiPrefix: 'api1' })\nconst api2Client = feathersVuex(feathersClient2, { idField: '_id' })\n\n\nVue.use(FeathersVuex)\n\nconst todoModule = serviceModule('todos')\n\n// const Model = serviceModel(todoModule) // TodoModel is an extensible class\nconst Model = serviceModel()\nclass TodoModel = extends Model {}\nconst todoPlugin = servicePlugin(todoModule, TodoModel)\n\nconst TaskModel extends Model {}\n\nexport { TaskModel }\n\n\ncreated () {\n  this.todo = new this.$FeathersVuex.api1.Todo(data)\n}\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    servicePlugin('/tasks', TaskModel), // With our potentially customized TodoModel\n\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // turn off socket event listeners. It's true by default\n      modelName: 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    auth()\n  ]\n})\n```\n\nThe new `feathers-vuex` API is more Vuex-like.  All of the functionality remains the same, but it is no longer configured like a FeathersJS plugin.  While the previous functionality was nice for prototyping, it didn't work well in SSR scenarios, like with Nuxt.\n\nTo see `feathers-vuex` in a working vue-cli application, check out [`feathers-chat-vuex`](https://github.com/feathers-plus/feathers-chat-vuex).\n\n## A note about feathers-reactive\nPrevious versions of this plugin required both RxJS and `feathers-reactive` to receive realtime updates.  `feathers-vuex@1.0.0` has socket messaging support built in and takes advantage of Vuex reactivity, so RxJS and `feathers-reactive` are no longer required.\n\n## API Documentation\n\n### Global Configuration\n\nThe following default options are available for configuration:\n\n```js\nconst defaultOptions = {\n  idField: 'id', // The field in each record that will contain the id\n  autoRemove: false, // automatically remove records missing from responses (only use with feathers-rest)\n  nameStyle: 'short', // Determines the source of the module name. 'short' or 'path'\n  enableEvents: true, // Set to false to explicitly disable socket event handlers.\n  preferUpdate: false, // When true, calling modelInstance.save() will do an update instead of a patch.\n}\n```\n\nEach service module can also be individually configured.\n\n### The Vuex modules\n\nThere are two modules included:\n1. The Service module adds a Vuex store for new services.\n2. The Auth module sets up the Vuex store for authentication / logout.\n\n## Service Module\nThe `Service Module` sets up services in the Vuex store.  Each service will have the below default state in its store.\n\n### Service State\nEach service comes loaded with the following default state:\n```js\n{\n    ids: [],\n    keyedById: {}, // A hash map, keyed by id of each item\n    currentId: undefined, // The id of the item marked as current\n    copy: undefined, // A deep copy of the current item\n    idField: 'id',\n    servicePath: 'v1/todos' // The full service path\n    autoRemove: false, // Indicates that this service will not automatically remove results missing from subsequent requests.\n    paginate: false, // Indicates if pagination is enabled on the Feathers service.\n\n    isFindPending: false,\n    isGetPending: false,\n    isCreatePending: false,\n    isUpdatePending: false,\n    isPatchPending: false,\n    isRemovePending: false,\n\n    errorOnfind: undefined,\n    errorOnGet: undefined,\n    errorOnCreate: undefined,\n    errorOnUpdate: undefined,\n    errorOnPatch: undefined,\n    errorOnRemove: undefined\n  }\n```\n\nThe following attributes are available in each service module's state:\n\n- `ids {Array}` - an array of plain ids representing the ids that belong to each object in the `keyedById` map.\n- `keyedById {Object}` - a hash map keyed by the id of each item.\n- `currentId {Number|String}` - the id of the item marked as current.\n- `copy {Object}` - a deep copy of the current item at the moment it was marked as current. You can make changes to the copy without modifying the `current`.  You can then use the `commitCopy` mutation to save the changes as the `current` or `rejectCopy` to revert `copy` to once again match `current`.\n- `servicePath {String}` - the full service path, even if you alias the namespace to something else.\n- `idField {String}` - the name of the field that holds each item's id. *Default: `'id'`*\n- `paginate {Boolean}` - Indicates if the service has pagination turned on.  This changes the response of the `find` action and getter to match the response that Feathers gives.\n\nThe following state attributes allow you to bind to the pending state of requests:\n- `isFindPending {Boolean}` - `true` if there's a pending `find` request.  `false` if not.\n- `isGetPending {Boolean}` - `true` if there's a pending `get` request.  `false` if not.\n- `isCreatePending {Boolean}` - `true` if there's a pending `create` request.  `false` if not.\n- `isUpdatePending {Boolean}` - `true` if there's a pending `update` request.  `false` if not.\n- `isPatchPending {Boolean}` - `true` if there's a pending `patch` request.  `false` if not.\n- `isRemovePending {Boolean}` - `true` if there's a pending `remove` request.  `false` if not.\n\nThe following state attribute will be populated with any request error, serialized as a plain object:\n- `errorOnFind {Error}`\n- `errorOnGet {Error}`\n- `errorOnCreate {Error}`\n- `errorOnUpdate {Error}`\n- `errorOnPatch {Error}`\n- `errorOnRemo {Error}`\n\n### Service Getters\nService modules include the following getters:\n- `list {Array}` - an array of items. The array form of `keyedById`  Read only.\n- `find(params) {Function}` - a helper function that allows you to use the [Feathers Adapter Common API](https://docs.feathersjs.com/api/databases/common.html) and [Query API](https://docs.feathersjs.com/api/databases/querying.html) to pull data from the store.  This allows you to treat the store just like a local Feathers database adapter (but without hooks).\n  - `params {Object}` - an object with a `query` object and an optional `paginate` boolean property. The `query` is in the FeathersJS query format.  You can set `params.paginate` to `false` to disable pagination for a single request.\n- `get(id[, params]) {Function}` - a function that allows you to query the store for a single item, by id.  It works the same way as `get` requests in Feathers database adapters.\n  - `id {Number|String}` - the id of the data to be retrieved by id from the store.\n  - `params {Object}` - an object containing a Feathers `query` object.\n- `current {Object}` - the object representing the `currentId`. It's pulled from the `keyedById` state.\n- `getCopy {Object}` - An alias to the `state.copy`.\n\n### Service Mutations\nThe following mutations are included in each service module.\n> **Note:** you would typically not call these directly, but instead with `store.commit('removeItem', 'itemId')`. Using vuex's mapMutations on a Vue component can simplify that to `this.removeItem('itemId')`\n\n#### `addItem(state, item)`\nAdds a single item to the `keyedById` map.\n- `item {Object}` - The item to be added to the store.\n\n#### `addItems(state, items)`\nAdds an array of items to the `keyedById` map.\n- `items {Array}` - the items to be added to the store.\n\n#### `updateItem(state, item)`\nUpdates an item in the store to match the passed in `item`.\n- `item {Object}` the item, including `id`, to replace the currently-stored item.\n\n#### `updateItems(state, items)`\nUpdates multiple items in the store to match the passed in array of items.\n- `items {Array}` - An array of items.\n\n#### `removeItem(state, item)`\nRemoves a single item.  `item` can be\n- `item {Number|String|Object}` - The item or id of the item to be deleted.\n\n#### `removeItems(state, items)`\nRemoves the passed in items or ids from the store.\n- `items {Array}` - An array of ids or of objects with ids that will be removed from the data store.\n\n#### `setCurrent(state, item)`\n- `item {Number|String|Object}` - the object with id to be set as the current item, or the id of the object in the store that should become the `current` item.  Setting the `current` item or id also create the deep-cloned `copy`.\n\n#### `commitCopy(state)`\nSaves changes from the `copy` to the `current` item.\n\n#### `rejectCopy(state)`\nRe-copies the data from `current` to `copy`, restoring the original copy.\n\n#### `clearCurrent(state)`\nClears the `current` item, which also clears the copy.\n\n#### `clearList(state)`\nClears the `list`, excepting the `current` item.\n\n#### `clearAll(state)`\nClears all data from `ids`, `keyedById`, and `currentId`\n\n#### Mutations for Managing Pending State\nThe following mutations are called automatically by the service actions, and will rarely, if ever, need to be used manually.\n- `setFindPending(state)` - sets `isFindPending` to `true`\n- `unsetFindPending(state)` - sets `isFindPending` to `false`\n- `setGetPending(state)` - sets `isGetPending` to `true`\n- `unsetGetPending(state)` - sets `isGetPending` to `false`\n- `setCreatePending(state)` - sets `isCreatePending` to `true`\n- `unsetCreatePending(state)` - sets `isCreatePending` to `false`\n- `setUpdatePending(state)` - sets `isUpdatePending` to `true`\n- `unsetUpdatePending(state)` - sets `isUpdatePending` to `false`\n- `setPatchPending(state)` - sets `isPatchPending` to `true`\n- `unsetPatchPending(state)` - sets `isPatchPending` to `false`\n- `setRemovePending(state)` - sets `isRemovePending` to `true`\n- `unsetRemovePending(state)` - sets `isRemovePending` to `false`\n\n#### Mutations for Managing Errors\nThe following mutations are called automatically by the service actions, and will rarely need to be used manually.\n- `setFindError(state, error)`\n- `clearFindError(state)`\n- `setGetError(state, error)`\n- `clearGetError(state)`\n- `setCreateError(state, error)`\n- `clearCreateError(state)`\n- `setUpdateError(state, error)`\n- `clearUpdateError(state)`\n- `setPatchError(state, error)`\n- `clearPatchError(state)`\n- `setRemoveError(state, error)`\n- `clearRemoveError(state)`\n\n### Service Actions\nAn action is included for each of the Feathers service interface methods.  These actions will affect changes in both the Feathers API server and the Vuex store.\n\nAll of the [Feathers Service Methods](https://docs.feathersjs.com/api/databases/common.html#service-methods) are supported.  Because Vuex only supports providing a single argument to actions, there is a slight change in syntax that works well.  If you need to pass multiple arguments to a service method, pass an array to the action with the order of the array elements matching the order of the arguments.  See each method for examples.\n\n> Note: If you use the Feathers service methods, directly, the store will not change. Only the actions will cause store changes.\n\n#### `find(params)`\nQuery an array of records from the server & add to the Vuex store.\n- `params {Object}` - An object containing a `query` object and an optional `paginate` boolean.  You can set `params.paginate` to `false` to disable pagination for a single request.\n\n```js\nlet params = {query: {completed: true}}\nstore.dispatch('todos/find', params)\n```\n\nSee the section about pagination, below, for more information that is applicable to the `find` action.\n\n#### `get(id)` or `get([id, params])`\nQuery a single record from the server & add to Vuex store\n- `id {Number|String}` - the `id` of the record being requested from the API server.\n- `params {Object}` - An object containing a `query` object.\n\n```js\nstore.dispatch('todos/get', 1)\n\n// Use an array to pass params\nlet params = {}\nstore.dispatch('todos/get', [1, params])\n```\n\n#### `create(data)`\nCreate one or multiple records.\n- `data {Object|Array}` - if an object is provided, a single record will be created. If an array of objects is provided, multiple records will be created.\n\n```js\nlet newTodo = {description: 'write good tests'}\nstore.dispatch('todos/create', newTodo)\n```\n\n\n#### `update(paramArray)`\nUpdate (overwrite) a record.\n- `paramArray {Array}` - array containing the three parameters update takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will overwrite the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {id: 5, description: 'write your tests', completed: true}\nlet params = {}\n// Overwrite item 1 with the above data (FYI: Most databases won't let you change the id.)\nstore.dispatch('todos/update', [1, data, params])\n```\n\nAlternatively in a Vue component\n```\nimport { mapActions } from 'vuex'\nexport default {\n  methods: {\n    ...mapActions('todos', [ 'update' ]),\n    addTodo () {\n      let data = {id: 5, description: 'write your tests', completed: true}\n      this.update([1, data, {}])\n    }\n  }\n}\n```\n\n#### `patch(paramArray)`\nPatch (merge in changes) one or more records\n- `paramArray {Array}` - array containing the three parameters patch takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will be merged into the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {description: 'write your tests', completed: true}\nlet params = {}\nstore.dispatch('todos/patch', [1, data, params])\n```\n\n\n#### `remove(id)`\nRemove/delete the record with the given `id`.\n- `id {Number|String}` - the `id` of the existing record being requested from the API server.\n\n```js\nstore.dispatch('todos/remove', 1)\n```\n\n## Querying with Find & Pagination\nBoth the `find` action and the `find` getter support pagination.  There are differences in how they work.\n\n### The `find` action\n\nThe `find` action queries data from the remote server.  It returns a promise that resolves to the response from the server.  The presence of pagination data will be determined by the server.\n\n`feathers-vuex@1.0.0` can store pagination data on a per-query basis.  The `pagination` store attribute maps queries to their most-recent pagination data.  It's an empty object by default, but after performing a single query (with pagination in the response), it will have a `default` property.  This property stores pagination information for the query.  Here's what it will look like:\n\n**`params = { query: {} }`**\n```js\n{\n  pagination: {\n    default: {\n      query: {}, // Same as params.query\n      ids: [0, 1, 2], // the ids in the store for the records that were returned from the server\n      limit: 0, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\nIt's possible that you'll want to store pagination information for more than one query.  This might be for different components making queries against the same service, for example.  You can use the `params.qid` (query identifier) property to assign a name to the query.  If you set a `qid` of `mainListView`, for example, the pagination for this query will show up under `pagination.mainListView`.  The `pagination.default` property will be used any time a `params.qid` is not provided.  Here's an example of what this might look like:\n\n**`params = { query: { $limit: 1 }, qid: 'mainListView' }`**\n```js\n// Data in the store\n{\n  pagination: {\n    mainListView: {\n      query: { $limit: 1 }, // Same as params.query\n      ids: [0], // the ids in the store for the records that were returned from the server\n      limit: 1, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\n> Note: The `find` action no longer returns reactive lists.  The list data will still be reactive, but new matches that arrive from the server do NOT get automatically added to lists.  There are two solutions to this:\n- Use the `find` action to pull in data from the server.  Use the `find` getter to pull a reactive list from the store.\n- Configure the `feathers-reactive` plugin with RxJS on your Feathers Client instance.  [Read the docs for implementation details.](https://github.com/feathers-plus/feathers-reactive)\n\n### The `find` getter\n\nThe `find` getter queries data from the local store using the same Feathers query syntax as on the server.  It is synchronous and returns the results of the query with pagination.  Pagination cannot be disabled.  It accepts a params object with a `query` attribute.  It does not use any other special attributes.  The returned object looks just like a paginated result that you would receive from the server:\n\n**`params = { query: {} }`**\n```js\n// The returned results object\n{\n  data: [{ _id: 1, ...etc }, ...etc],\n  limit: 0,\n  skip: 0,\n  total: 3\n}\n```\n\n\n###\n\n## Customizing a Service's Default Store\n\nAs shown in the first example, the service module allows you to customize its store:\n\n```js\nconst store = new Vuex.Store({\n  plugins: [\n    // Add custom state, getters, mutations, or actions, if needed\n    service('things', {\n      state: {\n        test: true\n      },\n      getters: {\n        getSomeData () {\n          return 'some data'\n        }\n      },\n      mutations: {\n        setTestToFalse (state) {\n          state.test = false\n        },\n        setTestToTrue (state) {\n          state.test = true\n        }\n      },\n      actions: {\n        asyncStuff ({ commit, dispatch }, args) {\n          commit('setTestToTrue')\n\n          return doSomethingAsync(id, params)\n            .then(result => {\n              commit('setTestToFalse')\n              return dispatch('otherAsyncStuff', result)\n            })\n        },\n        otherAsyncStuff ({commit}, args) {\n          return new Promise.resolve(result)\n        }\n      }\n    })\n  ]\n})\n\nassert(store.getters['todos/oneTwoThree'] === 123, 'the custom getter was available')\nstore.dispatch('todos/trigger')\nassert(store.state.todos.isTrue === true, 'the custom action was run')\n```\n\n## Auth Module\nThe Auth module helps setup your app for login / logout.  It includes the following state by default:\n```js\n{\n  accessToken: undefined, // The JWT\n  payload: undefined, // The JWT payload\n\n  isAuthenticatePending: false,\n  isLogoutPending: false,\n\n  errorOnAuthenticate: undefined,\n  errorOnLogout: undefined\n}\n```\n\n### Actions\nThe following actions are included in the `auth` module:\n- `authenticate`: use instead of `feathersClient.authenticate()`\n- `logout`: use instead of `feathersClient.logout()`\nThe Vuex auth store may not update if you use the feathers client version.\n\n## Working with Auth & Nuxt\n\n`feathers-vuex@1.0.0` ships with utilities that help with Nuxt auth related to JSON Web Tokens (JWT).  The most important utility is the `initAuth` utility.  It's for use during Nuxt's `nuxtServerInit` method, and sets up auth data automatically.  Here's an example store that uses it:\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex, { initAuth } from 'feathers-vuex'\n\nconst { service, auth } = feathersVuex(feathersClient)\n\nconst createStore = () => {\n  return new Vuex.Store({\n    state: {},\n    mutations: {\n      increment (state) {\n        state.counter++\n      }\n    },\n    actions: {\n      nuxtServerInit ({ commit, dispatch }, { req }) {\n        return initAuth({\n          commit,\n          dispatch,\n          req,\n          moduleName: 'auth',\n          cookieName: 'feathers-jwt'\n        })\n      }\n    },\n    plugins: [\n      service('courses'),\n      auth({\n        state: {\n          publicPages: [\n            'login',\n            'signup'\n          ]\n        }\n      })\n    ]\n  })\n}\n\nexport default createStore\n```\n\nNotice in the above example, I've added a `publicPages` property to the auth state.  Let's now use this state to redirect the browser when it's not on a public page and there's no auth:\n\nIn your Nuxt project, create the file `/middleware/auth.js`.  Then edit the `nuxt.config.js` and add after the `head` property, add a string that references this routing middleware so it looks like this:\n\n*// nuxt.config.js*\n```js\nrouter: {\n  middleware: ['auth']\n},\n```\n\nNow open the middleware and paste the following content.  All it does is redirect the page if there's no auth data in the store.\n\n```js\n// If it's a private page and there's no payload, redirect.\nexport default function (context) {\n  const { store, redirect, route } = context\n  const { auth } = store.state\n\n  if (!auth.publicPages.includes(route.name) && !auth.payload) {\n    return redirect('login')\n  }\n}\n```\n\nFor a summary, the `initAuth` function will make auth available in the state without much configuration.\n\n### Authentication storage with Nuxt\n\nSince Nuxt is running both client- and server side, it has limits on the availability of certain browser specific variables like `window`. Because of that, trying to configure the feathers client to use `window.localStorage` will result in an error or unexpected / not working behaviour. There's a simple solution though:\n\nWhen you configure the auth module in your feathers-client, use [cookie-storage](https://www.npmjs.com/package/cookie-storage) instead of `window.localStorage` to store the authentication data inside a cookie.\n\n```\nimport { CookieStorage } from 'cookie-storage'\n\nconst feathersClient = feathers()\n  .configure(auth({ storage: new CookieStorage() }))\n```\n\n### Configuration\nYou can provide a `userService` in the auth plugin's options to automatically populate the user upon successful login.\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex from 'feathers-vuex'\n\nconst { auth } = feathersVuex(feathersClient, { idField: '_id' })\n\nconst store = new Vuex.Store({\n  plugins: [\n    auth({ userService: 'users' }) // if your user service endpoint is named 'users'\n  ]\n})\n```\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"1efe1295bffc56d260e6ac9b31a32df10a7c8fdf","_id":"feathers-vuex@1.2.0-pre.15","_npmVersion":"5.8.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-vxDGxECwyBd22T02VC025WwPlul+Ugou1fRvuVfOZv3RoHQZiYEw/rsjPORTM+Llk1kpLSrCvJAxQxlz4f1c/g==","shasum":"8d99aa13dbc06e686c7a04b6aa73f02d800030e7","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.2.0-pre.15.tgz","fileCount":26,"unpackedSize":287812,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF5hZjIV8EpoIb4Lq5/RMrP36YtJ3cU1qFT1sFM7teKvAiBoo9pM16YfjgVip7xv/2ihYjAX6ncxzyBnTaV90qkHAQ=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.2.0-pre.15_1522627103724_0.836316249897179"},"_hasShrinkwrap":false},"1.2.0-pre.16":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.2.0-pre.16","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.4.1","vue":"^2.4.4","vuex":"^2.4.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n> Integrate the Feathers Client into Vuex\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Important\nThe current version of `feathers-vuex` no longer requires (nor does it support) using `feathers-reactive` (0.5.x). `feathers-vuex` now takes full advantage of Vue's built-in reactivity.  If you still need to use `feathers-vuex` with `feathers-reactive`, install `feathers-vuex@0.4.x`.\n\n## Use\n`feathers-vuex` is a set of two utilities for integrating the Feathers Client into your Vuex store.  It allows you to eliminate boilerplate and easily customize the store.  To get it working, we first need a Feathers Client.  Note: as of version 1.0.0 `feathers-reactive` is no longer required to get socket updates.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\nconst { serviceModule, serviceModel, servicePlugin } = service\n\n\nconst api1Client = feathersVuex(feathersClient, { idField: '_id', apiPrefix: 'api1' })\nconst api2Client = feathersVuex(feathersClient2, { idField: '_id' })\n\n\nVue.use(FeathersVuex)\n\nconst todoModule = serviceModule('todos')\n\n// const Model = serviceModel(todoModule) // TodoModel is an extensible class\nconst Model = serviceModel()\nclass TodoModel = extends Model {}\nconst todoPlugin = servicePlugin(todoModule, TodoModel)\n\nconst TaskModel extends Model {}\n\nexport { TaskModel }\n\n\ncreated () {\n  this.todo = new this.$FeathersVuex.api1.Todo(data)\n}\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    servicePlugin('/tasks', TaskModel), // With our potentially customized TodoModel\n\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // turn off socket event listeners. It's true by default\n      modelName: 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    auth()\n  ]\n})\n```\n\nThe new `feathers-vuex` API is more Vuex-like.  All of the functionality remains the same, but it is no longer configured like a FeathersJS plugin.  While the previous functionality was nice for prototyping, it didn't work well in SSR scenarios, like with Nuxt.\n\nTo see `feathers-vuex` in a working vue-cli application, check out [`feathers-chat-vuex`](https://github.com/feathers-plus/feathers-chat-vuex).\n\n## A note about feathers-reactive\nPrevious versions of this plugin required both RxJS and `feathers-reactive` to receive realtime updates.  `feathers-vuex@1.0.0` has socket messaging support built in and takes advantage of Vuex reactivity, so RxJS and `feathers-reactive` are no longer required.\n\n## API Documentation\n\n### Global Configuration\n\nThe following default options are available for configuration:\n\n```js\nconst defaultOptions = {\n  idField: 'id', // The field in each record that will contain the id\n  autoRemove: false, // automatically remove records missing from responses (only use with feathers-rest)\n  nameStyle: 'short', // Determines the source of the module name. 'short' or 'path'\n  enableEvents: true, // Set to false to explicitly disable socket event handlers.\n  preferUpdate: false, // When true, calling modelInstance.save() will do an update instead of a patch.\n}\n```\n\nEach service module can also be individually configured.\n\n### The Vuex modules\n\nThere are two modules included:\n1. The Service module adds a Vuex store for new services.\n2. The Auth module sets up the Vuex store for authentication / logout.\n\n## Service Module\nThe `Service Module` sets up services in the Vuex store.  Each service will have the below default state in its store.\n\n### Service State\nEach service comes loaded with the following default state:\n```js\n{\n    ids: [],\n    keyedById: {}, // A hash map, keyed by id of each item\n    currentId: undefined, // The id of the item marked as current\n    copy: undefined, // A deep copy of the current item\n    idField: 'id',\n    servicePath: 'v1/todos' // The full service path\n    autoRemove: false, // Indicates that this service will not automatically remove results missing from subsequent requests.\n    paginate: false, // Indicates if pagination is enabled on the Feathers service.\n\n    isFindPending: false,\n    isGetPending: false,\n    isCreatePending: false,\n    isUpdatePending: false,\n    isPatchPending: false,\n    isRemovePending: false,\n\n    errorOnfind: undefined,\n    errorOnGet: undefined,\n    errorOnCreate: undefined,\n    errorOnUpdate: undefined,\n    errorOnPatch: undefined,\n    errorOnRemove: undefined\n  }\n```\n\nThe following attributes are available in each service module's state:\n\n- `ids {Array}` - an array of plain ids representing the ids that belong to each object in the `keyedById` map.\n- `keyedById {Object}` - a hash map keyed by the id of each item.\n- `currentId {Number|String}` - the id of the item marked as current.\n- `copy {Object}` - a deep copy of the current item at the moment it was marked as current. You can make changes to the copy without modifying the `current`.  You can then use the `commitCopy` mutation to save the changes as the `current` or `rejectCopy` to revert `copy` to once again match `current`.\n- `servicePath {String}` - the full service path, even if you alias the namespace to something else.\n- `idField {String}` - the name of the field that holds each item's id. *Default: `'id'`*\n- `paginate {Boolean}` - Indicates if the service has pagination turned on.  This changes the response of the `find` action and getter to match the response that Feathers gives.\n\nThe following state attributes allow you to bind to the pending state of requests:\n- `isFindPending {Boolean}` - `true` if there's a pending `find` request.  `false` if not.\n- `isGetPending {Boolean}` - `true` if there's a pending `get` request.  `false` if not.\n- `isCreatePending {Boolean}` - `true` if there's a pending `create` request.  `false` if not.\n- `isUpdatePending {Boolean}` - `true` if there's a pending `update` request.  `false` if not.\n- `isPatchPending {Boolean}` - `true` if there's a pending `patch` request.  `false` if not.\n- `isRemovePending {Boolean}` - `true` if there's a pending `remove` request.  `false` if not.\n\nThe following state attribute will be populated with any request error, serialized as a plain object:\n- `errorOnFind {Error}`\n- `errorOnGet {Error}`\n- `errorOnCreate {Error}`\n- `errorOnUpdate {Error}`\n- `errorOnPatch {Error}`\n- `errorOnRemo {Error}`\n\n### Service Getters\nService modules include the following getters:\n- `list {Array}` - an array of items. The array form of `keyedById`  Read only.\n- `find(params) {Function}` - a helper function that allows you to use the [Feathers Adapter Common API](https://docs.feathersjs.com/api/databases/common.html) and [Query API](https://docs.feathersjs.com/api/databases/querying.html) to pull data from the store.  This allows you to treat the store just like a local Feathers database adapter (but without hooks).\n  - `params {Object}` - an object with a `query` object and an optional `paginate` boolean property. The `query` is in the FeathersJS query format.  You can set `params.paginate` to `false` to disable pagination for a single request.\n- `get(id[, params]) {Function}` - a function that allows you to query the store for a single item, by id.  It works the same way as `get` requests in Feathers database adapters.\n  - `id {Number|String}` - the id of the data to be retrieved by id from the store.\n  - `params {Object}` - an object containing a Feathers `query` object.\n- `current {Object}` - the object representing the `currentId`. It's pulled from the `keyedById` state.\n- `getCopy {Object}` - An alias to the `state.copy`.\n\n### Service Mutations\nThe following mutations are included in each service module.\n> **Note:** you would typically not call these directly, but instead with `store.commit('removeItem', 'itemId')`. Using vuex's mapMutations on a Vue component can simplify that to `this.removeItem('itemId')`\n\n#### `addItem(state, item)`\nAdds a single item to the `keyedById` map.\n- `item {Object}` - The item to be added to the store.\n\n#### `addItems(state, items)`\nAdds an array of items to the `keyedById` map.\n- `items {Array}` - the items to be added to the store.\n\n#### `updateItem(state, item)`\nUpdates an item in the store to match the passed in `item`.\n- `item {Object}` the item, including `id`, to replace the currently-stored item.\n\n#### `updateItems(state, items)`\nUpdates multiple items in the store to match the passed in array of items.\n- `items {Array}` - An array of items.\n\n#### `removeItem(state, item)`\nRemoves a single item.  `item` can be\n- `item {Number|String|Object}` - The item or id of the item to be deleted.\n\n#### `removeItems(state, items)`\nRemoves the passed in items or ids from the store.\n- `items {Array}` - An array of ids or of objects with ids that will be removed from the data store.\n\n#### `setCurrent(state, item)`\n- `item {Number|String|Object}` - the object with id to be set as the current item, or the id of the object in the store that should become the `current` item.  Setting the `current` item or id also create the deep-cloned `copy`.\n\n#### `commitCopy(state)`\nSaves changes from the `copy` to the `current` item.\n\n#### `rejectCopy(state)`\nRe-copies the data from `current` to `copy`, restoring the original copy.\n\n#### `clearCurrent(state)`\nClears the `current` item, which also clears the copy.\n\n#### `clearList(state)`\nClears the `list`, excepting the `current` item.\n\n#### `clearAll(state)`\nClears all data from `ids`, `keyedById`, and `currentId`\n\n#### Mutations for Managing Pending State\nThe following mutations are called automatically by the service actions, and will rarely, if ever, need to be used manually.\n- `setFindPending(state)` - sets `isFindPending` to `true`\n- `unsetFindPending(state)` - sets `isFindPending` to `false`\n- `setGetPending(state)` - sets `isGetPending` to `true`\n- `unsetGetPending(state)` - sets `isGetPending` to `false`\n- `setCreatePending(state)` - sets `isCreatePending` to `true`\n- `unsetCreatePending(state)` - sets `isCreatePending` to `false`\n- `setUpdatePending(state)` - sets `isUpdatePending` to `true`\n- `unsetUpdatePending(state)` - sets `isUpdatePending` to `false`\n- `setPatchPending(state)` - sets `isPatchPending` to `true`\n- `unsetPatchPending(state)` - sets `isPatchPending` to `false`\n- `setRemovePending(state)` - sets `isRemovePending` to `true`\n- `unsetRemovePending(state)` - sets `isRemovePending` to `false`\n\n#### Mutations for Managing Errors\nThe following mutations are called automatically by the service actions, and will rarely need to be used manually.\n- `setFindError(state, error)`\n- `clearFindError(state)`\n- `setGetError(state, error)`\n- `clearGetError(state)`\n- `setCreateError(state, error)`\n- `clearCreateError(state)`\n- `setUpdateError(state, error)`\n- `clearUpdateError(state)`\n- `setPatchError(state, error)`\n- `clearPatchError(state)`\n- `setRemoveError(state, error)`\n- `clearRemoveError(state)`\n\n### Service Actions\nAn action is included for each of the Feathers service interface methods.  These actions will affect changes in both the Feathers API server and the Vuex store.\n\nAll of the [Feathers Service Methods](https://docs.feathersjs.com/api/databases/common.html#service-methods) are supported.  Because Vuex only supports providing a single argument to actions, there is a slight change in syntax that works well.  If you need to pass multiple arguments to a service method, pass an array to the action with the order of the array elements matching the order of the arguments.  See each method for examples.\n\n> Note: If you use the Feathers service methods, directly, the store will not change. Only the actions will cause store changes.\n\n#### `find(params)`\nQuery an array of records from the server & add to the Vuex store.\n- `params {Object}` - An object containing a `query` object and an optional `paginate` boolean.  You can set `params.paginate` to `false` to disable pagination for a single request.\n\n```js\nlet params = {query: {completed: true}}\nstore.dispatch('todos/find', params)\n```\n\nSee the section about pagination, below, for more information that is applicable to the `find` action.\n\n#### `get(id)` or `get([id, params])`\nQuery a single record from the server & add to Vuex store\n- `id {Number|String}` - the `id` of the record being requested from the API server.\n- `params {Object}` - An object containing a `query` object.\n\n```js\nstore.dispatch('todos/get', 1)\n\n// Use an array to pass params\nlet params = {}\nstore.dispatch('todos/get', [1, params])\n```\n\n#### `create(data)`\nCreate one or multiple records.\n- `data {Object|Array}` - if an object is provided, a single record will be created. If an array of objects is provided, multiple records will be created.\n\n```js\nlet newTodo = {description: 'write good tests'}\nstore.dispatch('todos/create', newTodo)\n```\n\n\n#### `update(paramArray)`\nUpdate (overwrite) a record.\n- `paramArray {Array}` - array containing the three parameters update takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will overwrite the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {id: 5, description: 'write your tests', completed: true}\nlet params = {}\n// Overwrite item 1 with the above data (FYI: Most databases won't let you change the id.)\nstore.dispatch('todos/update', [1, data, params])\n```\n\nAlternatively in a Vue component\n```\nimport { mapActions } from 'vuex'\nexport default {\n  methods: {\n    ...mapActions('todos', [ 'update' ]),\n    addTodo () {\n      let data = {id: 5, description: 'write your tests', completed: true}\n      this.update([1, data, {}])\n    }\n  }\n}\n```\n\n#### `patch(paramArray)`\nPatch (merge in changes) one or more records\n- `paramArray {Array}` - array containing the three parameters patch takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will be merged into the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {description: 'write your tests', completed: true}\nlet params = {}\nstore.dispatch('todos/patch', [1, data, params])\n```\n\n\n#### `remove(id)`\nRemove/delete the record with the given `id`.\n- `id {Number|String}` - the `id` of the existing record being requested from the API server.\n\n```js\nstore.dispatch('todos/remove', 1)\n```\n\n## Querying with Find & Pagination\nBoth the `find` action and the `find` getter support pagination.  There are differences in how they work.\n\n### The `find` action\n\nThe `find` action queries data from the remote server.  It returns a promise that resolves to the response from the server.  The presence of pagination data will be determined by the server.\n\n`feathers-vuex@1.0.0` can store pagination data on a per-query basis.  The `pagination` store attribute maps queries to their most-recent pagination data.  It's an empty object by default, but after performing a single query (with pagination in the response), it will have a `default` property.  This property stores pagination information for the query.  Here's what it will look like:\n\n**`params = { query: {} }`**\n```js\n{\n  pagination: {\n    default: {\n      query: {}, // Same as params.query\n      ids: [0, 1, 2], // the ids in the store for the records that were returned from the server\n      limit: 0, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\nIt's possible that you'll want to store pagination information for more than one query.  This might be for different components making queries against the same service, for example.  You can use the `params.qid` (query identifier) property to assign a name to the query.  If you set a `qid` of `mainListView`, for example, the pagination for this query will show up under `pagination.mainListView`.  The `pagination.default` property will be used any time a `params.qid` is not provided.  Here's an example of what this might look like:\n\n**`params = { query: { $limit: 1 }, qid: 'mainListView' }`**\n```js\n// Data in the store\n{\n  pagination: {\n    mainListView: {\n      query: { $limit: 1 }, // Same as params.query\n      ids: [0], // the ids in the store for the records that were returned from the server\n      limit: 1, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\n> Note: The `find` action no longer returns reactive lists.  The list data will still be reactive, but new matches that arrive from the server do NOT get automatically added to lists.  There are two solutions to this:\n- Use the `find` action to pull in data from the server.  Use the `find` getter to pull a reactive list from the store.\n- Configure the `feathers-reactive` plugin with RxJS on your Feathers Client instance.  [Read the docs for implementation details.](https://github.com/feathers-plus/feathers-reactive)\n\n### The `find` getter\n\nThe `find` getter queries data from the local store using the same Feathers query syntax as on the server.  It is synchronous and returns the results of the query with pagination.  Pagination cannot be disabled.  It accepts a params object with a `query` attribute.  It does not use any other special attributes.  The returned object looks just like a paginated result that you would receive from the server:\n\n**`params = { query: {} }`**\n```js\n// The returned results object\n{\n  data: [{ _id: 1, ...etc }, ...etc],\n  limit: 0,\n  skip: 0,\n  total: 3\n}\n```\n\n\n###\n\n## Customizing a Service's Default Store\n\nAs shown in the first example, the service module allows you to customize its store:\n\n```js\nconst store = new Vuex.Store({\n  plugins: [\n    // Add custom state, getters, mutations, or actions, if needed\n    service('things', {\n      state: {\n        test: true\n      },\n      getters: {\n        getSomeData () {\n          return 'some data'\n        }\n      },\n      mutations: {\n        setTestToFalse (state) {\n          state.test = false\n        },\n        setTestToTrue (state) {\n          state.test = true\n        }\n      },\n      actions: {\n        asyncStuff ({ commit, dispatch }, args) {\n          commit('setTestToTrue')\n\n          return doSomethingAsync(id, params)\n            .then(result => {\n              commit('setTestToFalse')\n              return dispatch('otherAsyncStuff', result)\n            })\n        },\n        otherAsyncStuff ({commit}, args) {\n          return new Promise.resolve(result)\n        }\n      }\n    })\n  ]\n})\n\nassert(store.getters['todos/oneTwoThree'] === 123, 'the custom getter was available')\nstore.dispatch('todos/trigger')\nassert(store.state.todos.isTrue === true, 'the custom action was run')\n```\n\n## Auth Module\nThe Auth module helps setup your app for login / logout.  It includes the following state by default:\n```js\n{\n  accessToken: undefined, // The JWT\n  payload: undefined, // The JWT payload\n\n  isAuthenticatePending: false,\n  isLogoutPending: false,\n\n  errorOnAuthenticate: undefined,\n  errorOnLogout: undefined\n}\n```\n\n### Actions\nThe following actions are included in the `auth` module:\n- `authenticate`: use instead of `feathersClient.authenticate()`\n- `logout`: use instead of `feathersClient.logout()`\nThe Vuex auth store may not update if you use the feathers client version.\n\n## Working with Auth & Nuxt\n\n`feathers-vuex@1.0.0` ships with utilities that help with Nuxt auth related to JSON Web Tokens (JWT).  The most important utility is the `initAuth` utility.  It's for use during Nuxt's `nuxtServerInit` method, and sets up auth data automatically.  Here's an example store that uses it:\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex, { initAuth } from 'feathers-vuex'\n\nconst { service, auth } = feathersVuex(feathersClient)\n\nconst createStore = () => {\n  return new Vuex.Store({\n    state: {},\n    mutations: {\n      increment (state) {\n        state.counter++\n      }\n    },\n    actions: {\n      nuxtServerInit ({ commit, dispatch }, { req }) {\n        return initAuth({\n          commit,\n          dispatch,\n          req,\n          moduleName: 'auth',\n          cookieName: 'feathers-jwt'\n        })\n      }\n    },\n    plugins: [\n      service('courses'),\n      auth({\n        state: {\n          publicPages: [\n            'login',\n            'signup'\n          ]\n        }\n      })\n    ]\n  })\n}\n\nexport default createStore\n```\n\nNotice in the above example, I've added a `publicPages` property to the auth state.  Let's now use this state to redirect the browser when it's not on a public page and there's no auth:\n\nIn your Nuxt project, create the file `/middleware/auth.js`.  Then edit the `nuxt.config.js` and add after the `head` property, add a string that references this routing middleware so it looks like this:\n\n*// nuxt.config.js*\n```js\nrouter: {\n  middleware: ['auth']\n},\n```\n\nNow open the middleware and paste the following content.  All it does is redirect the page if there's no auth data in the store.\n\n```js\n// If it's a private page and there's no payload, redirect.\nexport default function (context) {\n  const { store, redirect, route } = context\n  const { auth } = store.state\n\n  if (!auth.publicPages.includes(route.name) && !auth.payload) {\n    return redirect('login')\n  }\n}\n```\n\nFor a summary, the `initAuth` function will make auth available in the state without much configuration.\n\n### Authentication storage with Nuxt\n\nSince Nuxt is running both client- and server side, it has limits on the availability of certain browser specific variables like `window`. Because of that, trying to configure the feathers client to use `window.localStorage` will result in an error or unexpected / not working behaviour. There's a simple solution though:\n\nWhen you configure the auth module in your feathers-client, use [cookie-storage](https://www.npmjs.com/package/cookie-storage) instead of `window.localStorage` to store the authentication data inside a cookie.\n\n```\nimport { CookieStorage } from 'cookie-storage'\n\nconst feathersClient = feathers()\n  .configure(auth({ storage: new CookieStorage() }))\n```\n\n### Configuration\nYou can provide a `userService` in the auth plugin's options to automatically populate the user upon successful login.\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex from 'feathers-vuex'\n\nconst { auth } = feathersVuex(feathersClient, { idField: '_id' })\n\nconst store = new Vuex.Store({\n  plugins: [\n    auth({ userService: 'users' }) // if your user service endpoint is named 'users'\n  ]\n})\n```\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"0603757bc82d6a1f1f1e2683a723a6a307e5c0d1","_id":"feathers-vuex@1.2.0-pre.16","_npmVersion":"5.8.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-cMl7kheg4cGT+M9XjaY3ZBefqNi0qFdBg147Vg5GZouJJPDDwxt7LIyJHixA8VGuEFypP1EMuqSuYOXx2a1b0A==","shasum":"733d18dc7db4845437130d9e434e9d702bc907e3","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.2.0-pre.16.tgz","fileCount":26,"unpackedSize":287799,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICBYNvvVIbqgfV7EVNZpfLvbEUo6WqBuGxjd4UlplZQjAiEA2y5JU6f38oK5k3ygAef06Lcn1dK5KHCAE4BHRwkWLcc="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.2.0-pre.16_1522631586597_0.39653886513205583"},"_hasShrinkwrap":false},"1.2.0-pre.17":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.2.0-pre.17","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.4.1","vue":"^2.4.4","vuex":"^2.4.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n> Integrate the Feathers Client into Vuex\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Important\nThe current version of `feathers-vuex` no longer requires (nor does it support) using `feathers-reactive` (0.5.x). `feathers-vuex` now takes full advantage of Vue's built-in reactivity.  If you still need to use `feathers-vuex` with `feathers-reactive`, install `feathers-vuex@0.4.x`.\n\n## Use\n`feathers-vuex` is a set of two utilities for integrating the Feathers Client into your Vuex store.  It allows you to eliminate boilerplate and easily customize the store.  To get it working, we first need a Feathers Client.  Note: as of version 1.0.0 `feathers-reactive` is no longer required to get socket updates.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\nconst { serviceModule, serviceModel, servicePlugin } = service\n\n\nconst api1Client = feathersVuex(feathersClient, { idField: '_id', apiPrefix: 'api1' })\nconst api2Client = feathersVuex(feathersClient2, { idField: '_id' })\n\n\nVue.use(FeathersVuex)\n\nconst todoModule = serviceModule('todos')\n\n// const Model = serviceModel(todoModule) // TodoModel is an extensible class\nconst Model = serviceModel()\nclass TodoModel = extends Model {}\nconst todoPlugin = servicePlugin(todoModule, TodoModel)\n\nconst TaskModel extends Model {}\n\nexport { TaskModel }\n\n\ncreated () {\n  this.todo = new this.$FeathersVuex.api1.Todo(data)\n}\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    servicePlugin('/tasks', TaskModel), // With our potentially customized TodoModel\n\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // turn off socket event listeners. It's true by default\n      modelName: 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    auth()\n  ]\n})\n```\n\nThe new `feathers-vuex` API is more Vuex-like.  All of the functionality remains the same, but it is no longer configured like a FeathersJS plugin.  While the previous functionality was nice for prototyping, it didn't work well in SSR scenarios, like with Nuxt.\n\nTo see `feathers-vuex` in a working vue-cli application, check out [`feathers-chat-vuex`](https://github.com/feathers-plus/feathers-chat-vuex).\n\n## A note about feathers-reactive\nPrevious versions of this plugin required both RxJS and `feathers-reactive` to receive realtime updates.  `feathers-vuex@1.0.0` has socket messaging support built in and takes advantage of Vuex reactivity, so RxJS and `feathers-reactive` are no longer required.\n\n## API Documentation\n\n### Global Configuration\n\nThe following default options are available for configuration:\n\n```js\nconst defaultOptions = {\n  idField: 'id', // The field in each record that will contain the id\n  autoRemove: false, // automatically remove records missing from responses (only use with feathers-rest)\n  nameStyle: 'short', // Determines the source of the module name. 'short' or 'path'\n  enableEvents: true, // Set to false to explicitly disable socket event handlers.\n  preferUpdate: false, // When true, calling modelInstance.save() will do an update instead of a patch.\n}\n```\n\nEach service module can also be individually configured.\n\n### The Vuex modules\n\nThere are two modules included:\n1. The Service module adds a Vuex store for new services.\n2. The Auth module sets up the Vuex store for authentication / logout.\n\n## Service Module\nThe `Service Module` sets up services in the Vuex store.  Each service will have the below default state in its store.\n\n### Service State\nEach service comes loaded with the following default state:\n```js\n{\n    ids: [],\n    keyedById: {}, // A hash map, keyed by id of each item\n    currentId: undefined, // The id of the item marked as current\n    copy: undefined, // A deep copy of the current item\n    idField: 'id',\n    servicePath: 'v1/todos' // The full service path\n    autoRemove: false, // Indicates that this service will not automatically remove results missing from subsequent requests.\n    paginate: false, // Indicates if pagination is enabled on the Feathers service.\n\n    isFindPending: false,\n    isGetPending: false,\n    isCreatePending: false,\n    isUpdatePending: false,\n    isPatchPending: false,\n    isRemovePending: false,\n\n    errorOnfind: undefined,\n    errorOnGet: undefined,\n    errorOnCreate: undefined,\n    errorOnUpdate: undefined,\n    errorOnPatch: undefined,\n    errorOnRemove: undefined\n  }\n```\n\nThe following attributes are available in each service module's state:\n\n- `ids {Array}` - an array of plain ids representing the ids that belong to each object in the `keyedById` map.\n- `keyedById {Object}` - a hash map keyed by the id of each item.\n- `currentId {Number|String}` - the id of the item marked as current.\n- `copy {Object}` - a deep copy of the current item at the moment it was marked as current. You can make changes to the copy without modifying the `current`.  You can then use the `commitCopy` mutation to save the changes as the `current` or `rejectCopy` to revert `copy` to once again match `current`.\n- `servicePath {String}` - the full service path, even if you alias the namespace to something else.\n- `idField {String}` - the name of the field that holds each item's id. *Default: `'id'`*\n- `paginate {Boolean}` - Indicates if the service has pagination turned on.  This changes the response of the `find` action and getter to match the response that Feathers gives.\n\nThe following state attributes allow you to bind to the pending state of requests:\n- `isFindPending {Boolean}` - `true` if there's a pending `find` request.  `false` if not.\n- `isGetPending {Boolean}` - `true` if there's a pending `get` request.  `false` if not.\n- `isCreatePending {Boolean}` - `true` if there's a pending `create` request.  `false` if not.\n- `isUpdatePending {Boolean}` - `true` if there's a pending `update` request.  `false` if not.\n- `isPatchPending {Boolean}` - `true` if there's a pending `patch` request.  `false` if not.\n- `isRemovePending {Boolean}` - `true` if there's a pending `remove` request.  `false` if not.\n\nThe following state attribute will be populated with any request error, serialized as a plain object:\n- `errorOnFind {Error}`\n- `errorOnGet {Error}`\n- `errorOnCreate {Error}`\n- `errorOnUpdate {Error}`\n- `errorOnPatch {Error}`\n- `errorOnRemo {Error}`\n\n### Service Getters\nService modules include the following getters:\n- `list {Array}` - an array of items. The array form of `keyedById`  Read only.\n- `find(params) {Function}` - a helper function that allows you to use the [Feathers Adapter Common API](https://docs.feathersjs.com/api/databases/common.html) and [Query API](https://docs.feathersjs.com/api/databases/querying.html) to pull data from the store.  This allows you to treat the store just like a local Feathers database adapter (but without hooks).\n  - `params {Object}` - an object with a `query` object and an optional `paginate` boolean property. The `query` is in the FeathersJS query format.  You can set `params.paginate` to `false` to disable pagination for a single request.\n- `get(id[, params]) {Function}` - a function that allows you to query the store for a single item, by id.  It works the same way as `get` requests in Feathers database adapters.\n  - `id {Number|String}` - the id of the data to be retrieved by id from the store.\n  - `params {Object}` - an object containing a Feathers `query` object.\n- `current {Object}` - the object representing the `currentId`. It's pulled from the `keyedById` state.\n- `getCopy {Object}` - An alias to the `state.copy`.\n\n### Service Mutations\nThe following mutations are included in each service module.\n> **Note:** you would typically not call these directly, but instead with `store.commit('removeItem', 'itemId')`. Using vuex's mapMutations on a Vue component can simplify that to `this.removeItem('itemId')`\n\n#### `addItem(state, item)`\nAdds a single item to the `keyedById` map.\n- `item {Object}` - The item to be added to the store.\n\n#### `addItems(state, items)`\nAdds an array of items to the `keyedById` map.\n- `items {Array}` - the items to be added to the store.\n\n#### `updateItem(state, item)`\nUpdates an item in the store to match the passed in `item`.\n- `item {Object}` the item, including `id`, to replace the currently-stored item.\n\n#### `updateItems(state, items)`\nUpdates multiple items in the store to match the passed in array of items.\n- `items {Array}` - An array of items.\n\n#### `removeItem(state, item)`\nRemoves a single item.  `item` can be\n- `item {Number|String|Object}` - The item or id of the item to be deleted.\n\n#### `removeItems(state, items)`\nRemoves the passed in items or ids from the store.\n- `items {Array}` - An array of ids or of objects with ids that will be removed from the data store.\n\n#### `setCurrent(state, item)`\n- `item {Number|String|Object}` - the object with id to be set as the current item, or the id of the object in the store that should become the `current` item.  Setting the `current` item or id also create the deep-cloned `copy`.\n\n#### `commitCopy(state)`\nSaves changes from the `copy` to the `current` item.\n\n#### `rejectCopy(state)`\nRe-copies the data from `current` to `copy`, restoring the original copy.\n\n#### `clearCurrent(state)`\nClears the `current` item, which also clears the copy.\n\n#### `clearList(state)`\nClears the `list`, excepting the `current` item.\n\n#### `clearAll(state)`\nClears all data from `ids`, `keyedById`, and `currentId`\n\n#### Mutations for Managing Pending State\nThe following mutations are called automatically by the service actions, and will rarely, if ever, need to be used manually.\n- `setFindPending(state)` - sets `isFindPending` to `true`\n- `unsetFindPending(state)` - sets `isFindPending` to `false`\n- `setGetPending(state)` - sets `isGetPending` to `true`\n- `unsetGetPending(state)` - sets `isGetPending` to `false`\n- `setCreatePending(state)` - sets `isCreatePending` to `true`\n- `unsetCreatePending(state)` - sets `isCreatePending` to `false`\n- `setUpdatePending(state)` - sets `isUpdatePending` to `true`\n- `unsetUpdatePending(state)` - sets `isUpdatePending` to `false`\n- `setPatchPending(state)` - sets `isPatchPending` to `true`\n- `unsetPatchPending(state)` - sets `isPatchPending` to `false`\n- `setRemovePending(state)` - sets `isRemovePending` to `true`\n- `unsetRemovePending(state)` - sets `isRemovePending` to `false`\n\n#### Mutations for Managing Errors\nThe following mutations are called automatically by the service actions, and will rarely need to be used manually.\n- `setFindError(state, error)`\n- `clearFindError(state)`\n- `setGetError(state, error)`\n- `clearGetError(state)`\n- `setCreateError(state, error)`\n- `clearCreateError(state)`\n- `setUpdateError(state, error)`\n- `clearUpdateError(state)`\n- `setPatchError(state, error)`\n- `clearPatchError(state)`\n- `setRemoveError(state, error)`\n- `clearRemoveError(state)`\n\n### Service Actions\nAn action is included for each of the Feathers service interface methods.  These actions will affect changes in both the Feathers API server and the Vuex store.\n\nAll of the [Feathers Service Methods](https://docs.feathersjs.com/api/databases/common.html#service-methods) are supported.  Because Vuex only supports providing a single argument to actions, there is a slight change in syntax that works well.  If you need to pass multiple arguments to a service method, pass an array to the action with the order of the array elements matching the order of the arguments.  See each method for examples.\n\n> Note: If you use the Feathers service methods, directly, the store will not change. Only the actions will cause store changes.\n\n#### `find(params)`\nQuery an array of records from the server & add to the Vuex store.\n- `params {Object}` - An object containing a `query` object and an optional `paginate` boolean.  You can set `params.paginate` to `false` to disable pagination for a single request.\n\n```js\nlet params = {query: {completed: true}}\nstore.dispatch('todos/find', params)\n```\n\nSee the section about pagination, below, for more information that is applicable to the `find` action.\n\n#### `get(id)` or `get([id, params])`\nQuery a single record from the server & add to Vuex store\n- `id {Number|String}` - the `id` of the record being requested from the API server.\n- `params {Object}` - An object containing a `query` object.\n\n```js\nstore.dispatch('todos/get', 1)\n\n// Use an array to pass params\nlet params = {}\nstore.dispatch('todos/get', [1, params])\n```\n\n#### `create(data)`\nCreate one or multiple records.\n- `data {Object|Array}` - if an object is provided, a single record will be created. If an array of objects is provided, multiple records will be created.\n\n```js\nlet newTodo = {description: 'write good tests'}\nstore.dispatch('todos/create', newTodo)\n```\n\n\n#### `update(paramArray)`\nUpdate (overwrite) a record.\n- `paramArray {Array}` - array containing the three parameters update takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will overwrite the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {id: 5, description: 'write your tests', completed: true}\nlet params = {}\n// Overwrite item 1 with the above data (FYI: Most databases won't let you change the id.)\nstore.dispatch('todos/update', [1, data, params])\n```\n\nAlternatively in a Vue component\n```\nimport { mapActions } from 'vuex'\nexport default {\n  methods: {\n    ...mapActions('todos', [ 'update' ]),\n    addTodo () {\n      let data = {id: 5, description: 'write your tests', completed: true}\n      this.update([1, data, {}])\n    }\n  }\n}\n```\n\n#### `patch(paramArray)`\nPatch (merge in changes) one or more records\n- `paramArray {Array}` - array containing the three parameters patch takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will be merged into the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {description: 'write your tests', completed: true}\nlet params = {}\nstore.dispatch('todos/patch', [1, data, params])\n```\n\n\n#### `remove(id)`\nRemove/delete the record with the given `id`.\n- `id {Number|String}` - the `id` of the existing record being requested from the API server.\n\n```js\nstore.dispatch('todos/remove', 1)\n```\n\n## Querying with Find & Pagination\nBoth the `find` action and the `find` getter support pagination.  There are differences in how they work.\n\n### The `find` action\n\nThe `find` action queries data from the remote server.  It returns a promise that resolves to the response from the server.  The presence of pagination data will be determined by the server.\n\n`feathers-vuex@1.0.0` can store pagination data on a per-query basis.  The `pagination` store attribute maps queries to their most-recent pagination data.  It's an empty object by default, but after performing a single query (with pagination in the response), it will have a `default` property.  This property stores pagination information for the query.  Here's what it will look like:\n\n**`params = { query: {} }`**\n```js\n{\n  pagination: {\n    default: {\n      query: {}, // Same as params.query\n      ids: [0, 1, 2], // the ids in the store for the records that were returned from the server\n      limit: 0, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\nIt's possible that you'll want to store pagination information for more than one query.  This might be for different components making queries against the same service, for example.  You can use the `params.qid` (query identifier) property to assign a name to the query.  If you set a `qid` of `mainListView`, for example, the pagination for this query will show up under `pagination.mainListView`.  The `pagination.default` property will be used any time a `params.qid` is not provided.  Here's an example of what this might look like:\n\n**`params = { query: { $limit: 1 }, qid: 'mainListView' }`**\n```js\n// Data in the store\n{\n  pagination: {\n    mainListView: {\n      query: { $limit: 1 }, // Same as params.query\n      ids: [0], // the ids in the store for the records that were returned from the server\n      limit: 1, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\n> Note: The `find` action no longer returns reactive lists.  The list data will still be reactive, but new matches that arrive from the server do NOT get automatically added to lists.  There are two solutions to this:\n- Use the `find` action to pull in data from the server.  Use the `find` getter to pull a reactive list from the store.\n- Configure the `feathers-reactive` plugin with RxJS on your Feathers Client instance.  [Read the docs for implementation details.](https://github.com/feathers-plus/feathers-reactive)\n\n### The `find` getter\n\nThe `find` getter queries data from the local store using the same Feathers query syntax as on the server.  It is synchronous and returns the results of the query with pagination.  Pagination cannot be disabled.  It accepts a params object with a `query` attribute.  It does not use any other special attributes.  The returned object looks just like a paginated result that you would receive from the server:\n\n**`params = { query: {} }`**\n```js\n// The returned results object\n{\n  data: [{ _id: 1, ...etc }, ...etc],\n  limit: 0,\n  skip: 0,\n  total: 3\n}\n```\n\n\n###\n\n## Customizing a Service's Default Store\n\nAs shown in the first example, the service module allows you to customize its store:\n\n```js\nconst store = new Vuex.Store({\n  plugins: [\n    // Add custom state, getters, mutations, or actions, if needed\n    service('things', {\n      state: {\n        test: true\n      },\n      getters: {\n        getSomeData () {\n          return 'some data'\n        }\n      },\n      mutations: {\n        setTestToFalse (state) {\n          state.test = false\n        },\n        setTestToTrue (state) {\n          state.test = true\n        }\n      },\n      actions: {\n        asyncStuff ({ commit, dispatch }, args) {\n          commit('setTestToTrue')\n\n          return doSomethingAsync(id, params)\n            .then(result => {\n              commit('setTestToFalse')\n              return dispatch('otherAsyncStuff', result)\n            })\n        },\n        otherAsyncStuff ({commit}, args) {\n          return new Promise.resolve(result)\n        }\n      }\n    })\n  ]\n})\n\nassert(store.getters['todos/oneTwoThree'] === 123, 'the custom getter was available')\nstore.dispatch('todos/trigger')\nassert(store.state.todos.isTrue === true, 'the custom action was run')\n```\n\n## Auth Module\nThe Auth module helps setup your app for login / logout.  It includes the following state by default:\n```js\n{\n  accessToken: undefined, // The JWT\n  payload: undefined, // The JWT payload\n\n  isAuthenticatePending: false,\n  isLogoutPending: false,\n\n  errorOnAuthenticate: undefined,\n  errorOnLogout: undefined\n}\n```\n\n### Actions\nThe following actions are included in the `auth` module:\n- `authenticate`: use instead of `feathersClient.authenticate()`\n- `logout`: use instead of `feathersClient.logout()`\nThe Vuex auth store may not update if you use the feathers client version.\n\n## Working with Auth & Nuxt\n\n`feathers-vuex@1.0.0` ships with utilities that help with Nuxt auth related to JSON Web Tokens (JWT).  The most important utility is the `initAuth` utility.  It's for use during Nuxt's `nuxtServerInit` method, and sets up auth data automatically.  Here's an example store that uses it:\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex, { initAuth } from 'feathers-vuex'\n\nconst { service, auth } = feathersVuex(feathersClient)\n\nconst createStore = () => {\n  return new Vuex.Store({\n    state: {},\n    mutations: {\n      increment (state) {\n        state.counter++\n      }\n    },\n    actions: {\n      nuxtServerInit ({ commit, dispatch }, { req }) {\n        return initAuth({\n          commit,\n          dispatch,\n          req,\n          moduleName: 'auth',\n          cookieName: 'feathers-jwt'\n        })\n      }\n    },\n    plugins: [\n      service('courses'),\n      auth({\n        state: {\n          publicPages: [\n            'login',\n            'signup'\n          ]\n        }\n      })\n    ]\n  })\n}\n\nexport default createStore\n```\n\nNotice in the above example, I've added a `publicPages` property to the auth state.  Let's now use this state to redirect the browser when it's not on a public page and there's no auth:\n\nIn your Nuxt project, create the file `/middleware/auth.js`.  Then edit the `nuxt.config.js` and add after the `head` property, add a string that references this routing middleware so it looks like this:\n\n*// nuxt.config.js*\n```js\nrouter: {\n  middleware: ['auth']\n},\n```\n\nNow open the middleware and paste the following content.  All it does is redirect the page if there's no auth data in the store.\n\n```js\n// If it's a private page and there's no payload, redirect.\nexport default function (context) {\n  const { store, redirect, route } = context\n  const { auth } = store.state\n\n  if (!auth.publicPages.includes(route.name) && !auth.payload) {\n    return redirect('login')\n  }\n}\n```\n\nFor a summary, the `initAuth` function will make auth available in the state without much configuration.\n\n### Authentication storage with Nuxt\n\nSince Nuxt is running both client- and server side, it has limits on the availability of certain browser specific variables like `window`. Because of that, trying to configure the feathers client to use `window.localStorage` will result in an error or unexpected / not working behaviour. There's a simple solution though:\n\nWhen you configure the auth module in your feathers-client, use [cookie-storage](https://www.npmjs.com/package/cookie-storage) instead of `window.localStorage` to store the authentication data inside a cookie.\n\n```\nimport { CookieStorage } from 'cookie-storage'\n\nconst feathersClient = feathers()\n  .configure(auth({ storage: new CookieStorage() }))\n```\n\n### Configuration\nYou can provide a `userService` in the auth plugin's options to automatically populate the user upon successful login.\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex from 'feathers-vuex'\n\nconst { auth } = feathersVuex(feathersClient, { idField: '_id' })\n\nconst store = new Vuex.Store({\n  plugins: [\n    auth({ userService: 'users' }) // if your user service endpoint is named 'users'\n  ]\n})\n```\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"ef9f8266ab551bbf8618588c8b6c313b0eac2f32","_id":"feathers-vuex@1.2.0-pre.17","_npmVersion":"5.8.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-IhuSbmSCpXcIr8pmI8RxJKsK3e9tpj+m3XDXwVG8fjSC13i8DGfjb7AUU6YA/RhQB87Nwug3EBnjCJ/4UV+Qsw==","shasum":"9db9377faf8b81afc4cc8682cef6b06f15b77cd3","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.2.0-pre.17.tgz","fileCount":26,"unpackedSize":287775,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDT+nn+2FbSs5s6GZ7yS60D+bgG9Ryuy6potEgYdLGWlwIhAM0ecsRHiWbH9JATu5U5FuModE/TFuQyG27kqpqtFjSc"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.2.0-pre.17_1522688378997_0.1958487825750308"},"_hasShrinkwrap":false},"1.2.0-pre.18":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.2.0-pre.18","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.4.1","vue":"^2.4.4","vuex":"^2.4.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n> Integrate the Feathers Client into Vuex\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Important\nThe current version of `feathers-vuex` no longer requires (nor does it support) using `feathers-reactive` (0.5.x). `feathers-vuex` now takes full advantage of Vue's built-in reactivity.  If you still need to use `feathers-vuex` with `feathers-reactive`, install `feathers-vuex@0.4.x`.\n\n## Use\n`feathers-vuex` is a set of two utilities for integrating the Feathers Client into your Vuex store.  It allows you to eliminate boilerplate and easily customize the store.  To get it working, we first need a Feathers Client.  Note: as of version 1.0.0 `feathers-reactive` is no longer required to get socket updates.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\nconst { serviceModule, serviceModel, servicePlugin } = service\n\n\nconst api1Client = feathersVuex(feathersClient, { idField: '_id', apiPrefix: 'api1' })\nconst api2Client = feathersVuex(feathersClient2, { idField: '_id' })\n\n\nVue.use(FeathersVuex)\n\nconst todoModule = serviceModule('todos')\n\n// const Model = serviceModel(todoModule) // TodoModel is an extensible class\nconst Model = serviceModel()\nclass TodoModel = extends Model {}\nconst todoPlugin = servicePlugin(todoModule, TodoModel)\n\nconst TaskModel extends Model {}\n\nexport { TaskModel }\n\n\ncreated () {\n  this.todo = new this.$FeathersVuex.api1.Todo(data)\n}\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    servicePlugin('/tasks', TaskModel), // With our potentially customized TodoModel\n\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // turn off socket event listeners. It's true by default\n      modelName: 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    auth()\n  ]\n})\n```\n\nThe new `feathers-vuex` API is more Vuex-like.  All of the functionality remains the same, but it is no longer configured like a FeathersJS plugin.  While the previous functionality was nice for prototyping, it didn't work well in SSR scenarios, like with Nuxt.\n\nTo see `feathers-vuex` in a working vue-cli application, check out [`feathers-chat-vuex`](https://github.com/feathers-plus/feathers-chat-vuex).\n\n## A note about feathers-reactive\nPrevious versions of this plugin required both RxJS and `feathers-reactive` to receive realtime updates.  `feathers-vuex@1.0.0` has socket messaging support built in and takes advantage of Vuex reactivity, so RxJS and `feathers-reactive` are no longer required.\n\n## API Documentation\n\n### Global Configuration\n\nThe following default options are available for configuration:\n\n```js\nconst defaultOptions = {\n  idField: 'id', // The field in each record that will contain the id\n  autoRemove: false, // automatically remove records missing from responses (only use with feathers-rest)\n  nameStyle: 'short', // Determines the source of the module name. 'short' or 'path'\n  enableEvents: true, // Set to false to explicitly disable socket event handlers.\n  preferUpdate: false, // When true, calling modelInstance.save() will do an update instead of a patch.\n}\n```\n\nEach service module can also be individually configured.\n\n### The Vuex modules\n\nThere are two modules included:\n1. The Service module adds a Vuex store for new services.\n2. The Auth module sets up the Vuex store for authentication / logout.\n\n## Service Module\nThe `Service Module` sets up services in the Vuex store.  Each service will have the below default state in its store.\n\n### Service State\nEach service comes loaded with the following default state:\n```js\n{\n    ids: [],\n    keyedById: {}, // A hash map, keyed by id of each item\n    currentId: undefined, // The id of the item marked as current\n    copy: undefined, // A deep copy of the current item\n    idField: 'id',\n    servicePath: 'v1/todos' // The full service path\n    autoRemove: false, // Indicates that this service will not automatically remove results missing from subsequent requests.\n    paginate: false, // Indicates if pagination is enabled on the Feathers service.\n\n    isFindPending: false,\n    isGetPending: false,\n    isCreatePending: false,\n    isUpdatePending: false,\n    isPatchPending: false,\n    isRemovePending: false,\n\n    errorOnfind: undefined,\n    errorOnGet: undefined,\n    errorOnCreate: undefined,\n    errorOnUpdate: undefined,\n    errorOnPatch: undefined,\n    errorOnRemove: undefined\n  }\n```\n\nThe following attributes are available in each service module's state:\n\n- `ids {Array}` - an array of plain ids representing the ids that belong to each object in the `keyedById` map.\n- `keyedById {Object}` - a hash map keyed by the id of each item.\n- `currentId {Number|String}` - the id of the item marked as current.\n- `copy {Object}` - a deep copy of the current item at the moment it was marked as current. You can make changes to the copy without modifying the `current`.  You can then use the `commitCopy` mutation to save the changes as the `current` or `rejectCopy` to revert `copy` to once again match `current`.\n- `servicePath {String}` - the full service path, even if you alias the namespace to something else.\n- `idField {String}` - the name of the field that holds each item's id. *Default: `'id'`*\n- `paginate {Boolean}` - Indicates if the service has pagination turned on.  This changes the response of the `find` action and getter to match the response that Feathers gives.\n\nThe following state attributes allow you to bind to the pending state of requests:\n- `isFindPending {Boolean}` - `true` if there's a pending `find` request.  `false` if not.\n- `isGetPending {Boolean}` - `true` if there's a pending `get` request.  `false` if not.\n- `isCreatePending {Boolean}` - `true` if there's a pending `create` request.  `false` if not.\n- `isUpdatePending {Boolean}` - `true` if there's a pending `update` request.  `false` if not.\n- `isPatchPending {Boolean}` - `true` if there's a pending `patch` request.  `false` if not.\n- `isRemovePending {Boolean}` - `true` if there's a pending `remove` request.  `false` if not.\n\nThe following state attribute will be populated with any request error, serialized as a plain object:\n- `errorOnFind {Error}`\n- `errorOnGet {Error}`\n- `errorOnCreate {Error}`\n- `errorOnUpdate {Error}`\n- `errorOnPatch {Error}`\n- `errorOnRemo {Error}`\n\n### Service Getters\nService modules include the following getters:\n- `list {Array}` - an array of items. The array form of `keyedById`  Read only.\n- `find(params) {Function}` - a helper function that allows you to use the [Feathers Adapter Common API](https://docs.feathersjs.com/api/databases/common.html) and [Query API](https://docs.feathersjs.com/api/databases/querying.html) to pull data from the store.  This allows you to treat the store just like a local Feathers database adapter (but without hooks).\n  - `params {Object}` - an object with a `query` object and an optional `paginate` boolean property. The `query` is in the FeathersJS query format.  You can set `params.paginate` to `false` to disable pagination for a single request.\n- `get(id[, params]) {Function}` - a function that allows you to query the store for a single item, by id.  It works the same way as `get` requests in Feathers database adapters.\n  - `id {Number|String}` - the id of the data to be retrieved by id from the store.\n  - `params {Object}` - an object containing a Feathers `query` object.\n- `current {Object}` - the object representing the `currentId`. It's pulled from the `keyedById` state.\n- `getCopy {Object}` - An alias to the `state.copy`.\n\n### Service Mutations\nThe following mutations are included in each service module.\n> **Note:** you would typically not call these directly, but instead with `store.commit('removeItem', 'itemId')`. Using vuex's mapMutations on a Vue component can simplify that to `this.removeItem('itemId')`\n\n#### `addItem(state, item)`\nAdds a single item to the `keyedById` map.\n- `item {Object}` - The item to be added to the store.\n\n#### `addItems(state, items)`\nAdds an array of items to the `keyedById` map.\n- `items {Array}` - the items to be added to the store.\n\n#### `updateItem(state, item)`\nUpdates an item in the store to match the passed in `item`.\n- `item {Object}` the item, including `id`, to replace the currently-stored item.\n\n#### `updateItems(state, items)`\nUpdates multiple items in the store to match the passed in array of items.\n- `items {Array}` - An array of items.\n\n#### `removeItem(state, item)`\nRemoves a single item.  `item` can be\n- `item {Number|String|Object}` - The item or id of the item to be deleted.\n\n#### `removeItems(state, items)`\nRemoves the passed in items or ids from the store.\n- `items {Array}` - An array of ids or of objects with ids that will be removed from the data store.\n\n#### `setCurrent(state, item)`\n- `item {Number|String|Object}` - the object with id to be set as the current item, or the id of the object in the store that should become the `current` item.  Setting the `current` item or id also create the deep-cloned `copy`.\n\n#### `commitCopy(state)`\nSaves changes from the `copy` to the `current` item.\n\n#### `rejectCopy(state)`\nRe-copies the data from `current` to `copy`, restoring the original copy.\n\n#### `clearCurrent(state)`\nClears the `current` item, which also clears the copy.\n\n#### `clearList(state)`\nClears the `list`, excepting the `current` item.\n\n#### `clearAll(state)`\nClears all data from `ids`, `keyedById`, and `currentId`\n\n#### Mutations for Managing Pending State\nThe following mutations are called automatically by the service actions, and will rarely, if ever, need to be used manually.\n- `setFindPending(state)` - sets `isFindPending` to `true`\n- `unsetFindPending(state)` - sets `isFindPending` to `false`\n- `setGetPending(state)` - sets `isGetPending` to `true`\n- `unsetGetPending(state)` - sets `isGetPending` to `false`\n- `setCreatePending(state)` - sets `isCreatePending` to `true`\n- `unsetCreatePending(state)` - sets `isCreatePending` to `false`\n- `setUpdatePending(state)` - sets `isUpdatePending` to `true`\n- `unsetUpdatePending(state)` - sets `isUpdatePending` to `false`\n- `setPatchPending(state)` - sets `isPatchPending` to `true`\n- `unsetPatchPending(state)` - sets `isPatchPending` to `false`\n- `setRemovePending(state)` - sets `isRemovePending` to `true`\n- `unsetRemovePending(state)` - sets `isRemovePending` to `false`\n\n#### Mutations for Managing Errors\nThe following mutations are called automatically by the service actions, and will rarely need to be used manually.\n- `setFindError(state, error)`\n- `clearFindError(state)`\n- `setGetError(state, error)`\n- `clearGetError(state)`\n- `setCreateError(state, error)`\n- `clearCreateError(state)`\n- `setUpdateError(state, error)`\n- `clearUpdateError(state)`\n- `setPatchError(state, error)`\n- `clearPatchError(state)`\n- `setRemoveError(state, error)`\n- `clearRemoveError(state)`\n\n### Service Actions\nAn action is included for each of the Feathers service interface methods.  These actions will affect changes in both the Feathers API server and the Vuex store.\n\nAll of the [Feathers Service Methods](https://docs.feathersjs.com/api/databases/common.html#service-methods) are supported.  Because Vuex only supports providing a single argument to actions, there is a slight change in syntax that works well.  If you need to pass multiple arguments to a service method, pass an array to the action with the order of the array elements matching the order of the arguments.  See each method for examples.\n\n> Note: If you use the Feathers service methods, directly, the store will not change. Only the actions will cause store changes.\n\n#### `find(params)`\nQuery an array of records from the server & add to the Vuex store.\n- `params {Object}` - An object containing a `query` object and an optional `paginate` boolean.  You can set `params.paginate` to `false` to disable pagination for a single request.\n\n```js\nlet params = {query: {completed: true}}\nstore.dispatch('todos/find', params)\n```\n\nSee the section about pagination, below, for more information that is applicable to the `find` action.\n\n#### `get(id)` or `get([id, params])`\nQuery a single record from the server & add to Vuex store\n- `id {Number|String}` - the `id` of the record being requested from the API server.\n- `params {Object}` - An object containing a `query` object.\n\n```js\nstore.dispatch('todos/get', 1)\n\n// Use an array to pass params\nlet params = {}\nstore.dispatch('todos/get', [1, params])\n```\n\n#### `create(data)`\nCreate one or multiple records.\n- `data {Object|Array}` - if an object is provided, a single record will be created. If an array of objects is provided, multiple records will be created.\n\n```js\nlet newTodo = {description: 'write good tests'}\nstore.dispatch('todos/create', newTodo)\n```\n\n\n#### `update(paramArray)`\nUpdate (overwrite) a record.\n- `paramArray {Array}` - array containing the three parameters update takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will overwrite the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {id: 5, description: 'write your tests', completed: true}\nlet params = {}\n// Overwrite item 1 with the above data (FYI: Most databases won't let you change the id.)\nstore.dispatch('todos/update', [1, data, params])\n```\n\nAlternatively in a Vue component\n```\nimport { mapActions } from 'vuex'\nexport default {\n  methods: {\n    ...mapActions('todos', [ 'update' ]),\n    addTodo () {\n      let data = {id: 5, description: 'write your tests', completed: true}\n      this.update([1, data, {}])\n    }\n  }\n}\n```\n\n#### `patch(paramArray)`\nPatch (merge in changes) one or more records\n- `paramArray {Array}` - array containing the three parameters patch takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will be merged into the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {description: 'write your tests', completed: true}\nlet params = {}\nstore.dispatch('todos/patch', [1, data, params])\n```\n\n\n#### `remove(id)`\nRemove/delete the record with the given `id`.\n- `id {Number|String}` - the `id` of the existing record being requested from the API server.\n\n```js\nstore.dispatch('todos/remove', 1)\n```\n\n## Querying with Find & Pagination\nBoth the `find` action and the `find` getter support pagination.  There are differences in how they work.\n\n### The `find` action\n\nThe `find` action queries data from the remote server.  It returns a promise that resolves to the response from the server.  The presence of pagination data will be determined by the server.\n\n`feathers-vuex@1.0.0` can store pagination data on a per-query basis.  The `pagination` store attribute maps queries to their most-recent pagination data.  It's an empty object by default, but after performing a single query (with pagination in the response), it will have a `default` property.  This property stores pagination information for the query.  Here's what it will look like:\n\n**`params = { query: {} }`**\n```js\n{\n  pagination: {\n    default: {\n      query: {}, // Same as params.query\n      ids: [0, 1, 2], // the ids in the store for the records that were returned from the server\n      limit: 0, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\nIt's possible that you'll want to store pagination information for more than one query.  This might be for different components making queries against the same service, for example.  You can use the `params.qid` (query identifier) property to assign a name to the query.  If you set a `qid` of `mainListView`, for example, the pagination for this query will show up under `pagination.mainListView`.  The `pagination.default` property will be used any time a `params.qid` is not provided.  Here's an example of what this might look like:\n\n**`params = { query: { $limit: 1 }, qid: 'mainListView' }`**\n```js\n// Data in the store\n{\n  pagination: {\n    mainListView: {\n      query: { $limit: 1 }, // Same as params.query\n      ids: [0], // the ids in the store for the records that were returned from the server\n      limit: 1, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\n> Note: The `find` action no longer returns reactive lists.  The list data will still be reactive, but new matches that arrive from the server do NOT get automatically added to lists.  There are two solutions to this:\n- Use the `find` action to pull in data from the server.  Use the `find` getter to pull a reactive list from the store.\n- Configure the `feathers-reactive` plugin with RxJS on your Feathers Client instance.  [Read the docs for implementation details.](https://github.com/feathers-plus/feathers-reactive)\n\n### The `find` getter\n\nThe `find` getter queries data from the local store using the same Feathers query syntax as on the server.  It is synchronous and returns the results of the query with pagination.  Pagination cannot be disabled.  It accepts a params object with a `query` attribute.  It does not use any other special attributes.  The returned object looks just like a paginated result that you would receive from the server:\n\n**`params = { query: {} }`**\n```js\n// The returned results object\n{\n  data: [{ _id: 1, ...etc }, ...etc],\n  limit: 0,\n  skip: 0,\n  total: 3\n}\n```\n\n\n###\n\n## Customizing a Service's Default Store\n\nAs shown in the first example, the service module allows you to customize its store:\n\n```js\nconst store = new Vuex.Store({\n  plugins: [\n    // Add custom state, getters, mutations, or actions, if needed\n    service('things', {\n      state: {\n        test: true\n      },\n      getters: {\n        getSomeData () {\n          return 'some data'\n        }\n      },\n      mutations: {\n        setTestToFalse (state) {\n          state.test = false\n        },\n        setTestToTrue (state) {\n          state.test = true\n        }\n      },\n      actions: {\n        asyncStuff ({ commit, dispatch }, args) {\n          commit('setTestToTrue')\n\n          return doSomethingAsync(id, params)\n            .then(result => {\n              commit('setTestToFalse')\n              return dispatch('otherAsyncStuff', result)\n            })\n        },\n        otherAsyncStuff ({commit}, args) {\n          return new Promise.resolve(result)\n        }\n      }\n    })\n  ]\n})\n\nassert(store.getters['todos/oneTwoThree'] === 123, 'the custom getter was available')\nstore.dispatch('todos/trigger')\nassert(store.state.todos.isTrue === true, 'the custom action was run')\n```\n\n## Auth Module\nThe Auth module helps setup your app for login / logout.  It includes the following state by default:\n```js\n{\n  accessToken: undefined, // The JWT\n  payload: undefined, // The JWT payload\n\n  isAuthenticatePending: false,\n  isLogoutPending: false,\n\n  errorOnAuthenticate: undefined,\n  errorOnLogout: undefined\n}\n```\n\n### Actions\nThe following actions are included in the `auth` module:\n- `authenticate`: use instead of `feathersClient.authenticate()`\n- `logout`: use instead of `feathersClient.logout()`\nThe Vuex auth store may not update if you use the feathers client version.\n\n## Working with Auth & Nuxt\n\n`feathers-vuex@1.0.0` ships with utilities that help with Nuxt auth related to JSON Web Tokens (JWT).  The most important utility is the `initAuth` utility.  It's for use during Nuxt's `nuxtServerInit` method, and sets up auth data automatically.  Here's an example store that uses it:\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex, { initAuth } from 'feathers-vuex'\n\nconst { service, auth } = feathersVuex(feathersClient)\n\nconst createStore = () => {\n  return new Vuex.Store({\n    state: {},\n    mutations: {\n      increment (state) {\n        state.counter++\n      }\n    },\n    actions: {\n      nuxtServerInit ({ commit, dispatch }, { req }) {\n        return initAuth({\n          commit,\n          dispatch,\n          req,\n          moduleName: 'auth',\n          cookieName: 'feathers-jwt'\n        })\n      }\n    },\n    plugins: [\n      service('courses'),\n      auth({\n        state: {\n          publicPages: [\n            'login',\n            'signup'\n          ]\n        }\n      })\n    ]\n  })\n}\n\nexport default createStore\n```\n\nNotice in the above example, I've added a `publicPages` property to the auth state.  Let's now use this state to redirect the browser when it's not on a public page and there's no auth:\n\nIn your Nuxt project, create the file `/middleware/auth.js`.  Then edit the `nuxt.config.js` and add after the `head` property, add a string that references this routing middleware so it looks like this:\n\n*// nuxt.config.js*\n```js\nrouter: {\n  middleware: ['auth']\n},\n```\n\nNow open the middleware and paste the following content.  All it does is redirect the page if there's no auth data in the store.\n\n```js\n// If it's a private page and there's no payload, redirect.\nexport default function (context) {\n  const { store, redirect, route } = context\n  const { auth } = store.state\n\n  if (!auth.publicPages.includes(route.name) && !auth.payload) {\n    return redirect('login')\n  }\n}\n```\n\nFor a summary, the `initAuth` function will make auth available in the state without much configuration.\n\n### Authentication storage with Nuxt\n\nSince Nuxt is running both client- and server side, it has limits on the availability of certain browser specific variables like `window`. Because of that, trying to configure the feathers client to use `window.localStorage` will result in an error or unexpected / not working behaviour. There's a simple solution though:\n\nWhen you configure the auth module in your feathers-client, use [cookie-storage](https://www.npmjs.com/package/cookie-storage) instead of `window.localStorage` to store the authentication data inside a cookie.\n\n```\nimport { CookieStorage } from 'cookie-storage'\n\nconst feathersClient = feathers()\n  .configure(auth({ storage: new CookieStorage() }))\n```\n\n### Configuration\nYou can provide a `userService` in the auth plugin's options to automatically populate the user upon successful login.\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex from 'feathers-vuex'\n\nconst { auth } = feathersVuex(feathersClient, { idField: '_id' })\n\nconst store = new Vuex.Store({\n  plugins: [\n    auth({ userService: 'users' }) // if your user service endpoint is named 'users'\n  ]\n})\n```\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"783797be3e5dc0b77fe0cbc7ce98bf2cba6f978f","_id":"feathers-vuex@1.2.0-pre.18","_npmVersion":"5.8.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-pCLeCtl2r0QA1nQTa17NRzTqZwBL47idAhz9bw6wCkN1RKG/ctQFV2Rb29lGcGLhc2mdG2SG/x7FrgRjT/A8BQ==","shasum":"e5f9861fc92722e5914f58fb6c3bb1982be149c4","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.2.0-pre.18.tgz","fileCount":26,"unpackedSize":287842,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD+Rkbsvp10icuwFO8jhAuHiTdXLZcoO81Ss/9VjbFqvAIhANgD3MGqtT4YUofZ1oNGzBeLMQsmGB0UkfXvgyYxxz7s"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.2.0-pre.18_1523415377177_0.9176215405720531"},"_hasShrinkwrap":false},"1.2.0-pre.19":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.2.0-pre.19","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.4.1","vue":"^2.4.4","vuex":"^2.4.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n> Integrate the Feathers Client into Vuex\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Important\nThe current version of `feathers-vuex` no longer requires (nor does it support) using `feathers-reactive` (0.5.x). `feathers-vuex` now takes full advantage of Vue's built-in reactivity.  If you still need to use `feathers-vuex` with `feathers-reactive`, install `feathers-vuex@0.4.x`.\n\n## Use\n`feathers-vuex` is a set of two utilities for integrating the Feathers Client into your Vuex store.  It allows you to eliminate boilerplate and easily customize the store.  To get it working, we first need a Feathers Client.  Note: as of version 1.0.0 `feathers-reactive` is no longer required to get socket updates.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\nconst { serviceModule, serviceModel, servicePlugin } = service\n\n\nconst api1Client = feathersVuex(feathersClient, { idField: '_id', apiPrefix: 'api1' })\nconst api2Client = feathersVuex(feathersClient2, { idField: '_id' })\n\n\nVue.use(FeathersVuex)\n\nconst todoModule = serviceModule('todos')\n\n// const Model = serviceModel(todoModule) // TodoModel is an extensible class\nconst Model = serviceModel()\nclass TodoModel = extends Model {}\nconst todoPlugin = servicePlugin(todoModule, TodoModel)\n\nconst TaskModel extends Model {}\n\nexport { TaskModel }\n\n\ncreated () {\n  this.todo = new this.$FeathersVuex.api1.Todo(data)\n}\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    servicePlugin('/tasks', TaskModel), // With our potentially customized TodoModel\n\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // turn off socket event listeners. It's true by default\n      modelName: 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    auth()\n  ]\n})\n```\n\nThe new `feathers-vuex` API is more Vuex-like.  All of the functionality remains the same, but it is no longer configured like a FeathersJS plugin.  While the previous functionality was nice for prototyping, it didn't work well in SSR scenarios, like with Nuxt.\n\nTo see `feathers-vuex` in a working vue-cli application, check out [`feathers-chat-vuex`](https://github.com/feathers-plus/feathers-chat-vuex).\n\n## A note about feathers-reactive\nPrevious versions of this plugin required both RxJS and `feathers-reactive` to receive realtime updates.  `feathers-vuex@1.0.0` has socket messaging support built in and takes advantage of Vuex reactivity, so RxJS and `feathers-reactive` are no longer required.\n\n## API Documentation\n\n### Global Configuration\n\nThe following default options are available for configuration:\n\n```js\nconst defaultOptions = {\n  idField: 'id', // The field in each record that will contain the id\n  autoRemove: false, // automatically remove records missing from responses (only use with feathers-rest)\n  nameStyle: 'short', // Determines the source of the module name. 'short' or 'path'\n  enableEvents: true, // Set to false to explicitly disable socket event handlers.\n  preferUpdate: false, // When true, calling modelInstance.save() will do an update instead of a patch.\n}\n```\n\nEach service module can also be individually configured.\n\n### The Vuex modules\n\nThere are two modules included:\n1. The Service module adds a Vuex store for new services.\n2. The Auth module sets up the Vuex store for authentication / logout.\n\n## Service Module\nThe `Service Module` sets up services in the Vuex store.  Each service will have the below default state in its store.\n\n### Service State\nEach service comes loaded with the following default state:\n```js\n{\n    ids: [],\n    keyedById: {}, // A hash map, keyed by id of each item\n    currentId: undefined, // The id of the item marked as current\n    copy: undefined, // A deep copy of the current item\n    idField: 'id',\n    servicePath: 'v1/todos' // The full service path\n    autoRemove: false, // Indicates that this service will not automatically remove results missing from subsequent requests.\n    paginate: false, // Indicates if pagination is enabled on the Feathers service.\n\n    isFindPending: false,\n    isGetPending: false,\n    isCreatePending: false,\n    isUpdatePending: false,\n    isPatchPending: false,\n    isRemovePending: false,\n\n    errorOnfind: undefined,\n    errorOnGet: undefined,\n    errorOnCreate: undefined,\n    errorOnUpdate: undefined,\n    errorOnPatch: undefined,\n    errorOnRemove: undefined\n  }\n```\n\nThe following attributes are available in each service module's state:\n\n- `ids {Array}` - an array of plain ids representing the ids that belong to each object in the `keyedById` map.\n- `keyedById {Object}` - a hash map keyed by the id of each item.\n- `currentId {Number|String}` - the id of the item marked as current.\n- `copy {Object}` - a deep copy of the current item at the moment it was marked as current. You can make changes to the copy without modifying the `current`.  You can then use the `commitCopy` mutation to save the changes as the `current` or `rejectCopy` to revert `copy` to once again match `current`.\n- `servicePath {String}` - the full service path, even if you alias the namespace to something else.\n- `idField {String}` - the name of the field that holds each item's id. *Default: `'id'`*\n- `paginate {Boolean}` - Indicates if the service has pagination turned on.  This changes the response of the `find` action and getter to match the response that Feathers gives.\n\nThe following state attributes allow you to bind to the pending state of requests:\n- `isFindPending {Boolean}` - `true` if there's a pending `find` request.  `false` if not.\n- `isGetPending {Boolean}` - `true` if there's a pending `get` request.  `false` if not.\n- `isCreatePending {Boolean}` - `true` if there's a pending `create` request.  `false` if not.\n- `isUpdatePending {Boolean}` - `true` if there's a pending `update` request.  `false` if not.\n- `isPatchPending {Boolean}` - `true` if there's a pending `patch` request.  `false` if not.\n- `isRemovePending {Boolean}` - `true` if there's a pending `remove` request.  `false` if not.\n\nThe following state attribute will be populated with any request error, serialized as a plain object:\n- `errorOnFind {Error}`\n- `errorOnGet {Error}`\n- `errorOnCreate {Error}`\n- `errorOnUpdate {Error}`\n- `errorOnPatch {Error}`\n- `errorOnRemo {Error}`\n\n### Service Getters\nService modules include the following getters:\n- `list {Array}` - an array of items. The array form of `keyedById`  Read only.\n- `find(params) {Function}` - a helper function that allows you to use the [Feathers Adapter Common API](https://docs.feathersjs.com/api/databases/common.html) and [Query API](https://docs.feathersjs.com/api/databases/querying.html) to pull data from the store.  This allows you to treat the store just like a local Feathers database adapter (but without hooks).\n  - `params {Object}` - an object with a `query` object and an optional `paginate` boolean property. The `query` is in the FeathersJS query format.  You can set `params.paginate` to `false` to disable pagination for a single request.\n- `get(id[, params]) {Function}` - a function that allows you to query the store for a single item, by id.  It works the same way as `get` requests in Feathers database adapters.\n  - `id {Number|String}` - the id of the data to be retrieved by id from the store.\n  - `params {Object}` - an object containing a Feathers `query` object.\n- `current {Object}` - the object representing the `currentId`. It's pulled from the `keyedById` state.\n- `getCopy {Object}` - An alias to the `state.copy`.\n\n### Service Mutations\nThe following mutations are included in each service module.\n> **Note:** you would typically not call these directly, but instead with `store.commit('removeItem', 'itemId')`. Using vuex's mapMutations on a Vue component can simplify that to `this.removeItem('itemId')`\n\n#### `addItem(state, item)`\nAdds a single item to the `keyedById` map.\n- `item {Object}` - The item to be added to the store.\n\n#### `addItems(state, items)`\nAdds an array of items to the `keyedById` map.\n- `items {Array}` - the items to be added to the store.\n\n#### `updateItem(state, item)`\nUpdates an item in the store to match the passed in `item`.\n- `item {Object}` the item, including `id`, to replace the currently-stored item.\n\n#### `updateItems(state, items)`\nUpdates multiple items in the store to match the passed in array of items.\n- `items {Array}` - An array of items.\n\n#### `removeItem(state, item)`\nRemoves a single item.  `item` can be\n- `item {Number|String|Object}` - The item or id of the item to be deleted.\n\n#### `removeItems(state, items)`\nRemoves the passed in items or ids from the store.\n- `items {Array}` - An array of ids or of objects with ids that will be removed from the data store.\n\n#### `setCurrent(state, item)`\n- `item {Number|String|Object}` - the object with id to be set as the current item, or the id of the object in the store that should become the `current` item.  Setting the `current` item or id also create the deep-cloned `copy`.\n\n#### `commitCopy(state)`\nSaves changes from the `copy` to the `current` item.\n\n#### `rejectCopy(state)`\nRe-copies the data from `current` to `copy`, restoring the original copy.\n\n#### `clearCurrent(state)`\nClears the `current` item, which also clears the copy.\n\n#### `clearList(state)`\nClears the `list`, excepting the `current` item.\n\n#### `clearAll(state)`\nClears all data from `ids`, `keyedById`, and `currentId`\n\n#### Mutations for Managing Pending State\nThe following mutations are called automatically by the service actions, and will rarely, if ever, need to be used manually.\n- `setFindPending(state)` - sets `isFindPending` to `true`\n- `unsetFindPending(state)` - sets `isFindPending` to `false`\n- `setGetPending(state)` - sets `isGetPending` to `true`\n- `unsetGetPending(state)` - sets `isGetPending` to `false`\n- `setCreatePending(state)` - sets `isCreatePending` to `true`\n- `unsetCreatePending(state)` - sets `isCreatePending` to `false`\n- `setUpdatePending(state)` - sets `isUpdatePending` to `true`\n- `unsetUpdatePending(state)` - sets `isUpdatePending` to `false`\n- `setPatchPending(state)` - sets `isPatchPending` to `true`\n- `unsetPatchPending(state)` - sets `isPatchPending` to `false`\n- `setRemovePending(state)` - sets `isRemovePending` to `true`\n- `unsetRemovePending(state)` - sets `isRemovePending` to `false`\n\n#### Mutations for Managing Errors\nThe following mutations are called automatically by the service actions, and will rarely need to be used manually.\n- `setFindError(state, error)`\n- `clearFindError(state)`\n- `setGetError(state, error)`\n- `clearGetError(state)`\n- `setCreateError(state, error)`\n- `clearCreateError(state)`\n- `setUpdateError(state, error)`\n- `clearUpdateError(state)`\n- `setPatchError(state, error)`\n- `clearPatchError(state)`\n- `setRemoveError(state, error)`\n- `clearRemoveError(state)`\n\n### Service Actions\nAn action is included for each of the Feathers service interface methods.  These actions will affect changes in both the Feathers API server and the Vuex store.\n\nAll of the [Feathers Service Methods](https://docs.feathersjs.com/api/databases/common.html#service-methods) are supported.  Because Vuex only supports providing a single argument to actions, there is a slight change in syntax that works well.  If you need to pass multiple arguments to a service method, pass an array to the action with the order of the array elements matching the order of the arguments.  See each method for examples.\n\n> Note: If you use the Feathers service methods, directly, the store will not change. Only the actions will cause store changes.\n\n#### `find(params)`\nQuery an array of records from the server & add to the Vuex store.\n- `params {Object}` - An object containing a `query` object and an optional `paginate` boolean.  You can set `params.paginate` to `false` to disable pagination for a single request.\n\n```js\nlet params = {query: {completed: true}}\nstore.dispatch('todos/find', params)\n```\n\nSee the section about pagination, below, for more information that is applicable to the `find` action.\n\n#### `get(id)` or `get([id, params])`\nQuery a single record from the server & add to Vuex store\n- `id {Number|String}` - the `id` of the record being requested from the API server.\n- `params {Object}` - An object containing a `query` object.\n\n```js\nstore.dispatch('todos/get', 1)\n\n// Use an array to pass params\nlet params = {}\nstore.dispatch('todos/get', [1, params])\n```\n\n#### `create(data)`\nCreate one or multiple records.\n- `data {Object|Array}` - if an object is provided, a single record will be created. If an array of objects is provided, multiple records will be created.\n\n```js\nlet newTodo = {description: 'write good tests'}\nstore.dispatch('todos/create', newTodo)\n```\n\n\n#### `update(paramArray)`\nUpdate (overwrite) a record.\n- `paramArray {Array}` - array containing the three parameters update takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will overwrite the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {id: 5, description: 'write your tests', completed: true}\nlet params = {}\n// Overwrite item 1 with the above data (FYI: Most databases won't let you change the id.)\nstore.dispatch('todos/update', [1, data, params])\n```\n\nAlternatively in a Vue component\n```\nimport { mapActions } from 'vuex'\nexport default {\n  methods: {\n    ...mapActions('todos', [ 'update' ]),\n    addTodo () {\n      let data = {id: 5, description: 'write your tests', completed: true}\n      this.update([1, data, {}])\n    }\n  }\n}\n```\n\n#### `patch(paramArray)`\nPatch (merge in changes) one or more records\n- `paramArray {Array}` - array containing the three parameters patch takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will be merged into the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {description: 'write your tests', completed: true}\nlet params = {}\nstore.dispatch('todos/patch', [1, data, params])\n```\n\n\n#### `remove(id)`\nRemove/delete the record with the given `id`.\n- `id {Number|String}` - the `id` of the existing record being requested from the API server.\n\n```js\nstore.dispatch('todos/remove', 1)\n```\n\n## Querying with Find & Pagination\nBoth the `find` action and the `find` getter support pagination.  There are differences in how they work.\n\n### The `find` action\n\nThe `find` action queries data from the remote server.  It returns a promise that resolves to the response from the server.  The presence of pagination data will be determined by the server.\n\n`feathers-vuex@1.0.0` can store pagination data on a per-query basis.  The `pagination` store attribute maps queries to their most-recent pagination data.  It's an empty object by default, but after performing a single query (with pagination in the response), it will have a `default` property.  This property stores pagination information for the query.  Here's what it will look like:\n\n**`params = { query: {} }`**\n```js\n{\n  pagination: {\n    default: {\n      query: {}, // Same as params.query\n      ids: [0, 1, 2], // the ids in the store for the records that were returned from the server\n      limit: 0, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\nIt's possible that you'll want to store pagination information for more than one query.  This might be for different components making queries against the same service, for example.  You can use the `params.qid` (query identifier) property to assign a name to the query.  If you set a `qid` of `mainListView`, for example, the pagination for this query will show up under `pagination.mainListView`.  The `pagination.default` property will be used any time a `params.qid` is not provided.  Here's an example of what this might look like:\n\n**`params = { query: { $limit: 1 }, qid: 'mainListView' }`**\n```js\n// Data in the store\n{\n  pagination: {\n    mainListView: {\n      query: { $limit: 1 }, // Same as params.query\n      ids: [0], // the ids in the store for the records that were returned from the server\n      limit: 1, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\n> Note: The `find` action no longer returns reactive lists.  The list data will still be reactive, but new matches that arrive from the server do NOT get automatically added to lists.  There are two solutions to this:\n- Use the `find` action to pull in data from the server.  Use the `find` getter to pull a reactive list from the store.\n- Configure the `feathers-reactive` plugin with RxJS on your Feathers Client instance.  [Read the docs for implementation details.](https://github.com/feathers-plus/feathers-reactive)\n\n### The `find` getter\n\nThe `find` getter queries data from the local store using the same Feathers query syntax as on the server.  It is synchronous and returns the results of the query with pagination.  Pagination cannot be disabled.  It accepts a params object with a `query` attribute.  It does not use any other special attributes.  The returned object looks just like a paginated result that you would receive from the server:\n\n**`params = { query: {} }`**\n```js\n// The returned results object\n{\n  data: [{ _id: 1, ...etc }, ...etc],\n  limit: 0,\n  skip: 0,\n  total: 3\n}\n```\n\n\n###\n\n## Customizing a Service's Default Store\n\nAs shown in the first example, the service module allows you to customize its store:\n\n```js\nconst store = new Vuex.Store({\n  plugins: [\n    // Add custom state, getters, mutations, or actions, if needed\n    service('things', {\n      state: {\n        test: true\n      },\n      getters: {\n        getSomeData () {\n          return 'some data'\n        }\n      },\n      mutations: {\n        setTestToFalse (state) {\n          state.test = false\n        },\n        setTestToTrue (state) {\n          state.test = true\n        }\n      },\n      actions: {\n        asyncStuff ({ commit, dispatch }, args) {\n          commit('setTestToTrue')\n\n          return doSomethingAsync(id, params)\n            .then(result => {\n              commit('setTestToFalse')\n              return dispatch('otherAsyncStuff', result)\n            })\n        },\n        otherAsyncStuff ({commit}, args) {\n          return new Promise.resolve(result)\n        }\n      }\n    })\n  ]\n})\n\nassert(store.getters['todos/oneTwoThree'] === 123, 'the custom getter was available')\nstore.dispatch('todos/trigger')\nassert(store.state.todos.isTrue === true, 'the custom action was run')\n```\n\n## Auth Module\nThe Auth module helps setup your app for login / logout.  It includes the following state by default:\n```js\n{\n  accessToken: undefined, // The JWT\n  payload: undefined, // The JWT payload\n\n  isAuthenticatePending: false,\n  isLogoutPending: false,\n\n  errorOnAuthenticate: undefined,\n  errorOnLogout: undefined\n}\n```\n\n### Actions\nThe following actions are included in the `auth` module:\n- `authenticate`: use instead of `feathersClient.authenticate()`\n- `logout`: use instead of `feathersClient.logout()`\nThe Vuex auth store may not update if you use the feathers client version.\n\n## Working with Auth & Nuxt\n\n`feathers-vuex@1.0.0` ships with utilities that help with Nuxt auth related to JSON Web Tokens (JWT).  The most important utility is the `initAuth` utility.  It's for use during Nuxt's `nuxtServerInit` method, and sets up auth data automatically.  Here's an example store that uses it:\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex, { initAuth } from 'feathers-vuex'\n\nconst { service, auth } = feathersVuex(feathersClient)\n\nconst createStore = () => {\n  return new Vuex.Store({\n    state: {},\n    mutations: {\n      increment (state) {\n        state.counter++\n      }\n    },\n    actions: {\n      nuxtServerInit ({ commit, dispatch }, { req }) {\n        return initAuth({\n          commit,\n          dispatch,\n          req,\n          moduleName: 'auth',\n          cookieName: 'feathers-jwt'\n        })\n      }\n    },\n    plugins: [\n      service('courses'),\n      auth({\n        state: {\n          publicPages: [\n            'login',\n            'signup'\n          ]\n        }\n      })\n    ]\n  })\n}\n\nexport default createStore\n```\n\nNotice in the above example, I've added a `publicPages` property to the auth state.  Let's now use this state to redirect the browser when it's not on a public page and there's no auth:\n\nIn your Nuxt project, create the file `/middleware/auth.js`.  Then edit the `nuxt.config.js` and add after the `head` property, add a string that references this routing middleware so it looks like this:\n\n*// nuxt.config.js*\n```js\nrouter: {\n  middleware: ['auth']\n},\n```\n\nNow open the middleware and paste the following content.  All it does is redirect the page if there's no auth data in the store.\n\n```js\n// If it's a private page and there's no payload, redirect.\nexport default function (context) {\n  const { store, redirect, route } = context\n  const { auth } = store.state\n\n  if (!auth.publicPages.includes(route.name) && !auth.payload) {\n    return redirect('login')\n  }\n}\n```\n\nFor a summary, the `initAuth` function will make auth available in the state without much configuration.\n\n### Authentication storage with Nuxt\n\nSince Nuxt is running both client- and server side, it has limits on the availability of certain browser specific variables like `window`. Because of that, trying to configure the feathers client to use `window.localStorage` will result in an error or unexpected / not working behaviour. There's a simple solution though:\n\nWhen you configure the auth module in your feathers-client, use [cookie-storage](https://www.npmjs.com/package/cookie-storage) instead of `window.localStorage` to store the authentication data inside a cookie.\n\n```\nimport { CookieStorage } from 'cookie-storage'\n\nconst feathersClient = feathers()\n  .configure(auth({ storage: new CookieStorage() }))\n```\n\n### Configuration\nYou can provide a `userService` in the auth plugin's options to automatically populate the user upon successful login.\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex from 'feathers-vuex'\n\nconst { auth } = feathersVuex(feathersClient, { idField: '_id' })\n\nconst store = new Vuex.Store({\n  plugins: [\n    auth({ userService: 'users' }) // if your user service endpoint is named 'users'\n  ]\n})\n```\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"5d5b5b95a45bd39c9d780fa8cffbdde496a3455d","_id":"feathers-vuex@1.2.0-pre.19","_npmVersion":"5.8.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-RxA8+jIjlqj3TtbD5CTvYo+Rifj3vXq8x2coI0CMmu/5jGqCJPL5R5EjDyUVZEhg4/xqqAM0ZxeGzrEcHFxtgg==","shasum":"6dac3b45668702778c826833feddad83275656a1","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.2.0-pre.19.tgz","fileCount":26,"unpackedSize":288875,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICPNCElitefUpeOAqMFi9wWn0pqZcJbFeK1dU3pfAvLRAiEA9bqskSJdrx2Pxg4Hhky4yG0nZe2qafLXgzK7ILc2nnU="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.2.0-pre.19_1523421057511_0.7162377404697009"},"_hasShrinkwrap":false},"1.2.0-pre.20":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.2.0-pre.20","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.4.1","vue":"^2.4.4","vuex":"^2.4.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n> Integrate the Feathers Client into Vuex\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Important\nThe current version of `feathers-vuex` no longer requires (nor does it support) using `feathers-reactive` (0.5.x). `feathers-vuex` now takes full advantage of Vue's built-in reactivity.  If you still need to use `feathers-vuex` with `feathers-reactive`, install `feathers-vuex@0.4.x`.\n\n## Use\n`feathers-vuex` is a set of two utilities for integrating the Feathers Client into your Vuex store.  It allows you to eliminate boilerplate and easily customize the store.  To get it working, we first need a Feathers Client.  Note: as of version 1.0.0 `feathers-reactive` is no longer required to get socket updates.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\nconst { serviceModule, serviceModel, servicePlugin } = service\n\n\nconst api1Client = feathersVuex(feathersClient, { idField: '_id', apiPrefix: 'api1' })\nconst api2Client = feathersVuex(feathersClient2, { idField: '_id' })\n\n\nVue.use(FeathersVuex)\n\nconst todoModule = serviceModule('todos')\n\n// const Model = serviceModel(todoModule) // TodoModel is an extensible class\nconst Model = serviceModel()\nclass TodoModel = extends Model {}\nconst todoPlugin = servicePlugin(todoModule, TodoModel)\n\nconst TaskModel extends Model {}\n\nexport { TaskModel }\n\n\ncreated () {\n  this.todo = new this.$FeathersVuex.api1.Todo(data)\n}\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    servicePlugin('/tasks', TaskModel), // With our potentially customized TodoModel\n\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // turn off socket event listeners. It's true by default\n      modelName: 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    auth()\n  ]\n})\n```\n\nThe new `feathers-vuex` API is more Vuex-like.  All of the functionality remains the same, but it is no longer configured like a FeathersJS plugin.  While the previous functionality was nice for prototyping, it didn't work well in SSR scenarios, like with Nuxt.\n\nTo see `feathers-vuex` in a working vue-cli application, check out [`feathers-chat-vuex`](https://github.com/feathers-plus/feathers-chat-vuex).\n\n## A note about feathers-reactive\nPrevious versions of this plugin required both RxJS and `feathers-reactive` to receive realtime updates.  `feathers-vuex@1.0.0` has socket messaging support built in and takes advantage of Vuex reactivity, so RxJS and `feathers-reactive` are no longer required.\n\n## API Documentation\n\n### Global Configuration\n\nThe following default options are available for configuration:\n\n```js\nconst defaultOptions = {\n  idField: 'id', // The field in each record that will contain the id\n  autoRemove: false, // automatically remove records missing from responses (only use with feathers-rest)\n  nameStyle: 'short', // Determines the source of the module name. 'short' or 'path'\n  enableEvents: true, // Set to false to explicitly disable socket event handlers.\n  preferUpdate: false, // When true, calling modelInstance.save() will do an update instead of a patch.\n}\n```\n\nEach service module can also be individually configured.\n\n### The Vuex modules\n\nThere are two modules included:\n1. The Service module adds a Vuex store for new services.\n2. The Auth module sets up the Vuex store for authentication / logout.\n\n## Service Module\nThe `Service Module` sets up services in the Vuex store.  Each service will have the below default state in its store.\n\n### Service State\nEach service comes loaded with the following default state:\n```js\n{\n    ids: [],\n    keyedById: {}, // A hash map, keyed by id of each item\n    currentId: undefined, // The id of the item marked as current\n    copy: undefined, // A deep copy of the current item\n    idField: 'id',\n    servicePath: 'v1/todos' // The full service path\n    autoRemove: false, // Indicates that this service will not automatically remove results missing from subsequent requests.\n    paginate: false, // Indicates if pagination is enabled on the Feathers service.\n\n    isFindPending: false,\n    isGetPending: false,\n    isCreatePending: false,\n    isUpdatePending: false,\n    isPatchPending: false,\n    isRemovePending: false,\n\n    errorOnfind: undefined,\n    errorOnGet: undefined,\n    errorOnCreate: undefined,\n    errorOnUpdate: undefined,\n    errorOnPatch: undefined,\n    errorOnRemove: undefined\n  }\n```\n\nThe following attributes are available in each service module's state:\n\n- `ids {Array}` - an array of plain ids representing the ids that belong to each object in the `keyedById` map.\n- `keyedById {Object}` - a hash map keyed by the id of each item.\n- `currentId {Number|String}` - the id of the item marked as current.\n- `copy {Object}` - a deep copy of the current item at the moment it was marked as current. You can make changes to the copy without modifying the `current`.  You can then use the `commitCopy` mutation to save the changes as the `current` or `rejectCopy` to revert `copy` to once again match `current`.\n- `servicePath {String}` - the full service path, even if you alias the namespace to something else.\n- `idField {String}` - the name of the field that holds each item's id. *Default: `'id'`*\n- `paginate {Boolean}` - Indicates if the service has pagination turned on.  This changes the response of the `find` action and getter to match the response that Feathers gives.\n\nThe following state attributes allow you to bind to the pending state of requests:\n- `isFindPending {Boolean}` - `true` if there's a pending `find` request.  `false` if not.\n- `isGetPending {Boolean}` - `true` if there's a pending `get` request.  `false` if not.\n- `isCreatePending {Boolean}` - `true` if there's a pending `create` request.  `false` if not.\n- `isUpdatePending {Boolean}` - `true` if there's a pending `update` request.  `false` if not.\n- `isPatchPending {Boolean}` - `true` if there's a pending `patch` request.  `false` if not.\n- `isRemovePending {Boolean}` - `true` if there's a pending `remove` request.  `false` if not.\n\nThe following state attribute will be populated with any request error, serialized as a plain object:\n- `errorOnFind {Error}`\n- `errorOnGet {Error}`\n- `errorOnCreate {Error}`\n- `errorOnUpdate {Error}`\n- `errorOnPatch {Error}`\n- `errorOnRemo {Error}`\n\n### Service Getters\nService modules include the following getters:\n- `list {Array}` - an array of items. The array form of `keyedById`  Read only.\n- `find(params) {Function}` - a helper function that allows you to use the [Feathers Adapter Common API](https://docs.feathersjs.com/api/databases/common.html) and [Query API](https://docs.feathersjs.com/api/databases/querying.html) to pull data from the store.  This allows you to treat the store just like a local Feathers database adapter (but without hooks).\n  - `params {Object}` - an object with a `query` object and an optional `paginate` boolean property. The `query` is in the FeathersJS query format.  You can set `params.paginate` to `false` to disable pagination for a single request.\n- `get(id[, params]) {Function}` - a function that allows you to query the store for a single item, by id.  It works the same way as `get` requests in Feathers database adapters.\n  - `id {Number|String}` - the id of the data to be retrieved by id from the store.\n  - `params {Object}` - an object containing a Feathers `query` object.\n- `current {Object}` - the object representing the `currentId`. It's pulled from the `keyedById` state.\n- `getCopy {Object}` - An alias to the `state.copy`.\n\n### Service Mutations\nThe following mutations are included in each service module.\n> **Note:** you would typically not call these directly, but instead with `store.commit('removeItem', 'itemId')`. Using vuex's mapMutations on a Vue component can simplify that to `this.removeItem('itemId')`\n\n#### `addItem(state, item)`\nAdds a single item to the `keyedById` map.\n- `item {Object}` - The item to be added to the store.\n\n#### `addItems(state, items)`\nAdds an array of items to the `keyedById` map.\n- `items {Array}` - the items to be added to the store.\n\n#### `updateItem(state, item)`\nUpdates an item in the store to match the passed in `item`.\n- `item {Object}` the item, including `id`, to replace the currently-stored item.\n\n#### `updateItems(state, items)`\nUpdates multiple items in the store to match the passed in array of items.\n- `items {Array}` - An array of items.\n\n#### `removeItem(state, item)`\nRemoves a single item.  `item` can be\n- `item {Number|String|Object}` - The item or id of the item to be deleted.\n\n#### `removeItems(state, items)`\nRemoves the passed in items or ids from the store.\n- `items {Array}` - An array of ids or of objects with ids that will be removed from the data store.\n\n#### `setCurrent(state, item)`\n- `item {Number|String|Object}` - the object with id to be set as the current item, or the id of the object in the store that should become the `current` item.  Setting the `current` item or id also create the deep-cloned `copy`.\n\n#### `commitCopy(state)`\nSaves changes from the `copy` to the `current` item.\n\n#### `rejectCopy(state)`\nRe-copies the data from `current` to `copy`, restoring the original copy.\n\n#### `clearCurrent(state)`\nClears the `current` item, which also clears the copy.\n\n#### `clearList(state)`\nClears the `list`, excepting the `current` item.\n\n#### `clearAll(state)`\nClears all data from `ids`, `keyedById`, and `currentId`\n\n#### Mutations for Managing Pending State\nThe following mutations are called automatically by the service actions, and will rarely, if ever, need to be used manually.\n- `setFindPending(state)` - sets `isFindPending` to `true`\n- `unsetFindPending(state)` - sets `isFindPending` to `false`\n- `setGetPending(state)` - sets `isGetPending` to `true`\n- `unsetGetPending(state)` - sets `isGetPending` to `false`\n- `setCreatePending(state)` - sets `isCreatePending` to `true`\n- `unsetCreatePending(state)` - sets `isCreatePending` to `false`\n- `setUpdatePending(state)` - sets `isUpdatePending` to `true`\n- `unsetUpdatePending(state)` - sets `isUpdatePending` to `false`\n- `setPatchPending(state)` - sets `isPatchPending` to `true`\n- `unsetPatchPending(state)` - sets `isPatchPending` to `false`\n- `setRemovePending(state)` - sets `isRemovePending` to `true`\n- `unsetRemovePending(state)` - sets `isRemovePending` to `false`\n\n#### Mutations for Managing Errors\nThe following mutations are called automatically by the service actions, and will rarely need to be used manually.\n- `setFindError(state, error)`\n- `clearFindError(state)`\n- `setGetError(state, error)`\n- `clearGetError(state)`\n- `setCreateError(state, error)`\n- `clearCreateError(state)`\n- `setUpdateError(state, error)`\n- `clearUpdateError(state)`\n- `setPatchError(state, error)`\n- `clearPatchError(state)`\n- `setRemoveError(state, error)`\n- `clearRemoveError(state)`\n\n### Service Actions\nAn action is included for each of the Feathers service interface methods.  These actions will affect changes in both the Feathers API server and the Vuex store.\n\nAll of the [Feathers Service Methods](https://docs.feathersjs.com/api/databases/common.html#service-methods) are supported.  Because Vuex only supports providing a single argument to actions, there is a slight change in syntax that works well.  If you need to pass multiple arguments to a service method, pass an array to the action with the order of the array elements matching the order of the arguments.  See each method for examples.\n\n> Note: If you use the Feathers service methods, directly, the store will not change. Only the actions will cause store changes.\n\n#### `find(params)`\nQuery an array of records from the server & add to the Vuex store.\n- `params {Object}` - An object containing a `query` object and an optional `paginate` boolean.  You can set `params.paginate` to `false` to disable pagination for a single request.\n\n```js\nlet params = {query: {completed: true}}\nstore.dispatch('todos/find', params)\n```\n\nSee the section about pagination, below, for more information that is applicable to the `find` action.\n\n#### `get(id)` or `get([id, params])`\nQuery a single record from the server & add to Vuex store\n- `id {Number|String}` - the `id` of the record being requested from the API server.\n- `params {Object}` - An object containing a `query` object.\n\n```js\nstore.dispatch('todos/get', 1)\n\n// Use an array to pass params\nlet params = {}\nstore.dispatch('todos/get', [1, params])\n```\n\n#### `create(data)`\nCreate one or multiple records.\n- `data {Object|Array}` - if an object is provided, a single record will be created. If an array of objects is provided, multiple records will be created.\n\n```js\nlet newTodo = {description: 'write good tests'}\nstore.dispatch('todos/create', newTodo)\n```\n\n\n#### `update(paramArray)`\nUpdate (overwrite) a record.\n- `paramArray {Array}` - array containing the three parameters update takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will overwrite the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {id: 5, description: 'write your tests', completed: true}\nlet params = {}\n// Overwrite item 1 with the above data (FYI: Most databases won't let you change the id.)\nstore.dispatch('todos/update', [1, data, params])\n```\n\nAlternatively in a Vue component\n```\nimport { mapActions } from 'vuex'\nexport default {\n  methods: {\n    ...mapActions('todos', [ 'update' ]),\n    addTodo () {\n      let data = {id: 5, description: 'write your tests', completed: true}\n      this.update([1, data, {}])\n    }\n  }\n}\n```\n\n#### `patch(paramArray)`\nPatch (merge in changes) one or more records\n- `paramArray {Array}` - array containing the three parameters patch takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will be merged into the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {description: 'write your tests', completed: true}\nlet params = {}\nstore.dispatch('todos/patch', [1, data, params])\n```\n\n\n#### `remove(id)`\nRemove/delete the record with the given `id`.\n- `id {Number|String}` - the `id` of the existing record being requested from the API server.\n\n```js\nstore.dispatch('todos/remove', 1)\n```\n\n## Querying with Find & Pagination\nBoth the `find` action and the `find` getter support pagination.  There are differences in how they work.\n\n### The `find` action\n\nThe `find` action queries data from the remote server.  It returns a promise that resolves to the response from the server.  The presence of pagination data will be determined by the server.\n\n`feathers-vuex@1.0.0` can store pagination data on a per-query basis.  The `pagination` store attribute maps queries to their most-recent pagination data.  It's an empty object by default, but after performing a single query (with pagination in the response), it will have a `default` property.  This property stores pagination information for the query.  Here's what it will look like:\n\n**`params = { query: {} }`**\n```js\n{\n  pagination: {\n    default: {\n      query: {}, // Same as params.query\n      ids: [0, 1, 2], // the ids in the store for the records that were returned from the server\n      limit: 0, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\nIt's possible that you'll want to store pagination information for more than one query.  This might be for different components making queries against the same service, for example.  You can use the `params.qid` (query identifier) property to assign a name to the query.  If you set a `qid` of `mainListView`, for example, the pagination for this query will show up under `pagination.mainListView`.  The `pagination.default` property will be used any time a `params.qid` is not provided.  Here's an example of what this might look like:\n\n**`params = { query: { $limit: 1 }, qid: 'mainListView' }`**\n```js\n// Data in the store\n{\n  pagination: {\n    mainListView: {\n      query: { $limit: 1 }, // Same as params.query\n      ids: [0], // the ids in the store for the records that were returned from the server\n      limit: 1, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\n> Note: The `find` action no longer returns reactive lists.  The list data will still be reactive, but new matches that arrive from the server do NOT get automatically added to lists.  There are two solutions to this:\n- Use the `find` action to pull in data from the server.  Use the `find` getter to pull a reactive list from the store.\n- Configure the `feathers-reactive` plugin with RxJS on your Feathers Client instance.  [Read the docs for implementation details.](https://github.com/feathers-plus/feathers-reactive)\n\n### The `find` getter\n\nThe `find` getter queries data from the local store using the same Feathers query syntax as on the server.  It is synchronous and returns the results of the query with pagination.  Pagination cannot be disabled.  It accepts a params object with a `query` attribute.  It does not use any other special attributes.  The returned object looks just like a paginated result that you would receive from the server:\n\n**`params = { query: {} }`**\n```js\n// The returned results object\n{\n  data: [{ _id: 1, ...etc }, ...etc],\n  limit: 0,\n  skip: 0,\n  total: 3\n}\n```\n\n\n###\n\n## Customizing a Service's Default Store\n\nAs shown in the first example, the service module allows you to customize its store:\n\n```js\nconst store = new Vuex.Store({\n  plugins: [\n    // Add custom state, getters, mutations, or actions, if needed\n    service('things', {\n      state: {\n        test: true\n      },\n      getters: {\n        getSomeData () {\n          return 'some data'\n        }\n      },\n      mutations: {\n        setTestToFalse (state) {\n          state.test = false\n        },\n        setTestToTrue (state) {\n          state.test = true\n        }\n      },\n      actions: {\n        asyncStuff ({ commit, dispatch }, args) {\n          commit('setTestToTrue')\n\n          return doSomethingAsync(id, params)\n            .then(result => {\n              commit('setTestToFalse')\n              return dispatch('otherAsyncStuff', result)\n            })\n        },\n        otherAsyncStuff ({commit}, args) {\n          return new Promise.resolve(result)\n        }\n      }\n    })\n  ]\n})\n\nassert(store.getters['todos/oneTwoThree'] === 123, 'the custom getter was available')\nstore.dispatch('todos/trigger')\nassert(store.state.todos.isTrue === true, 'the custom action was run')\n```\n\n## Auth Module\nThe Auth module helps setup your app for login / logout.  It includes the following state by default:\n```js\n{\n  accessToken: undefined, // The JWT\n  payload: undefined, // The JWT payload\n\n  isAuthenticatePending: false,\n  isLogoutPending: false,\n\n  errorOnAuthenticate: undefined,\n  errorOnLogout: undefined\n}\n```\n\n### Actions\nThe following actions are included in the `auth` module:\n- `authenticate`: use instead of `feathersClient.authenticate()`\n- `logout`: use instead of `feathersClient.logout()`\nThe Vuex auth store may not update if you use the feathers client version.\n\n## Working with Auth & Nuxt\n\n`feathers-vuex@1.0.0` ships with utilities that help with Nuxt auth related to JSON Web Tokens (JWT).  The most important utility is the `initAuth` utility.  It's for use during Nuxt's `nuxtServerInit` method, and sets up auth data automatically.  Here's an example store that uses it:\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex, { initAuth } from 'feathers-vuex'\n\nconst { service, auth } = feathersVuex(feathersClient)\n\nconst createStore = () => {\n  return new Vuex.Store({\n    state: {},\n    mutations: {\n      increment (state) {\n        state.counter++\n      }\n    },\n    actions: {\n      nuxtServerInit ({ commit, dispatch }, { req }) {\n        return initAuth({\n          commit,\n          dispatch,\n          req,\n          moduleName: 'auth',\n          cookieName: 'feathers-jwt'\n        })\n      }\n    },\n    plugins: [\n      service('courses'),\n      auth({\n        state: {\n          publicPages: [\n            'login',\n            'signup'\n          ]\n        }\n      })\n    ]\n  })\n}\n\nexport default createStore\n```\n\nNotice in the above example, I've added a `publicPages` property to the auth state.  Let's now use this state to redirect the browser when it's not on a public page and there's no auth:\n\nIn your Nuxt project, create the file `/middleware/auth.js`.  Then edit the `nuxt.config.js` and add after the `head` property, add a string that references this routing middleware so it looks like this:\n\n*// nuxt.config.js*\n```js\nrouter: {\n  middleware: ['auth']\n},\n```\n\nNow open the middleware and paste the following content.  All it does is redirect the page if there's no auth data in the store.\n\n```js\n// If it's a private page and there's no payload, redirect.\nexport default function (context) {\n  const { store, redirect, route } = context\n  const { auth } = store.state\n\n  if (!auth.publicPages.includes(route.name) && !auth.payload) {\n    return redirect('login')\n  }\n}\n```\n\nFor a summary, the `initAuth` function will make auth available in the state without much configuration.\n\n### Authentication storage with Nuxt\n\nSince Nuxt is running both client- and server side, it has limits on the availability of certain browser specific variables like `window`. Because of that, trying to configure the feathers client to use `window.localStorage` will result in an error or unexpected / not working behaviour. There's a simple solution though:\n\nWhen you configure the auth module in your feathers-client, use [cookie-storage](https://www.npmjs.com/package/cookie-storage) instead of `window.localStorage` to store the authentication data inside a cookie.\n\n```\nimport { CookieStorage } from 'cookie-storage'\n\nconst feathersClient = feathers()\n  .configure(auth({ storage: new CookieStorage() }))\n```\n\n### Configuration\nYou can provide a `userService` in the auth plugin's options to automatically populate the user upon successful login.\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex from 'feathers-vuex'\n\nconst { auth } = feathersVuex(feathersClient, { idField: '_id' })\n\nconst store = new Vuex.Store({\n  plugins: [\n    auth({ userService: 'users' }) // if your user service endpoint is named 'users'\n  ]\n})\n```\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"ad2221411fe3b69ca854efce2acf8604c199c3b6","_id":"feathers-vuex@1.2.0-pre.20","_npmVersion":"5.8.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-sua+/kJmKMAG6rXy0ra5WYyYfWWRf+GlxdvtFX6TH6ynTwwtMcPH56uarghBmD0xltFJUbQiCMDuafXwTdxy1Q==","shasum":"07c6abad8713ab3c08e8616990882b9ea56b3255","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.2.0-pre.20.tgz","fileCount":26,"unpackedSize":290425,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa1AuqCRA9TVsSAnZWagAA+XIQAI53AkqjK+lX5bI59qk+\nJbJex8k+hO0X0XUz9E4wdL8c5nj4xNfPJWdznJL5mAn6edJdRpGtha0Z23Wd\nRGlCN4puDLt/GfirZICkEmNrhbNBE3E6gqFU4hu9T0495ML0A7KHTCGYf8Mz\nyb9Bc7juDtddj5A8CX//BM2OoQeeAMmXxmJk9GDxuROPhpGzGZfPr5/VE+i5\n02h748W9b5m6pjFTpMZlIt+z0/lfjKYP8hpPsDjPpnFvG48BROF9uAkg7GTZ\nJlCRPOBdFi0dmV35FVfcme+X8rP4kO1Y4Pl7s0EzW8tYnzb1/VosvIJ4hwSA\n/yRJQT3Btdcz8mt/czFg5kYaBvNiLejQYyANLtpS76Zw80BcwxzG/m5v3N/s\npE1WZQkUWqynOBlF/1JrCkVXdZa9zDt/Jp+KXBQscGrJqlGbd2g/VFScRk6k\nKEVTTBPTrUK66lkU+Ar1J0Pf7oVqmrpzXBtj+iu5cf6N38j9auA9ZEnjOJ14\n8YD9nmmUPJjh7eU8oOHnNHtn5rVxrlU+WtpOF/mLwiK+9xzmEv90PsqOQjbx\nHuGFi6nwJnV4vOB724Cs3caIJSW1y7+ffrFyjO5X9MzEeTtk1usNC2slY5yc\np5n+3t8CcQLsJ/OgpbkrblJM/bPiluLloVldWH50QSFWLfDrBVfoGXrVum4g\nn8NE\r\n=or7E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBVNTXlEjQgFKMNz7Ok5oR/QZsE5xoi0yzSqQl1zlEAuAiAz3KAoyvy8/gdTV0LZY8sfdA2svvrrGnwzMLRz4cSeVw=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.2.0-pre.20_1523846056904_0.8131907472408975"},"_hasShrinkwrap":false},"1.2.0-pre.21":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.2.0-pre.21","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.4.1","vue":"^2.4.4","vuex":"^2.4.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Important\nThe current version of `feathers-vuex` no longer requires (nor does it support) using `feathers-reactive` (0.5.x). `feathers-vuex` now takes full advantage of Vue's built-in reactivity.  If you still need to use `feathers-vuex` with `feathers-reactive`, install `feathers-vuex@0.4.x`.\n\n## Use\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\nconst { serviceModule, serviceModel, servicePlugin } = service\n\n\nconst api1Client = feathersVuex(feathersClient, { idField: '_id', apiPrefix: 'api1' })\nconst api2Client = feathersVuex(feathersClient2, { idField: '_id' })\n\n\nVue.use(FeathersVuex)\n\nconst todoModule = serviceModule('todos')\n\n// const Model = serviceModel(todoModule) // TodoModel is an extensible class\nconst Model = serviceModel()\nclass TodoModel = extends Model {}\nconst todoPlugin = servicePlugin(todoModule, TodoModel)\n\nconst TaskModel extends Model {}\n\nexport { TaskModel }\n\n\ncreated () {\n  this.todo = new this.$FeathersVuex.api1.Todo(data)\n}\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    servicePlugin('/tasks', TaskModel), // With our potentially customized TodoModel\n\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // turn off socket event listeners. It's true by default\n      modelName: 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    auth()\n  ]\n})\n```\n\nThe new `feathers-vuex` API is more Vuex-like.  All of the functionality remains the same, but it is no longer configured like a FeathersJS plugin.  While the previous functionality was nice for prototyping, it didn't work well in SSR scenarios, like with Nuxt.\n\nTo see `feathers-vuex` in a working vue-cli application, check out [`feathers-chat-vuex`](https://github.com/feathers-plus/feathers-chat-vuex).\n\n## A note about feathers-reactive\nPrevious versions of this plugin required both RxJS and `feathers-reactive` to receive realtime updates.  `feathers-vuex@1.0.0` has socket messaging support built in and takes advantage of Vuex reactivity, so RxJS and `feathers-reactive` are no longer required.\n\n## API Documentation\n\n### Global Configuration\n\nThe following default options are available for configuration:\n\n```js\nconst defaultOptions = {\n  idField: 'id', // The field in each record that will contain the id\n  autoRemove: false, // automatically remove records missing from responses (only use with feathers-rest)\n  nameStyle: 'short', // Determines the source of the module name. 'short' or 'path'\n  enableEvents: true, // Set to false to explicitly disable socket event handlers.\n  preferUpdate: false, // When true, calling modelInstance.save() will do an update instead of a patch.\n}\n```\n\nEach service module can also be individually configured.\n\n### The Vuex modules\n\nThere are two modules included:\n1. The Service module adds a Vuex store for new services.\n2. The Auth module sets up the Vuex store for authentication / logout.\n\n## Service Module\nThe `Service Module` sets up services in the Vuex store.  Each service will have the below default state in its store.\n\n### Service State\nEach service comes loaded with the following default state:\n```js\n{\n    ids: [],\n    keyedById: {}, // A hash map, keyed by id of each item\n    currentId: undefined, // The id of the item marked as current\n    copy: undefined, // A deep copy of the current item\n    idField: 'id',\n    servicePath: 'v1/todos' // The full service path\n    autoRemove: false, // Indicates that this service will not automatically remove results missing from subsequent requests.\n    paginate: false, // Indicates if pagination is enabled on the Feathers service.\n\n    isFindPending: false,\n    isGetPending: false,\n    isCreatePending: false,\n    isUpdatePending: false,\n    isPatchPending: false,\n    isRemovePending: false,\n\n    errorOnfind: undefined,\n    errorOnGet: undefined,\n    errorOnCreate: undefined,\n    errorOnUpdate: undefined,\n    errorOnPatch: undefined,\n    errorOnRemove: undefined\n  }\n```\n\nThe following attributes are available in each service module's state:\n\n- `ids {Array}` - an array of plain ids representing the ids that belong to each object in the `keyedById` map.\n- `keyedById {Object}` - a hash map keyed by the id of each item.\n- `currentId {Number|String}` - the id of the item marked as current.\n- `copy {Object}` - a deep copy of the current item at the moment it was marked as current. You can make changes to the copy without modifying the `current`.  You can then use the `commitCopy` mutation to save the changes as the `current` or `rejectCopy` to revert `copy` to once again match `current`.\n- `servicePath {String}` - the full service path, even if you alias the namespace to something else.\n- `idField {String}` - the name of the field that holds each item's id. *Default: `'id'`*\n- `paginate {Boolean}` - Indicates if the service has pagination turned on.  This changes the response of the `find` action and getter to match the response that Feathers gives.\n\nThe following state attributes allow you to bind to the pending state of requests:\n- `isFindPending {Boolean}` - `true` if there's a pending `find` request.  `false` if not.\n- `isGetPending {Boolean}` - `true` if there's a pending `get` request.  `false` if not.\n- `isCreatePending {Boolean}` - `true` if there's a pending `create` request.  `false` if not.\n- `isUpdatePending {Boolean}` - `true` if there's a pending `update` request.  `false` if not.\n- `isPatchPending {Boolean}` - `true` if there's a pending `patch` request.  `false` if not.\n- `isRemovePending {Boolean}` - `true` if there's a pending `remove` request.  `false` if not.\n\nThe following state attribute will be populated with any request error, serialized as a plain object:\n- `errorOnFind {Error}`\n- `errorOnGet {Error}`\n- `errorOnCreate {Error}`\n- `errorOnUpdate {Error}`\n- `errorOnPatch {Error}`\n- `errorOnRemo {Error}`\n\n### Service Getters\nService modules include the following getters:\n- `list {Array}` - an array of items. The array form of `keyedById`  Read only.\n- `find(params) {Function}` - a helper function that allows you to use the [Feathers Adapter Common API](https://docs.feathersjs.com/api/databases/common.html) and [Query API](https://docs.feathersjs.com/api/databases/querying.html) to pull data from the store.  This allows you to treat the store just like a local Feathers database adapter (but without hooks).\n  - `params {Object}` - an object with a `query` object and an optional `paginate` boolean property. The `query` is in the FeathersJS query format.  You can set `params.paginate` to `false` to disable pagination for a single request.\n- `get(id[, params]) {Function}` - a function that allows you to query the store for a single item, by id.  It works the same way as `get` requests in Feathers database adapters.\n  - `id {Number|String}` - the id of the data to be retrieved by id from the store.\n  - `params {Object}` - an object containing a Feathers `query` object.\n- `current {Object}` - the object representing the `currentId`. It's pulled from the `keyedById` state.\n- `getCopy {Object}` - An alias to the `state.copy`.\n\n### Service Mutations\nThe following mutations are included in each service module.\n> **Note:** you would typically not call these directly, but instead with `store.commit('removeItem', 'itemId')`. Using vuex's mapMutations on a Vue component can simplify that to `this.removeItem('itemId')`\n\n#### `addItem(state, item)`\nAdds a single item to the `keyedById` map.\n- `item {Object}` - The item to be added to the store.\n\n#### `addItems(state, items)`\nAdds an array of items to the `keyedById` map.\n- `items {Array}` - the items to be added to the store.\n\n#### `updateItem(state, item)`\nUpdates an item in the store to match the passed in `item`.\n- `item {Object}` the item, including `id`, to replace the currently-stored item.\n\n#### `updateItems(state, items)`\nUpdates multiple items in the store to match the passed in array of items.\n- `items {Array}` - An array of items.\n\n#### `removeItem(state, item)`\nRemoves a single item.  `item` can be\n- `item {Number|String|Object}` - The item or id of the item to be deleted.\n\n#### `removeItems(state, items)`\nRemoves the passed in items or ids from the store.\n- `items {Array}` - An array of ids or of objects with ids that will be removed from the data store.\n\n#### `setCurrent(state, item)`\n- `item {Number|String|Object}` - the object with id to be set as the current item, or the id of the object in the store that should become the `current` item.  Setting the `current` item or id also create the deep-cloned `copy`.\n\n#### `commitCopy(state)`\nSaves changes from the `copy` to the `current` item.\n\n#### `rejectCopy(state)`\nRe-copies the data from `current` to `copy`, restoring the original copy.\n\n#### `clearCurrent(state)`\nClears the `current` item, which also clears the copy.\n\n#### `clearList(state)`\nClears the `list`, excepting the `current` item.\n\n#### `clearAll(state)`\nClears all data from `ids`, `keyedById`, and `currentId`\n\n#### Mutations for Managing Pending State\nThe following mutations are called automatically by the service actions, and will rarely, if ever, need to be used manually.\n- `setFindPending(state)` - sets `isFindPending` to `true`\n- `unsetFindPending(state)` - sets `isFindPending` to `false`\n- `setGetPending(state)` - sets `isGetPending` to `true`\n- `unsetGetPending(state)` - sets `isGetPending` to `false`\n- `setCreatePending(state)` - sets `isCreatePending` to `true`\n- `unsetCreatePending(state)` - sets `isCreatePending` to `false`\n- `setUpdatePending(state)` - sets `isUpdatePending` to `true`\n- `unsetUpdatePending(state)` - sets `isUpdatePending` to `false`\n- `setPatchPending(state)` - sets `isPatchPending` to `true`\n- `unsetPatchPending(state)` - sets `isPatchPending` to `false`\n- `setRemovePending(state)` - sets `isRemovePending` to `true`\n- `unsetRemovePending(state)` - sets `isRemovePending` to `false`\n\n#### Mutations for Managing Errors\nThe following mutations are called automatically by the service actions, and will rarely need to be used manually.\n- `setFindError(state, error)`\n- `clearFindError(state)`\n- `setGetError(state, error)`\n- `clearGetError(state)`\n- `setCreateError(state, error)`\n- `clearCreateError(state)`\n- `setUpdateError(state, error)`\n- `clearUpdateError(state)`\n- `setPatchError(state, error)`\n- `clearPatchError(state)`\n- `setRemoveError(state, error)`\n- `clearRemoveError(state)`\n\n### Service Actions\nAn action is included for each of the Feathers service interface methods.  These actions will affect changes in both the Feathers API server and the Vuex store.\n\nAll of the [Feathers Service Methods](https://docs.feathersjs.com/api/databases/common.html#service-methods) are supported.  Because Vuex only supports providing a single argument to actions, there is a slight change in syntax that works well.  If you need to pass multiple arguments to a service method, pass an array to the action with the order of the array elements matching the order of the arguments.  See each method for examples.\n\n> Note: If you use the Feathers service methods, directly, the store will not change. Only the actions will cause store changes.\n\n#### `find(params)`\nQuery an array of records from the server & add to the Vuex store.\n- `params {Object}` - An object containing a `query` object and an optional `paginate` boolean.  You can set `params.paginate` to `false` to disable pagination for a single request.\n\n```js\nlet params = {query: {completed: true}}\nstore.dispatch('todos/find', params)\n```\n\nSee the section about pagination, below, for more information that is applicable to the `find` action.\n\n#### `get(id)` or `get([id, params])`\nQuery a single record from the server & add to Vuex store\n- `id {Number|String}` - the `id` of the record being requested from the API server.\n- `params {Object}` - An object containing a `query` object.\n\n```js\nstore.dispatch('todos/get', 1)\n\n// Use an array to pass params\nlet params = {}\nstore.dispatch('todos/get', [1, params])\n```\n\n#### `create(data)`\nCreate one or multiple records.\n- `data {Object|Array}` - if an object is provided, a single record will be created. If an array of objects is provided, multiple records will be created.\n\n```js\nlet newTodo = {description: 'write good tests'}\nstore.dispatch('todos/create', newTodo)\n```\n\n\n#### `update(paramArray)`\nUpdate (overwrite) a record.\n- `paramArray {Array}` - array containing the three parameters update takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will overwrite the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {id: 5, description: 'write your tests', completed: true}\nlet params = {}\n// Overwrite item 1 with the above data (FYI: Most databases won't let you change the id.)\nstore.dispatch('todos/update', [1, data, params])\n```\n\nAlternatively in a Vue component\n```\nimport { mapActions } from 'vuex'\nexport default {\n  methods: {\n    ...mapActions('todos', [ 'update' ]),\n    addTodo () {\n      let data = {id: 5, description: 'write your tests', completed: true}\n      this.update([1, data, {}])\n    }\n  }\n}\n```\n\n#### `patch(paramArray)`\nPatch (merge in changes) one or more records\n- `paramArray {Array}` - array containing the three parameters patch takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will be merged into the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {description: 'write your tests', completed: true}\nlet params = {}\nstore.dispatch('todos/patch', [1, data, params])\n```\n\n\n#### `remove(id)`\nRemove/delete the record with the given `id`.\n- `id {Number|String}` - the `id` of the existing record being requested from the API server.\n\n```js\nstore.dispatch('todos/remove', 1)\n```\n\n## Querying with Find & Pagination\nBoth the `find` action and the `find` getter support pagination.  There are differences in how they work.\n\n### The `find` action\n\nThe `find` action queries data from the remote server.  It returns a promise that resolves to the response from the server.  The presence of pagination data will be determined by the server.\n\n`feathers-vuex@1.0.0` can store pagination data on a per-query basis.  The `pagination` store attribute maps queries to their most-recent pagination data.  It's an empty object by default, but after performing a single query (with pagination in the response), it will have a `default` property.  This property stores pagination information for the query.  Here's what it will look like:\n\n**`params = { query: {} }`**\n```js\n{\n  pagination: {\n    default: {\n      query: {}, // Same as params.query\n      ids: [0, 1, 2], // the ids in the store for the records that were returned from the server\n      limit: 0, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\nIt's possible that you'll want to store pagination information for more than one query.  This might be for different components making queries against the same service, for example.  You can use the `params.qid` (query identifier) property to assign a name to the query.  If you set a `qid` of `mainListView`, for example, the pagination for this query will show up under `pagination.mainListView`.  The `pagination.default` property will be used any time a `params.qid` is not provided.  Here's an example of what this might look like:\n\n**`params = { query: { $limit: 1 }, qid: 'mainListView' }`**\n```js\n// Data in the store\n{\n  pagination: {\n    mainListView: {\n      query: { $limit: 1 }, // Same as params.query\n      ids: [0], // the ids in the store for the records that were returned from the server\n      limit: 1, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\n> Note: The `find` action no longer returns reactive lists.  The list data will still be reactive, but new matches that arrive from the server do NOT get automatically added to lists.  There are two solutions to this:\n- Use the `find` action to pull in data from the server.  Use the `find` getter to pull a reactive list from the store.\n- Configure the `feathers-reactive` plugin with RxJS on your Feathers Client instance.  [Read the docs for implementation details.](https://github.com/feathers-plus/feathers-reactive)\n\n### The `find` getter\n\nThe `find` getter queries data from the local store using the same Feathers query syntax as on the server.  It is synchronous and returns the results of the query with pagination.  Pagination cannot be disabled.  It accepts a params object with a `query` attribute.  It does not use any other special attributes.  The returned object looks just like a paginated result that you would receive from the server:\n\n**`params = { query: {} }`**\n```js\n// The returned results object\n{\n  data: [{ _id: 1, ...etc }, ...etc],\n  limit: 0,\n  skip: 0,\n  total: 3\n}\n```\n\n\n###\n\n## Customizing a Service's Default Store\n\nAs shown in the first example, the service module allows you to customize its store:\n\n```js\nconst store = new Vuex.Store({\n  plugins: [\n    // Add custom state, getters, mutations, or actions, if needed\n    service('things', {\n      state: {\n        test: true\n      },\n      getters: {\n        getSomeData () {\n          return 'some data'\n        }\n      },\n      mutations: {\n        setTestToFalse (state) {\n          state.test = false\n        },\n        setTestToTrue (state) {\n          state.test = true\n        }\n      },\n      actions: {\n        asyncStuff ({ commit, dispatch }, args) {\n          commit('setTestToTrue')\n\n          return doSomethingAsync(id, params)\n            .then(result => {\n              commit('setTestToFalse')\n              return dispatch('otherAsyncStuff', result)\n            })\n        },\n        otherAsyncStuff ({commit}, args) {\n          return new Promise.resolve(result)\n        }\n      }\n    })\n  ]\n})\n\nassert(store.getters['todos/oneTwoThree'] === 123, 'the custom getter was available')\nstore.dispatch('todos/trigger')\nassert(store.state.todos.isTrue === true, 'the custom action was run')\n```\n\n## Auth Module\nThe Auth module helps setup your app for login / logout.  It includes the following state by default:\n```js\n{\n  accessToken: undefined, // The JWT\n  payload: undefined, // The JWT payload\n\n  isAuthenticatePending: false,\n  isLogoutPending: false,\n\n  errorOnAuthenticate: undefined,\n  errorOnLogout: undefined\n}\n```\n\n### Actions\nThe following actions are included in the `auth` module:\n- `authenticate`: use instead of `feathersClient.authenticate()`\n- `logout`: use instead of `feathersClient.logout()`\nThe Vuex auth store may not update if you use the feathers client version.\n\n## Working with Auth & Nuxt\n\n`feathers-vuex@1.0.0` ships with utilities that help with Nuxt auth related to JSON Web Tokens (JWT).  The most important utility is the `initAuth` utility.  It's for use during Nuxt's `nuxtServerInit` method, and sets up auth data automatically.  Here's an example store that uses it:\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex, { initAuth } from 'feathers-vuex'\n\nconst { service, auth } = feathersVuex(feathersClient)\n\nconst createStore = () => {\n  return new Vuex.Store({\n    state: {},\n    mutations: {\n      increment (state) {\n        state.counter++\n      }\n    },\n    actions: {\n      nuxtServerInit ({ commit, dispatch }, { req }) {\n        return initAuth({\n          commit,\n          dispatch,\n          req,\n          moduleName: 'auth',\n          cookieName: 'feathers-jwt'\n        })\n      }\n    },\n    plugins: [\n      service('courses'),\n      auth({\n        state: {\n          publicPages: [\n            'login',\n            'signup'\n          ]\n        }\n      })\n    ]\n  })\n}\n\nexport default createStore\n```\n\nNotice in the above example, I've added a `publicPages` property to the auth state.  Let's now use this state to redirect the browser when it's not on a public page and there's no auth:\n\nIn your Nuxt project, create the file `/middleware/auth.js`.  Then edit the `nuxt.config.js` and add after the `head` property, add a string that references this routing middleware so it looks like this:\n\n*// nuxt.config.js*\n```js\nrouter: {\n  middleware: ['auth']\n},\n```\n\nNow open the middleware and paste the following content.  All it does is redirect the page if there's no auth data in the store.\n\n```js\n// If it's a private page and there's no payload, redirect.\nexport default function (context) {\n  const { store, redirect, route } = context\n  const { auth } = store.state\n\n  if (!auth.publicPages.includes(route.name) && !auth.payload) {\n    return redirect('login')\n  }\n}\n```\n\nFor a summary, the `initAuth` function will make auth available in the state without much configuration.\n\n### Authentication storage with Nuxt\n\nSince Nuxt is running both client- and server side, it has limits on the availability of certain browser specific variables like `window`. Because of that, trying to configure the feathers client to use `window.localStorage` will result in an error or unexpected / not working behaviour. There's a simple solution though:\n\nWhen you configure the auth module in your feathers-client, use [cookie-storage](https://www.npmjs.com/package/cookie-storage) instead of `window.localStorage` to store the authentication data inside a cookie.\n\n```\nimport { CookieStorage } from 'cookie-storage'\n\nconst feathersClient = feathers()\n  .configure(auth({ storage: new CookieStorage() }))\n```\n\n### Configuration\nYou can provide a `userService` in the auth plugin's options to automatically populate the user upon successful login.\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex from 'feathers-vuex'\n\nconst { auth } = feathersVuex(feathersClient, { idField: '_id' })\n\nconst store = new Vuex.Store({\n  plugins: [\n    auth({ userService: 'users' }) // if your user service endpoint is named 'users'\n  ]\n})\n```\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"25de11bbeb64988e28d2eead9010da3211eb0fb5","_id":"feathers-vuex@1.2.0-pre.21","_npmVersion":"5.8.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-7kcWTze2H188UQM2I5iWUm4JOp+DiD/ATGtKmuqXxfZRHBTIw+ax4jwYKt5UEvVHtZl/X933/hg2FU/o62NJbg==","shasum":"4b0b3bc0194c9ff7eaa67f862219faab96de3d70","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.2.0-pre.21.tgz","fileCount":27,"unpackedSize":340002,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa28o2CRA9TVsSAnZWagAAMdUQAKKdhgeiCg9hIMpvIy+7\nOSeCznPbPEqGP4EMlIND3oC8v935MZ6KYnyw/2SBfaHWYpMYjAiB/GdJKKa6\nTX9xXQCIBa0qdr7svqHgjHSnUF/OsFTktCrQ5QyzIW2+EkwSuNoUKbuRAiz3\nM6ILYf1PLnxB65Ai3Y97ataxz62D/nBba+un8iuqMpFojS7aF85Tp3PYmcvL\nj2+PKIAnQTfAL4yzn/3ypyfhyvZoJtzBrHjUYz0t9fONwUwONQwI8ZXFFaMk\nii1wh5jA7YMGVzpktWZ8jUB/u3It5CPWxSSzpty3ZyP5FX9H5sY4PhTnZQw8\nl5Osf1dTzdGE/0S/LdgGXNTM8TV6NqQCl9lk0Qf+IctR8BWuIq/tKxJW6dEr\nxzqjOMx3DnCkUsrYDeIaLr6dIqnwPoxczyFP/WSStTSebktyhcC84B2ynHyH\nC5HWvh3vJp1pf7LbDDvXGaWGkPn/B2aF44QH1TaMefTFm77Hw8QfxgHgujmn\nZAGXVXQ1ho2mex8uSzgM4yIwL2BVhyKvxUklxOOLOFGNbOrt7fwdDtkl7q5z\nTU4MwQZHdAWYFnSekiGK7jk+YH2LVoE+HWzz1SXTneiaJn7RXbYVqVcWXJCT\nOTCE1VkehL9nkaWVpuRtPRsdY1/a41r6WjfqR/SAE4ea6XffY7cjUFVDubMz\n2X1B\r\n=Sunk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9/A3qgJeGPWBr0glkSTdJ+ytde3c6TosPsVEcRiwDkAIhALrnRXeU4u7RDkp61cBfl/qow93/qmWwXsjtkel86lHX"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.2.0-pre.21_1524353589705_0.7464773322785749"},"_hasShrinkwrap":false},"1.2.0-pre.22":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.2.0-pre.22","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.4.1","vue":"^2.4.4","vuex":"^2.4.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Important\nThe current version of `feathers-vuex` no longer requires (nor does it support) using `feathers-reactive` (0.5.x). `feathers-vuex` now takes full advantage of Vue's built-in reactivity.  If you still need to use `feathers-vuex` with `feathers-reactive`, install `feathers-vuex@0.4.x`.\n\n## Use\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\nconst { serviceModule, serviceModel, servicePlugin } = service\n\n\nconst api1Client = feathersVuex(feathersClient, { idField: '_id', apiPrefix: 'api1' })\nconst api2Client = feathersVuex(feathersClient2, { idField: '_id' })\n\n\nVue.use(FeathersVuex)\n\nconst todoModule = serviceModule('todos')\n\n// const Model = serviceModel(todoModule) // TodoModel is an extensible class\nconst Model = serviceModel()\nclass TodoModel = extends Model {}\nconst todoPlugin = servicePlugin(todoModule, TodoModel)\n\nconst TaskModel extends Model {}\n\nexport { TaskModel }\n\n\ncreated () {\n  this.todo = new this.$FeathersVuex.api1.Todo(data)\n}\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    servicePlugin('/tasks', TaskModel), // With our potentially customized TodoModel\n\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // turn off socket event listeners. It's true by default\n      modelName: 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    auth()\n  ]\n})\n```\n\nThe new `feathers-vuex` API is more Vuex-like.  All of the functionality remains the same, but it is no longer configured like a FeathersJS plugin.  While the previous functionality was nice for prototyping, it didn't work well in SSR scenarios, like with Nuxt.\n\nTo see `feathers-vuex` in a working vue-cli application, check out [`feathers-chat-vuex`](https://github.com/feathers-plus/feathers-chat-vuex).\n\n## A note about feathers-reactive\nPrevious versions of this plugin required both RxJS and `feathers-reactive` to receive realtime updates.  `feathers-vuex@1.0.0` has socket messaging support built in and takes advantage of Vuex reactivity, so RxJS and `feathers-reactive` are no longer required.\n\n## API Documentation\n\n### Global Configuration\n\nThe following default options are available for configuration:\n\n```js\nconst defaultOptions = {\n  idField: 'id', // The field in each record that will contain the id\n  autoRemove: false, // automatically remove records missing from responses (only use with feathers-rest)\n  nameStyle: 'short', // Determines the source of the module name. 'short' or 'path'\n  enableEvents: true, // Set to false to explicitly disable socket event handlers.\n  preferUpdate: false, // When true, calling modelInstance.save() will do an update instead of a patch.\n}\n```\n\nEach service module can also be individually configured.\n\n### The Vuex modules\n\nThere are two modules included:\n1. The Service module adds a Vuex store for new services.\n2. The Auth module sets up the Vuex store for authentication / logout.\n\n## Service Module\nThe `Service Module` sets up services in the Vuex store.  Each service will have the below default state in its store.\n\n### Service State\nEach service comes loaded with the following default state:\n```js\n{\n    ids: [],\n    keyedById: {}, // A hash map, keyed by id of each item\n    currentId: undefined, // The id of the item marked as current\n    copy: undefined, // A deep copy of the current item\n    idField: 'id',\n    servicePath: 'v1/todos' // The full service path\n    autoRemove: false, // Indicates that this service will not automatically remove results missing from subsequent requests.\n    paginate: false, // Indicates if pagination is enabled on the Feathers service.\n\n    isFindPending: false,\n    isGetPending: false,\n    isCreatePending: false,\n    isUpdatePending: false,\n    isPatchPending: false,\n    isRemovePending: false,\n\n    errorOnfind: undefined,\n    errorOnGet: undefined,\n    errorOnCreate: undefined,\n    errorOnUpdate: undefined,\n    errorOnPatch: undefined,\n    errorOnRemove: undefined\n  }\n```\n\nThe following attributes are available in each service module's state:\n\n- `ids {Array}` - an array of plain ids representing the ids that belong to each object in the `keyedById` map.\n- `keyedById {Object}` - a hash map keyed by the id of each item.\n- `currentId {Number|String}` - the id of the item marked as current.\n- `copy {Object}` - a deep copy of the current item at the moment it was marked as current. You can make changes to the copy without modifying the `current`.  You can then use the `commitCopy` mutation to save the changes as the `current` or `rejectCopy` to revert `copy` to once again match `current`.\n- `servicePath {String}` - the full service path, even if you alias the namespace to something else.\n- `idField {String}` - the name of the field that holds each item's id. *Default: `'id'`*\n- `paginate {Boolean}` - Indicates if the service has pagination turned on.  This changes the response of the `find` action and getter to match the response that Feathers gives.\n\nThe following state attributes allow you to bind to the pending state of requests:\n- `isFindPending {Boolean}` - `true` if there's a pending `find` request.  `false` if not.\n- `isGetPending {Boolean}` - `true` if there's a pending `get` request.  `false` if not.\n- `isCreatePending {Boolean}` - `true` if there's a pending `create` request.  `false` if not.\n- `isUpdatePending {Boolean}` - `true` if there's a pending `update` request.  `false` if not.\n- `isPatchPending {Boolean}` - `true` if there's a pending `patch` request.  `false` if not.\n- `isRemovePending {Boolean}` - `true` if there's a pending `remove` request.  `false` if not.\n\nThe following state attribute will be populated with any request error, serialized as a plain object:\n- `errorOnFind {Error}`\n- `errorOnGet {Error}`\n- `errorOnCreate {Error}`\n- `errorOnUpdate {Error}`\n- `errorOnPatch {Error}`\n- `errorOnRemo {Error}`\n\n### Service Getters\nService modules include the following getters:\n- `list {Array}` - an array of items. The array form of `keyedById`  Read only.\n- `find(params) {Function}` - a helper function that allows you to use the [Feathers Adapter Common API](https://docs.feathersjs.com/api/databases/common.html) and [Query API](https://docs.feathersjs.com/api/databases/querying.html) to pull data from the store.  This allows you to treat the store just like a local Feathers database adapter (but without hooks).\n  - `params {Object}` - an object with a `query` object and an optional `paginate` boolean property. The `query` is in the FeathersJS query format.  You can set `params.paginate` to `false` to disable pagination for a single request.\n- `get(id[, params]) {Function}` - a function that allows you to query the store for a single item, by id.  It works the same way as `get` requests in Feathers database adapters.\n  - `id {Number|String}` - the id of the data to be retrieved by id from the store.\n  - `params {Object}` - an object containing a Feathers `query` object.\n- `current {Object}` - the object representing the `currentId`. It's pulled from the `keyedById` state.\n- `getCopy {Object}` - An alias to the `state.copy`.\n\n### Service Mutations\nThe following mutations are included in each service module.\n> **Note:** you would typically not call these directly, but instead with `store.commit('removeItem', 'itemId')`. Using vuex's mapMutations on a Vue component can simplify that to `this.removeItem('itemId')`\n\n#### `addItem(state, item)`\nAdds a single item to the `keyedById` map.\n- `item {Object}` - The item to be added to the store.\n\n#### `addItems(state, items)`\nAdds an array of items to the `keyedById` map.\n- `items {Array}` - the items to be added to the store.\n\n#### `updateItem(state, item)`\nUpdates an item in the store to match the passed in `item`.\n- `item {Object}` the item, including `id`, to replace the currently-stored item.\n\n#### `updateItems(state, items)`\nUpdates multiple items in the store to match the passed in array of items.\n- `items {Array}` - An array of items.\n\n#### `removeItem(state, item)`\nRemoves a single item.  `item` can be\n- `item {Number|String|Object}` - The item or id of the item to be deleted.\n\n#### `removeItems(state, items)`\nRemoves the passed in items or ids from the store.\n- `items {Array}` - An array of ids or of objects with ids that will be removed from the data store.\n\n#### `setCurrent(state, item)`\n- `item {Number|String|Object}` - the object with id to be set as the current item, or the id of the object in the store that should become the `current` item.  Setting the `current` item or id also create the deep-cloned `copy`.\n\n#### `commitCopy(state)`\nSaves changes from the `copy` to the `current` item.\n\n#### `rejectCopy(state)`\nRe-copies the data from `current` to `copy`, restoring the original copy.\n\n#### `clearCurrent(state)`\nClears the `current` item, which also clears the copy.\n\n#### `clearList(state)`\nClears the `list`, excepting the `current` item.\n\n#### `clearAll(state)`\nClears all data from `ids`, `keyedById`, and `currentId`\n\n#### Mutations for Managing Pending State\nThe following mutations are called automatically by the service actions, and will rarely, if ever, need to be used manually.\n- `setFindPending(state)` - sets `isFindPending` to `true`\n- `unsetFindPending(state)` - sets `isFindPending` to `false`\n- `setGetPending(state)` - sets `isGetPending` to `true`\n- `unsetGetPending(state)` - sets `isGetPending` to `false`\n- `setCreatePending(state)` - sets `isCreatePending` to `true`\n- `unsetCreatePending(state)` - sets `isCreatePending` to `false`\n- `setUpdatePending(state)` - sets `isUpdatePending` to `true`\n- `unsetUpdatePending(state)` - sets `isUpdatePending` to `false`\n- `setPatchPending(state)` - sets `isPatchPending` to `true`\n- `unsetPatchPending(state)` - sets `isPatchPending` to `false`\n- `setRemovePending(state)` - sets `isRemovePending` to `true`\n- `unsetRemovePending(state)` - sets `isRemovePending` to `false`\n\n#### Mutations for Managing Errors\nThe following mutations are called automatically by the service actions, and will rarely need to be used manually.\n- `setFindError(state, error)`\n- `clearFindError(state)`\n- `setGetError(state, error)`\n- `clearGetError(state)`\n- `setCreateError(state, error)`\n- `clearCreateError(state)`\n- `setUpdateError(state, error)`\n- `clearUpdateError(state)`\n- `setPatchError(state, error)`\n- `clearPatchError(state)`\n- `setRemoveError(state, error)`\n- `clearRemoveError(state)`\n\n### Service Actions\nAn action is included for each of the Feathers service interface methods.  These actions will affect changes in both the Feathers API server and the Vuex store.\n\nAll of the [Feathers Service Methods](https://docs.feathersjs.com/api/databases/common.html#service-methods) are supported.  Because Vuex only supports providing a single argument to actions, there is a slight change in syntax that works well.  If you need to pass multiple arguments to a service method, pass an array to the action with the order of the array elements matching the order of the arguments.  See each method for examples.\n\n> Note: If you use the Feathers service methods, directly, the store will not change. Only the actions will cause store changes.\n\n#### `find(params)`\nQuery an array of records from the server & add to the Vuex store.\n- `params {Object}` - An object containing a `query` object and an optional `paginate` boolean.  You can set `params.paginate` to `false` to disable pagination for a single request.\n\n```js\nlet params = {query: {completed: true}}\nstore.dispatch('todos/find', params)\n```\n\nSee the section about pagination, below, for more information that is applicable to the `find` action.\n\n#### `get(id)` or `get([id, params])`\nQuery a single record from the server & add to Vuex store\n- `id {Number|String}` - the `id` of the record being requested from the API server.\n- `params {Object}` - An object containing a `query` object.\n\n```js\nstore.dispatch('todos/get', 1)\n\n// Use an array to pass params\nlet params = {}\nstore.dispatch('todos/get', [1, params])\n```\n\n#### `create(data)`\nCreate one or multiple records.\n- `data {Object|Array}` - if an object is provided, a single record will be created. If an array of objects is provided, multiple records will be created.\n\n```js\nlet newTodo = {description: 'write good tests'}\nstore.dispatch('todos/create', newTodo)\n```\n\n\n#### `update(paramArray)`\nUpdate (overwrite) a record.\n- `paramArray {Array}` - array containing the three parameters update takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will overwrite the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {id: 5, description: 'write your tests', completed: true}\nlet params = {}\n// Overwrite item 1 with the above data (FYI: Most databases won't let you change the id.)\nstore.dispatch('todos/update', [1, data, params])\n```\n\nAlternatively in a Vue component\n```\nimport { mapActions } from 'vuex'\nexport default {\n  methods: {\n    ...mapActions('todos', [ 'update' ]),\n    addTodo () {\n      let data = {id: 5, description: 'write your tests', completed: true}\n      this.update([1, data, {}])\n    }\n  }\n}\n```\n\n#### `patch(paramArray)`\nPatch (merge in changes) one or more records\n- `paramArray {Array}` - array containing the three parameters patch takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will be merged into the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {description: 'write your tests', completed: true}\nlet params = {}\nstore.dispatch('todos/patch', [1, data, params])\n```\n\n\n#### `remove(id)`\nRemove/delete the record with the given `id`.\n- `id {Number|String}` - the `id` of the existing record being requested from the API server.\n\n```js\nstore.dispatch('todos/remove', 1)\n```\n\n## Querying with Find & Pagination\nBoth the `find` action and the `find` getter support pagination.  There are differences in how they work.\n\n### The `find` action\n\nThe `find` action queries data from the remote server.  It returns a promise that resolves to the response from the server.  The presence of pagination data will be determined by the server.\n\n`feathers-vuex@1.0.0` can store pagination data on a per-query basis.  The `pagination` store attribute maps queries to their most-recent pagination data.  It's an empty object by default, but after performing a single query (with pagination in the response), it will have a `default` property.  This property stores pagination information for the query.  Here's what it will look like:\n\n**`params = { query: {} }`**\n```js\n{\n  pagination: {\n    default: {\n      query: {}, // Same as params.query\n      ids: [0, 1, 2], // the ids in the store for the records that were returned from the server\n      limit: 0, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\nIt's possible that you'll want to store pagination information for more than one query.  This might be for different components making queries against the same service, for example.  You can use the `params.qid` (query identifier) property to assign a name to the query.  If you set a `qid` of `mainListView`, for example, the pagination for this query will show up under `pagination.mainListView`.  The `pagination.default` property will be used any time a `params.qid` is not provided.  Here's an example of what this might look like:\n\n**`params = { query: { $limit: 1 }, qid: 'mainListView' }`**\n```js\n// Data in the store\n{\n  pagination: {\n    mainListView: {\n      query: { $limit: 1 }, // Same as params.query\n      ids: [0], // the ids in the store for the records that were returned from the server\n      limit: 1, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\n> Note: The `find` action no longer returns reactive lists.  The list data will still be reactive, but new matches that arrive from the server do NOT get automatically added to lists.  There are two solutions to this:\n- Use the `find` action to pull in data from the server.  Use the `find` getter to pull a reactive list from the store.\n- Configure the `feathers-reactive` plugin with RxJS on your Feathers Client instance.  [Read the docs for implementation details.](https://github.com/feathers-plus/feathers-reactive)\n\n### The `find` getter\n\nThe `find` getter queries data from the local store using the same Feathers query syntax as on the server.  It is synchronous and returns the results of the query with pagination.  Pagination cannot be disabled.  It accepts a params object with a `query` attribute.  It does not use any other special attributes.  The returned object looks just like a paginated result that you would receive from the server:\n\n**`params = { query: {} }`**\n```js\n// The returned results object\n{\n  data: [{ _id: 1, ...etc }, ...etc],\n  limit: 0,\n  skip: 0,\n  total: 3\n}\n```\n\n\n###\n\n## Customizing a Service's Default Store\n\nAs shown in the first example, the service module allows you to customize its store:\n\n```js\nconst store = new Vuex.Store({\n  plugins: [\n    // Add custom state, getters, mutations, or actions, if needed\n    service('things', {\n      state: {\n        test: true\n      },\n      getters: {\n        getSomeData () {\n          return 'some data'\n        }\n      },\n      mutations: {\n        setTestToFalse (state) {\n          state.test = false\n        },\n        setTestToTrue (state) {\n          state.test = true\n        }\n      },\n      actions: {\n        asyncStuff ({ commit, dispatch }, args) {\n          commit('setTestToTrue')\n\n          return doSomethingAsync(id, params)\n            .then(result => {\n              commit('setTestToFalse')\n              return dispatch('otherAsyncStuff', result)\n            })\n        },\n        otherAsyncStuff ({commit}, args) {\n          return new Promise.resolve(result)\n        }\n      }\n    })\n  ]\n})\n\nassert(store.getters['todos/oneTwoThree'] === 123, 'the custom getter was available')\nstore.dispatch('todos/trigger')\nassert(store.state.todos.isTrue === true, 'the custom action was run')\n```\n\n## Auth Module\nThe Auth module helps setup your app for login / logout.  It includes the following state by default:\n```js\n{\n  accessToken: undefined, // The JWT\n  payload: undefined, // The JWT payload\n\n  isAuthenticatePending: false,\n  isLogoutPending: false,\n\n  errorOnAuthenticate: undefined,\n  errorOnLogout: undefined\n}\n```\n\n### Actions\nThe following actions are included in the `auth` module:\n- `authenticate`: use instead of `feathersClient.authenticate()`\n- `logout`: use instead of `feathersClient.logout()`\nThe Vuex auth store may not update if you use the feathers client version.\n\n## Working with Auth & Nuxt\n\n`feathers-vuex@1.0.0` ships with utilities that help with Nuxt auth related to JSON Web Tokens (JWT).  The most important utility is the `initAuth` utility.  It's for use during Nuxt's `nuxtServerInit` method, and sets up auth data automatically.  Here's an example store that uses it:\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex, { initAuth } from 'feathers-vuex'\n\nconst { service, auth } = feathersVuex(feathersClient)\n\nconst createStore = () => {\n  return new Vuex.Store({\n    state: {},\n    mutations: {\n      increment (state) {\n        state.counter++\n      }\n    },\n    actions: {\n      nuxtServerInit ({ commit, dispatch }, { req }) {\n        return initAuth({\n          commit,\n          dispatch,\n          req,\n          moduleName: 'auth',\n          cookieName: 'feathers-jwt'\n        })\n      }\n    },\n    plugins: [\n      service('courses'),\n      auth({\n        state: {\n          publicPages: [\n            'login',\n            'signup'\n          ]\n        }\n      })\n    ]\n  })\n}\n\nexport default createStore\n```\n\nNotice in the above example, I've added a `publicPages` property to the auth state.  Let's now use this state to redirect the browser when it's not on a public page and there's no auth:\n\nIn your Nuxt project, create the file `/middleware/auth.js`.  Then edit the `nuxt.config.js` and add after the `head` property, add a string that references this routing middleware so it looks like this:\n\n*// nuxt.config.js*\n```js\nrouter: {\n  middleware: ['auth']\n},\n```\n\nNow open the middleware and paste the following content.  All it does is redirect the page if there's no auth data in the store.\n\n```js\n// If it's a private page and there's no payload, redirect.\nexport default function (context) {\n  const { store, redirect, route } = context\n  const { auth } = store.state\n\n  if (!auth.publicPages.includes(route.name) && !auth.payload) {\n    return redirect('login')\n  }\n}\n```\n\nFor a summary, the `initAuth` function will make auth available in the state without much configuration.\n\n### Authentication storage with Nuxt\n\nSince Nuxt is running both client- and server side, it has limits on the availability of certain browser specific variables like `window`. Because of that, trying to configure the feathers client to use `window.localStorage` will result in an error or unexpected / not working behaviour. There's a simple solution though:\n\nWhen you configure the auth module in your feathers-client, use [cookie-storage](https://www.npmjs.com/package/cookie-storage) instead of `window.localStorage` to store the authentication data inside a cookie.\n\n```\nimport { CookieStorage } from 'cookie-storage'\n\nconst feathersClient = feathers()\n  .configure(auth({ storage: new CookieStorage() }))\n```\n\n### Configuration\nYou can provide a `userService` in the auth plugin's options to automatically populate the user upon successful login.\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex from 'feathers-vuex'\n\nconst { auth } = feathersVuex(feathersClient, { idField: '_id' })\n\nconst store = new Vuex.Store({\n  plugins: [\n    auth({ userService: 'users' }) // if your user service endpoint is named 'users'\n  ]\n})\n```\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"8082de0d26ff08839ca4eab87caf317052d6da1e","_id":"feathers-vuex@1.2.0-pre.22","_npmVersion":"5.8.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-YfkxMSQiujNPVd6noBecL1Pjt2nMt3pWaN+TmveBzimKE8k3n5ZMk2q14GlNyWOQ0ifuxYRj6cun1pLXz55xkQ==","shasum":"626adcc223210bf6ea5ae218a2f9ec1e9bf0c504","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.2.0-pre.22.tgz","fileCount":27,"unpackedSize":340188,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa3ouVCRA9TVsSAnZWagAAJiMP/1wR84JJKSXpHgqVK/fe\n9U5nhDsx+BL9MkFEneUr/4vsIiqciAxsf79Z/r9Fjyj1HSBnXdKm2VpSFurS\ngOl9Q9TdsUI0vHUf0yojuPEY558nrj8yHJTcDoBromXFYIieOwaq7eJD9yta\nN6sJZbPh3eAcIDPJbX+UwAmdbpMGURKqemnQG4CBkjteSmQukP5+2O30e0zr\nKOwXTJunrlqlt/ekrdrtROlDhiu11Ux9h7Q2QOOKzSC3KwYRpKbZOFIhMGP6\nxOQNCAg6G8Sn7NpVN7tM0bn+vjCSKbLznDSnfL5JogequMBYXHx4MBHdvKhY\n+ul70tizOy8cW+cBTy8dRAJI6EtVGegL2/vJo/IypFedzM8luoKpvcgbjX23\nPbHM9CpMT1MLim1w6kH3LXGFSwHjVivHvYwFLGyZqsttJk3wyz0DwNKy8Rr9\nTpwX9LL/rEiwkjCb6xZLyofBeHM4unJ8zAlxPJnvVxthuobmyylutfwto50L\nMZNaN8UOGZ/24gHsvRiTe1mgpQAsh2e6Q4gz8N+1F3H+lCrrUaEZzoL5rfg/\nIlsuAsxH1j2Db9ajZWh4Q9H2KSQX1dbi7r4bdi2H0UXzqSIz35mwKjyOPOp1\nDhEmYLFdB7cItT1L+DyhiVaWjp2dua3zzcJEPI86oRccRcA9hMbli9e5KO8w\nWAkl\r\n=kkhM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG5TQBsTpjmn+VXIuGkXcmOdvwbIyc6Ci1JLghawXP+ZAiEA8fhCaa70IaPewQCxgXuhoXd/eqdohmBjgG39Ub9BbA8="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.2.0-pre.22_1524534164207_0.48141530791303033"},"_hasShrinkwrap":false},"1.2.0-pre.23":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.2.0-pre.23","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Feathers contributors","email":"hello@feathersjs.com","url":"https://feathersjs.com"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.4.4","vuex":"^2.4.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Important\nThe current version of `feathers-vuex` no longer requires (nor does it support) using `feathers-reactive` (0.5.x). `feathers-vuex` now takes full advantage of Vue's built-in reactivity.  If you still need to use `feathers-vuex` with `feathers-reactive`, install `feathers-vuex@0.4.x`.\n\n## Use\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\nconst { serviceModule, serviceModel, servicePlugin } = service\n\n\nconst api1Client = feathersVuex(feathersClient, { idField: '_id', apiPrefix: 'api1' })\nconst api2Client = feathersVuex(feathersClient2, { idField: '_id' })\n\n\nVue.use(FeathersVuex)\n\nconst todoModule = serviceModule('todos')\n\n// const Model = serviceModel(todoModule) // TodoModel is an extensible class\nconst Model = serviceModel()\nclass TodoModel = extends Model {}\nconst todoPlugin = servicePlugin(todoModule, TodoModel)\n\nconst TaskModel extends Model {}\n\nexport { TaskModel }\n\n\ncreated () {\n  this.todo = new this.$FeathersVuex.api1.Todo(data)\n}\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    servicePlugin('/tasks', TaskModel), // With our potentially customized TodoModel\n\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // turn off socket event listeners. It's true by default\n      modelName: 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    auth()\n  ]\n})\n```\n\nThe new `feathers-vuex` API is more Vuex-like.  All of the functionality remains the same, but it is no longer configured like a FeathersJS plugin.  While the previous functionality was nice for prototyping, it didn't work well in SSR scenarios, like with Nuxt.\n\nTo see `feathers-vuex` in a working vue-cli application, check out [`feathers-chat-vuex`](https://github.com/feathers-plus/feathers-chat-vuex).\n\n## A note about feathers-reactive\nPrevious versions of this plugin required both RxJS and `feathers-reactive` to receive realtime updates.  `feathers-vuex@1.0.0` has socket messaging support built in and takes advantage of Vuex reactivity, so RxJS and `feathers-reactive` are no longer required.\n\n## API Documentation\n\n### Global Configuration\n\nThe following default options are available for configuration:\n\n```js\nconst defaultOptions = {\n  idField: 'id', // The field in each record that will contain the id\n  autoRemove: false, // automatically remove records missing from responses (only use with feathers-rest)\n  nameStyle: 'short', // Determines the source of the module name. 'short' or 'path'\n  enableEvents: true, // Set to false to explicitly disable socket event handlers.\n  preferUpdate: false, // When true, calling modelInstance.save() will do an update instead of a patch.\n}\n```\n\nEach service module can also be individually configured.\n\n### The Vuex modules\n\nThere are two modules included:\n1. The Service module adds a Vuex store for new services.\n2. The Auth module sets up the Vuex store for authentication / logout.\n\n## Service Module\nThe `Service Module` sets up services in the Vuex store.  Each service will have the below default state in its store.\n\n### Service State\nEach service comes loaded with the following default state:\n```js\n{\n    ids: [],\n    keyedById: {}, // A hash map, keyed by id of each item\n    currentId: undefined, // The id of the item marked as current\n    copy: undefined, // A deep copy of the current item\n    idField: 'id',\n    servicePath: 'v1/todos' // The full service path\n    autoRemove: false, // Indicates that this service will not automatically remove results missing from subsequent requests.\n    paginate: false, // Indicates if pagination is enabled on the Feathers service.\n\n    isFindPending: false,\n    isGetPending: false,\n    isCreatePending: false,\n    isUpdatePending: false,\n    isPatchPending: false,\n    isRemovePending: false,\n\n    errorOnfind: undefined,\n    errorOnGet: undefined,\n    errorOnCreate: undefined,\n    errorOnUpdate: undefined,\n    errorOnPatch: undefined,\n    errorOnRemove: undefined\n  }\n```\n\nThe following attributes are available in each service module's state:\n\n- `ids {Array}` - an array of plain ids representing the ids that belong to each object in the `keyedById` map.\n- `keyedById {Object}` - a hash map keyed by the id of each item.\n- `currentId {Number|String}` - the id of the item marked as current.\n- `copy {Object}` - a deep copy of the current item at the moment it was marked as current. You can make changes to the copy without modifying the `current`.  You can then use the `commitCopy` mutation to save the changes as the `current` or `rejectCopy` to revert `copy` to once again match `current`.\n- `servicePath {String}` - the full service path, even if you alias the namespace to something else.\n- `idField {String}` - the name of the field that holds each item's id. *Default: `'id'`*\n- `paginate {Boolean}` - Indicates if the service has pagination turned on.  This changes the response of the `find` action and getter to match the response that Feathers gives.\n\nThe following state attributes allow you to bind to the pending state of requests:\n- `isFindPending {Boolean}` - `true` if there's a pending `find` request.  `false` if not.\n- `isGetPending {Boolean}` - `true` if there's a pending `get` request.  `false` if not.\n- `isCreatePending {Boolean}` - `true` if there's a pending `create` request.  `false` if not.\n- `isUpdatePending {Boolean}` - `true` if there's a pending `update` request.  `false` if not.\n- `isPatchPending {Boolean}` - `true` if there's a pending `patch` request.  `false` if not.\n- `isRemovePending {Boolean}` - `true` if there's a pending `remove` request.  `false` if not.\n\nThe following state attribute will be populated with any request error, serialized as a plain object:\n- `errorOnFind {Error}`\n- `errorOnGet {Error}`\n- `errorOnCreate {Error}`\n- `errorOnUpdate {Error}`\n- `errorOnPatch {Error}`\n- `errorOnRemo {Error}`\n\n### Service Getters\nService modules include the following getters:\n- `list {Array}` - an array of items. The array form of `keyedById`  Read only.\n- `find(params) {Function}` - a helper function that allows you to use the [Feathers Adapter Common API](https://docs.feathersjs.com/api/databases/common.html) and [Query API](https://docs.feathersjs.com/api/databases/querying.html) to pull data from the store.  This allows you to treat the store just like a local Feathers database adapter (but without hooks).\n  - `params {Object}` - an object with a `query` object and an optional `paginate` boolean property. The `query` is in the FeathersJS query format.  You can set `params.paginate` to `false` to disable pagination for a single request.\n- `get(id[, params]) {Function}` - a function that allows you to query the store for a single item, by id.  It works the same way as `get` requests in Feathers database adapters.\n  - `id {Number|String}` - the id of the data to be retrieved by id from the store.\n  - `params {Object}` - an object containing a Feathers `query` object.\n- `current {Object}` - the object representing the `currentId`. It's pulled from the `keyedById` state.\n- `getCopy {Object}` - An alias to the `state.copy`.\n\n### Service Mutations\nThe following mutations are included in each service module.\n> **Note:** you would typically not call these directly, but instead with `store.commit('removeItem', 'itemId')`. Using vuex's mapMutations on a Vue component can simplify that to `this.removeItem('itemId')`\n\n#### `addItem(state, item)`\nAdds a single item to the `keyedById` map.\n- `item {Object}` - The item to be added to the store.\n\n#### `addItems(state, items)`\nAdds an array of items to the `keyedById` map.\n- `items {Array}` - the items to be added to the store.\n\n#### `updateItem(state, item)`\nUpdates an item in the store to match the passed in `item`.\n- `item {Object}` the item, including `id`, to replace the currently-stored item.\n\n#### `updateItems(state, items)`\nUpdates multiple items in the store to match the passed in array of items.\n- `items {Array}` - An array of items.\n\n#### `removeItem(state, item)`\nRemoves a single item.  `item` can be\n- `item {Number|String|Object}` - The item or id of the item to be deleted.\n\n#### `removeItems(state, items)`\nRemoves the passed in items or ids from the store.\n- `items {Array}` - An array of ids or of objects with ids that will be removed from the data store.\n\n#### `setCurrent(state, item)`\n- `item {Number|String|Object}` - the object with id to be set as the current item, or the id of the object in the store that should become the `current` item.  Setting the `current` item or id also create the deep-cloned `copy`.\n\n#### `commitCopy(state)`\nSaves changes from the `copy` to the `current` item.\n\n#### `rejectCopy(state)`\nRe-copies the data from `current` to `copy`, restoring the original copy.\n\n#### `clearCurrent(state)`\nClears the `current` item, which also clears the copy.\n\n#### `clearList(state)`\nClears the `list`, excepting the `current` item.\n\n#### `clearAll(state)`\nClears all data from `ids`, `keyedById`, and `currentId`\n\n#### Mutations for Managing Pending State\nThe following mutations are called automatically by the service actions, and will rarely, if ever, need to be used manually.\n- `setFindPending(state)` - sets `isFindPending` to `true`\n- `unsetFindPending(state)` - sets `isFindPending` to `false`\n- `setGetPending(state)` - sets `isGetPending` to `true`\n- `unsetGetPending(state)` - sets `isGetPending` to `false`\n- `setCreatePending(state)` - sets `isCreatePending` to `true`\n- `unsetCreatePending(state)` - sets `isCreatePending` to `false`\n- `setUpdatePending(state)` - sets `isUpdatePending` to `true`\n- `unsetUpdatePending(state)` - sets `isUpdatePending` to `false`\n- `setPatchPending(state)` - sets `isPatchPending` to `true`\n- `unsetPatchPending(state)` - sets `isPatchPending` to `false`\n- `setRemovePending(state)` - sets `isRemovePending` to `true`\n- `unsetRemovePending(state)` - sets `isRemovePending` to `false`\n\n#### Mutations for Managing Errors\nThe following mutations are called automatically by the service actions, and will rarely need to be used manually.\n- `setFindError(state, error)`\n- `clearFindError(state)`\n- `setGetError(state, error)`\n- `clearGetError(state)`\n- `setCreateError(state, error)`\n- `clearCreateError(state)`\n- `setUpdateError(state, error)`\n- `clearUpdateError(state)`\n- `setPatchError(state, error)`\n- `clearPatchError(state)`\n- `setRemoveError(state, error)`\n- `clearRemoveError(state)`\n\n### Service Actions\nAn action is included for each of the Feathers service interface methods.  These actions will affect changes in both the Feathers API server and the Vuex store.\n\nAll of the [Feathers Service Methods](https://docs.feathersjs.com/api/databases/common.html#service-methods) are supported.  Because Vuex only supports providing a single argument to actions, there is a slight change in syntax that works well.  If you need to pass multiple arguments to a service method, pass an array to the action with the order of the array elements matching the order of the arguments.  See each method for examples.\n\n> Note: If you use the Feathers service methods, directly, the store will not change. Only the actions will cause store changes.\n\n#### `find(params)`\nQuery an array of records from the server & add to the Vuex store.\n- `params {Object}` - An object containing a `query` object and an optional `paginate` boolean.  You can set `params.paginate` to `false` to disable pagination for a single request.\n\n```js\nlet params = {query: {completed: true}}\nstore.dispatch('todos/find', params)\n```\n\nSee the section about pagination, below, for more information that is applicable to the `find` action.\n\n#### `get(id)` or `get([id, params])`\nQuery a single record from the server & add to Vuex store\n- `id {Number|String}` - the `id` of the record being requested from the API server.\n- `params {Object}` - An object containing a `query` object.\n\n```js\nstore.dispatch('todos/get', 1)\n\n// Use an array to pass params\nlet params = {}\nstore.dispatch('todos/get', [1, params])\n```\n\n#### `create(data)`\nCreate one or multiple records.\n- `data {Object|Array}` - if an object is provided, a single record will be created. If an array of objects is provided, multiple records will be created.\n\n```js\nlet newTodo = {description: 'write good tests'}\nstore.dispatch('todos/create', newTodo)\n```\n\n\n#### `update(paramArray)`\nUpdate (overwrite) a record.\n- `paramArray {Array}` - array containing the three parameters update takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will overwrite the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {id: 5, description: 'write your tests', completed: true}\nlet params = {}\n// Overwrite item 1 with the above data (FYI: Most databases won't let you change the id.)\nstore.dispatch('todos/update', [1, data, params])\n```\n\nAlternatively in a Vue component\n```\nimport { mapActions } from 'vuex'\nexport default {\n  methods: {\n    ...mapActions('todos', [ 'update' ]),\n    addTodo () {\n      let data = {id: 5, description: 'write your tests', completed: true}\n      this.update([1, data, {}])\n    }\n  }\n}\n```\n\n#### `patch(paramArray)`\nPatch (merge in changes) one or more records\n- `paramArray {Array}` - array containing the three parameters patch takes.\n  - `id {Number|String}` - the `id` of the existing record being requested from the API server.\n  - `data {Object}` - the data that will be merged into the existing record\n  - `params {Object}` - An object containing a `query` object.\n\n```js\nlet data = {description: 'write your tests', completed: true}\nlet params = {}\nstore.dispatch('todos/patch', [1, data, params])\n```\n\n\n#### `remove(id)`\nRemove/delete the record with the given `id`.\n- `id {Number|String}` - the `id` of the existing record being requested from the API server.\n\n```js\nstore.dispatch('todos/remove', 1)\n```\n\n## Querying with Find & Pagination\nBoth the `find` action and the `find` getter support pagination.  There are differences in how they work.\n\n### The `find` action\n\nThe `find` action queries data from the remote server.  It returns a promise that resolves to the response from the server.  The presence of pagination data will be determined by the server.\n\n`feathers-vuex@1.0.0` can store pagination data on a per-query basis.  The `pagination` store attribute maps queries to their most-recent pagination data.  It's an empty object by default, but after performing a single query (with pagination in the response), it will have a `default` property.  This property stores pagination information for the query.  Here's what it will look like:\n\n**`params = { query: {} }`**\n```js\n{\n  pagination: {\n    default: {\n      query: {}, // Same as params.query\n      ids: [0, 1, 2], // the ids in the store for the records that were returned from the server\n      limit: 0, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\nIt's possible that you'll want to store pagination information for more than one query.  This might be for different components making queries against the same service, for example.  You can use the `params.qid` (query identifier) property to assign a name to the query.  If you set a `qid` of `mainListView`, for example, the pagination for this query will show up under `pagination.mainListView`.  The `pagination.default` property will be used any time a `params.qid` is not provided.  Here's an example of what this might look like:\n\n**`params = { query: { $limit: 1 }, qid: 'mainListView' }`**\n```js\n// Data in the store\n{\n  pagination: {\n    mainListView: {\n      query: { $limit: 1 }, // Same as params.query\n      ids: [0], // the ids in the store for the records that were returned from the server\n      limit: 1, // the response.limit\n      skip: 0, // the response.skip\n      total: 3 // the response.total\n    }\n  }\n}\n```\n\n> Note: The `find` action no longer returns reactive lists.  The list data will still be reactive, but new matches that arrive from the server do NOT get automatically added to lists.  There are two solutions to this:\n- Use the `find` action to pull in data from the server.  Use the `find` getter to pull a reactive list from the store.\n- Configure the `feathers-reactive` plugin with RxJS on your Feathers Client instance.  [Read the docs for implementation details.](https://github.com/feathers-plus/feathers-reactive)\n\n### The `find` getter\n\nThe `find` getter queries data from the local store using the same Feathers query syntax as on the server.  It is synchronous and returns the results of the query with pagination.  Pagination cannot be disabled.  It accepts a params object with a `query` attribute.  It does not use any other special attributes.  The returned object looks just like a paginated result that you would receive from the server:\n\n**`params = { query: {} }`**\n```js\n// The returned results object\n{\n  data: [{ _id: 1, ...etc }, ...etc],\n  limit: 0,\n  skip: 0,\n  total: 3\n}\n```\n\n\n###\n\n## Customizing a Service's Default Store\n\nAs shown in the first example, the service module allows you to customize its store:\n\n```js\nconst store = new Vuex.Store({\n  plugins: [\n    // Add custom state, getters, mutations, or actions, if needed\n    service('things', {\n      state: {\n        test: true\n      },\n      getters: {\n        getSomeData () {\n          return 'some data'\n        }\n      },\n      mutations: {\n        setTestToFalse (state) {\n          state.test = false\n        },\n        setTestToTrue (state) {\n          state.test = true\n        }\n      },\n      actions: {\n        asyncStuff ({ commit, dispatch }, args) {\n          commit('setTestToTrue')\n\n          return doSomethingAsync(id, params)\n            .then(result => {\n              commit('setTestToFalse')\n              return dispatch('otherAsyncStuff', result)\n            })\n        },\n        otherAsyncStuff ({commit}, args) {\n          return new Promise.resolve(result)\n        }\n      }\n    })\n  ]\n})\n\nassert(store.getters['todos/oneTwoThree'] === 123, 'the custom getter was available')\nstore.dispatch('todos/trigger')\nassert(store.state.todos.isTrue === true, 'the custom action was run')\n```\n\n## Auth Module\nThe Auth module helps setup your app for login / logout.  It includes the following state by default:\n```js\n{\n  accessToken: undefined, // The JWT\n  payload: undefined, // The JWT payload\n\n  isAuthenticatePending: false,\n  isLogoutPending: false,\n\n  errorOnAuthenticate: undefined,\n  errorOnLogout: undefined\n}\n```\n\n### Actions\nThe following actions are included in the `auth` module:\n- `authenticate`: use instead of `feathersClient.authenticate()`\n- `logout`: use instead of `feathersClient.logout()`\nThe Vuex auth store may not update if you use the feathers client version.\n\n## Working with Auth & Nuxt\n\n`feathers-vuex@1.0.0` ships with utilities that help with Nuxt auth related to JSON Web Tokens (JWT).  The most important utility is the `initAuth` utility.  It's for use during Nuxt's `nuxtServerInit` method, and sets up auth data automatically.  Here's an example store that uses it:\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex, { initAuth } from 'feathers-vuex'\n\nconst { service, auth } = feathersVuex(feathersClient)\n\nconst createStore = () => {\n  return new Vuex.Store({\n    state: {},\n    mutations: {\n      increment (state) {\n        state.counter++\n      }\n    },\n    actions: {\n      nuxtServerInit ({ commit, dispatch }, { req }) {\n        return initAuth({\n          commit,\n          dispatch,\n          req,\n          moduleName: 'auth',\n          cookieName: 'feathers-jwt'\n        })\n      }\n    },\n    plugins: [\n      service('courses'),\n      auth({\n        state: {\n          publicPages: [\n            'login',\n            'signup'\n          ]\n        }\n      })\n    ]\n  })\n}\n\nexport default createStore\n```\n\nNotice in the above example, I've added a `publicPages` property to the auth state.  Let's now use this state to redirect the browser when it's not on a public page and there's no auth:\n\nIn your Nuxt project, create the file `/middleware/auth.js`.  Then edit the `nuxt.config.js` and add after the `head` property, add a string that references this routing middleware so it looks like this:\n\n*// nuxt.config.js*\n```js\nrouter: {\n  middleware: ['auth']\n},\n```\n\nNow open the middleware and paste the following content.  All it does is redirect the page if there's no auth data in the store.\n\n```js\n// If it's a private page and there's no payload, redirect.\nexport default function (context) {\n  const { store, redirect, route } = context\n  const { auth } = store.state\n\n  if (!auth.publicPages.includes(route.name) && !auth.payload) {\n    return redirect('login')\n  }\n}\n```\n\nFor a summary, the `initAuth` function will make auth available in the state without much configuration.\n\n### Authentication storage with Nuxt\n\nSince Nuxt is running both client- and server side, it has limits on the availability of certain browser specific variables like `window`. Because of that, trying to configure the feathers client to use `window.localStorage` will result in an error or unexpected / not working behaviour. There's a simple solution though:\n\nWhen you configure the auth module in your feathers-client, use [cookie-storage](https://www.npmjs.com/package/cookie-storage) instead of `window.localStorage` to store the authentication data inside a cookie.\n\n```\nimport { CookieStorage } from 'cookie-storage'\n\nconst feathersClient = feathers()\n  .configure(auth({ storage: new CookieStorage() }))\n```\n\n### Configuration\nYou can provide a `userService` in the auth plugin's options to automatically populate the user upon successful login.\n\n```js\nimport Vuex from 'vuex'\nimport feathersClient from './feathers-client'\nimport feathersVuex from 'feathers-vuex'\n\nconst { auth } = feathersVuex(feathersClient, { idField: '_id' })\n\nconst store = new Vuex.Store({\n  plugins: [\n    auth({ userService: 'users' }) // if your user service endpoint is named 'users'\n  ]\n})\n```\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"90f2ef919972d01bbf1df1360a2b05613b8f5d02","_id":"feathers-vuex@1.2.0-pre.23","_npmVersion":"5.8.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-41C/Nb0P7rIAZ/Ib+v9G0BOzLT0X9QlmES8s2/cO7Otc/jBgp1hLUBncdzKKXqY6z/h+iJZbgG3eUeV2/oMfgQ==","shasum":"3d99f68d20fc6775ebdedd274ff9c4174012ecec","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.2.0-pre.23.tgz","fileCount":26,"unpackedSize":170970,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa4ciBCRA9TVsSAnZWagAAH4UP/ihqeqVNhikbMOgKiFUZ\nM67Bb7lAR7fGT5jTjNLfG1Dd4ARiy5O54SY8Y+9L5umEwAq36+O6a53L9+SQ\ndHb5mhWnJ8mQcuoHcJyG/H/M1hkxl2v1vuSoRbI2Z9SmnNTO8wmUUbmb+vO7\nQ1naO16RIXNZ6QKG9KCbgHuFNDIFHV9qYllCgxUg35NLzX1r7fNyrXVShD+E\nZrjJEggciXc9Q1A2L3tYttZcixTg60U+OfNfE346/exOXkIvBW+LEDyXFYuz\nMZlYd7xcUxVjqpGnTxnJ84C6cSN/x/1Nc6KWRMnmKPL3wID7/b7p8rO/Rdgi\nSlZaw4ZOq6Uo1x8qFMy0OnLzcm+C1i/vRDLHhLbcImXQ2AuFOSD1PIxJsQz+\nuvCSkLv1iBYo+S+GlKO+82rPbbhprVwaYF9+5FCLmbH+FMDExE2QrWE67crk\n8vqarmrAiSGd+bvjjubaKXTiOhsyG5VMetsKZTmXK86VktjwJUf1YRw8Yo5z\nwloBW+s6pRtqrVd/RTCGI5ZR2Lo8RDe6eZ3xgx6pw7VB9tDTCLJsSZSwE0cQ\nmUcM8WeTk8D09Qmo9/uhl3Hr4kMfs1f+ggpDQbrujNQQPmUgrVYx3EsG+EfB\nO4fWubX/bYik4axXXjKeTpCsxXWZ115WF/C6JA2TfM/21ol4S5Hf5dSZJEJo\nU4An\r\n=hQsV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEIwr2s3SBoVItu/ccs/M6GZjjRx/bchiq0P1zMl50LKAiEA0/++ECXooi8FhEASRud9Mac1zCIR+MLZjaUSdaF4wPA="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.2.0-pre.23_1524746367970_0.0907106074902162"},"_hasShrinkwrap":false},"1.2.0":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.2.0","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.4.4","vuex":"^2.4.1"},"gitHead":"3092f9cd24c5133851b114cdf831b79d36e1376f","_id":"feathers-vuex@1.2.0","_npmVersion":"5.8.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-0CxyK+lC5JfhYhx1py4g7XGuqJyKvQrnJg57Dy22gB4p/mwHEH5jkxQzX/3pP1VP0kEp1CY3iE7MuJzRyHZrPw==","shasum":"fe8bfad85a1beb13ebbe10749fe5e344838a6eda","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.2.0.tgz","fileCount":26,"unpackedSize":173270,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa6J5RCRA9TVsSAnZWagAAyFsP/1paaD/UzlH35Bzw35Uc\nb/Brh690K88Yfs2hZqVLJP6u3zw6JCQ6pkzvdy9QLgU0roVOvmBF5x3yPzMt\nCiRFzapu9RD7j7LtgTQhRNLc+zSV6Lm4TSzBiL7CWsTiRkvNh/bl1YowBeK3\n59F2fgXBlHEIVXyyqv6eK+3bCQOybCyJAGfbrVSBXhZkJnsbMEhZNR99y6yN\ngx2soZy163RaESQsiit5bj8FrHdMolTfnDE4+kRoD9cEBCFdeZuyrIwakmaK\nPfsQbfAEYwjg5gqwqZqJU0OEBfndlt1l36FZsJFS3/EM5neGCYqFi6gi9LQU\nwzG6jUoXV8Z50S1V3xuiPnA50lSHV8XN7Mr9GEePNaSUw9KjupeDLQcQ3aUP\n1uboGaI0tEKcoZCDZiBogAcexkG3hEUlL2D+eVlq888XPtGV9wTZtX8NmvGo\n5/7LoH0d6T4wRnk9A5Fp1gioIumAV3L+9PC5jWbQP843qidFLcEVsB1tSDhI\ngvWDgyW7mH94ZJk34vL5id81dbht29bH4eY4P5SqN+FA2pn+1a6qsVtEGjAY\nw4ux6s4XL8M7lC+FkFiVwe5VyprHOcsCXVhwCZ6BxAQrSncGjCmz4bhnzlsu\nRNyj1jucvk1jOKjYe6KrC4wCALt5hmUdcrQxGj/HUDwT3V7sSyYV0lJISszU\nTKTK\r\n=kGZ+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBVgawVcXp3SMOxlzRNWF/AVr2Ph4t+P/QkXKnxLmeyNAiEAvYbnOYMFu4GgoIwB+5IT2VcC7diErjTpq/K72DIkNyE="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.2.0_1525194319004_0.7662758613233918"},"_hasShrinkwrap":false},"1.2.1":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.2.1","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.4.4","vuex":"^2.4.1"},"gitHead":"965b94b82ec5509eab1bdd8641c9e2bc39e48522","_id":"feathers-vuex@1.2.1","_npmVersion":"5.8.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-n9rM0uiTa48bb/cy+m8qRDXyJSCeo0hfuc3H8j5yC13Wgmeum8fE/RFVuHZKACS1oK3guGUzOtB+7hZaUR/cbQ==","shasum":"0eed2907646c68409dc33fff4375b893c8da5d1b","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.2.1.tgz","fileCount":26,"unpackedSize":134076,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa6KVDCRA9TVsSAnZWagAAci4P/ihaCxepg865e7eY2Zph\nVvBNREhOW24NSUIB8oLTQ50046QfhYt5L1EcT1LZhCMCjzIG4V0vpzHwirK2\nviocDZ+EAtk6QWkm1Gm34CrVozq4NZf3aVzEHkRbZjS/9NV8y0Z3y5cO8Frs\nqT5bvTATCpwVtOxPlNIF4nuHFAAC5wd08AXJCr63PMZalWdYbehkWVu/s++C\nFDUHGnm6YTXpMXEKWB6S74Ci84Rblo/G8Hd1XL9Dy1yoaJTnzJQlSaaZL63r\ncnPUxZw0APF6XHtymuMhCTw02us08Az64SeSgkiQ92SPerevo2U95GstFDan\nlGSKo47t/f8L9jbiLxAAE3TOQWPGjcrK4h4QpSXkP3FV4LVnA/lOM1yFdXNd\nlDEahJhFuONqup3Ro3MjLQBXWRQ6TRIdn2g0UTxiVtyAoOt++FBpzC1SO2eb\nmHmtSQ4NfoavQXQvyk4TYTZ05+liH5oB/XAR+g8M/IxP4E2LO0MXRzGslwft\nDbBkQMAbx0SgWsh4ZBWpinoRBHQJVphFovUTT2JmdhKnCPm3VhqF7WAaz98E\nBW7VQDn8brtGTHz4ZmhbW1clMkt73NHBn/SS5rpDsfoyWNjTWY/H4nzDR7Oq\nfpFSzBYztwYuHSt/roZVogK2Bqf8ic1Le23uOOnBHJhDXrn0M+tP6clIR4/n\nczGr\r\n=uoY4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDPeqK01ryjwK5txiKecK/WW6BToRS5F/t1xewXBm/DWAiEA26y2W7hhits0WHjLO4HoSPRd4ieTOm7VwDKtKUnJZT0="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.2.1_1525196098074_0.5377159300673213"},"_hasShrinkwrap":false},"1.3.0":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.3.0","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.4.4","vuex":"^2.4.1"},"gitHead":"5323b7d8c690624f4ef6ceff7b5f3f9ab662828c","_id":"feathers-vuex@1.3.0","_npmVersion":"5.8.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-P/7CBQVP82HuAC5gjCPuSO86LLyLG/0daODJDyKRZmTgRzrMAXrdG8Wq6F2V5yDvzcoM+fcFjlSzL+pdMGLS8g==","shasum":"ec270d9e2b1930c3a333c3c8214022ec041fd1ef","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.3.0.tgz","fileCount":26,"unpackedSize":134598,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa8x3dCRA9TVsSAnZWagAA/54QAJghJypShH0GPxlGIvwg\n9o0hPZvYIHzJdS+KTYNvsH1D7GRSBN81rLS3/ApLUAY4X+QPLAC2+AgfeCNr\nkHfAn/Qfv16VKiSHlvs/4lCvo1e0XxMV1R1uHgvr24SjQglwM23rGST4Jds2\n1ctwqHqSRRcGdklDgKahf6OWwt663ShllqQgehq9y1GqYbs8HVtbk6MsdV6l\nMGoOTJCivmRON0hQk7iX1LsjJRg1QK9g8Ki+vSvFoYs+wfvisQNw8J7/fHBO\nOKpEEE+SVS4JHBzOBTKLQGUX+fuwcL52BvWqUBEcWoW87Vy5SCWMYrfIHkmY\nX2SnO4bo4ThjYC2LbioSBZqBXjXLzQdoWuQhA8hhqtBt60bcrXjmay+kWBpJ\nNZC16bIAjdw0jE8PaLpYObGrdgnldIQVUnfRUzXAySA55PBQkDEMwu0zq8Xe\nIQUd5MXMdzK7A4JSbG2cVc5Hgg0SUVEYKqnzIYIeLWD0Sq4YGWD6znCP61v8\nMU7Tg3q1WEa066sGC8U8SYcgUiRPMWr0j+/ggRYSWdxbv8E+T7ywd1gGTK6x\nz2ZsR/2o74DqI5Gxz/i95YtsFYj4kMShZ2XyyKkQOvH2OMgUuS6ZY3PM9Z3d\nRDQnwYPqYMaLWg3o1Au5fWz22TnRKkfcyZPyv5EWWp8r/ns2TDACzeUsYuyf\ni7cM\r\n=k8VE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCyLd09V+JmE8dLbihrbHcWKcL6Bp+xb6uuLTj37XdOhwIhAOQD+Qpap1angq3gy0DMMt0sxwlA4mq/Ejp5kYXoYxFP"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.3.0_1525882332242_0.1011104151834501"},"_hasShrinkwrap":false},"1.3.1":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.3.1","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.clonedeep":"^4.5.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.4.4","vuex":"^2.4.1"},"gitHead":"b7f2b413daa3e47b9c2de297c1f616c260350199","_id":"feathers-vuex@1.3.1","_npmVersion":"5.8.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-7BvobXuLLN1wOMouk2XY91AaGcVcVeL5EVd9HECB9+LjeFYgObwcdlssdrbhQWL+N55bGdRIfYsJ65hCwvWH2A==","shasum":"6cda55a0fc04cda028048cfd01dd3d53cdd2edcd","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.3.1.tgz","fileCount":26,"unpackedSize":134626,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+3gtCRA9TVsSAnZWagAAGxAP/2x50h2OqYq3DdzZxebz\nIM5+IjeZTsmyos4Zfj/bp/mPjQ025C49isI6loZey3PVSDUCl7JaJInbW3aJ\n3UKamWnCXG7rQhDBueuBC7TFR3tojSE3Dh52JJSm6feXg2dtQZKCXr4NHbHD\nh+f7hdJdehMlMDnbd22079qzTDEoo3tapLjIm/jRE94oh49WFfFxHHVe1wzD\nDCvyZ3hZnhhCSaiClASnxvSq+mrlTvpWpzjXmAbbht3kD/cVWfpKCiqrMZ/Z\nKP/Kg2aINPVl62h5WsuLroyWqafZmn1cQYkiPTuam+Actb/S6jMYQ90lTtnL\nNshHe57If5VffaWsoDOprYHLLAdhReYTGV2/ixb8BNE4KZskcVh7YiRi4W3l\nStmV+zljbttYdewarmT1hSkf8h4ppYlWBrH66QZY5fG7shYNprRG0ps+rm9p\nYNWtCSP2k2VeU7pi6ape/XnbIY2Vl/M1AySLv8KEMBIXs5QZBZMSq2JI8BTk\n+qXlm02L2NtSI5C6e5ndyalXOtBUWiG/rN5LoGXcntpG0CooLpB7ZxPE5LGY\nF+AlixJThMgVYWil5GL0aR6AeIX90m5y3XQPbd8aiF/tmHFlFlz30/7p6vNz\nFyPD8dOGWH7Ydv3kEubG4sE/v/kU+ncTFTqUfuVPAmfQc9YyV12hxq11T+xj\nfVEO\r\n=Jbgw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDDTzDutoOGNjhlx+djYRIretcRInrLWeQHsau90LSX6QIhAN+ivS42f9ci8uFDrYSul/Wh7lmBOXF3PV1EKBuF7n9m"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.3.1_1526429739635_0.7596903133001296"},"_hasShrinkwrap":false},"1.4.0":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.4.0","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","fast-copy":"^1.2.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.4.4","vuex":"^2.4.1"},"gitHead":"ab2033248457685b551ab93780e29cd4b1553c5f","_id":"feathers-vuex@1.4.0","_npmVersion":"5.8.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-qr7z+RsYfEBXW8S2Jjiaqotn6GykVREqf9b9TNfGmZIeFfnjKOngxu9DUK+ecx/SXI/1jF/In16Rtppc9imQ/A==","shasum":"2cb70ec4c2b8464c794de469e7d91e978634760d","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.4.0.tgz","fileCount":26,"unpackedSize":134654,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa/zOACRA9TVsSAnZWagAA0GEP/AwgkfVe/Nufq/cGg12P\nMSwehmOJBRR2ugoYwDYCT1nPGLTwN9QdYFBffVFtPbSIK6+Xj/WcPOoAGG69\ntYxDTOnqfTiJUXMg95CKrTuGmTKCGdEOJAzjQVTb1ZPtIbQtPklMGgnbXeno\nK4qOHrLNz5WDoVYavqnSFd3eFTiL6P7I74IX++7bSYFw3XhDngihCgiCBBZT\nSN3AKDH+ana1aupLsTwoGXV5NMYyxVmjIN+FIIsDQ74a9NxuvpHbkszWRl9i\n6WC/nsjtR2QgfiSkSA12muyu29Ny3PsqtG3NXoM5IUwWLdh5Omsbe7L15XEO\n6PEtNcHFddStLioCxqNwZT2BHSorIoUEo03vZiMT7UNEa9i0VMKXFdVe/PhI\n8zAnfHTn7VaSufwBYQGQK3OZUPq/KbE++t9mMlKFPi3WfUg2jdxqWY0OwRR6\nYh5rRIGmSq/n+f+mHQsC915E/NfMCl+8MCr9rmLENelOq2V22Zu2IB+Xmj4w\nihSZp4eedjWI0FJu+YUlrEKs+vXjJ07Uw5Z8W58jA2TTxZBRZ7b1mlz3ywWk\nKzFlbdnRPVtq2QJk0Gi63Hzq0RbVk7XebZiY29TKIA+T0V8s0MSREQoPJ+Iq\nOvj000cygvYAjoE1Mb2V7+KACBpzXGVYpdSp+qB+YZxFWsIpD2OiqF009pJ2\nQEsU\r\n=p7HA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEAF33DfteAYKcjrt1E1ad9REHNvBLB3yM0HthHIlWUSAiB8tf9P2rcbeestQ4gQ8ZUl5u9EqbR7tQKkkcxAhGlygg=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.4.0_1526674302440_0.08533106126115175"},"_hasShrinkwrap":false},"1.4.1":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.4.1","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","fast-copy":"^1.2.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.4.4","vuex":"^2.4.1"},"gitHead":"06a7d06bd406845299398541f2e94dbdb1d5eeb4","_id":"feathers-vuex@1.4.1","_npmVersion":"6.0.1","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-JGHUO53qaXT1SGFO6lM4DuDaZqy+n7aj3AThcWkswpLJepC00bOI+sgv/b2nC51qTKSGNoqBox0PuXfMDg0ueA==","shasum":"c248531b8f36cee7d2043603140514e37c8a0a8f","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.4.1.tgz","fileCount":26,"unpackedSize":134746,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbBsdDCRA9TVsSAnZWagAAfbQP/2xJ7BkRiarKD3Awh0QZ\nI2d/ta9G8ak9LarOW81zi1Hfg5dBqMePnCeKM46Fdq/QbTfxLYLdcZgUrvl2\ngCSJt2JiofjWowI8nbtcFt95rgU1kNQKp7xhIo/c+HdSKCsFX8p8TDOjv05a\nzFQZRiIBmwnj01D26KN/URjmpUVFJhBj9ccTNNtzvcLLbbVfk0d4xt2Y6CPv\nwEQKyobSzqpCBMUTBjCVnOLxrWkUemr5dnuy1+qcNkGzTQO6gSfzqQrjTinJ\n4y2MrzzFnG9jx5tpTu3LJbAoSJ8DBOuG+Hgl76AL2xgEdteOuyjeIUuroEhW\n6U3IdhGI+TIXstCPEnxi1eyD2Mvcto51sbYKz87b3hVdgQobR4oNtl7Ry6kx\nGae8EFch70RAUGWnJqO90vL2tWaZ1kKOni2bVFVAJHAidzl1OJkJx2fireM5\nbCiE2Hyw1HRW/xGdUKGdFV3Dj0l59cSHge3zh36G26An5jWodxDm3NUsysLt\nLYv3TQqjBHG483xZVFTeq4qqz9ZcmvVCXW5DRWy+yXnNIY+atZ070/GivxND\nIVuyLET1RrJihbtngzPGqnK1mt52E+woDTO83Rz2DKT1tRf8+zLaA9ZvGB/S\nr9vugGJQWcr0iijMhLMaPwWBtZt3xMICYs7ngE10UZpq0FCCpgA5R9akLfq6\n0V8F\r\n=9vB1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD0r9xFna7kozLrOYG39A14edtDTzu9ZPGwlDfRCA7LHgIgZyZy/KbcH7FRB4o8LXYRSk4I+2pPhEydC5IZjSc23dc="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.4.1_1527170881633_0.6553331725480935"},"_hasShrinkwrap":false},"1.4.2":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.4.2","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","fast-copy":"^1.2.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.4.4","vuex":"^2.4.1"},"gitHead":"d7b2ed44d8e94cb964f715ff705bf2b0992a597e","_id":"feathers-vuex@1.4.2","_npmVersion":"6.0.1","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-eQwqtZ05iwy/bLpYJVcpXOzifbc5ONUEBQY0GWSa0xF6pvjpvhg5uWSf5w/1N65ru0myWXG1JBujmxQ9tsl3jA==","shasum":"ffdec9316d644611a694a50edef56514588b5e5d","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.4.2.tgz","fileCount":26,"unpackedSize":134993,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbCrpnCRA9TVsSAnZWagAAKTwP/ixLP8Vrty6TwV+HfXzY\ntiehy/p6VnrWr+2qPDqJ35wvc93KkvrRNZCXjAe1yfGoEgO7XXnXVpf0iDk1\nUdBTBQhF2MZmFDvPr6Hhtkt+ojwpLiczzbucaj0JAiXZYmd7RHJPxpdIuP99\ngE0lC+Dg8g4JuWi7pTahR0hFtnUrbni6+9ZX5yeBxaUT3XHXmTQeVWZPpOMC\nqQA/m/i8dzFhyEWgjeKIxSl3mmRukxFSKjcrPPPCV+cvCYNC3QxzE3Xvek7Z\nwyZKkobWavvwRBRT35UtSPnwnI70juB3KdY9+kVcnvZSlkvFdBRPfxs33Z/q\nHy+n3JNq7fSAec2gkQnwI01G8fLCkOcniQ03Jh+P7xA9P9NkuRcXX+1vShoa\nya+ah0cXvaCx3nn1HYI8CFSidxuv5zXYrugjk+FYn9Ka9IL9lXVTvTZeTKqt\nxpsYopWnvh7SKM5OT4J8ERq0oBi6y5EU2jg91avKlo5+JZutl8kiEm5gq0eU\nlkJ+ntiOirv6rG1xVSqF6ilCWbeKpR1AKZKxiMeecfbDTLNHram2Qcef7F0z\nYsVVX9F6/jHBC2AQ/XrXAczNOljkWdlexRJqsGyaDsykPLIdbkewQXH0GNbu\nWIAuHbxE5KszIkVQbASwc3C85UNMULlQladwDPB+E/MHHC51697QWk6a8vpp\nJPpl\r\n=+nXa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID0X6wcFvt0/KM6R+SzLf01d9n8PiVnCwHDbSHd2a38WAiA4PWsF958krf+vdXPG0Kf7LZw3bELcUtHVZrq8AwkpXQ=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.4.2_1527429733318_0.977304531348407"},"_hasShrinkwrap":false},"1.4.3":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.4.3","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","fast-copy":"^1.2.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.4.4","vuex":"^2.4.1"},"gitHead":"274b13dbfa63777e62cf69f5391a599d8573fcd4","_id":"feathers-vuex@1.4.3","_npmVersion":"6.1.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-VdBITwTOTS6aBolmr9pTcNmmX6SS+vjGk+dfENenC/nbRrjP3QGpShpNIbJv8pwaujf/bM5Ut8ezAvi3FIu5LA==","shasum":"eca39056582c7503bb056e25bb5a0ded9059a857","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.4.3.tgz","fileCount":26,"unpackedSize":134967,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbGg1JCRA9TVsSAnZWagAAL9oP/0eDZmBWH/dTPPnnz4nk\nj9uTheX5OO2Zbj1OLKbHwEwVcwHloqsJnvPuq8F9evKVwpk+7xmCPsJcH1A0\nioRxyTjVsSRbxnDI99sb8dePW0m5DryeoSXFg8zU8nqRFMX5/GolDLuDFuzS\nGrV0KJaZLKbP5qfRP8DzsDlz2narMiyPJ4hU7E0sNvL7LVQ10A8T8FROsCn+\ncO/EdYtdEJk3bnFj68CB9U002M5w5A6YGUsT86+T4QV2cu0LhjgwLjqrX+eC\ncv50OxWxm6ydSQwZW8pQqpsmcvHumZG581OiTvw6E7ftigeTxkVQvPpJtyvR\nyWYmtheVM7SlJ+Qf6GeyCOTsUDhOu19ryjwJkNb6yVTJOhUMUh5IG+Izu3Cx\nvibn+ml4eT/8fqcCaPPYmTdV4nNg6W+eAFEl1rrZsbBAjqytzSUSJJaQ8jmE\nzYSdUTTPt7x0/+w1FcwGVQ04whSDySnewBPV86vxA7OxcPLL8mv0PHBZ7psN\nDXTp7cCN/gGD/1AyZMtpkGINDu6yMyf5jvllP0ni0dqfjvXlZ5ldarlx9RR1\nca6txshjS01cgjhU3/Oui1blfk5hnLf4dY4mUQ5EKTCmOy9McDfl2L4sHwei\n9IQWGqc3GYc+Hm3VB19FBRjKI9oK57yynkMkzPa5dGXMPLHUY09a+WBlwhjj\nDOc/\r\n=QpsS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNjKlOXYUAnUgtfzypIqo13DiMDidaHyFHyfLIffuIxQIhAK1u6ldAYf8dW8ewfUDIV4zDt8FQ8TjHj92IEDeVn9Ps"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.4.3_1528433992003_0.7660586781257468"},"_hasShrinkwrap":false},"1.4.4":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.4.4","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","fast-copy":"^1.2.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.4.4","vuex":"^2.4.1"},"gitHead":"a3d26c6f174369c1649f7c078019b082864c884d","_id":"feathers-vuex@1.4.4","_npmVersion":"6.1.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-fsObTOhnQbgEvC8t3W5a5E9UAXmTE8x2+n//pWGatOpEtldccK7xz4dvwW6vxZiFemkI7Gm7b9dtGfR6o7mMOQ==","shasum":"fd23b7427222a891382f3f94af44a8102c231c0b","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.4.4.tgz","fileCount":40,"unpackedSize":177569,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbN6YcCRA9TVsSAnZWagAAHXEP/iewaaDigPQeIiiENjtQ\nMZkAxKh/gfpTgkTURpwmjtHQRZr8yb+omUcJ2ctVaz3ELG20uDMnRKCgmthe\n2voJjeDiG0ymnqepyD07/1++aPXqNBzRf6Nm1ASJileSgUkcnxbBPrAccFRe\nb8j5jDp5bOE9FeHzWg+CxtT98E/Ka2hFf035heGn9ms1UkA3a0X61PAeaQTE\nJyWRt4IqXR+7Yo514tMg/LX9df3Yn6ZEqF/ooLUkKeKIWu7Ny6uegiaDaf+W\nlwVj8Lv4ix7y4+7klD/yVrhuFZ0CMCLKBTcVSjtv6TvLNNuOGOvu319DMtsq\n+QOWGL42nI0G6w0hNSELBRPcZs6ZrGCLXqun1aQh5KyrbJuTxAh1EL0H8lL7\n5mwYNegQzn+N1unyfUrTFoV1Q/RS25SeTIpcYO7Ro4V6GdZ/y+vk8PG5Mpoh\nm/DYzHE0dcGtd1WxML7856A/uxTRYtQQ5Sm7z55dAtF8X5g2XLbWdO3IidiL\ntKQA/blw4JeQ0yPqcWjzV5oz6p+C9lUL6UJJNw3KHJhkk4ntbtFeFk1FDBRN\naTqAuvn22G435Y/KQNEvxy0ZlH/7sVRqNJ2pF/MP8G7ON+i20+bxdiPoLNzD\nOKGkq+7eeh10ii26/m4HkrYgUYG+u6phX0QXIvm2Cvy/SRt22Iu0d9TiKIln\nMjPg\r\n=PHJt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA/z35uPaQTXQAJtzBaK5+NHB+TMkkY8lDC3uGVn7YrgAiEAtsXkBn1g/NgqDuCSe/l865ltJultMPUg2SECZrh/xgw="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.4.4_1530373660286_0.5110992439993658"},"_hasShrinkwrap":false},"1.4.5":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.4.5","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"debug":"^3.1.0","fast-copy":"^1.2.0","feathers-commons":"^0.8.7","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.4.4","vuex":"^2.4.1"},"gitHead":"523cffc436d931a79ae5cdb39cc81db0f62108c7","_id":"feathers-vuex@1.4.5","_npmVersion":"6.1.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-8qM3yNWJnB0cUAFI/NiPnlIhx0jRItC75bkNNLnzQHHLEvVHC1JZJX581TKm5vU3HK8gBjvmdR+KaSpQZKv60g==","shasum":"6c1eae50b24d463950f7d493e77c23df138612b7","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.4.5.tgz","fileCount":40,"unpackedSize":176736,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbOoURCRA9TVsSAnZWagAA/aUP/2PX66+h+NERR9G7M9at\nPUUIQedi6AI5JjOzOErXAjNIiYm+BpPgLvbHtgWib3kkwLWaSclCd8wdWrIN\nzqsLJc58EulWLcyCaWhN5gbsTCucVbzQMWB0yTWxS3UvyjMyV3XrpEYIa4vt\nmBQrR3E/BPfSHUhdR+xaq39mVBGc0qWEhUD3/U86L0amg5HzDg2GFaq3n3Us\noLSnQAgvLsc0/7p97s0OyRw4Vsbe2GPQXs/4sOW3xhxR/+GSCH+vYXiYtmdX\nm3F49CNIk7wVoz9F8Jm25Lxlq9uIl4DrqvXfjD3HumFXrDE6hG6VuerZDubv\ng+2QzEOUpoDtHT+bfcODsdvDGgUnqs+Js7EtptsPtWAuljMsXL1LxMbKI1E9\nB1v8eFJwZQrpSqQSUAvndZHVM+r7BAzv0oi+vkuRXZdRNJFmCJcLQR7nefVu\n5TB8f1BkMEsMcl+Hxb9qyUH/DGzBxJzla6c3/A2d0zO0xjID866UBB2kzFlq\nalXs97nwnNqIq1XmaLbsj0MmDfDaFJl+lXEfi+2ydgaF0VtlGX2uLfS8/e/T\nqetSLTieN0pvQRnl9eWtWOJVVpFMqA2ug75exJ8rbRiUETT1G3witNZm3PEW\nQlnqrAC51F+C/RRbRfbRFwsJpo9Uj0IbLEMZO18mJlHLawV9ATB/rGgiX9pb\ntDta\r\n=iteq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAzmKaN/SGbHa4mJVaKHXtKpRWwes+lZlTsMBTjc6STJAiEAoW0M7K3vl/BFmUMubrLVtyo3Teyl9qgxM3GICU7yBDk="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.4.5_1530561809274_0.13073510212813444"},"_hasShrinkwrap":false},"1.4.6":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.4.6","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^1.4.1","debug":"^3.1.0","fast-copy":"^1.2.0","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.4.4","vuex":"^2.4.1"},"gitHead":"704759db2eb38bc9db1f5123970387e3c34b7141","_id":"feathers-vuex@1.4.6","_npmVersion":"6.1.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-3THBSpvE4gBc4pyNMmi02UVmSHjF005u9oe0N0wgdN+wEDJGOuOS6pdqndfO1W/ldfClfK43CRBvqDmzi9eqJQ==","shasum":"25c61f2c31e7ca26f99bfdc0c072cfb244be9309","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.4.6.tgz","fileCount":40,"unpackedSize":176842,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbOpAICRA9TVsSAnZWagAASh0P/0aUFqMFepMXNNg2ziXn\nv5563kF1nD+DdweI35KOTLFonjmzCxyjm+5DmPYoMqv5/StLU3ffRYr2Q+bw\n/pxc61ns+6CBHKscGnCoHv65ceQqWr6y3P9Vd+7xu73n4E7wpCSOQoSghv3h\n6wp4cxUSEdaO33U+TGgGZHXRMnoFOU2VV5c77f+ro5/lcJXCDnwLBQ4bUExw\nTSGjXsIZNTtjgK11k15BT8cKmK09xqP0leT+YhRjJ8RF5qiuuGCj6pWKUkE5\nP+iSMNvLBGfs+Yl3JaJEeI0iVLFJqq3jJ+RSa9BLt2vM9pJBL30z6zB6agj5\nv3BtGlzf9bIQRhyWDVls+UbpZmP3OCKQK+E7UGKBGe2CKvMpqJgqR36RH/wG\nSJM9Vt4A6Bcu/yw691pTy54ueuziBH3ucYA+jSLGXuRUDS66nLP4CE7wJIG6\nmc3yyBB9KzfN0Pjzihm/qcgsA3gQ8kTLxDC3h9bAITI/0bElvq6/AUQLWNYd\nJnjBGhGHCpxkON9EAStHJux6cfCTabahqnsGnjTL7EvrhAulS/NAqS4r7j3y\nq1GIhRPk+OVbMbq9Nl423qOCQZ19fkQtRNLP7WlC2pwcgF1rsjsnGcqdYNfM\nhKmfkFxWnikTvWZpqYdMkur3f9bZv6fhmc+c+knzDFCzg7e5HM8hjCjTHZs8\nVEKp\r\n=g2nW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGvFVoEW5gIzQpIJ86qYFqxe8a1Sk1siwy5qAQGlJjz0AiEA+GsLPUMTuYGRjYf/DHWV6U0JDJkslSuKcATjfKtYplE="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.4.6_1530564616927_0.07667635158047803"},"_hasShrinkwrap":false},"1.4.7":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.4.7","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^1.4.1","debug":"^3.1.0","fast-copy":"^1.2.0","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.4.4","vuex":"^2.4.1"},"gitHead":"f0570d3da123d21e71243808cc79971178d5b1dc","_id":"feathers-vuex@1.4.7","_npmVersion":"6.2.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-ygJTyO2vrEDkPI5rtRnNu/RHdngHntX4vdzx+b0GjOQSShy5g8IdoYwamqEzczfnc5Fzqi71ch1DsAFqXG7lUw==","shasum":"74a22010bbc0be2ffffea7c54a18eb2b87689147","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.4.7.tgz","fileCount":40,"unpackedSize":176988,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbTRQXCRA9TVsSAnZWagAA/KwP/2GN852mezHu+4MOoicv\noXPbh+SuZcfVPkzQMl4aKPtLuTXRMsx3MQ8hcAlSW4X3MjP0Bf0D7ujaCUkt\nGUuPP8vNpUFzLQbtAahQg8r3h8+Hp7zyAaJNXac8rZtXGenRfpzOklhb458b\nHjW9fZKfi/OvYyFwpBfhPxofsAV4FiTUa77NPBCJO25tkx965gCHjX3fgt/f\nlGiw+vyIXIWsRn7H0VtCZA/JnJtjfsb35bTRsr08zQghogVwiNTwugdeFDUH\n0DQnE1iFwZxRqvXFe1RC/19oflM34ozFKCMuRV0GT5zTjgqsPXonLIlnTJ9M\nTUJXfJI7TNduJq9lV5F1QUm+wrIaWIUbiurg0JlOPVF18HD/rxLtvHa+bniO\n+8xatkFO2hEfGBeAY1OWpWDsHj1kcPCr5xcPxHG7Op1mxXKltIfKIuNmjauS\nG6ommX7aOmFPSAkwYXlGrVOCCLN/mMuvBG9cyemLaYb0ohsRkgWZmjjNQtwr\n9qfBoVWXqdo5jzJb/colExWa5aJ4T2tE6XvVdCzXnCAFhKN3pDGLx6AeARpf\neImraS/omdhohl3P3oIP46ZSleoNKg6D1Xk04DLYIX2v/vebqXkGweq4Vsgk\nqg6rYUe1a/790ftVot8Qw7Dpav7yBwL8BTRldSwefidxTy6SMIwBM74K0Sjb\nwm96\r\n=GnYF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGgkeB/2qBlDoYDG9FnVxdZHlsn7Q1oS4xqQbVrZJvm+AiEA63oR/IvLjOxX9sDtsCHRt2ot8IpfezOYg4Wl/jPiGHs="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.4.7_1531778071646_0.9635319701367753"},"_hasShrinkwrap":false},"1.4.8":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.4.8","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^1.4.1","debug":"^3.1.0","fast-copy":"^1.2.0","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.0","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.0.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.2","can-fixture-socket":"^0.7.1","chai":"^3.5.0","feathers":"^2.2.2","feathers-authentication":"^1.2.7","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.0","feathers-memory":"^1.2.1","feathers-rest":"^1.8.0","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.5.15","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.4.4","vuex":"^2.4.1"},"gitHead":"9fa37cabfa3084a1c623e794b027b73cd8d522f0","_id":"feathers-vuex@1.4.8","_npmVersion":"6.2.0","_nodeVersion":"8.3.0","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-L6R2WIsXlg78dBy2GnfWCzuxg/N2P/uDycStQ5+C8tKbkuPmVTJOpk54Ti8sQrVVLbEmUUawkrYyRFXjBQ5heQ==","shasum":"c3ada49b72cdcf72d4e19b9f63435584a216136d","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.4.8.tgz","fileCount":40,"unpackedSize":177049,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbVU0HCRA9TVsSAnZWagAAniAP/0UHFjYw+RFGsnpIRVDT\n+nihSoMzPikOv9GC8MI8L4V4/NL/C9v4OKL3U3dKvNRRkt2NTc9q3jdEcaQc\nodpsGYwDjtTkbKmEqH2LxRNNMRQE83x3eKTAmHWPErlHfJEQ9a9ZDaVLaFX1\nnQZmyEfljTmtiLiqlcfAkmYAQaQbYKIRw85+g7sgmobsoMpsM3giIUCn0p0A\niL8QWfTubDf9KqVIQfKlbozujC/hAP6oKt1ldZVtI3c9u67rQdLS9kiKW8II\nOjs4GJeZGP21YFd5eKCMN1QqZ+qwn0ijFOD6i1BoJDspbG0TSgTN3wfQPdg1\nA7BkYkzYkACl81Wg/OUj+Bome6HS9EBT4NvztXbRfqsRA8smSMZQeXcMEtEE\n9v/UeKepAXZF5wiv/d0Jzvu1RnHT68rFrlEXbAs1IXeIh6PW6JH+vTwAEeUC\nQG0j1zH76Nz/HLSRKF1WvB5eudppPc1M8eySP/HyTDv8+Z/+X31YwPE4f+SL\nEY/zGFmOpQ2qX1U6cJclCEHeV1/ZvL+AyiSVP4UNA6Ic8qgGoiQ6k7vcgxZ3\nouC2BD3CfSRKXF+DLAZ/quavLw9st3IiFds6O5cy15TIDTnnrMzTsJa9pGm+\neEo+Py0CNEGrMSFi9dAgQ+860TFackP+zHLaIxZ76/aQSdD8rf38o1QfMrYb\nHKC2\r\n=prHe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCCSxw3fjc69I8ogYqSsBLlmwOfPU0MmNigwfG7SOzA6gIgYKEL+oVLWiRP5qXg8FebLaUnU7y+LudhW01K30fatcQ="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.4.8_1532316935257_0.9276618062889483"},"_hasShrinkwrap":false},"1.5.0":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.5.0","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^1.4.3","debug":"^3.1.0","deep-diff":"^1.0.2","fast-copy":"^1.2.2","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.1.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers":"^2.2.4","feathers-authentication":"^1.3.1","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.2","feathers-memory":"^1.3.1","feathers-rest":"^1.8.1","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.4","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.16","vuex":"^2.5.0"},"gitHead":"952d8c00c79901eea2b5a797fa3e45b6ef600d7d","_id":"feathers-vuex@1.5.0","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-buqCDXikecreekHkfKiv2k3rreycV2JZzqXcF7NrTyNXUbk09POqy0HvR6WndnQw0Y3OcooDr+j9BRuQ5u2HLQ==","shasum":"189d5160f744f829bcb19422ffd06f6367a8aa83","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.5.0.tgz","fileCount":40,"unpackedSize":179336,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbn+e0CRA9TVsSAnZWagAAdC4QAIdUw/kZY5W4V65kHILG\nQD2ZruMnE9/jxBuJUcYbF1LOfMJIbSsttPCOb54Sro18xLhNmZMw9lOw+m57\nPjWiSllrXa2vRLvO8r3a/iiBYJPaUO6evV+czkxOiyCQ7oPVyO9ag+MYG6BF\nq2ee9ym6gpTZuMbMOcrfPH0HgU31KzyaDmkmHpRZg8Eq+l1CRwgF9fZiZA9h\nFxfPX8zmDjMGClOznjTR8AQzhJq3VZVDikHPhITAPA2TjbhmHISyJUysoi2S\nTi8ta1kBM+dMmvYWl9ye0hgr27bOhzqNitlzb+cjjrYEV5fE7c8oZ70F3pWE\nccOsn0a87kXagHsPQztmedSRGykFrxQaSMgTODMWK/DbhVIJQLbVW/JGhsY9\n4AT7qQUnVkpqw8B+0UgzYEcgmeu7AXUhKuDdHZWw+VT1Xjj4YrgJ4og2dfp3\nqaxJ08FIzhVxCKenv36RqksSuG3OYFwCgTV3p+QAzityrPneknDPCP3Mtqv6\nOisGGKJ1T5GVrK8ax7rUL6twIMlzEUiVYpCFoNocTPxEAs/7SZiqydk53I3X\n/EVUYN9aRRKew2dDjMlEQdbaLcSA/kA7SiavH37VhsgXZv/eB2aj8+x2zOPw\n9wYgXiOrMqNNBaX/abVXdMP297Of01nPD7+m8tOtJhgktBGauDWl3crnHG/E\nC7cz\r\n=PsEw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCPYZbn0OvDCHPX1Jh+2g4VjsiUNGnCNeRJWSup+SN1tgIhAPJBBgO8CAITnuLCddcIUtRXCvIh9vkf0sD+ScNsJLDD"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.5.0_1537206195810_0.12571727479028083"},"_hasShrinkwrap":false},"1.5.1":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.5.1","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^1.4.3","debug":"^3.1.0","deep-diff":"^1.0.2","fast-copy":"^1.2.2","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.1.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers":"^2.2.4","feathers-authentication":"^1.3.1","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.2","feathers-memory":"^1.3.1","feathers-rest":"^1.8.1","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.4","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.16","vuex":"^2.5.0"},"gitHead":"42f8b153c8efbfb385981c37b7b3ed84a6a5e4ce","_id":"feathers-vuex@1.5.1","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-ZEvLx9ri6eth15fiqfGv+hATAOfjG0EuelXEz3brC5g2tDjNXLre6hg6yj1wz0oYTgMarIXWQeYY16MGjOB3Gw==","shasum":"921c2ffeb0ddf46108ec26ec91fd7b1298de609d","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.5.1.tgz","fileCount":40,"unpackedSize":179430,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbpsHUCRA9TVsSAnZWagAAhFkP/0d+EOVrsnRivsoDrcU/\nrjojyDkR9LnFO2tASGj0z+6WY3h5RoQzLhkN9qI5reDuryY2pn5FEJc61/ZX\njO+xPRd2unbVG7ZfHsbqSJKAEhgcNl3umkzrjzVl+6xxrEnaQa17eNE2E5KK\n/gE30MptWkYZYNsYx629uygR2AkW+nN+R+27oVgUgEVEkuhrFtpeoqCkIior\nDMh4UK63gfItSuMmtIry8pSU0GIqHRWeJy7J/mokXFEOOARZtVYKgIsSTKP0\nackyrn/yn9wF9q10blgkS6TAE76dUVfa+EwcAg0wVY+znJpzSMLCG8ra+eE6\nbIgE9uODTd+opUAPJ80Bvykq1cJ4bRFNphdzbhSZm84I6yQKsCj535N4PzAr\nO/jrs53Y7boSEkJ8e/R+jj6oxYqjgccbLlYPRRXZ2OR1SanbiTuUhTWc+nXN\n2NoHhmBzA0cLaVIPyL8Aq2tObjBpoFUIakXpVJeUwBeXNW10k73AOe9blbfY\n1vrOI0iv9ZqOOvx8m3jfiqt8ZtKQCpx5BFUB4QkSGwn22jFVYM1YvX6c2ov7\ndGS7p2com1deWG+N9lSjhTsO8yBsYhFiJ9UO0nRf47APozQTbkbr0+1PrRD+\nSoGpnP6HbS5br+YVDdfKQrQ0ee/iU/On1oSYzJKuLokoZXRSwlgbVYOv2bzM\nlTrL\r\n=CDXh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDt5HzLb2tq4ffDXlnkqqx+WIlWWywNeik5fSwe7O3dKQIhAJ9nJtPu6Gnlw+auQY6MY7fRqUSnxZtCibDHammVNUUy"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.5.1_1537655252010_0.8693926810479125"},"_hasShrinkwrap":false},"1.6.0-pre.0":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.6.0-pre.0","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^1.4.3","debug":"^3.1.0","deep-diff":"^1.0.2","fast-copy":"^1.2.2","feathers-errors":"^2.9.2","feathers-query-filters":"^2.1.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^5.1.0"},"devDependencies":{"axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers":"^2.2.4","feathers-authentication":"^1.3.1","feathers-authentication-client":"^0.3.3","feathers-authentication-jwt":"^0.3.2","feathers-hooks":"^2.1.2","feathers-memory":"^1.3.1","feathers-rest":"^1.8.1","feathers-socketio":"^1.6.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.4","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.16","vuex":"^2.5.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"0544dbc06080c70e85505e09a00cc898580e1df3","_id":"feathers-vuex@1.6.0-pre.0","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-LbZORpq4pIG42xMgfyuMPfCQ9w9x2XUcmt59/KOESZCVVDjLTyPgzVoJKYEv/VovTiW8vxrBMAFXG3z4+2EaFg==","shasum":"e1cb70b72ca4c53826017c7f85995dcc6cc12f4f","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.6.0-pre.0.tgz","fileCount":43,"unpackedSize":271596,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbsRvNCRA9TVsSAnZWagAAsRcP/Avv6SXKNmY1cwkfKLkV\nNYRcz9LzdFnrHvzyHROXAc0k3sP1Cwmx3HcJo6jOlre3x4G8sVat+KGK5XpZ\n/dHsZOz0bFDPNWf28+WOMW1kCKqSXOj+uWT2cTeQaqw09qWYSbOZsjijKlm3\n86CHrn5P2RcmUAPhvHiy31Ro+clLgc1zQt/uKmPEpxhD5DxSnG9HJp68G2Qn\n+9aSSTNh6/Obn4cGjTtfl1sbH3vio5On1sXGjsLhMLD+5IRA7N1D3NQeRzk9\nTpIyuZPDMkHHj0sNwm8NkWHlqfvgRV0d2jL1s70gtj5e8gxpBREwNsWOAno0\npGol2PoxVbo4leppywuQYptDnWz7pMQf+0F/Iln+KmK3zBU6B9lJCaubnDeq\nQknOv/IX3Em2bGn+aOxZCgziVavi+s0U4yN/MoohHlIGJO5OHp3Kl7v3wmjW\nR34EmGfZ5HXes6qk9eRQCpadaH1Ofg9s6zXGvRJEnP7rC6GuiJjl8hMfzWmt\npfW7CBYnDDoqbCe/JLo8DRNh2niRkXTTAFoLF2DBt5to2B0F8EW1s/HiVq7E\nEJ/eGnzxwdg+RE61iEahmWMXGtwx6M7N8Z7xfNsSv4Ss53e7tITFZGgTi0R/\njBLGlxMzr2g2GNZnmvk/I4RaJJSRcASo1Zdy2gplUyCMk2TrOSpWExQRJyjt\n/rLy\r\n=yhYg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBeUBpLYUhqc0yfrIdIirS6Q4CYtMN3dKagU9nxzt9nJAiEAvKbUZOr5MsPtClVvnCAumHs3MWhRC8/xjgHFA/XxY0s="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.6.0-pre.0_1538333644439_0.9873447209522777"},"_hasShrinkwrap":false},"1.6.0":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.6.0","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"gitHead":"13ceee89410ae00ca53702895a9e9713bce1c3ec","_id":"feathers-vuex@1.6.0","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-RIQiedwfn/rwoMmg8sSyOIi/2JkLu0IjYTMg1KCRr3AvpPcRKEGgOA1D5cZLYbIv6cKIyY8RWLE9zx4/BWePJA==","shasum":"22498b2b31a2c03690233bda4ae45be767b5a31e","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.6.0.tgz","fileCount":40,"unpackedSize":181164,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbsS3OCRA9TVsSAnZWagAAb8gP/0/IIh6AYg2BtLoaJh3D\nB9yKgvv9sQCablHRPvLzT4tm17RlXDjf4PtZ3udVSlYm9NT9zP8XtTU6gOrx\nQiX2prrvZJaDrthv48hEUmxKBkM2wnAMQiWMOq5Xm9+a8s9nVqAPzeHoLrpw\ntqIOqME5osHsiT+1zdELKw9htbrgi2syKMwMTrSLrbEg0/V368H1C2T6euaR\nXS5hhb1m/g0pHEtWkcfxBqQVVUJJdtuPUhA5hH7DmbbOUQfezpChLSZI2olZ\ninZ+72K9SfiliSwJ/wTHRKBFY1yFtDee8CJufFCpoNkRL0FdU7PbjFIPN040\nWVbR8tnqNRIKZXp8nZzvZUGFao27goUDdFgFS9wzeZpiHMrsTtj2Yh+Y8ngt\ntgv80gjGWVQ6PGpbTwVhYABhDKUArajrhLZKL5vqAm0ELNTjRv/Qas8AbZ78\nntGIoFg8lX12NAmZUsuSZVqHuYyzey5KnnIEkQVsn+eX2LiZVzhqrvU5VYbT\nywyCQFGKaW31HZw0inWmqfzoeqRxIpG4wgc4Z3kdqq4vJD6YRf1ao7kugSgU\nYjB9ALbFj7p/eP+6t5ex/mN08/ZorhusRDRFH3zslPtgVsaA8fI6muNsvI7w\nGrsfScA75jKeWcCi9t9METe3eoes+aBXAr3QMkqk+wn/ELg4sAkwEUIzn0Tz\n7sx5\r\n=cTRU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCHGZxMVIxc8fbuAedM/qMAbdtTDinCqsE11wgCpd4xygIhAPLDxV4Hg9pb3MhIOc9PnMO7OuOLDUj3Q5ochOipgjiZ"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.6.0_1538338253780_0.4899164965211342"},"_hasShrinkwrap":false},"1.7.0-pre.0":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.0","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"4b08b2fea73379079d3941d09736875f6af0b1da","_id":"feathers-vuex@1.7.0-pre.0","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-jQB6n5EHRBU1IudDOhn5jRDN/bBu21h+YIYsLJtYPty+CLLRkWN6a2crrcgiKS0mLkP9a5X2PZ+kxkjn/Z5l/A==","shasum":"dc56ab2f2dbe42ee986aedf678d987f78fcf70f3","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.0.tgz","fileCount":42,"unpackedSize":188746,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbsTh1CRA9TVsSAnZWagAAR4AP/jIUJ6tFLVRN9zxN/Zve\nvdkCyLDBBRj20p7X58O8faXEKyzJLg8fuCJ2P2ShIiJcj/CMLi5LgWf1X0Bb\n34ILFGkFukhglu/jpfC9JiLKFcCOs4sAfesNow+fZCkxW80ovIYO8cNsMGgW\nYmvnwyjTxCYZB6RU6pB3WrsiEkerFgFoNnWOdEs+5WCHJByEieizeRE3S7np\nsICEdD5/vkWAaNVjksIn/dDq7ieyEwwfEVx8gM083gEL+INPQjet2JhNFWAr\nlUO6oF1j7Da4Bf78zOQjipwmRNl6NW+bt10WfBCBbanYN7Ud8SdphxWE1db6\nDBIX5Lkei1F5D0R49BI17FxOU37FTvA90zbDq7TaIT9uUXupRfNpVblKLOrk\nmeg+7cCXG/MAvanB0bmwyTrOo1LeIZllVHUdLh3d7o2RL3j0q4dQj3hfZGoj\npwA1ZqiSZ8S6akp4eLM6kdwb9IDPBLySssvwUuUb8kPF8rs3wn1EQxKYL91Y\nV6K1XWQAJavLzd4NYPWMliby9moOnrMg2oQdblxffM2LfoDSzY3oJ3KbL78b\nL8qm2YhkrqRw6uBo4nOOl09r+XZMbpiFOYQ1QJF17eLbeObPjsF0HCj/EsGB\nXwol0D6mI/nOIkWlXvq3bzIdR4Y58k1slXtGahy09EqfO+rEr02/yNwJYWYL\nY6Ph\r\n=8Yeb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBjii7tkaqEWruF5oE70Pm9z8Q6aRK3SNsBvCbjYdmvjAiEAuLEGahnaksiZR/c5NJEzvrbGiMFGfV0gjysdtHVVdtw="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.0_1538340981182_0.05882424203421266"},"_hasShrinkwrap":false},"1.7.0-pre.1":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.1","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"ef7e47a1c97ce8582138fed8a66bcea4280442d9","_id":"feathers-vuex@1.7.0-pre.1","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-nwz28z+1S8wg3GD/pn9AygaPbjC2qzxcDnh4VfXkL6j6t+BCYGJJRz4GiDD42E0DIgJpHSuCQxVio0UxB7NkzA==","shasum":"de3c9888192d2017d300160be38076f2b3fdc803","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.1.tgz","fileCount":42,"unpackedSize":189621,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbsaorCRA9TVsSAnZWagAA/X8P/ju86ewsWVuN1j3cjBes\ndcQKT5h8mZvstiByHnGmtDmm9U/t9veFsc1aGXjiTzqr1A5duEiZKVhOGkYO\n1ry7bAfF0sJhdPlslXyxfebEHX9zZ4L5I6lTp0u6FOhgiNTPfu35unhQpK0z\nFcKoA/GcnWBxTSNS6JBwroH6oBDAO/P1J4dD0jizAGQ6FBfmmZSjrymK1vud\njPtuHilepLAivkWrG3l2TM9cvEIPKNSNkm6oNGiMrLSsNbEGk33CH+s+K9+c\nYsJ2vqafwv/4pk2nV9Hgx7vXKfi3tYr4V5m2fpMj+Fbvp/6L3ikXOF4ZqMXf\njMFOeoTXRIT/tCMow3iixMNKWKx39H0fYSBc3rlh+iPsgRxU1Z6K7+a/AKzR\nMa+qf8sQfdjW7U+OZ0PNpBN3hBJuO1PrlwmPq3mc8ZQFVzJBdc3I+hJ9f+cD\ncMOjIahKXN3FeXyLTWrCQyXvKOquh6P4SvTrao/NknLHLMZS6SCu5/omoP1q\njS3ZP/X4FwseVqMain0+YDzQQ1uH6wa4fnOswGH/pvhuDCmoVmqlFYA07Olu\n6wQwwyV7YxYbW8p1ZQ5DuxwXRVoRzTmqfAM2Um+zmERHdht0tjJRyMKcWUzu\njUCJCanY1QzAhbcDQpQRoJ2z5nLL+Eft9QMYBBq5sIQ6BK/oD5XDpQPrQqMz\nO1sf\r\n=fLDH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIChnvnCr4lyAMA1OLrh1kU9AkkxTqFL5I5qpzHohtfbyAiEAshqHG67xapfzNj8EWjRxv5YlmpQIW42vXbaD/4ummFg="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.1_1538370091006_0.763466752322435"},"_hasShrinkwrap":false},"1.7.0-pre.2":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.2","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"ca62c80811c9b56f8c52fb51a8f40f11e6a158d0","_id":"feathers-vuex@1.7.0-pre.2","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-CmlUU2dTxnYUORi8LHtHrzO0lt1zM1ox0+TR/wqczbDDZUw/j+InAq1zwOEmvDHyxYfSpeuDRpjohzEXKUoFAw==","shasum":"08c32327e732fb3c51fdafecf7e251029a40ccd1","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.2.tgz","fileCount":42,"unpackedSize":189621,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbsaqzCRA9TVsSAnZWagAAyxgP/0awDbSNG+hxYgXqQh7P\nDCjUT11TXTSv74dxhG3/aCSpxk5TqYGjFK7tYHir1cPS+lZNjaPDGkU2o0ed\nNMidv682WWSG/0d/4oPz8Z5M7kZA5eUdQYjByjaFA/XNpSvGV00R2fA0zw2I\ndmSWZ4U+pHg0sDBQ3CSVoc/RmakHNSWUZNPb/6ewW3M1jVb9D/daYs9KbDqj\nrkv5YMj+TO6JysRoVV36dFlSRTH8p77unwLHjEERW49joByuEVyrSQJUfJOO\nvt/oodZQeXduXVdULwP5CRSABMQPj2/yURTWzp4SrfoDTLmnTDYvk95yRWwx\nNVBvMiGkletKSPKrnE+MfDy1LjFq4wTpjU3QkSnE4MQqB455F434BkUlACl3\nJiFlrpLyj2WNaTNwCnEe8oZGDj2aYsc1t0CvQdxprKj+s1OBIimPyCT2/zCD\npwP/GEVEWOmjayEfKuCmks22fCYnzoy1645m5VRTXlsb94kj7duiVPDpNQws\nRlSCXzPooFqGT+Tn+e2S+POZXyxhYhJd7aemwAyYHNZW5HsnWxRRxEyQNte3\nk1oAEX6A4tzV482MV7mfuAFOsPr5tCv6oKycCly3CiDqp12iDCBFB1MF8Lly\nl9g0n2IeL010f9neNJP6vQnd8ZsV19MK41aWvABOxOzibGWMHh5eBAUEAS4Y\nuqVL\r\n=mZgB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCHYOu3Q3fRTP7zRhIfDF/S3zwprmLIq0A4xIW6AW+tSAIhAOvDVCxEtH8nzTekZsIoVBLXv3npR1dEct/baqZQp1Kk"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.2_1538370227129_0.12986949347029308"},"_hasShrinkwrap":false},"1.6.1":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.6.1","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"gitHead":"30a1e2b34c87c1699489340ccd52847cadf2a880","_id":"feathers-vuex@1.6.1","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-ogUvugjztnrxjmJuSXsP+euRqMJ4BugdrLSkd071Y0bXcpvXMl2XBPbwzIZ26NaoUOHnp0xuhBbkCstB+OLQkQ==","shasum":"cba07e5b801be15f109f3c3e603c815f286c62e0","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.6.1.tgz","fileCount":40,"unpackedSize":181402,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbsqG+CRA9TVsSAnZWagAAP28P/3g93uXgEE5mm3OxuiYM\ndqPcR7do39rfZxJe+k3Qhtx4wwDICg/5R916wAVZwLKTToMd27znJ+UceHi7\nxKwE8F68gZ4YjyEu5iznnTgxwIz10zExn6xlvp/6f/XBa3KuFuIlDFzBWw29\nQh0nmWJsM0XluWS41b4SbhkQBeCFCph0s10lypwh4naB432pJoEfBuChqFDY\nBtBR601ANKOGn7kZDNouyCR7ZjN82kIIgzUsHMurMrqyNULndWQNDgV/T8dT\nfuuIC7MZoWfh+sLmCbGPMapMfiqeIQ1U9A7ZgumnfXkSDIaagt9H8QIBMCp/\nhAY9F67fqL7Uqk5zO9WOUwAi3e2e/X0P94THMLOZUUfv6hXGwn1POhwjlx4Y\nPY+6zSws6fzp9lGJXgjwax7mvVOLS2NRAOLJDjCONKGuJ+XVjKT8qIyU8s5K\nf7c3F3JrIRbo07D3AVjd1GTl1zq75dz2DVQsygAOs2tCdHKQPvYsE/YzxqFz\nuNb68je34WNjIcV0o2Wafep+ydxp9aj359G9kzchnCSY53VEBTwTZcG7h/ev\nKl1/q/eg/cruEFAcozodmX+Ao7T67BVqK6FhhAnqRkAkh/DxeOks4kHHqdYk\n2lbNgCq2kpeFxv1Z9rww09+UNvt+TUnsORhNinCpt4+hkSv8GsuRNwf/ErqT\nUliS\r\n=XkoY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCf67kYlWXs/w2AVO6jAsEjn3ke10S8fbPwaILn6mE8aQIgQsmfnjAIZu4kvMW8jXseemQMGafsEhDFKA6+qNufy3I="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.6.1_1538433469593_0.7548119704143634"},"_hasShrinkwrap":false},"1.7.0-pre.3":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.3","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"7aa64e9a47fdd8a9a710eafa9abb9bdff785d6a9","_id":"feathers-vuex@1.7.0-pre.3","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-ijxBy0RR9HmmT76fwEWOPNQTBtPj2GXjtypuVNYsL0hPTX+xwvppIR74sfkk3/CuTjRtSjN5/hGnE/+gnlEleQ==","shasum":"3143cd8067c06bef68b1dda90718a338d020bf31","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.3.tgz","fileCount":42,"unpackedSize":190244,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbsqIzCRA9TVsSAnZWagAAFqkQAJwYa5UbJwczvCh80/Tz\noG6Lyw8TUOO6/aLMmbRFXrXVAkyF6zXFU97yJ5rbN3DkhmUYJecdrT9W7AA7\nEiuIcZQkTabCnuT2se34pTKLhY/JhXossHtP3vIY891fQWtDAdmiHJI69UyH\n2sBwDYQIFvZfSDhE6y/kyVGWDqLasv5MlcypUKJ+FJ/+oM55vGyjS2l/I593\n3rm2HqJ5czeKf0Pt5DkY7WedEM1MU0lvzea4r3S13jiBPaVY9J+qIiI6PYkD\nhaV75XCHKVQYQ78+9lmmFsZd10D5XLu885Cek67p4QTo8IMDMoGB9aC4xPIs\nP4bch91z8uDFOfUy6jppVUoJkUIBLLQbifrQZNHEgnAk2Y/GW6yvxzsZYh+/\nmNO/FOf9fmmTxauAIECyTIOiOod2yrnpEflAqqwU40yFffGLgJnyB2xNjwaQ\nARz/rji6oc+rqZE8gbBsznKTibVyfDUcTyAAZ3BFxBf9cWM4aHCmDlBv0qPR\nfSO+ns1CYq9LFgSS67Y7534psUlOcy8uZPSc3OyvQ7bTs7HPC1wnr5YxKubo\nUSGbt4GwxGPufVFwJ3ka8R3pCbcwl9bioF2neeEkSIKdKr1I5BWttaJfDyhv\nUfbjrI/CWVvOcDTsu6nA8ySaqwiF8FbICwyFC6gddvXRW9qWNF4k0VOD2dhz\nPC5k\r\n=xGTh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG4XwLqhKxq1okrTxdlKB7JULsTdJKD/cIJ8+XeszZZSAiArI+dnWIMwyPESpxr638SBuOMh9IusG8HlzPktbDLfsQ=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.3_1538433586624_0.30774107205923484"},"_hasShrinkwrap":false},"1.7.0-pre.4":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.4","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"77c7f61b6bcd840613c215950869e6f901f4c9bc","_id":"feathers-vuex@1.7.0-pre.4","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-oRmmQHV0ZSJLa0zWVAzakkxt5km+VtrwneTseMWSDmGl7hemmwLdYGJ38u+RfyrCGhwPRkRmchJAbNXYthJc8A==","shasum":"4c33cfb56aa696fb5d4abce3146147ff4c8c5f11","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.4.tgz","fileCount":42,"unpackedSize":191147,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbs9c5CRA9TVsSAnZWagAAnywP/jsmov37fdaSMcEwR2gG\nERrZwOTkyBHmF41zRr37wJduTy3vqyA3mbPaW6EENSdjZU5dqdFqLxxjeFcT\nNkSkjoSRXikubJEedVE9Q61fdnDdy+KMXm42/6PWEGeTiE+jpm8Q5OrZ3oLv\no3b1Wi3jKSXqaSbugg7puLCKv3pIRiZc25Qn1tXNpJddZQJw2p/pv4KbtqWY\nxY3EqeMRwG35lR7Sryt1Oq4BJaoeGnq1GUlIdB/IWKCTItWWWB+jATcRgQ/V\nuOigK1/itFjLPNZf3HiKynCnT0KDxlWnqpgnVUS/vQVlAsjEuAgf6PzCj8EW\ntDgmrrM/YhU58VgBbLGXCZHmUuq0rcm2kl/og20Rboff733jp5j19EfPQZay\nOzzNV5lMQ2AY6Onyg6qk7N9hw2xJw+ZXUvA9O1HLQ6piur8WjSE9u/JZsCKt\nkamaf/dFHOXbPA+PqhQtB/z7c3eLcZ3g4tKegliZPCZEv1awWlYoTumlnCK1\nNRNixFlSLlVvnhneaawX3IoxPJbvgsETk57HYvz689CtdlY5UfTWBZua3BRE\nwnj1xE7QF8DIh21ZT+N8TL6qi4PJ5FJL7y4+N/q7/bRmBc0Csu/6A+thZ3SZ\n7lKNtHYU/7IDqwm0SuDwM+vBbkNXZFjAjtaCoz5qzxqLW6FdbPxzE0lJ5aTr\nHorW\r\n=pNrt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAYgquTnVwsiudkcNOpBjsgFix0kdXPCAyNqczM0OTHiAiA8pS3ryyxoyc6s9qkNour++vHCGwlsopkTqBbdFYXP6Q=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.4_1538512696588_0.6399483729786428"},"_hasShrinkwrap":false},"1.7.0-pre.5":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.5","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"67043a9b2fd72830a2fb01fa7a84a0785b2513e6","_id":"feathers-vuex@1.7.0-pre.5","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-IklGYCjRPa0K9SUaX3ukySghKK4bxNIgYERcuGR61Am9SfiP+NWkjghkRIetDkcJkiagZHQMynNo2+twkHBUSw==","shasum":"24e370efa36b8a27955735e9aa436ed788b61a57","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.5.tgz","fileCount":42,"unpackedSize":191306,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbtAfLCRA9TVsSAnZWagAAlUoP/1AN801dya/XW7SFHZaC\n0bNXWiv1kvHMYaTZsjxDoXhxMJX9PgDDmPGCdbcvkPXdqZgYH6CiMDNfnL8d\nbknHoihbUAUTv60DOdn8RY+kY8Ss46saQWuuAmeIfGc+pKktGdHQO7FzLZAH\nH2AYE1QqlthcKv0hqvGGWzXcA0gcugJ3e28JWwdla9wJfAL4ml4bwGxBFQKF\nmQZeC0TvAU+TjoM7bYv+l6LSLrWgcUQJajAPjwcQ8fGjTaPHauR0GEe7n4XX\nwXqE4TzVYkymyluGydb78FGRwBiLfkUyqbPwqBiD6hksz8XDo6eYPLykJG/f\nteiFTT2WlgePmmofhPlQ3U26h3iPglI0KHHYdhGjE/J4VgP+WfIflOv2DJMd\n5D8NhJrbH+n2TpwxDETCUfquqESfrAh3CB3g2M9nbNBwjrz5DB6i8P2aWHew\ndj1GHGswKYahCbAoI2v1lPmKzo8F9/Wh4cbOnS5FTf/Ox9XiArxD8Kh5lW2J\nCrghIX4OaPcPETcSyHiX+NmHBAJOJTVztk3syTeTkL5DgPtDdsz4Gt6CEN5k\nw6kHE4VXDqm5AMY/PZH5JI7trm/aidHp3j72CpWdhVXJ3jHNcUYl1MqpMUCK\n92fH5LwfyMXYIRfiyN81uFn1GkSvMFYk5yH4Xct8Cn4bnkaU7Wo3WUloVOvW\nAxGB\r\n=xgGl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHjalHFXLwjmeDSpbioCVkrCzaOsB17T/yWmM4k55qv0AiBa7mVb9TnegpoRYSFIGNJucZQjfLEkG3pECw6amwNH2A=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.5_1538525131214_0.06247202065119084"},"_hasShrinkwrap":false},"1.7.0-pre.6":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.6","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"5cc7f8825a13b92c890bad06044a96bdfa92da80","_id":"feathers-vuex@1.7.0-pre.6","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-35qOc3HE38SXpyNpnmq4TUBUR9rWMWKcRv2uqGa8Hbk8lpGd9R57s9f4xPEyiMiJMNwNWjkM03K/y3Swh92GNw==","shasum":"392571164f113deb009502f093cd47094718620f","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.6.tgz","fileCount":42,"unpackedSize":192249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbtQZXCRA9TVsSAnZWagAARJAP/1Ff+14op/35ql5qqiTW\nYh0OMCsqkpeQi/Z78Y6o1aqVMuHL4E3KkowjlmMNUMiiVMh7Tb1IUugcdisf\nAkxKYi+E+WUaJqxH2Lnawe5VUn3ej2LAY+jKlj5fKUcqpxsRBMdP7Y+IyMbm\ntBu0NnZhJ/nTJPE83SxXeumJT+tu75pFi/vPsR6p20Fg8lEcQFmBzcrOrxf1\nWC2GE1BKH73qdzqQNeyOZKMuf3ANERwk5IHVmjBkjN11sZyHpUOCK/wEBP4j\nct2CAtqd26wqhz481P3xLJuGXVL93u731y181ejWbJOo0wJw+0QsIeTS2ez3\nh2kcI66VtuNxHHDhkYaelS45za5wsmrjSWhFjJm2scbq9KyoEvAEk7hQzzKh\nQ9ce+FLbrnCRiTv8Vlx2QCRcvJynvJTMUapU78NcYTaf1LIfapCbhhyAq1ym\nzwPlivS11W6dgC78YVw8KKuUzMEaUt8Q2lWkivM6va8Add6367HUuzypkvPT\nqW5jeNBBDOjK6DGhbtGaAx96d5DVzX9Ea7cNzcBFF6rT0RDdTI0EjXRxxIto\np08rLAEI5qJe8A66gWz5KLesvkeau3xOp2QF3GA86Ii7Zini6Ji/Ww36uQSy\nB6yGAda2313ZlG9rc37EYn7deR6FHixLhVXcfTbB0VcNeqkHlu/82f3o9enn\nO/zA\r\n=TupJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDC4/ZCOXN1ZxgRfiiyZYmEDcsMML2O6Wqa1ziBCITZogIgRg3uFOqYqO93joBMNQmU5Ph0eNMzv4x+5K2+7DjYk8E="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.6_1538590294608_0.35971181850793243"},"_hasShrinkwrap":false},"1.6.2":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.6.2","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"gitHead":"21a95d1c7cc466254a251e1eab4232b9a0804e39","_id":"feathers-vuex@1.6.2","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-Qb1QdXNk2UihpNEs2JH2fTmQQOSxdJOaNsqFwd/iaOo305nc/MURaAd6iWDxNYWdIH4hi99Od6m3xnIfA0YQ2g==","shasum":"08361839e6ffbb19ec9b56085f56fdec20653e2e","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.6.2.tgz","fileCount":40,"unpackedSize":181527,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbtRiICRA9TVsSAnZWagAAockP/R/mZtiaJslg6cIPB8y+\nLeO/2m0apdun0HcU9mUxfQ+DLTaoLw6PNnoLrk8Wx/KIyBi/gUCKNcNf6xRy\nyrtL6AW1k2cWAdanKTU3NiKoRvomDf87vI3XHCydvGe/rjEYmm+nfJQbKe6R\n7Ha5u40crU+RQQVjcSO1zVttUiZCLmcbRU4TP59SQe8mrAFSS6xf/M8cNFso\ne9VXdx7gcEU+DNKZ7HJh8yyU5vMIu0Wqc5RuZjHkmyTnm+Q7UzvGaRYxmIGc\ncAtc7S827Ugo+CSeFZ0xK1+QZbtsDJ6/zY1v2smRtiGuEic2t+fOXw614rjR\ntkU8nuzV1qu15XDS4uUjYK1Z4EGK2g75tPkyiOPSf0KwBRABcpPyMbRONiKu\n90U/wFPxAbPz0A52NqldJtvml+8oBJfN5d3MJp797ejtthZHBpZ9YjHoQllS\notdXsmFhgrf8i/hBUnKm83TduR8ST9/W17rZccK3+WOENwuZc+EDW/TPEyMP\nuzTFcSkDUOqZu680clADl46N5j+leTxCbgY8a0CSVbPPdRsvLWRGyvq5KHlQ\nJNuLU50fohi3lwZGgUwlVfS5mhBo7OJL5Z9nH9/H6ZFV3BXbLm32d10tKsyY\nf4S4ONBwoAWdB3C5wbftOaeHaNBudnr9b0VjI9b5HhK+R52BLhlDELnOvm/R\nQXUr\r\n=MFbK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDqmLfACTIHqvjk+OI4kHxU0ZhpuWX02yFKwj9bslu2zAIgafYsBr+PKyFeDmLd+hRjRUE91ZQnf0bY0Jl0+6M00wk="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.6.2_1538594951342_0.9282965261067435"},"_hasShrinkwrap":false},"1.7.0-pre.7":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.7","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"60b1c1853c47f3f2bf930aac6ac616e52c577ead","_id":"feathers-vuex@1.7.0-pre.7","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-U/Ds/SKUUrGREgVelFKoKrL8pkGpEIO3GerveEObgs9qdd0SSJ5Tbfrg80xGbRvGYs+iP+xxkiuujZm4nuI3Sg==","shasum":"e1c7e7164190c0be5fecaa6973d90774d19f710b","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.7.tgz","fileCount":42,"unpackedSize":192444,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbtTb4CRA9TVsSAnZWagAA75cP/2sphESKb0kes/m+t0Tv\n4rlz8LoBA0SLJWhVpfvA8Jkb90/twUlidXQxUuno6SPjIB2glEYFrk4fIORH\nWu5JV1KL9nxekmGYdCYSdvmH1hTZraikZ5wjAynIQUbs3xvU0XTgD3kYjc5X\n/U8GYudvQzmZbHPU2XsJ+nmQtHU7O4Av43KkNgb57KRWtkptgelCE+tujaBt\nVodtI3yUyMPTTMpepr0Y8KKJOlyotNOw3efCv/Uqrg/tDEpodoMHHzOPsAFp\nPfDKYW4sVGtHml2e8k0ViLl5wJeG7NPKoCBkU2aNzpabYBZAbinv60fprWYi\nFm3+W/X5AdAb3PgJ61ernFZn/I6GeKs8wq9OHTjDPABq9aA9Z8QlE38V9yQ9\noeigWCKskBWyRd4K3jTdQ4bWKsCR7rnQt8laM5LhmpvtQAbU2Cv60S+B8ppd\nTQR6BdJgcKdQt3MzWdDKP1ZbqySCPxHjwXq/o6/GOod+B++BeII+ApUinJBg\nAZV4HWmRFq+Wtfxp13CbV6Igc5RI7vcvL8bryxY2PL5srvSgjNSkMpgkcBeY\nku+kCNdh9Ct8PRIQvB7OJkooC9k9RIv89JqV6+YM5hqd0FukfhCg/zdDEimq\nP9+i+LVd12rkmICrxaFqPBBs2/OikkmXmm/XNAQAz/dGc/rHp/v5zX27Si3u\nOWPn\r\n=xjtm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIARVSM9qDaQy0MkvUaHmNNomZ2YBMBu5j/PWHTw7cC4AAiA+7pradQ01mODlUQ7vRGrRMRonnhM1RyUGJ8Xzm+Clsw=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.7_1538602743764_0.4464716746829127"},"_hasShrinkwrap":false},"1.7.0-pre.8":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.8","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"a290ec7bb2e2f6067cbe822ec46f54a950382dbd","_id":"feathers-vuex@1.7.0-pre.8","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-OzEFzppQt7PAaTWYCvnV+6mC5axNsG/Kz2mxgrxPLANnuaQIaPrrlAOUXHgM95xA8V0oAETTZIlXL/V6pzD3gQ==","shasum":"dca555c9f2cf91f67c0250e14a5fc450ceb32102","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.8.tgz","fileCount":42,"unpackedSize":192801,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbvmqkCRA9TVsSAnZWagAAuw0P/jE3jBRzN3VloNsZtdAd\nQClXu6mGAgr84I/oInoavrKnxr4br9ZUEyPsnpX3Ex7luCeSRPEcF4WEVPR4\n0D/M+RjUqBcZll9Emz5k80LzQi5plgPWb/ArvkDazZyATJCuRu+IdmZalPcj\nBq5/Wyuevm/kGZ3Qc97PW3rriRU69wLOwGNbX+xNJdw+IkicAU+3eX3uK0q1\nMIzZi64Jgsrf/c7W2vBrKnbkcPHIVV7aPtj2Jq7nBZJazhPgxFpeas5oMF6a\n9X9wUXZMC9PSwA7d9wWD+aunjbwMqAvg+RxhyFd7ksq+rG7TNsfRA7wjGbHY\noBAXvy1/ydyRR9sm2bw4UKMjNqctcAdWPfWU2smzhNtQEyOywhgeKbcOxqDO\n+OUiYz1R4hmEUZubfHi9VX5O14umo8QksVY8ydMCJIAGZESoxijPOULjVWWx\n6dB6GNLiLcO5UNqFineUjpaqW7Z7UIsF2kSiQinMY4P97adSFnwg4b3MW3/t\nSRAzDC5N03m8VTF6LjaToBJQ9nFxgelY057q9ZsHppV3Ct5h9bbMHR+R0x3Y\nIz+jCI1nAJnwTYCLhHMLtge+ANLOZIs4G0a81zRrfyME9JdIwEIQ9C+dLy1+\nCqMmwMGrPwywcD1GVaTAkizr4QDwgcdYFbBvNbmFqwolzuFe3Yfakfik4Na8\ndo5U\r\n=R5NE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD92zFd3U0xd6tG53GvtNvAU0c9KCQXxBPVR87RnSewdAIhAKkh7EeOVw2MN0eL+03WPUPYFax+rlp8G10OT+D2cFkf"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.8_1539205796139_0.1899800137828418"},"_hasShrinkwrap":false},"1.7.0-pre.9":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.9","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"4e54475d949ac0054c80f22643a6679ef438f4b0","_id":"feathers-vuex@1.7.0-pre.9","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-wMRANzPACUO4Y29Z9zXpbvHGZ4QRW9V2GGt48Yx+G47FW3F/vnr/0iIZOHetelx/XPzu+58fL0XlpW0ZLZfhNg==","shasum":"4819d766d86a2a2f39493e273c3c05db5b4c9292","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.9.tgz","fileCount":42,"unpackedSize":192801,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbvmuyCRA9TVsSAnZWagAA9MIP/j7yepK6nHvfhZWk5xkI\nti4Xany6cGYTI9iApL6d8Xqm2yfOwDIskGjpSdI4ct5y1GlMhn4N5EyQVD6L\nXVa6mqYYkgoOkuSIAeqgxCV58IIPz95G4A/8x6YriYJ9SFEuTERDvQaqZkM2\nkAs+dxVRcp9XxSiHWpO+aROw77KEl1FLA1OOF6mqfFXoFKeaLGjzG5Iokjco\nauvGl62a/3OeqMix2SKDt1nYUurJKz3sysNOmeWGNaDH+6dXAGOxbSI3mnSL\nOvRHn0zvXoffIfMrV7QjlkAZcFa0cPOvk9Lrxafi21KuYATv6guh/MLbRKM4\nXxdwfQ3gRFC7MEm9XmkUD1fjz2gwYwrebrRJ4NZToMUadqQGexZCxfyV2Sze\ntSq1gjbdEXVogCrNgGuX9bo4gaHBjDEf6hgVZ1Wr1KoeIMuM4JhLShbykz0F\nA7D5r3qGLpdk0yR19yN9ZLP/mE4MF3piypdnOcrRGkGauaaNPKIhnHaLZiay\nGq4whAStDSmTbWgO29ztdSEKAVpGG4jSdwM64KbsujOXu7fOd/V2FEak4btz\nld0t2XzT0i/4I0Qo5NgMOmZB1nh6Qn6itey2XJ3n0Z5/BGwsIctyEmIrxrBM\nXNVVADGk1Jk+PSQADAn8Df6JV0Ltdpo1PKIeAgax6bQd0v9wMSBVQyxUGZrW\nGiDT\r\n=uPtp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC9vDTLOou7m26nFyo0iSKpjUYHPGraDIMYEM+QLFdwSAIhAJdoYHbNHfRNc5xmJM9To2abLDHFudmD6FDS3HnXcnD+"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.9_1539206065786_0.3606507621198147"},"_hasShrinkwrap":false},"1.7.0-pre.10":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.10","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"4673665979377341f06ece16238d001be1790599","_id":"feathers-vuex@1.7.0-pre.10","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-R1Jn7TJRQHwElT0nTqhmwici3OPwbjF6hrikhfvwZ7Pw8mIqgSykMTVbRKJZQ1tmuOjzMwRDSyZ6+RCKJ/u7GA==","shasum":"77f93705c31abc407ec20d401018f1d24575feea","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.10.tgz","fileCount":42,"unpackedSize":192951,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbvnCNCRA9TVsSAnZWagAAqf4P/i/xc0eqI2iurF+Vicpp\nN6rfXGVKJcNhqKZTsZiT2j+vQi5ZWVCDYxkTuUab+VPmkT8lOQ4CQQop7qoL\n0wHk7fstykji0w/5zrt+IhaEeEiXPfxkt/eS/t081EsbEI+Q+hR2MH0Cjxjz\n8vfkkne+gj0MuzB6RSh/szfAhxhUrm+yDKnc7kuAsHsufTghdt+9KZ/GEDDY\nyXxXHK2KItQeT940DSw8DdSlgyKga3qonGtlO7D9O14becA4O2Js78J3ERmm\nqy/xVWRW96rAbSV3KL/IhI/TOxYIxau/7CP8FNsI1QBnwzi7YoslnHZ1i+LD\nx6EuaZieQdKIuEpxES6aJHY5FwkI/Ar09DvRIuicFf/dv63PlL0HUTCazj5V\noK9LIARD3xZ+Me1CSxkQcNX87l1nrPB0rVR4lSUh43zJ9FT9epKSMvjk71qk\nUiEtODfUDi534TpT546tBzrwDvdUXudiqYFBKuRFB4lcHylkMs0BGQv6G6Dl\nsVRZ/dJjucinKK/OxPTnG+ai9B9Vtu2YbRTsv0iqY80xmpfSnnRuV21pKFv9\nS47a+2iNdct0MvFxXzer6Xg+oQUMXLWEVKjvTdWrCLgZwq+EQ4nWiW/MsSSe\nMcuSF6LRhExwLKFQlbARUqPfPsN5ZFQkR/zrIrNM8+/XQfVZIqki/7EY2tpL\nEFRg\r\n=oRgd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGnZjr8ashfQumFaFdoNtut8g4/gjeRnHFdLZ8dLHv7XAiEApFMxe8rQuj9XsHfReXq41ENc6Fe2J+Y9N19qmFy5I7s="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.10_1539207308761_0.463504490853353"},"_hasShrinkwrap":false},"1.7.0-pre.11":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.11","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"bcd75a678097e0b47a7fe2e4f5e098de7583edea","_id":"feathers-vuex@1.7.0-pre.11","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-4TgpoR1g2zfNb+A/6QSW8uwViKNTLQwdZFT6aMGW6l47FfUT+38dxFVtnLQPiICGpp87Y5WpT/H9R+bnjjCsgw==","shasum":"13fddc46f73e515f633e78178fff37f93cd1bfad","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.11.tgz","fileCount":42,"unpackedSize":193031,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbvnN3CRA9TVsSAnZWagAABcgP/0ljECc2nVb06wWyAs3R\nWyOM/bcPg6rPAi15dhSZWfhaN0O9gDHb3elIrPQIp7ozHpiohKcVVqrOR9xZ\n2uK1Q4j+bpXdsYZcOccN/zQH/N9O3D9McXVro/lLtEGwwGUP7UYIBAu896t5\nl20ejILfgN5Ru8hOmsRwbpFrWj3di6/uspNM8/kYJuDYIqcMvBIQpowiWksj\nC0F9f+jaP48wIy6CfnY1bxPG9qeHlDYQcmsKBFcjK0uWZwfO/5UD1SkWyC3x\nobxtLVH96/QuL3LCFjNs+CAj7Ji6OpXF0G/GFbKWBlDjwN2XvhhJl+5uy6CV\nkQ/aMZdzbpHSwLU2erlou7eGuLGipZGtSCPfgZRRt/rZq1t60MD5HN8evsLW\nV1LywhIBMPyB5MaaOTgp/aaTEaPlxaz7/pFoMRYdT2kRHlGKYpk6T/qsz6lj\nLa2GsR/TECWy9OOupnL7DepQr/u4Zg3yjC7pheUgLOKsRXRbxj3VIhUxhgyv\n1jMOVoKg8FaIPFKNV7wXa+C/U03RCPGm6pRGBRd74q4nLeauy35y+SePeAPJ\nKETuklqDBi9ki6V+FBFC5o+LKcmMpzoVbZdxgAdKT9OX6ghCOlpIJ7fT5+EW\no/hEGHM0YlINE/7FSiCzCqNMwrD2eoBRwY/t26crdO7fsf+ll66cgt/6oWd0\nmxd8\r\n=cx4W\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCRhSB4b8hGahbYlbLuiuXkX8Gp9Pmd8/kCc3fS30qLTAIgWoxnEvVKW1XmQmMJYp83gMA9i456I5wh4XtP4bZRmFU="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.11_1539208054329_0.7665637292980112"},"_hasShrinkwrap":false},"1.7.0-pre.12":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.12","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"76639c67de42463745b9c8492cbfce127185e941","_id":"feathers-vuex@1.7.0-pre.12","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-/7B6/jY12V95gSzFVpRZkDeJLxEVkZ9tB8/OLuR/XaiCwO/Jcl+/eoWrx7c4TKumfEWSro9X17vJEOkOWsRGzQ==","shasum":"d390aab02553dd067866cc226d6d7545062fcf2c","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.12.tgz","fileCount":42,"unpackedSize":193150,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbvzjkCRA9TVsSAnZWagAATTcP/RULwyJ/ZaOAMNNK7R2D\nqE2xSbkc/+9eR1hJcGvm6OMDB2Yy7XAb4R8Ue6GnPSt3T/Ouss+hCuGWSYs2\nGQ8dhvTBb05yhciJhWnq+xTSFUaHBXxH4hQGespJQCeHZgGkuzfESKjbxfzo\nKpHx2KPG4AkVWYOlqrBcvk6IhGU42KcEOk7y2rXeox8ejM+CSu6TPowGFptt\nyFcx3XuG9FVv7MsgcFFB3x9yGyRwv31Sx7i0udkQzPypmZzjW6lhfri9dp2q\nQ8hwIcC1KT78e9aRz3XcQVfi74Ycb97RlWMsCSuTTzBVGsuuYAr7VnqeOLe2\nc2HCE1xgb4AAOetQ/bHQa7nycMAJhN77Ajcc1I9aWTZwbne3jnDGLXtt5zLn\nikO9daaJh7WDVZUqmAH3Zwkn83BO+D8b3oOd+nmyODoNQotGHeft2j1U+e/U\nBHA6I8Q2Psai+xejY3dnyqvkgXa3p9ThXTNcpxKthCD0P1P9bXGaM8FtDiWg\nVtJObp16CliHwKT3PrQO8qQmE1CIB0tqc2tZ3ndtsHOn2qGEqj/382QonsGC\nhUAk4v+l0lA4t3nGmHFgRKkdgCmbUDwK4T88RfbzYPi4i2GV0hjVQyMfg49R\nlTWMxRoL7wt2mjvtbSK+tM1Co/rmb+pBAmFcWLHoKgCtpWp/r3dYajr6fPuL\neMbs\r\n=eQJH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDuuC2f2T/MjIJo0axHDDBaXQv9FP81VvMpKEI7tW3QvgIhAMFKLj1cvjxpcLoaSFfVbwSA9brlYin421TK31oc8l4P"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.12_1539258595034_0.38024993026455545"},"_hasShrinkwrap":false},"1.7.0-pre.13":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.13","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"abce7a796946b112c87d7455edcaf0443c7031d0","_id":"feathers-vuex@1.7.0-pre.13","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-uKXLhr1Xw9brIzo7RpojVBrexu67Ek31WyCYqsApj+Zv3fa5vtryHhJw0Zi20A40II5Rf/S++h/h519J2VsAvw==","shasum":"6eb5b664a28152caf8931d00a2e982dc29cf05d3","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.13.tgz","fileCount":42,"unpackedSize":193165,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbwoQ1CRA9TVsSAnZWagAAB1AP/3R5ryc8hVcZjGRV9QDY\nmZxa4O2lkprA8u1MuKw+VZLGWupfM9HzZ3+5eVAtLHNgrO7zfbpENRfOfjSr\nHCmw8Ngg/FgUThTIjrMxtritmMVT9bt4LJN7GYKfkU8JflQ5ATuO6X7VU1dO\n0xyld37jxmoMxmxiVzx+jPN4Neo3C8ly5hhNtSQ5tAO4waAa0ohW+iY3qecZ\nw9ynHZIMgrm0Vvdq3M1IsS3IPg4HedabU3pkFMwiB2mlCYCwOh/Iax3uenCh\nVkwQocUgTUyXrkzgcZXcIdEYXPVizJ37xuU1Mj8zt8z3b9/yuBp5bTp1lS0q\n9pdUxcBn41QQVJdPPGCEfh66PUfSvJkUxuo2DX++QWxXEvvaG4osMpF+ecHI\nHW9Bmtyf+Fs7EwEmaf7bI1xucnpMWEoD/a3XNiXqhZBbk5V9oVhuuJvAlHVz\nIjccgIxg9NVnwbLZ+qYHF+2dearXu2pK1gyBldqOPBSQzgQa9gQduiPBzK4G\ngrRhL5IWkXO8WOFcRhrXegtKBlrXV7ezzftwSVF4bjKixASw9b+9tL1DsVB8\nKFbz2Wv93Lk0a5/Gsc6olXuIVtlCCL1W7gsUftOj/lke3HLZDFgLqCzxWI6T\nG16XVhN4URzc8n41ei9x0Elge/wPtsiwbZe1xcatLYbM5UydH3YlnI8eDZfB\nuwDa\r\n=m1UT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDcSGOk7bPZ2akgyY4vr+iyAQoX6Qy+hZhODxZSWrj2IQIhAMqZktHwIjlC7uHEntEoR1PrDokPKanvbwzC1fjzJIVW"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.13_1539474484467_0.95249384621482"},"_hasShrinkwrap":false},"1.7.0-pre.14":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.14","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"69aaf742686ce6fc6e05178e32499b5ec77fcc6c","_id":"feathers-vuex@1.7.0-pre.14","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-ZJObHWONlkF8Ajf1irHhj49KT1v0J3NjU6G8ISRdDr7vLrc6HPBxAVfT+OizAhxLvtMzCiDRur64Ap3YOXWNBw==","shasum":"99f799daf66d7fdd1db96ceeb2ea52742084c4a5","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.14.tgz","fileCount":42,"unpackedSize":193446,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbwodZCRA9TVsSAnZWagAAxcsQAJkUN8voE78kt2LNVS6U\njmyd2FgfkJCpNC9g2lnOlDhPso3brdjcjre2foteV1VYFvxo40JnBIfPi7to\naUlYn69RZFJQIeeCv5MufQS9fMk3GlIP49XEp3VBYL/FIC9V1mQwS+Aw0OHN\n5NcTKjnWlJOJ/laLSE7TR9X3Oq1MN4Tp5n0R1Q7d7di4YlMJoyhyze3p8vH4\nk8b5Z7LNF5fBsAfO3BcR4oICq2im6pwVcx6u7hLPO1Kh9gUg8CI6KZ38FzoC\nKL3hkrywaR1LYfOM19cEw/BiPrnK2r/I6/xgNtuYk5x9Adueo8BTGRn5GhKh\nDUXQfYEeLylcjZslX0LcSnCgp9J/TKKj9EclDTjw/kV+Pitlcei/NwX2NaDi\nMErmsysJIrJJ1t8r92h8F54leNftft4/2ualo0An+UbwZRvC+T2p2MYtpTVZ\n4rnoiiSBjeYU/l9IoosZ0I010ODaiZ7rTKIgVleLu0NYg//0Q8uglPeKFpBu\nxujJMLATQHWO33UgfO43msx3dJNeAVI1GudKCf8Hj7HZ84amOSrSEMkcbQHp\ndtogo7j9oa4hGylYZNCNPo7kaPFdwY000YToza19p5pqvEj9PC1rbZ2SDIOu\nA+Qf1KydyL6ajYrVI5oD7Lc0w+QY++ILZ4KT68WiQqBu2tUPcamxALbkUWXO\nUFMp\r\n=4meb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDlOjCOOM7LPxmFn3xrHyOjL7bwn/XKbD10mzvV5CVmugIhAPXcNEOp3LTeFZs3L4LtiYpZaZ3ytCfNWKl8OebSYG2L"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.14_1539475288466_0.21200416319788684"},"_hasShrinkwrap":false},"1.7.0-pre.15":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.15","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"86bf127a4b1169b8029699e2fa2cf3a36e4bb4e0","_id":"feathers-vuex@1.7.0-pre.15","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-/E+KJh6Kd4ut+rg28IJNa1OliHgCdcrDTdeC7ES44w29DQT4cZn+bNv1WmnIpISPxzW32DMuJwDLDyiePiOCUQ==","shasum":"a4473600de2201b9c7f8dbbf9ee60f6a6ad47fc8","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.15.tgz","fileCount":42,"unpackedSize":193594,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbw7/FCRA9TVsSAnZWagAAzBYP/iJUNhpKItXMmIP9IUAm\nQMZ7TXNhaJvRsFYw+pZvnqnnpWAUW3MVKemD2ZH20tqyoyR+3/pW4NU9cLpj\nIGtgQ5Brr7fUoGooMgUKprnomrXq2Lr3g1FoGho5LiaX7/TgTwtW6K5tYicx\nflaZQ8hrPld20BcA/RH5R7yWaCtczMD6TaXY4SJi2AuNbSGeN/H2kQtKXf2A\n46RzBtGPDqFkPl5cb5OcVui+m7OQG+YS1yadIVJi1/5qczghtRcf8MNIKdzm\npDmmEB1HQpNVQ04W1Xx/SKAl4pL2rATR5f6AB1l82cHK58kzY3LT5VSz4/yw\nGOyLFE6GNXfN3D+aWG7zW94PISuwwAyG0lD8582XmZJq2lBWmZR0X3PM4KLi\niOJ7cda7YXrBHSA3VJYt5QDNjudcuz1Dyk2fSlUHkCewj711CB54bqb+47VB\n3VIHS3pQi67yJ1/EgyCneJkiJE9fo2c64yh/JnEXGaRaMtfWxzkw+95B2dFB\nTlWdYWwXwPH4dhw30yI/odrjawL5J1hTWh6+xyEQs8dS9uSt6XX0s46cl0Gn\nXyHTGv9rQrSocPDdXmyDOwk9BwJ02Hlh8+Y1h4wqbI+SvmXiIT9sn0BpIsJp\nI2d+198alyXFE1Hz59z8C4yuVHk5XWTMpSuPSuAyKF0FO3hX5OxFUBQ2sszy\nhGL2\r\n=uOZx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEMCIDEBvVqG3S7uxZMK2hFepgCyWGhdFth917v9A2VFjdFRAh9rPhx6YrnBwPc2gW3oNR3JQ7XKWqugQbHS/164QoC5"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.15_1539555268427_0.11783099224884763"},"_hasShrinkwrap":false},"1.7.0-pre.16":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.16","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"fa4e4aeaf0ea2ff383edabc05d430f075da0712a","_id":"feathers-vuex@1.7.0-pre.16","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-HqFfJIK1ktLbAhMQgW6gwjvII/kxAkihOyX46ennSo7fZlV5AblgnKYqrf0BbtXWd/MPxJzwjhm0eDN6fR2CVw==","shasum":"7144fca33e0b0a6956e5cdb37eb6c2ab571b1aa6","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.16.tgz","fileCount":46,"unpackedSize":208752,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbxBxACRA9TVsSAnZWagAA/DkP/iOPWCKXiDXRTlsYrZcR\nfH5v/LFOz9FTgsmLS3r+A+xps7ztbs4FPZCHyA5QhpvJqtfRefey1le1dHEa\nc9n3uZUKUZSChp77Td4ZFlJsL8cQ/6u+3VLkn4bDlyoUFHa3PgJM/2WcJwyo\nKPFV+dsoi9ahoowTAl10M7u7A73DAX9CLDhn22gs6iIpg3vpL4iFzGRkyIFw\nMriQ52Kg1Q5oxlMK77RCgvQXEhAv4m9LpQc+OdXPEtH8QNvdEqyiHpwdATjs\n4GsR08R3wfrnE2yVh2Rj15jPqnPrMZLLE6TqKzFpEP0tZH7oF7JLn3auHa4m\nNSaKy8Bl8fdUSVepjYN8QEIrcDhPVPIqpNXGg1avwLzFlGXFHrM8LGJqAG03\noqEucQ6QFIz3HmaNTJ4uSL6T14nRVZUJToKvptW6aayCy2fLFQHfJPPHSwlu\nB88nItf8bYN1xGvVCAJ4xHx5blPG5gaOg+d/sBGgkMAoF6UBfl+eWI/61uSB\no1XujdLHV7+ZSNRUn71kHm4lkLLsRV/Pipi+DAbJsrFZsaORlujuReuTVziE\n+Js85B5HqX9RysqIz1bnbFcStcbEyplywjx9jmThs4u/+zjeaQmzMUn6gd9t\nLpO16w9pusuNxDSXRggSA45Tl9phcI5FPOwo5RHC+OZ2j2QkCBwzMHyiAXAv\nhFLR\r\n=HJaL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDXbUofWCM7eCb2L8bR4NrhKI1q9V1REgzRprkUobDizQIhAODHaAMeABuKwqpse3Zwe9vJfuoQqxotTPjvUagc5Y4C"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.16_1539578943179_0.022389778735637522"},"_hasShrinkwrap":false},"1.7.0-pre.17":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.17","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"b9c4e62ca2ccf5051475846f18c4e2bbef82a1b2","_id":"feathers-vuex@1.7.0-pre.17","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-iBmBL8qy+GKr+ywptYB7vXlxKR8Ki/fUBvZmibLDnXsCejYy0L9ZWwFBOtmk5u8Gf6VbVxVmAdiWAyrW2do4Mw==","shasum":"b3d56e196b4766f131dd10f10fa126fe307165f5","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.17.tgz","fileCount":46,"unpackedSize":204320,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbxKAMCRA9TVsSAnZWagAAFk0P/jr1kdz0Kgd0y9qv2ZYd\nWFJm0a9Y9l9xQ5mW5Qam9XVsJS2Y+YH+JWDa7GDQkl4+6ZbUDQy3lEzSffll\nAL4l4fz2v0WMhqXJVvAnuKpKKdHlw3a7xzotF9zkOXy1g3ZXg+GibQLXyUHp\n+gBkFfSeOJ9sKum56dXLxLVES0zuFZsYKhUbv38SQMEwUTKHDEy613fv3DRk\nMst1HY5LHeBMeknglge535pCST8jld4MjkXg7C+UygjBGAWsQX5jGKqQDFQf\nPqhz6TvFkTilCv3zOtocIwHXe9ot8IWy4Y0VtZz80X0CZJiR3oZNYPOAdwbc\n/lge5Sx0cLSSrqFdpoEUih0uyaHB4ei+7irwFLJObqLp53UmOqP5QAKa6UPH\nZ/UGh7S8ZPymO4iUGZALTko8ub3z89KZndG7B35b3t4mN/WUkjmsfvy9tbg5\nA0X2R/5ko4McfjmLXuYo4A5NOynnAQ1oAwuAoo32nMfKw+gabOndswC/9dDP\n8q/Vi94KIwgahQFB5P0B0zeDDWl3/aJwM3NIui7mX0u9IXkztQEnAQxQJ+20\nyOAxKlIe0efftbboKbBHY3s0K7sgL3zJxY2F11znH5DCtu4qcWUktJD7EVrq\nYEQIZc52mxveL41sy+6V4w0WbP7tRotSxgDtf7uotsQdih06NcZmgvkgXiLf\nkV6n\r\n=lFCW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCCNe7ZZ1iT7zldpzLD/y7w7cAoJkiw3pDifTl/trJ68QIgS3DYTshAza9iXIfeWdE464n1w0PvO+SqLwqwignhzbI="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.17_1539612683479_0.19870748954004114"},"_hasShrinkwrap":false},"1.7.0-pre.18":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.18","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"4a97274ca5681fd04bcc6c0c30d7f976897088a6","_id":"feathers-vuex@1.7.0-pre.18","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-QIlvjFnr6zD48fSJntxYOklPyVjzO6+10oYjyL1pTBgYWGhA/tI3RB6e7I3ljeS7k4dvr0Hlf3hvI8ki/wKdFA==","shasum":"eb68c9dd700fe8fc937f6a5b3b8b023a8161e85c","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.18.tgz","fileCount":46,"unpackedSize":205467,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbxazDCRA9TVsSAnZWagAA1Y4P/iSn4RH/xuRY00XJFHB1\n4Z1OyR6WbPX+24J/+mU5yMO7nlCtnRfw/tAwuD//Ew5T7tLXG/d4XlGI2Q+v\n/0RdnzK9cR1cKRraqvcBqgrproy7sKqDEnnSbfnQz5WrYuhGne8f/jm6+Qi7\nruUtp0yYEBhfYvbzOtdErYG10c5IwIkN6xMRXzN/L4Lg22aRmeg/LgcAxXxO\n71B+TUYYE16NdZi9pmLvbyO32qVfuFl4JQU+eBvADDD6Pkp3v/D7QKULSVaT\n8jOQieFIlKQHrBzYiLOOVwZthHjpksDw3hFVEgMOVTdTPqYObiKz0qOaUNCQ\nOj2y5OhqxPOyj8uKFAYq4odi8L8JXvTwC4T2ajhpcp1CuLyLMKWUW/1x8XEf\n0S6Px17Dw6JaXn3bl3ByFwTHWIwJpYFlXqEaGd30ojyGMHRl45HJSIVncgmX\npOsoSVlV4gDlR7TSq+hUyVYoH4wznNB5PydMoauN7K/bsR2QEfCmdHYE0Eql\nR26KNsvqV+LPMbtML7qGjEtDJ5JP2i/BnltICFeCAxQsvnzvMsrDGYatKz0G\nI6/nUI9tWsoeh7nG1rCsc8msY1Bbv3kJbjSSyuNpd4qANXYP3RXJexbPq13A\n/TaoxwJnFP+tRMctUEyQ3QOT8dqIsASgww6rwaXJXJthwsh8wm6fzGB7Nkw0\nkIXk\r\n=mZsS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICPAgjnl6P2BcAFElAIw8UAqgi2oJfxgYaZsgcfL1AhaAiEAh78vmXuzY+m2/aua3dQY2z55RZgicSSNxrfD5qz8sPk="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.18_1539681474986_0.6540649737359556"},"_hasShrinkwrap":false},"1.7.0-pre.19":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.19","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"4b6ac08e804ef312b2f27c0bc4b949b9b5a462a1","_id":"feathers-vuex@1.7.0-pre.19","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-54pnHwX9/S9Qu2aHXh6FfnycWSFK8QOCfNqIskvv8nQtlaAKsS6l5TrGjOFbAnmakZ1fsyTHpim9R5tbQkYyeQ==","shasum":"ef77354ea3796b12a0052dc694c7291c1ad511a2","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.19.tgz","fileCount":48,"unpackedSize":213766,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbxi/yCRA9TVsSAnZWagAAL2kQAJhho1Qs/KtGH1fVCC54\nA1ALXsnp9N30deJLC7E7LZaQ2G3mKdN8XSZszNRPmlWEFfdxEwD37J6DNE1K\nW66Z7Kd7T7LdUgkKHYWOpfySVhXd7wBejnXDR2etFNMEu0dAalcQ4S0avZMy\nXxldArJhMXhpov2ZF3yu4QKNTQkPAluJE8VqwqfuvTIv4zlXvlzXziyTuzUQ\nO7Ypp7YVKY21tH4VZ2784AVMKkDeD4KLb3GpaFT1pRvzasBUEDEhwPHHY7NB\nxBlP1WxGn4Vr7JFIlOtRGc9cpJQiThMe9vc90kY39EDz5CMZb4p+ulMrLV72\n0As6fqyBxWCfKfy26CkeW5LyjaygeLkIgMSq92o4jtT9K9rmS7cinbh670XT\nM75taxxbxtt12O1zK+6tbl6UMOCcTZSJBtc0IyRhLUvf2gebY4a0EB/8ujAP\nuJJ6TPVRzwpEMvSgKRQRL33qQ0cDGfBBZ/vDN24wR9/CZrFk86eD+ZUNjZAM\nb59TflV4PKPOzK/6EUGbNonxuVKd5JfbsWjJ1MbACBIAlIv9dD/wn0ZvhmUg\nOs3nQgkYawC3ZBNWMvDvjsODTALjPR7/gMzFuPrufoA5+VMR6+7lwOVcZUBg\nm/vKI3s8kMM6iNuoOkrH7jLrUCSn3imkX/HgYNhlNbYkb5Yy943BlmU9AeyZ\nvS0y\r\n=Fs/L\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHxQuhz49Bfom7zNjJM3J0yE/Xat216ICmqvTtyixmqRAiAtHJQMmw+b+1ImErvDFhqu/08QLO1VUo9HLiJPZ81Kag=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.19_1539715057350_0.3925450760563085"},"_hasShrinkwrap":false},"1.7.0-pre.20":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.20","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"24b2c21ae467a93c2bf1dc7d5187538c071353ef","_id":"feathers-vuex@1.7.0-pre.20","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-Jj/GmPewUJfjxxTHJKZVYCTw0u5emD90BLfCXVUyZXmTDY6+In8DnRNOFLHPgjgRu4motsbOOhAbKg+WNWf5vA==","shasum":"719c3dc005f4ceb3c42e24c1d647920b9f71aede","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.20.tgz","fileCount":48,"unpackedSize":213870,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbxjFtCRA9TVsSAnZWagAAqg0P/j0HpfMjPM9+3U98IOf0\nLZKXL0FcjfA2iijkpiuVj5bviVfb46FSxlnLnQmZJ5piun/RF8l1THEC6UP3\nNPByPRmd65XZ/oqthDgUvhD9AdFVozsMIvTNL0ECZKsyLeQS2oSFQzrD/VcP\n05CFV+QeprvxeXwpE9F1WT7njKqtT7wmz7Qa8ZKbK97F4ubqDjbWF2xO0m+G\nStElmwv+Hqgq8eW9pGMYJ2Ho3UQzbl/dINtrjEQRe/tFlVI2ArqowOeujaOd\nlCP2M088js18mKjNk52lTHWSgot+K9KNoH10rINPjRvGUaBml7dtcY2z7w8x\nFhrRxeSCITWINY9/8xCqGcFGFlumHSGyzuSt7cbYIr94nbsWeZ9Y4d+GpL2u\nv0PzddL1RCFvGinb3NkR7uonU0/OCVGCAkg3OPY1ZF7BTSSuL0gJ9qWOT4a1\nYp4FR4Pn7BmV2lOlfeaIgbrdYTrl7afjnQubu13ie2MriT7zfR+n5VADuIW9\nZSzU798zN/zjRHCq70gcQ58tH8zh2EcbhTKf/PEDRJQgb4AdnGlrWgXRuLhh\nFCPc+dib1kx7Rfmv9L6Ke4LX9qqWOPAw/lbSO3ui8v7zIv4ogV3SU8CTvW7U\nLh5SRxV7BQMXnYnOvzxV17i8HmIHOJxVvfZZ7q5MXWcxN6p7zfGYluzWguSV\nY8P1\r\n=+lhP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE2FBARaHELG56dyejZlXrDc9t4iwTFV1yR3NXmMNZGaAiEAgbuLqIjJUueiB6E7KeyvhamDLrEbyGYDT7MHkT4OXSk="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.20_1539715436975_0.8607642746989359"},"_hasShrinkwrap":false},"1.7.0-pre.21":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.21","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"7f390e420ef66ddfdcedc8a35da1237935131729","_id":"feathers-vuex@1.7.0-pre.21","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-nmCqPTwjn9CtvA4VmyzdYafjR7w9Qaauhf29vTApKkyFx3jQVaNaQnTOOYhu14tQSOdlor4KRdlhUfGp9dfwCg==","shasum":"4aa77765bc67d02213aaa595b2c613c48dc3c9c9","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.21.tgz","fileCount":48,"unpackedSize":214251,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbxj5KCRA9TVsSAnZWagAAbnsP/ig8XDLeJBW4uR323Fde\nbBxTe9Iq5b2XpmCK3w6UAdb0sHdjIWirNMWlx1R1TL66xiLnP/ApRT+ERhMr\nEn0FrJGCq7nl1/+Xfg+kCSkmQJZZEz8rnAU7qUCMzlyXEBOmTaFE08nXcUaJ\nqUWpLauG+SyPEFgZ7JDY25OJ2tJgqeF6A1wKzwxVJFwutGQqVxwdykHMQJra\nwn/HCErenFnE/lrjIfV0VGaiQTl3Hc8eOFWhk/91SAWVCoSO9GEtp8LPoA1M\nct04Xyt10PPkasGsPpLe9y63BejOsQGDyGM2XTxOqTWuLLeMGwKvKUDel0cI\no0rW+0Z08nCPPgBo9iqJbK8ECUMYT1GXwl4WVns9Ft2jOB73EQP4KW+rHh2F\nZmPlATc/bPcVLlZ0xykTmxoaTvRNgb9FsDHhOkbvMTvwtqXfxHzuPElJygDd\nVm3XXTx/i3NHXkEkJlC5ABTbTTPoPGfZLX/DnRACSr9Z8Mm+QLsND2o7M19v\nTmtqYkb3swCGnBmB1TfK7n+Tz9Wae0NmBlfysBCVpL1TPVWKF3YixBPgwgNz\nxAF922soDaMTDGfze9N3sVWkv4nGl4ZBe1ddaxELNv0X7wgdWoEQs1SlLdqG\ntBlHmFfwvUDf4LdRE1zTVMxM4auFyeJuVW+VmIuT+q2ongMYmb0QGHDPEtHd\npOXg\r\n=W5F5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCMZhuEO0Jbdbk9t84xdZbj0vACUCyP88Q4GnVbt75i9wIhAOW46YxGCknlrFRjeBSinCYAebRaZFN/+ubJxlMhK9U5"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.21_1539718729652_0.5964409023025579"},"_hasShrinkwrap":false},"1.7.0-pre.22":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.22","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"8c62ea45c963bfb2ae9addae9b8c1e91c3ee4fed","_id":"feathers-vuex@1.7.0-pre.22","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-99ltPFgi8NmKbgirFHDSb62lvevIJidg/eZud/HCEUp8Lxl2iHh2Fet4tvG3egD4QU+h1QO/5NkMvEmve3HXyA==","shasum":"e887e4d767ad8fb4f690e2703518a222b2535a3f","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.22.tgz","fileCount":48,"unpackedSize":214249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbxj8SCRA9TVsSAnZWagAAdzcP/jK/Dld5GsXqkdoKnvf3\nhb5AnxdsNICfY1oWqCLtrHQRECFAdkJsKN+PtewLcKfUTrFTFnsY75yngZ9E\nNakhBJp2tKmGdgSi11ffWI7lP1ESEof1Gg7TDeZeqRxvSxI5tjrAdRfwRLwl\nYktqHYt9DZvmzkd3coedJIl0Bf/FZaQgpgY7XeFtLSnXUsN2pdPFnVwQmQ+O\nqd/E+HzKzvo9DEVRcHr0k/e6XouNQa7NALeaQ7hFgHly4O3XcHwJEGbQQxjv\nXIv1+mnrvB1LHRpITP4xqbYWCsoqAPKF7TMURK8oQIC4cg32FTVP2jMlsuQs\npFaK2N2GEYBeENIxhyuY+Xz0MiEj200n5+3Ecu5HYkcle1rbivoh5AoiIlw4\nPVHxK57RFuKl8o/zaZM9QMuqrJiESFKHwya8CJnG06YJDKJiXwjlflBkZFok\nAySOI7B/NqFhvj9pXLjUMZTYUOBSrMK5kbgB3rD1TknvkoFqFK0XQVLtITTN\nAc7uw94xz9EGys3Xf04GG/qbVUzOVAGN0VSoN9byVxnrBpTUtaleIyIBpdjF\n9Cu9laAwh/zupLTlzqjHxBcjQq46YT79qCxaBFrj+dchu/Ws/KFQtPqZwJv+\nwR2Q0Itg4AcR5eI2K7rZhTaY16Kih8L6L0zj7c6f0gc7fKxdUIxVn0hikIt5\n8mrU\r\n=P5bl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH5OBLMuSFZJLSJsC+M1XlE6+SDouexmt3YVjo/R3X+rAiEAkCxp0ncyAle6O8z5wk8IEDlU+fHAB0tm0/o4s9czlIQ="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.22_1539718929691_0.5994482364340634"},"_hasShrinkwrap":false},"1.7.0-pre.23":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.23","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"bcb3a381460637f553f12c92857405aec5a45026","_id":"feathers-vuex@1.7.0-pre.23","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-RJYY8tO624w5J62CQeW2IIcfxu7eGeNdLj0ohZrbCGtDjgWu3zVD0EDKLrcUN5xA64RAxMepVGNrLONMFG+EqQ==","shasum":"59fb47d3b698a43a4f706db3aff2a5cfaba7a2c4","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.23.tgz","fileCount":48,"unpackedSize":214581,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbxknxCRA9TVsSAnZWagAAUIwP/1DxGNJnijP69G+Uioux\n5NUJjAyvbxCxKX/RWh+PmfC2c5fEVTxVFRgb1r1VXJ0uQ7LTeMXMB3pw5lEa\nDDZUAxcBJLu9jaIz1PD9dW0Jwd8tR7QdaRvVnVASreP7/xX92ZsjEikFnqE8\naQxlz6pZP9CDPeMpECIXNYPHg5W7RJ/tZAUq6+OfTOIe0dWZXziR3LNB7Cin\n7+f22mJ4irki3wcCSTDnBFQdzlw6Qo1JyMkqd4r6yOplkQ9fLRzsDy3Fp7Rb\nsnaokwvxxbrOOWvEEaSOTNBLjKl9ZcBA3TYn3mH87mgLgOpohBPyT75QcRkO\nRHWEiPSSHI3wBPpewFkG3xfJbw/VaKZExKVeos3F2Lux/gHHdVWebELwJE4x\nxgmk/oZfTbcyatV1CeyKyYACSclWqA7bVOCvr2swUevOJoLg5ORhuIq7LXkK\nG5U5vrjS//U+sAqMAsrImALnvTdejgAGXZwNV4d9dhp60Lk3hKJCa9C9vODn\n74vBIVtu7d4qkUhCYHNii5wIjHqKT0m6tK2y0lMUzBu34AEolOfSuU7qQwHu\n1d3uRtSPWNpL3gVcED84WEyl92OhaXVeTCh5+5RMNYbRBUY691zKkAERJ1xh\nBEsagHz6vwdNWHxPFmrjMML1ePngstHPck8by7NFGK4+EkPJxs4oqo8HDHYU\ncJZ9\r\n=sPIH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDhOcBDooGSM15JIgi9CQahxFgTW5LErCV8tXbwvpIvNwIhAJoLcS2V0JRmQ/ZtaLQda53wjaJKXGoYozj37domaL/1"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.23_1539721704143_0.4135562343168768"},"_hasShrinkwrap":false},"1.7.0-pre.24":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.24","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"6f1c1eeb803ef6692087697cf9168813886f269e","_id":"feathers-vuex@1.7.0-pre.24","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-224z5ZcSP68jjtgnlieTDE3P4YAOjzTK7g1hex4KL21jGzOnLezz7Ilpuh51YDCYvxOwvk50EPofpFeVFYxFpw==","shasum":"802f1b080effb34d4073bd4563980b51774e1e0e","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.24.tgz","fileCount":48,"unpackedSize":214687,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbxl37CRA9TVsSAnZWagAAhCEP/jApqCfo2cWiPIWyQlSq\n7nTK7Q7txRpoO81+MrcE7zedJEn8jTCXNISHU312JisnT8GI5nkI14DPgl6q\n/ZlxzRnfwnRnyeZs8J2bBvzNngeN9uQY6y5q7UkZjEpG9DA4nZ3WM0XhIc+I\nntrOQAIeZL2s8El7ymgARnBXhUmp8CXgJ+ns791ZkPYc+tUrFeZf0lBk3Gst\nqfM/XYHpadZiEOWPShKDgmvCaXw4+t12dOYfCh23W/1PN7xGTiY9jvi7X+l7\n9n6R7FjXdvlIA2qGePK4Kog5FauS7bLNhYRnXplLLaw8O/VNUGhKbR5+RwKd\nnpOWNc17pPVOVl8bAERDOgGW320yDsW3jPolE8PTSL4IcPujuZj0EuBDEVNq\nLN+9WnWUbkBDPC8uI8riZd9k+5lBtwmkKV3OpAgXe5Sf5ga6Q2pQ2amg2qzI\nOBVg7hnMbG9qflfVTGFatAMXLAtXDVLIXnknr5NnyQT2LAOEdXmmAryCYzLI\n4soKGFTitXBqdAjOKtKLSG4nXLsL0R1mT5qWCePxhA2W76EXtQUUsIQgUUhT\nHdc+ej+SHfl9Lm6kLQqRBxvjM1pXY6pynWHyXmTpagVFsWTB+TGyOcLsGK86\nBXKPs2Fn+oJdJhja5h6utjdGlQtxJZTKAJA6Z9tBR6rDKZdI7JpWzMOcBOsB\nBR0g\r\n=34dF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCi4STvQAJ+r/cyp7DsUykXidxavBGXqwo9ZPiEycMvZQIgGkXdhOPPHArlv+BqAROn4W9NR+d8B5Pd8LDLHf1QMd0="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.24_1539726842864_0.9287743497266427"},"_hasShrinkwrap":false},"1.7.0-pre.25":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.25","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"8883a27ff55a1ad3cacdc2e28432aa3cdcac5163","_id":"feathers-vuex@1.7.0-pre.25","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-kT2rVemryS8r0ndqCVtIy9vMUV6Ivas2ZLItfIKVT3uM7FwPhjB1YhA0Wqml3+23jILhuPTazJkMC3VtX1J5dw==","shasum":"5f3c03ccae589fcedd63a2ef54b0d99a4abd0e6a","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.25.tgz","fileCount":48,"unpackedSize":216090,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbzWChCRA9TVsSAnZWagAAHQAP/jvNnCmjCEQex35YePW3\n44Gzz3zLE/qLZDMvx3YAIuPon1JVLHMjsNBX5hZ07CojffkoGMH6h17hDLXP\nyEn0n7auBTSb/CW8ET1nibllwXaeMTvrUXk460egsKMQte72Z9Ft5eSXCnRp\nxLZLtW3VL/R0Q/Lnvv7koaSK5NipNrxH+6VQDfFOODrE6vNOizD9a7s7gFy5\negOR/pPMIbFs9RU+lKIfWcn4AFLWFOPpsm1kLLCVja75ch93c0WFV+g4fv0X\nkX/ZR8lghcgXTfHVp4lORUmAzyrwc4f3rWD/FdKOOT28PasUYj3not3l65Or\n89p64v7CsCM7OjdJ7OPXfMQQ2IwdyQdOtDdY2+75BEpoYmMW+j3K5cUVgNEy\n3E28gSxPZSDb8UNcthH7rVy4RbHymWKfv5X+iCAwjAjnyfforM/viuGiC/tz\nKnFifJ44TV1GF/JNacRcYlrsPVMUJOZhDI1IteHbrjKdZmpKfV29Fd3U+7b0\nWrCG/V/E+5ohHOKX/oR6p7D1dScgJYbLHq2vvn798p3bshtL3VP0+3jUv3eV\nOCy+mkj3nxEW4brd2adk/SbMuX9uxtpFMN8JT/jOziZ8btmtHT9FwYZgjsaX\nz202p8CJA1oURrSh71NrkX6R0quI8+8Nmh3p9GHTTjtiqf+pfWKQVL0kNtoZ\n8OJE\r\n=jet1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD25ai0brO3YbjGEWpbPA+ewN3oV+4ZtMUXuGJl8zR1GQIhALRHhasIDfakQjMsIvodV8C8ThO8pac1BGhz59zbHvyR"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.25_1540186273023_0.9655543895258398"},"_hasShrinkwrap":false},"1.7.0-pre.26":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.26","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"9fae8b4eb1e48be5a0562728ac3f7e02a08b9795","_id":"feathers-vuex@1.7.0-pre.26","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-TMVBVxPaEtFF08GULXnx+QEpUOeGrUKxMAP0hpHsHia+DE5Z57JXjhYh5+lZnh45dFEwgKDlseNYFsdcLkO3OQ==","shasum":"bedd1c5846c227251fc26b200afd83dced435baa","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.26.tgz","fileCount":48,"unpackedSize":217635,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb51cbCRA9TVsSAnZWagAAC7QP/3019QuFdfZxusohTlJi\niTqrgd8PUyd7llCaXF31GBnciyR/AL1q8k3AWvC3k591dcFkBs5AY68MNcR5\nEGz3KY6s7Qjv2CWc59gs++0UAvE2nxr9hU84M6QsVWaF8iIIVmCce6V+eP9j\nrl7H6s4WTl0h51+AWNKsck1HAu5w9WUxzvfwylt7qJOrwajrjhECKbebWGOh\nhmaty0lXZ5I/FU62q9gJXdTefhMxQQRzi02kaLZ2B+Mk73oDSbbL95FOyfsX\nyt1k3tIUSXLCNhjYr4v3KfKzJ0RevNHnyNTwhxxmTFR3u/JaqTqbsRQwRP/n\nWjk5uGN9Q9Nmk/mSqtk2cmH80DbzPWcYm9xKBT0QXGokpP0L06+ayZl2hDgn\nXyTdS3TWyZs9/63msUTZLuIcqmuiVu/aP3pEQRsNAeWGg2cnbaUfvGXASuB4\nK6GTjLKwsQvTPVbVeH9cGFK1Lrqpg5NuCF5FUh6Dx515mSqTokaX5wAWGDbJ\nDpUy3iXwi+pCGXiIWhpcgUPt1V77nKYaE8CvVGio2lsNle4mf5Eub1NVgw2j\nyXoi+Aiv5VjaqUpJQekRJwowz9qUSezERzCU27x2JOGmnovzqnPtHEZOK6Jx\ngIzqBWY+jHP0PfgLtNBsnOnd9S1bNCGTArVhbKFvqlaWBAH82eLCkC5oakVa\ndgG5\r\n=0ftA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD4jAZdknCT8tSPIWIOeE2fopAjhbjo+o800Ih1OQTwegIgHv6ABEjO47OX7c/QO1qMETV2F9M7pO7JLYUelMCGJ/M="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.26_1541887770583_0.8541841893735098"},"_hasShrinkwrap":false},"1.7.0-pre.27":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.27","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"966028f185bac8d5986bb3e302e0cf205842646c","_id":"feathers-vuex@1.7.0-pre.27","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-jk+IaolNwGh5GjFgHqfw45bzbR98BFD3G24CtFQkOwDOjNbQOHmukwfvLoIRTzeXhOe8iUghMz8jr5Wtsri12A==","shasum":"538e50e8896af154df236675846eb8dc9e84a2a7","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.27.tgz","fileCount":48,"unpackedSize":218546,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb6HgsCRA9TVsSAnZWagAA4pYP/RGoxaAq7xju4E+OYGDw\n4mYElgoF2VkNFKxiRY0c3h8xC2oTA34kl2DGTqTw7if0sfa/DxFU5npYBuub\naXLZrSNdH7j5vovhXXbMnU+CwdAjlf6TtYtuZVwZ+GLAdm+5DNwZA+NkGXbz\nOclk5SgmTpHgmo4uZ0kQOQZxgb/LRCm7y0YHqxaGhJRf+IND7ZH8sPvR7bXJ\naQ/T98Fk4QEYsMtDCkL4mjbkr0glAT5jd+abSlty7w7nFSrA3y/Mtv7GXpsk\ncxNtyXLtKgeQlzQf1OJumPg1JZSi7h+sPfEjZBKL2lCQYbonHvd/9egvSppo\n+Aamf0s3pq29pXu1h2tUS2/7pXPZ27Bx8EwayklL9Q6O9rrVw+slkwZeZ5Yh\nWua9wLOlwqZnSGJVcUHQXwxkCPs0j6YIHci3rAW9UjgcEgSSCTzxTn3tmcDy\nd28xh3k8eycN1WmQWgUtyxUr/N4mVroCOa1BGqofqDUb7UkV2qF0fdSlDZXh\nOwALx0Ja5Pa+4i9yyQ+5eu9atpthjWm6uKknMDUOKbTZpZlE8YSAqY6rHrK5\nsC7UDRP7QzVcYqWLHlp3fUjZaxZYpNNlKrX+BKlcIBRRjHduGxwcsefBI7H9\ny9OcdlEu0wvwbuQU8VJ6LdnoTZgktb3fVuyauSAvSoBkp1ijR1xDfwzMebFQ\ngoXD\r\n=Ofga\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAMTE40dhdnZlbAYeWmiix1zCkSxAg63npTkP9NQmjTEAiApTll/PJ4aGfPPwJdNc9ShZA5Mec/HbQgAy1uxvxGzbw=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.27_1541961772247_0.8173589931480301"},"_hasShrinkwrap":false},"1.7.0-pre.28":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.28","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"3185d3f8fe5f184bf6254f1e3084b0ec92be875b","_id":"feathers-vuex@1.7.0-pre.28","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-qthhZatuok7hp4E/X0adUF9aLpaUh0vbA21+mrmVMunOD5j1hpXmWMr5th09VTQmN3xtyrHuXkKwm6GrEs1E3g==","shasum":"8b06882eefcf00b25e5bb5c679eed6a37a1a997a","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.28.tgz","fileCount":48,"unpackedSize":218558,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb6JHNCRA9TVsSAnZWagAA13kP/0QGjOCWfFf3TpK4AVMZ\nRTW9D1GslFyi+zgiGSwFozPSHHazNlcInA3/sJ+mMqC3FUNnlLcBVIjsvPHD\nGxehH01BfHpD8C2q/UMkd44rwHA2B2Rziao8JCTCuqmm7A7fsHtssJ1bi83H\nByH4I90C7N/6zOxcq14MUNbD//kVMP2LicKYcSxgscSZp4KWFk2WZwNbRBHA\nT0toHjAUTL2lGC37bG5fsUxr0ntbgX88GFsQvnyzrehs4LNuhfpM16sVhzUR\nfM1v1aH1Vc2NJ0X27LL7xHNrkHYgOHE94zKDcE+lMyY3CMJUtUmAx61Gn2Uz\nqWEw3aRwK22zQuAhzuWTC/mwD39GH5CbxBLIoj5PItCwXDn6zRLMpH+DM01k\nryPmzjJwvcINIzbsYrCza7iKZEhuEkE8I84PwGe8vQ2FOkALB89RsDhRBdll\nRr16bSbma3cSUQ96p3vCNSiUnMKMcbIqZ82mhFfhqHfHz/j/IdoUlMz8XfpS\n0RCDcoHhcbYwYoWOMuD7kOrkyTomZmI+tx9SS4gCkxTo4BH/l8g7zpH/6qAv\ngXgKGYj/5joAcVeKn4bhIMyAUMNu9hqYddWz4HwhYpJlCr6KKyjDmqQmLoeS\neSXK0XN+enGFcrk0c1PxeIH+CQYWaW6KI8DQBy7lGZETQ79dz+NQ4PLOMP2w\nkuWk\r\n=cy/1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC4ePQHzSeE9CgM53ki1Qg0T9Ld9ji6A67RYFQjdxWVbQIhAJMXdvC4XUL9eCFpY1SnwFbULkMKCfkZYzfs959cEjpm"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.28_1541968332571_0.6306975863556958"},"_hasShrinkwrap":false},"1.7.0-pre.29":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.29","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"18727c2f4a4ca248446986b5776e8c30d14617e7","_id":"feathers-vuex@1.7.0-pre.29","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-77Jlq0qji8dgQB00+2/mS1LKg/dneV5SNMkRF3mEMwdTwGVRmhIYS3XP/CoZqA4ATrMbh2HeGBfc3p8pf+bOyw==","shasum":"b0ac64b2782307ec437985eb883e8ab1be2e6ea6","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.29.tgz","fileCount":48,"unpackedSize":218590,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb77HACRA9TVsSAnZWagAAu2kQAKSoFbJElp85DANo9KN6\nuO1ab5y9QbPqM6JCP2FzItV/bxjuU0za4Plil1rj3HZAz3CoPLEot8yaylc9\nWjlqw/sKHChhI8X0Vk/4Z+ty3B3FOzk4hDDoV11VQRnB4GNPpbYzhB5i0G8W\nDTN6twK1/4KhQt2/gtHy6KLLpni0xnMLvoJFN29AmqLetyV2EEjRjICsfbDe\nJ4f8OMQ5jhSFEh4CNwEvtuzAOktDcWlFI81Ge1I+Viv+DiYH/fpERd8NRfzg\nHHpV2wixECUVel1HX0/HXgFEmN2RxfebuSxWHI0Oggz9HYFwcH8sQyCb9x7A\npyH65ZqsDFgE0JYNPgWJsSEqsMCohpR8RsFHUEpAIxHYL7IpxiAlK1H5lWq+\nUeENCOi0ZY3L2np/MhhxRLYT/LFtyZl+XbTh7owBrSc3AL3A6BW2FY1Y5jsa\n6mlKIVp17zcn9SJaVrvKPBhXUAcMOxjKluAb7kZ4nJ5sLnObqoiHjlvYu6mM\nMrjIxexFx7mOKgNGKKBnae6HoRqOhiroKy33nhX96ZHP5palssCjJhZZ3NQl\nY0LHiv8dNmR/yOiIQURcFVe0iMKEW3f/RgQFO4YEfvh7axtb2rPYTToDquoc\neITQeQA/yoYKguXYy28K4XH9RrALQKvrnd44Y3xwmTN6s1SdQMgAAQK79YY4\n9jDV\r\n=zRB+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDOCwFxZ94IM4uhBtZYxu/sx+CsQIadOdo9xj8d+b0PAgIgK8IMyeWbY/dbe9eCLjV4jMHeH1NnsYdpLEXt5/b4f5s="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.29_1542435263725_0.8824548016746838"},"_hasShrinkwrap":false},"1.7.0-pre.30":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.30","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"0146446fe5851240c7633659228407e5bc92beda","_id":"feathers-vuex@1.7.0-pre.30","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-Q3k5c5+xIRu4U+Tfwd4fgl+fpCq+qXeSefhDmdREuQb9Tsj7DBMtWJr8b+EAk3y42QovE1A0JXIWTAgOZwGNFg==","shasum":"90e0e2ded3bec6ed358fc004efeb492fd6b54ad0","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.30.tgz","fileCount":48,"unpackedSize":219442,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb7/ETCRA9TVsSAnZWagAAtzYP/RnuOb+HRzfAZvJvAI+M\nBD8hPWl3dO6L4v9zTieU/cwthirU3dDbbKg02kVuSkgkpqgLJe2l5CepiizC\nswuzntcMEcnNFBIYVPknky3Th16bl97yB9D0VU3WBbrnpZLlNsBbDu3aNpxh\nHNUHlvIGtgtfV4CHdRLQoNm4y4q1VzHts0iH4LUpglj9UD0tO7EGUb43GlWZ\n4rcxRLDMNObvqrv8rDiYBeGtr3WOaSGTVaf9qhHmXf72b/LXzcOReyAC+v6J\nl2Pvy2Bd6WdqEMFI5E3adN4ujG6GtrCSUHe+VvRrfUKM22ae4lr8WEdcWEYk\nSxlihoF1uL3AP7/rTNpF2XUtJnU0h/9ndVDM2LR1AvrbERp7+kyCXY0eVxGM\nmQ4J+9Kb1/i9quTy53ZeG+nWJDbGXsuO+ay2rlB+hYewAa/v682vmDP+VXFf\nzyeNH32bNp1xKVhXwynb+Wdysm1EnrC6L9DUwAtvTreDqBpOMhEUBaxuNbmc\ndSFa9alVPRSjex8qAa27pnTBvkIhHVseUgDA3KtW7Zb7jSbVVQiRWHP53vld\ne8KxjQUOtD7AQp9U9QNdy++Nl/fV4mYRbaomst3wchqTUhSxWHD+otn10PfJ\nPu39TESvG6qFWFlTThcCJMwIvMOaG8ckqsEGrHLQnPGDbGAJ9B4O6LSDbNO4\nF3jR\r\n=JXzk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICPdf0naKoGjTe8WYfzru8fhvFgEAB3bSarQF3OFxknvAiEA1D4zC+hOj+EsCNUQlczBsatxbd+PM20hNKnwEUBMlVU="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.30_1542451474339_0.634245042741082"},"_hasShrinkwrap":false},"1.7.0-pre.31":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.31","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"0ae6f3b11ff50b8241c93d4bbfd92ba1a136c0b7","_id":"feathers-vuex@1.7.0-pre.31","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-3MeL7IsXNJjGoLMtXhEYghThsP1g5aTMLu3Bsh1KdRh//tnh50IYlbP0n3fZ6l+m+f7T7dvfSJYCRSBQPEglUQ==","shasum":"e85c29569a72fa35d07462fc29ea1d0c31fb438b","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.31.tgz","fileCount":48,"unpackedSize":219390,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb/LofCRA9TVsSAnZWagAA9+0QAI9tOC4e8i3kZ4+cZr+F\nP9uJHypdHnVL8GC6hnYSD4Wtxg5qo307vhllHXi93q3UgTxGL9nFuq0Qpwa4\nHtlHMubKtKufK/pu70UX+gR+iaRGmSYqvTnqB+mRc6f+vDHOujHyn6cVJOl5\noGasDcUoFbtKPdShqMZKmuQZGlBCP9hY+ogEXQN5dYbJYwoLbyYsHusZis3Y\nepn33g/HkrFF86n3srWeim8xFrlNXg0C58FDNjRJgWBtZF0oURBia0RLDeSl\nSZpsUVoV6xOmkKvRQnlbW1YXP6gXEkbozFv+M9PUoD0OQ2s6HrX+oaWE6YmU\nH3NT5vhPpfYrG3CcWzUupMDChuBgDAyve2D39IjbJ27bWNNdJBn/hI+wnpZC\nPnKv9qjsl4Fwyf0PTG93mIKX5YddxfxTm226gACx0O+BZoSxChXrlRtNjzsq\nKHv1zpGN7LA7tI8ehgxt/NUjXPls+gyrbZvOGB4RttF+UBJuPrmuinAQ0DOu\nPc0/7CzI2TtTpTZnGPGvlXmqCodtK4zF7xndIZro6Pk1xb7ARQf4Mn5p83k0\nAJGL4vxficSojANaAKoEAEx7PA3Bi2NrVLKSVDtd7/pXGPt8XVB6TSNFY8x8\nKKhgAWscjphv8jb9pzorMjzFZsMg/VtC43hcQqW2YQchjBZMVmE3a+RVQ7bQ\ngkVc\r\n=BXX4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDHzTA6QjbmcTQTlYYKatSgEesmESihyag98k38DXej/QIhAPVDQ3GlkDdCgYpWp11e0f62CfygDssaJYPip1RJHYyM"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.31_1543289374600_0.645439080250191"},"_hasShrinkwrap":false},"1.7.0-pre.32":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.32","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"2a3462fadab46864db8534b9c8eb6a9b3ecb84d1","_id":"feathers-vuex@1.7.0-pre.32","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-s1SXso7MBGrCMW3wgLnzdhm31RGb0goLYHDKqzg/1haxbOFhfgO5EdXtqyO08OJqqXBbL3BpX1uGkJlEX4f+ww==","shasum":"aa044bb1f193fa0de42f89feb4fbc293b42bbca7","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.32.tgz","fileCount":48,"unpackedSize":219392,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb/LqTCRA9TVsSAnZWagAAy40P/RIC4gNZxkeiKALs6law\nYNBg9bxa2/yZtw9lhe8XpCjtOwl3zu24Q7PjKH4B/H+ZQy5qUufAXkhi6zB+\no5DKwQKS/1liWsLxK7pRKkGPMY7qNU1eHMWkJvT3BWYIGvzQo2OH5tyKFbaK\nQQwF5tYaHTzzwBKmKqQiWv436LXywzrZgpTx/sJRhI3yAL3W1DfyapbMcQ/A\npKL4x5Dj4MZhBSAn8ll7akMpKfNpYCr65CFLJF0gta69CQax9palCWRg8zwC\nPPCz520tFW959KhfSClrWdkLklUqFewIej/iHnLoEAst3jNWmHR+AR7jsEDA\n+nHr/Q3x+SPHyNNsbv0Ve6oPD+e0bnbEUhIL4nQ6chhqsSw8m9Hdwn6/D4Ma\nSqZK3/j6UbIZge3fHX3sGrGE2h/ApR9WDXEPPH5u1Icr8PMDcllplQIfE61Z\nvihSRZ0dAj/wo4i3pxCDNu3jdNQVEBRkPiQmFAUe9O9A5hOOuwpMj4C2rchm\nwCbBvpAXrNAHqYxNdXRR7YBmGgrbOO2eyT8kKnXKv387l4n1Foj4/4PAlxVv\nvwwFbNAlqE0Q7j2pDjNWQVYdt+YQLoMnh+t/sizHKbc2flGC/d5vkpXE/L9x\nveQGNVxDqLJmWG2Jj9B2vuZfqhZhg/tNWyAHFqNQuBSV4d2cDw1NXAuA0MaY\npKE6\r\n=uRFF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDSVoj9EPtK6OeRu1LO0iultG62GlQK++b2Se4SWq9P7QIgdT/UIKLsWo/BZo+y9cZy3afYWBCuXw22P33dXK/fyBA="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.32_1543289490103_0.8749009757584532"},"_hasShrinkwrap":false},"1.7.0-pre.33":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.33","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"bfad7f663c7a51a2cfde0d8d733d7c227fa0d08e","_id":"feathers-vuex@1.7.0-pre.33","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-Vd+O3UYHTZOUo31o+jzOnqvgkltzWwz9MKMowaSqGFA1k4sePQHEj1dfyk8k59fetwd1yjd4/lw6UB/DSHGOqw==","shasum":"649a31000b7353518e31ba87b71031181599aa8d","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.33.tgz","fileCount":48,"unpackedSize":220110,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb/0GgCRA9TVsSAnZWagAAIY0P/A4YPCkqDmDMFVvJPmph\nBu4bJe+YAEeghpXHrajzz8jO0XY6zAENn3FMltfpKSc4zcRKOPztKwxMtWpu\nYUshAI4tpjBpBpm1py/sMjoaxXccxaMDn6WfcnZ6PEiiDylrxUS5vziRCtFY\nwyhzAJJgfXveNfLeDtfgXiK8ggqu530KMDgeCvUz8N70ti8STxDWBG1jPbBS\nxqFU4WgKOlqjP81t7utcMr89AiIefOem/mdsGZ95p5EFrWataGNYz4aGI6ag\nNwMayUgpB8fZvOUMYTIs5c6+8Z/W4ueZJj9PaJ70fXIBP6674zbjbyP0Ul8/\nd2fiMBNIFKNi+BNDzmcAe8FI7KfyM13h6/L293GNBvh4TPsUw2egRxbP/YbD\n+iwp2LFh3IqpQOwyTNB3H40+nkh4JmzRWarH4qyNhN5Iv9JdafGYxCMMLyj0\nMasnKePZc7KBHVhj5mqVUyEiasnJH65cPxKfwqTeDu0GwMwTOjl5S6WX3xhQ\nuYJ6DPRX/VdH1e8gbcQ1BtXIrqxwEL8aMvgwtoGYGgg2BHq0Fo+S3/rqt57W\nUveh/W883+3Qbtbj3HqhdeV9l73XK9BawQH9oZnv5N7v2ofEZafWye88mESL\nhxgcZGnfWKo3Dc2k0YyRri/Dp/XH93/RnA1m+z6XO6NYp1L+X1YdpEhLO8Cg\n4ix7\r\n=RPgN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHTcsMdW4R7DewXokdUt/4oSoZ6jcFKcyDl9oMTGaszHAiBV/7RtW9A54iIza4cYS/lb6fr58ZvDQJ8g9r+38azNbA=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.33_1543455135356_0.26033073046387334"},"_hasShrinkwrap":false},"1.7.0-pre.34":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.34","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"270c1330d751fbe01201c231de8b31b0d2190e6f","_id":"feathers-vuex@1.7.0-pre.34","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-X1hQJcd0ieEDtavgJrMFT0AK6OJ6bP9bI4Lfv2FZweoaq9yq01crG8uFxNKNm5DMcNwCFu5QeJs8ORclAEPbfw==","shasum":"623445b0766e91a9354f2db0c0ee0f2d929976c8","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.34.tgz","fileCount":48,"unpackedSize":221203,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb/0PwCRA9TVsSAnZWagAAXeIQAJEgRMnryDlgVvQjQqmr\n1rHfGTyO5wV47DBIA0Md67nanJoyYmwLU6FU5Y2q2gssd1lFr57t4WrZbpfK\nr5YpcifywmZMLbsyfnMpvdFAajmtvrSo2pjvxyzNRDf+1pE3gT3Dgi2myMAP\na5LvA4+r1fYHVJM1xLOVnGROEmAZp0ffe2AFC6wuuFx2shb2iA4HpQ6JEHre\n0ZZYQQ6wU6L2H8rXeVOTuFhSeXbtSsPIFG18+D3p26p+ftDHFuCw1dmgyhdY\n4atJN/d7Vu0dq8WxWkUYViaCToN+KIl8KFTEeayGY7onbDNW82xPxfg1DFa4\nR02N5bW66sEy7Pdx6xJhYHy/5a4PNPYFdHYMmVsUQyyMD5kSEWXnOAN/zlb5\ntNmsOEIq9iNKyiEoNls6AsDxpuZLhjdU0rYi/6idIYV1h6NgmY8hQ2EL2rxR\nmoT+7MT3fYlIECs3iGxQh78X/ZJBUSXlTJt7gHZ/T3cAw7h6bDRq4gBwXoUp\nHeWqAPzAz0uSE3k11yr4h/bEJGjoWAHwcdl1GnYtcxbObzlQdaHBVG4APF2C\n4MDDsXD0ycQDSBc9zaqqbsLHS6YN7imcvKWF38WjLilwWfVkLrLNDZ27Ix9F\nheGOBsVFtSISwLgZgg+ha+oIKGlD6bEumoUQEzkeruIUxVqzA21o3DCkmonL\nJXLm\r\n=zr0I\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCRkI6yU/t40wBdya0kc6ncnfO+Wc1ueqNePvmpZeV4NQIgdcmrYaHdyvTFSSJqLOlwcgNC7BFcUn2GqTSgoWnA6Pk="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.34_1543455727315_0.45914658588402446"},"_hasShrinkwrap":false},"1.7.0-pre.35":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.35","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"8b79cdcddcacd4e1aeccc1dacfc2f89765247281","_id":"feathers-vuex@1.7.0-pre.35","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-jOTZTJeOlmm/nnkpBA/0cUDoItb7J0mvRZG5BK1Qc5M4QzY3N3ia5L21WwFz7LNCMeZNj0LX1lErhLDKBN/sGg==","shasum":"87d04faa316f5294c98f68cba69f99a2d75442ae","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.35.tgz","fileCount":48,"unpackedSize":221406,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb/0kWCRA9TVsSAnZWagAAq7kP/ApNmwNdooxyM8rVyqwV\ngpphHfg3gbNhNAKXTR+uPsd8YmvkZ1dhuCUEfO5+8+iVbgRfbdJ/BcWGr5Pn\n6aN8kEIXfZ+A5nGxYTKSuw+YCAw7Z9wSnQHAPNcaWOzvWQBBQGtVBAfIC5Dz\ndW308zSdsnTwEWiP+jyHPVCGJNvCMURJr23nWkLjwZtNeEbyJFbMOr3dXTAY\nLoYGYHoXDK8JyNpJRB0PhOJbxhN54A4PXK2amXH6PxVMLyFoZpEekkslNxh2\n9VaEFfZ6ZxNal7mrjBP1X+gUdeJ0t6ouWcYbzs+LmF/J8aX5D6PFx46i4fqY\ndDFN7Btq13gQ1NFdMxyM+Jjr8p9wqkSxTtcePUw5Af0m4ibw63+xHbDUsCwE\n2RxlXxjprq4a2lEEVPpRB63cAEFc8nq7vaxBCSIH29nIaik8dxIi4r1gucdW\nkLYd6w8lMytREFv1qQWgg7BCOtxU2SxDKTRQCr0i/vleMC748WhLWeu5NwgS\nKaHLHnItvAWHGE24Mow0dSWGUuWh2a079DN8JimU7vAqMONqmJGM0E+CbI9j\nApngP3Z+EG4y/sYiAb8VxmgCuOR/kUumZC6iIgoNKJI9+f2eDiJA+9KSiws0\nSjt7nh2qlwI38MZ66Eupm7K44onxEon30ulky3rDq5Vq5NQZpV6GgtykYGUg\nxODy\r\n=aSWJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCLS7QQ4klX+e0tFZKs/pC5CLvhHW6y3SEJOC7KByrR9AIhAPscFgmUtmY8Jrs4pJ6c6zNR8V0keXNalp/POOXlN5yE"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.35_1543457045339_0.4213917146964563"},"_hasShrinkwrap":false},"1.7.0-pre.36":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.36","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"19c9c60166f4d091e044a03814983fb3f9c3b282","_id":"feathers-vuex@1.7.0-pre.36","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-AqvEtDPaBl0uzWMOUDSfbukFcAu86Zce7O29urNvo2EdvFw1FI8lCBfwW2p6WbJM1IuopXcJ0HGhwMildFgl0g==","shasum":"ab6adeecc1afbd24edae4dff9bd09d9ae219d303","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.36.tgz","fileCount":48,"unpackedSize":221420,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb/0oPCRA9TVsSAnZWagAAJCkP/38nqvTJ1MJaV+r4YNn3\n9WIQPIHK9iSXK87rPHSP30RWEgcvePpVwIo5uFtzoy+dGc2wopKfuzKk+xvb\nkIousocqxu6QcEEMkhdM2LKw08aJUXWeS5avLOUtKPLKm2NvkKnfEImYL0Af\neFmP4yw7NKNzK4+jvHfd7HNR3406TalIoI4I5ea8KHePA1PxNQ1kenJKIKKF\nW7QlbNqyelg/1MjDKgBQuo41FR5JiZVWmABjql8KkwULFeDpDwwwoQItObu0\n0CkiMPNeytrkiQ9PF51ghf5CKlYCdE+O1FsCqht8ohAkne0c0cx/r/bdrZLd\nMO50ntmU/+dw7GBQEXeoZBzam7JKvP+t1BtvbvlcE7jtufJjJIxARpVUFiMz\n/gEbA8RFHUc4QATGDT6ZC2QSkbhyaZ0eLBsD7+7DgS78+GLTD/H+TWPB6/qV\nt4OGvNwDIWmAKBMfpxofelxYCdbquBnUeohNcig52vabN5RPF1O+kvOSg9p8\nmwY2dmdt9YmlGfEtOWisfg89y2rlqSS+penFr812yJOeXXWtyxymvZ5UghNG\nnImHUbtgGey5gDSTUH2W/5gc2+PK/BOV29RPgxQsm9S5IuRZPuZBxIOhft/N\nMYGLBxuexTxAp1k3SrfARk9oZtkUHbnQ5qpkKrqxF0oKc+WnjPaBDb1K+N11\nViRk\r\n=XtYO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDnCAmADNUj/sUM+8DgAIXudQEyi21cTEJKVbHJpXdmpAIgf/C1TI5HsB9YD/3Mb22Zp04YM5ecOnxCiMipdy8AveQ="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.36_1543457295310_0.7212783907529419"},"_hasShrinkwrap":false},"1.7.0-pre.37":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.37","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^1.12.5","steal-mocha":"^1.0.0","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"5196fdd891abb5b93aa32772cb925ee167aa6133","_id":"feathers-vuex@1.7.0-pre.37","_npmVersion":"6.4.1","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-kEAvWadnYFFP0vvLifL7+yR0goEOPW62SbODAJFcDxpZLWr4bDOes/HkngdfYqOQNppgWA4E7lwzGaVSSQ8USQ==","shasum":"c5deb03ab7783bd8eea56e5349f0cd571199fde8","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.37.tgz","fileCount":48,"unpackedSize":222023,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb/1HeCRA9TVsSAnZWagAA1eoP/0qdENAO7eLWiztDDVUh\nu2OLy/r48UcS0xUiXFNh30naaJH26yVw3P4grq+3H6Twf6k2God3ssxdyS/E\nevv1NzLTv5+sKUMy/BuYV8ChhaSScl/Jkbx7X6GZxl+aweHAW97Gw6JI+CnZ\n9cKJpz5nitRJZ+GFj/yc6cftSdEt7Y/5H7gKGFP4SD5fRbqV9Ca8Uzdokest\nnqGKI2+LheH3dibtqp7l6chCh3f9t4qKhKlZM5J3UZj9nmnQSIPNLglvcU+7\n2HV5pPxPRAX6/XY5qqmrC0yVA0m1YiPFa9pwufGFu3TBF3udvBwedyG4vfl0\nizgSHR9SHcJYCW0vYulLY18cLjQ0CbS0fqjk1YWbSR2J/9x/1RkmsjTE5Hmz\nQXzocwJoZElTVAW6ptaSpVOswm2H87qTTxwXOEg212GXiSD6m9wjuTftz8Ui\n5l1sWeEHxp8Hn/IqKEWgaSsG0S4mOyaZqmvgCb4evWuCTG2FqEygivAtL6GB\nbNXIWet6rdQsDQyg9QiKFIJhM1GfHz4DtnZGwIe8fGQ3rt0z0AM/S5CdtNX4\nDhghScNQ8rofKdUAOGdxRFj84/6eWW43q8+i9sz3OXlw/rvAvv52qAPpPwSE\nSFHRBMmok4cKBErNeIkwOdLq1Zu2hz8UlFNKkkSHtv48ynOkTDb4ndgqqVxD\nPhVz\r\n=ExqA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEAxu0ma3cX6A2IhO2IaVSnR5cfrnfZa/MFVVaZJpzW4AiAzXpAs+XmO9mKdrbrvKzxhuJUaAvu6mSPOVX+YuP0MAA=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.37_1543459293895_0.3995040956139244"},"_hasShrinkwrap":false},"1.7.0-pre.38":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.38","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/commons":"^3.0.1","@feathersjs/errors":"^3.3.4","debug":"^3.2.5","deep-diff":"^1.0.2","fast-copy":"^1.2.2","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^2.1.0","sift":"^6.0.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.6","@feathersjs/authentication-jwt":"^2.0.5","@feathersjs/client":"^3.7.3","@feathersjs/feathers":"^3.2.3","@feathersjs/rest-client":"^1.4.5","@feathersjs/socketio-client":"^1.1.4","axios":"^0.16.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^7.2.3","babel-plugin-add-module-exports":"^0.2.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^0.7.2","chai":"^3.5.0","feathers-memory":"^2.2.0","istanbul":"^1.1.0-alpha.1","mocha":"^3.5.3","shx":"^0.2.2","socket.io-client":"^1.7.4","standard":"^10.0.3","steal":"^2.1.13","steal-mocha":"^2.0.1","testee":"^0.7.0","vue":"^2.5.17","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"8298c0edb867bad35994f90e5e5f7fd908ab5e3e","_id":"feathers-vuex@1.7.0-pre.38","_npmVersion":"6.5.0","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-MaL2vDmXRp1MAWgO0kDgbAebh2oJw+65BjPvj1xnb3HFyEuXFefGglgtJTkqrvKYi9vMI+4Q+eoJz7+BmQnV2w==","shasum":"d25ebfb4a52f3266ca76b8372cd3df40c63c1ba7","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.38.tgz","fileCount":48,"unpackedSize":225181,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcPRxLCRA9TVsSAnZWagAAcHEP/2lrE8xOsOyrb9Gs4n8i\nbHvNwah3nh90AfKRWgFvSJTJMqgiiNrkW9C5rAYEyduLHUu6u2n30PCB7he4\nuj4ZRHdORazR5NnYfmJ+R5QI6ydUNHG4XuuQFdDmm2Fgy8j1LkGRkAf65yi2\ndVf5Jvyg3GjHSGR3zu3gvtMoiKGOb4UxcnBE30AvCgGbyJUyCqz3mZcoMb7q\nNkiYMDzO2N9/IJaxA0x6Se0kZpvAdnpATtqOLoGUReY9L0hOmeD998wkAOl/\nftgnhCLER+UN08mT6XOw3ihIZph/1TFQ82GcdsGFej/W94T31muWojznNdiH\nMQQ/5IBAcnfw3VucHczVRnMIlPL3LJLBtgdsOVRmMlQLS7JKMwSWQ8FzT9x2\n2n/ENQNxnFPYbD7LfJSXq63lKzuzNU0POam5DkbBVBTiO25cxYrxS6n59sJg\n3ozEzQwt37lR5riiOU1gLc9xB7XkR+XzEBFTMEZgoCOnQPxeLSmpcexwtwKP\niMcppSblj69WlF1e9DR9jkHPfBwHmf6fstwpgd2bf9qcA7qtegBWnPw8KKjy\nkSV7QxztQZmVqC7wecSsg4F7QB16Wa/c/EtEknsbhmBsak1BtYGnNbjLX+wM\n3VC7ytFMMdJKIhCd1GeIEUm/2wjzc0w9ZgPLG9XZbn5SIcQx2FCWBLWngPkW\n1ir8\r\n=rSuR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCSwIPLIBmer0B1CcHc2CzRsoUXudszj3MC+Azsme0KaQIhALXvT1/O0sIDjbNQ9Srl9SgEWkqTRIJckGVkUX/Mc24J"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.38_1547508810565_0.310605875478708"},"_hasShrinkwrap":false},"1.7.0-pre.40":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.40","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.3","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.10","@feathersjs/authentication-jwt":"^2.0.9","@feathersjs/client":"^3.7.7","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","feathers-memory":"^3.0.1","istanbul":"^1.1.0-alpha.1","mocha":"^5.2.0","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.1.13","steal-mocha":"^2.0.1","testee":"^0.8.1","vue":"^2.5.22","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"a1e9f1ef00e817380d6a6aa8c0d3cc38a98e4322","_id":"feathers-vuex@1.7.0-pre.40","_npmVersion":"6.5.0","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-4oy3SSfC1gKGl0cKmyggr9MUN605s0xHsvqyV4lFphy8lSYNx1QIIrLRSsT7wGo+ax6W9196/VW1mXeyJ02EFQ==","shasum":"9d0eca48051d57c709d68aa0811feb5dc92be8be","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.40.tgz","fileCount":48,"unpackedSize":224967,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcPW7MCRA9TVsSAnZWagAAMBUQAJbUlgBzRZ9KwR3xR5Jt\nsVy3Gqt8xqg/R8H29eVgMR/dQzs9MhLQOq1mpsLLSyy3CXX7YV/SSO0/qCmq\nXoeW1lVaZNFxvie2JMcSQYF9LTy1bivvfB4AT3/+nO7XGLOu8EkrlnSHDq6w\nRzTRonSKn+l4wCPCeEx6lIT/JvxOWdpjQIB9cCB+JSTfbpm5tWKuz8YPcW4Y\nApL2lEzJxvsGCY+9wVhNsUPK2wFb0MSE3BAw4mxG1KC4N4NqLlFu4VoGHFbn\nKL2qL5mYQnG3ieDajqpfrKwimfGugfDmjLTBL9zFRXM63wU6xSlwGeRK6vM+\nc+NY2Cyr3O3uI3oNgnYidjzZfAY1dd5i6IrClCrN9cvvbgGtfzKpoVg3IMF8\nIDpS+6VnKEV3eA3f2i90uupg5/oyQ8icXpK023oYpExIQoR9Xix+O3VFeMwQ\n6h/pv3mczmuWpYV7yIOp/n00xsB3xKAmN7Lrd5TiE86rmA7SZOtDKvlgFC2Q\nfG0RIPdF/zsD5Sh/vwXiozAGjDc1aMQSgQGtt1hpU5gfFo23JHAn8CeLwFwn\nmVxlu0uy93dvBXysXm5lTlLZofDm/re3v0CjOjzJlXKuxNdg02pC3E00S4zS\nulL2rxD0jxssG5miOvI/7q7XFiec9ZSL6f+XkxUQ13NzOKq79w6zNzQgkfIu\nFK1y\r\n=N7D9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEQU0mFnfxO00XnoXGELge+wRPZqbJhqQ0LLANG4kmImAiBa/96am8AbH4GikjY2ingrat60nLfitgAh82B4yj7HDQ=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.40_1547529931600_0.762998666614422"},"_hasShrinkwrap":false},"1.7.0-pre.41":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.41","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.3","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.10","@feathersjs/authentication-jwt":"^2.0.9","@feathersjs/client":"^3.7.7","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","feathers-memory":"^3.0.1","istanbul":"^1.1.0-alpha.1","mocha":"^5.2.0","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.1.13","steal-mocha":"^2.0.1","testee":"^0.8.1","vue":"^2.5.22","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"5ad031cb583ea0b4e113301c914a089594ae55de","_id":"feathers-vuex@1.7.0-pre.41","_npmVersion":"6.5.0","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-ZLvP5HPFQ3myDUtgbNb6GzXKRzbDxYMufXU6EZpWjW29tNyZsmCrTYE6jmD/Mf1c8gpelMgnmQnmA6LQ0W0uzg==","shasum":"e68844b76e4a2a33a11e3ffd0de5c9e35d67aef6","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.41.tgz","fileCount":48,"unpackedSize":225075,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcPXN6CRA9TVsSAnZWagAAOh4P/3vaNd0Yn5Tfff5fn2TY\nbcIz2W4DeJPjRFm+6nd/iKUuZZyjwA3j6RYk3fHlkAaPrjeIjX40H3s72Wad\n6RozPK6dEC5ZI52qNFGLxkgKVuWEEh4Ubd3ZiuxuT/mzKF1Slb/9g3K+d7+f\nEWAWFfZrGXsMzFLAJQNKx80nG2foYuoDalrJjsJtMMl3atyEv2cp13Pgcb/O\n4BPjbHDjGjclbxFhlJilBeMaUVfCwk4nFx3Q21D36C7ZZa/jlX2wR5z1PbkP\n7u0CkVGod/SRm4sfq+9eUCY/tex+kX9a6QMfqBBKvSPUVGILwCg+LI3ohTT2\njTGCWAPCZ7y6cgsWb7hZWHp0RvJJKWuCd9+49kyO008CwYselVp5/g9767n+\nQ6DmcO5NsEgQcGG/z9wjxn1tXOyXp/4mtTPA42wxkYh6wMUJuQagvuHd8Osz\nfzK+PaN/dS63ROqjKOQND26KX4GyX90c0EXskzEe/VV5VghQXK+s/UTyza4S\nyQSAMswSV88cbcS+HFRZACM18jNVLqp7+7KB726yodLxyCj07HGzwFUdybgK\nMjlfyhrpDfpsuGo33VAViQSM6g9cNGWbXre3UXwRGX1uBvA9QDiFCHJbg8ps\npokV4PhQJ345tVjhAJLxhffGaR2jyp5fjDibh6JyPLc+hZFtRZOf9JCwj4db\nY7tk\r\n=JFHK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDNAYolNt5Kbm88aioT6ScQ45oWh+liuO69VUEiyrMlnwIgK9tl3j+FQbs/wPlZGgUJq/9guU659idRTJvjf5WaMXk="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.41_1547531129733_0.6378759569751506"},"_hasShrinkwrap":false},"1.7.0-pre.42":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.42","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.3","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.10","@feathersjs/authentication-jwt":"^2.0.9","@feathersjs/client":"^3.7.7","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","feathers-memory":"^3.0.1","istanbul":"^1.1.0-alpha.1","mocha":"^5.2.0","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.1.13","steal-mocha":"^2.0.1","testee":"^0.8.1","vue":"^2.5.22","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"83a5dcf9121409c96ff4d1414a30bac663fee42c","_id":"feathers-vuex@1.7.0-pre.42","_npmVersion":"6.5.0","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-jiCROIalT+qP8QqkVLNdwaamZt9DVfEea1KY/zmxooT6VpiisRnD3u61DXKn06XKtgTv3DGuhvoontzzK7MIZg==","shasum":"bfee00a88478497a7848b2bfb90c97e9cfe9e485","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.42.tgz","fileCount":48,"unpackedSize":225195,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcPXYNCRA9TVsSAnZWagAArn0P/3DtfyX9osnR9dIDCjTy\nir+kpCAuQANMEOo3qANJ8pneR4rdzEoRX9JwJjrMbmDce90cUomm7ABYsWZI\nlLBYDD92CBPFHcqeaR6pZVoW1CdaI/lQnLzA/PogXFYRvAqJfkCTg0DI89cG\npyvbPqkPqULhVRMQHD90lSV1Stv4WnbLEX27iVEGAzoRDRhRO8//3+w4uNCX\nz/PPSkvNH0Mw54ujwHXxd2oVuilKioNHY8G1lpJ2NspXJqPlRSOyyxM9SANd\nKBs29el/nXOj8gWdgymVnhkPi9J/jc5zlkyOGfHQg71iTOsbmPqt1S3X7fkE\nNscNs968NP1zNJgOGBkSxJgOYxjseoCORmk1znJfnyDGWHqept+VqmYfNle5\niQkuYEjJjyPG9PC+Fw9l58LewBukekW+EBUw/dmWa1u1Q/8qfPpc2sedx3bZ\nNiODOROfvTYjmJeOFJUvCCdtJeoKI6iOK5KpGX/T+EOG7+1dgkBrY/ibGeil\nC9rl8dKh9ERJu5LCyXNSDw43ilc91ZsXku812t1J/evLHUtrYfLsesK9JI1f\nFx0y6pUjIDchMRR3uzvvYgTO8ErRFp/yhodLkkosVuuc/y9faO+sUAiwgL17\ninuLKREoGoRi5XDASj8w5Syvzo77ZfL9bF6Ck8VvYA02SdugdiDQP/cvDXDq\nflu+\r\n=qgor\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCPbDOGwFi6TZfzisWTy+u4kM4miRasl/G44mHRnh8z/AIhAK4sfFTaTKPg4axvWl4c/KzOvzJYNXrIJyarn7kwTsa7"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.42_1547531789233_0.6014855564352202"},"_hasShrinkwrap":false},"1.7.0-pre.44":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.44","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.3","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.10","@feathersjs/authentication-jwt":"^2.0.9","@feathersjs/client":"^3.7.7","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","feathers-memory":"^3.0.1","istanbul":"^1.1.0-alpha.1","mocha":"^5.2.0","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.1.13","steal-mocha":"^2.0.1","testee":"^0.8.1","vue":"^2.5.22","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"0962e28e6dec1d2e280c8bdfc0e4ad33a6ce141c","_id":"feathers-vuex@1.7.0-pre.44","_npmVersion":"6.5.0","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-eGYceBPqdmHtoVFd/VMiJvb0YMcCVDhgowq8PC+2Pqw/J6ZseFYMFqYfy9owf4XmsNwH3btxZqVjzCNxj8bOxA==","shasum":"c574b94804df50b79486c27021eb4dc3579d2bc5","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.44.tgz","fileCount":48,"unpackedSize":225987,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcPhZdCRA9TVsSAnZWagAAPSAP/0eL3sWvnUTVBEtBeOQN\n2ikTssB191dQfKGpfAw7tr81YNwUv5AHajsv9aYe8t0VUKqB6ryZXEr6J0NV\neZ/mSMDaXI9czFXBTXqaHfJlH0NZ0sAsCZuy4B/Lg0BesAa7xbvWzGLuFYLO\n8pFB9/9ateVIj64WNYWvWexf/mbTZaZLyAKn3uDhs2bT3ImqqdAyDNJMY7g7\n4NR+QxTFOX+ihfHWD3GHjvaFBjSK3j/7cNsju1QDGfSozcfbXKKbNkCXtWrR\n8otHB6pbsrUXEkS3Cb/5KDG4VB74ZJ6UhYPCQkJddxV40jz9eRMevmlBMZmX\nfHaje+ZdSYh8mEOR+iz4TPfS9f60KA2K6ZDtHu7h8NqGER3+0J+stsOn3GNe\nXyJ/5u03yYZkKaUnF8R5JJZx5Uq2FZ+QKL6rNRgx9A0Ushm/eV5iiMggXwKv\ny8/cAE0EEn87phZ/oNoCfFKY/k1cdWDsNPkskfiHntVMYhyY6h64lwGJouXL\ngz6/d6pTo8v09OApPn3LAEem8xAyHUq3UotmXh5utiAsjOSA+Dn4kyol6qae\npSaMe8O9kDRWDpwHMwg77Jjp26PnZ+THHTTLf9ZlHESBZ+lNh0Z1myqlndc4\n6WeAatJQUL6rci3pWPgLas1J5fKTUH94zu4Y2aAGW+LSwCaMcxNKOV8NDx5v\niKsG\r\n=tIuQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDP1tXNdGaYjfBdz/6pffCF5mDHaHWQIZaF6OX9XCqDpAIgExi6WkO1kJd1hiPWPDNsODDqcOTxZ3rK5p7Nz9aWH+Y="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.44_1547572829159_0.9049838259775271"},"_hasShrinkwrap":false},"1.7.0-pre.46":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.46","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.3","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.10","@feathersjs/authentication-jwt":"^2.0.9","@feathersjs/client":"^3.7.7","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","feathers-memory":"^3.0.1","istanbul":"^1.1.0-alpha.1","mocha":"^5.2.0","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.1.13","steal-mocha":"^2.0.1","testee":"^0.8.1","vue":"^2.5.22","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"c9d0a4220565e10afe60cb18ab6dc5d9dbe80147","_id":"feathers-vuex@1.7.0-pre.46","_npmVersion":"6.5.0","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-EZoBpt1bWqC7ZHOCpbtsJbJp1I3NGXCZjk5pnPo1uVilvp/EJDbPlWg5fTYbELm/Yoln/4/0Rd02rEZcKe5ylQ==","shasum":"be3fea90cf903d08d5db09dc7f69ff144589ea77","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.46.tgz","fileCount":49,"unpackedSize":226813,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcPnLfCRA9TVsSAnZWagAA7HUQAJCl3miv1VQex28gkIUs\ngjmtnjzs8IJlFi6kTqPeeJ7isJ3YydlzNC1wmM9kwCCzW+pbp4BL8Yz9roqP\nqRrFsj9IdFMJxrWNSpqWlgSKhA7qYXzjf7J/l07DG7OzMrF/pnVG+ejMif4p\nuCJfsMVGT/bGmW1D+KFCn3ggcg8iqb5vB9rWsxEm8lh6PIm6rYSDPX+nmQyw\nlmFuD+oqXJPO+m27Emc8p/fg1Dm9vO5lkQyBdbS8RFTqimMiDIX59T4F6NoF\nMdxuvGkV/SFmvj8mAHbj/KonM0dM0HMMHZn0BQkOp0+G5iwh0W2x9gAA6mvD\nmCAWKkYEEZadxp8wSxP5FsuPA+n9gTtBmsLIWAb8i+DaoF8RN5UPwO5ZZi/E\nYKI+WOvvpD7WRFDf2ebku2c4ka3wWTZSI8mRTUBoCsTqxWS3xf2VBN0v0oC6\nlNAIMPmDna85uSsfc1qtubNM5zDAPYXinmXfCpcVGUX6iORvd8by01FBwCNm\nNdM5cypDLnlFpOuNqmK3i7VO5vbe+PWibrTlpnpAOGQ29QFZQypLPgDWhrYE\n7XXvPRFkrP91WS+UU3AN4spAgUqglyaBvZazymRs2FSwnyWLxgUmpeffcbmf\nawe4APAuObnNaqfXEVHVD5GcsqBy+IM6IZ6L+YEvFKfY7iQB0RHamOTSdKOX\n7XNX\r\n=N9ji\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCnnPZnRUSngyFYbUhNedjKO39RloqOeNa2/Yoph7m8cgIgFJAI81sHC8NAHw9M7s5IQXi4PvuSB7Zpgv3xLiIRmUk="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.46_1547596510831_0.19858545646920245"},"_hasShrinkwrap":false},"1.7.0-pre.47":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.47","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.3","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.10","@feathersjs/authentication-jwt":"^2.0.9","@feathersjs/client":"^3.7.7","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","feathers-memory":"^3.0.1","istanbul":"^1.1.0-alpha.1","mocha":"^5.2.0","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.1.13","steal-mocha":"^2.0.1","testee":"^0.8.1","vue":"^2.5.22","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"fad3288020e6c7b2aab636e1811c198589897f8d","_id":"feathers-vuex@1.7.0-pre.47","_npmVersion":"6.5.0","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-5mzPkA14X9ZDBECos0Eyh+X0FnBwEprFqQ3Chc+f//7edoWxLaqy0PYudFN2JxF6KwCv2WvwnHVwMySwOA2UOA==","shasum":"e1252f1a3fbd863d3d334299b0f011767e98d4ad","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.47.tgz","fileCount":49,"unpackedSize":229058,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcQB4gCRA9TVsSAnZWagAAFesP/jg59+I20lqhzZofVYFD\nWdqH/in3fw+6rs6aL0MErLWNQ3AilFsOU2L6ROu5HHVIqC/muMeESAc7ftaX\n0R8mc6HV8caAf6MBQAoRxIHvTugn/6Pp8d2ehMbqoEiBfZOZUF2sEvncdvQ/\nt3n8/jc9vHZPEmSRJPH3DkvKj8Kcmtl4gk9wH1FIk0xCr6uS2V3jzJGiC2gK\ngyezuPx6WlUkqb0VuWeVOa0PvctzshJOkTgnUZsKz6nLUUnrRBu5F4eUUq4u\nrydnndgzZOWULXj1FqkPPjhX97GuVfHO9dU2VJtAvYDkZs5ugpxNMOAewl/l\ndVenKG80SMgMZQEGCr+PuaPiJQ9y9H+ii1+jYaPGpGedoWA0OnYC52JNu+ED\nRSYMw3Dp8MS2/iIJZhAmOFrM15jX8KMI72OzJVbYG5QKLLtz8n6rnHiHTJz6\nT0FrQ2WwLK4zHvKKFq9SmsZ9YVL/siz9tx/5/aJrGkOs9FD5mhd5oba9qEI4\nbfsFHMwXTSHYYhTLEMMfRnBtaa9mlFx1VMZAqGWYBqxmW7hhTkENaP3nsL+X\ndrZ+vsTptOfiI5YD3UNvWwQpREtvWvHq4tLSNba6yQgtZHVwZn3fcyWMDLlv\n7UIp7keBx5dMKPBQeTkbI8zJkoDuXwNoI1PtHxGUBMUsEN084PEQUyPgwbef\n9G3R\r\n=5oGS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAziuWFlQIDuJc77ZKON5bKUWYct5XZivFW7yBmTxc50AiEAh8YoHPHha80JZAwoHV0qtiiCWN9Mjqx2QfqrILwuFbQ="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.47_1547705887870_0.07605935960977939"},"_hasShrinkwrap":false},"1.7.0-pre.48":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.48","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.3","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.10","@feathersjs/authentication-jwt":"^2.0.9","@feathersjs/client":"^3.7.7","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","feathers-memory":"^3.0.1","istanbul":"^1.1.0-alpha.1","mocha":"^5.2.0","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.1.13","steal-mocha":"^2.0.1","testee":"^0.8.1","vue":"^2.5.22","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"b206e25bd0fdf87f764f69b4a0cf842a3b4cadfc","_id":"feathers-vuex@1.7.0-pre.48","_npmVersion":"6.5.0","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-sl8EloQqdvSc09PWA6Pg8PTNkQhddvt5wsLjHvQe0qXO3l469J87wKIV6M3er4/QhMpkI5UOVcj+BWEBgwLLeA==","shasum":"1485a1ad14c37e5610d544daaf1cfc4664695078","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.48.tgz","fileCount":49,"unpackedSize":229857,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcR1TcCRA9TVsSAnZWagAAj4YP/0yfnoy+U98eY8vKzfOo\n1iiTrXtNVJxAzsjbjzwpzh/mYGxQHdxU5Y5SL0WThBnOqd3GeIYy+3ZLt2Gj\n9i7INXbyAYIEAW7dclEEEmakObUzvWHmZFQTv9CbjD25b+XcypPA9H/u+Ule\nApXLKFiqO5qA79kjX/4wVWprpvNcGXwCiz8sRKwrk9wKPBqGZH8xlzzYsli2\ntR3Y0XdMx3w6gatb/pIbRyvxo05bUgxfaq1vVwzLL9FUC8tX+6R/GlB/izo8\nSO6VYA0L7GckJoIihinBcde0rvTVLSaufAq+SGFUVA4LzyK11lbA9fBAlTXR\nTTRIkcYlb4NMK1B8bJWX9kLII/tw/YUU477UxDttZK1gug6TSp6NXGtTpzVG\n2Q5SOM0qqIaAcf6mca7UK9nnAQKIpKGy26Ndpk9pgLBlJBkfFIVQ+lq3skhB\n/lhA4nzZGJBjAVNvTHAUhpGwJVBxqIR8uQrKsWEoK+qIpjozdzlrCwkiT1Al\nwAT0+/qhw4Is6OFBZdaeHN/I9Q/lTD8MOQqOSWWGJwFv87MzO5Vh6wuOM/hd\nsG+wi2SRBIr1+A52uZp71rYnuj04Q8NsB5GU8PKU6CaQu5vgCnKzf5c6Pjox\neCwTnEfRpofsouth8lGyGqAmzI5gXAViU7b22ZrSvgfeYh+x0uAiM8Vm0zlR\nRfXr\r\n=E4wG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG6XtKvcOTo3lqkvQF7xwkhk0NPjWeNyJvU1tZldEwqBAiEAi5UobM9Ay1+9gfFV51Oyh2NHB0ojlZDIwGk/yEHd5VY="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.48_1548178651855_0.8791003010986596"},"_hasShrinkwrap":false},"1.7.0-pre.49":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.49","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.3","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.10","@feathersjs/authentication-jwt":"^2.0.9","@feathersjs/client":"^3.7.7","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","feathers-memory":"^3.0.1","istanbul":"^1.1.0-alpha.1","mocha":"^5.2.0","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.1.13","steal-mocha":"^2.0.1","testee":"^0.8.1","vue":"^2.5.22","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"035707124643df3d9db08949f4dada15bd13ed19","_id":"feathers-vuex@1.7.0-pre.49","_npmVersion":"6.5.0","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-wUfiN2Ls5VcN3O2vmajAEz9OpMii7QHC8vhBGt8XG6ruSCpdPCS2uvz3PcaFHm0xSQhyRR7vjqZhY6+4Qmq2Yg==","shasum":"1f88149cf96e79cf2ad67bb4429238c78b9e2ad2","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.49.tgz","fileCount":49,"unpackedSize":230208,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcR52FCRA9TVsSAnZWagAAlnwQAJTd/bjzsR5XqGV00xfB\noU8H/M+i5hZtCD8Ft06AcP/gluO+o8OX/3pm4kheFDR5qK6UYRv99jxL6/mr\nXK89h7Zz7UxYaohdZwajs0gHiLegkBECHlD8Ue2vHtU6WdjJb4NyUIkEnEoc\n3/Nthp7dP3fBDCX7SFWDo9L7061icUBvhiFrGpV8vpkawStorIXPAAe1PDaW\nmu80I5whm6rHGTtX491QJfHTwHaf1IdaiJGSLoNiZQAWdFREkPYsLXDqq7bk\nB99AML8GG/geqwWgedB+86r+4pcZpZ53X08Wiv0kilghnAr5UqspX57yWC3l\nnkcRBnYG4cDoUtGx2/Ov+rUkABdRYQ91Vy9UVC/OgP07SZmNlcpHUhOLpt+a\nPgfcUDYxPgcURfxDB6Mz7UK+agF1uN5dn/DC00rHP5Zt/lgo7k05I5O4DgHd\ngX6d2zGi6Bd1H/AMOGoc/LCCo1/seCTpn7Jmr2X8QPQEZnKj0stV9z+4V2ZR\nV1CxiqT2jFLUywDwW2h+dlznETsZKiSggFzqJMA84cisKmLmAIQPLkuv0gmG\n2lq1UHbmHE2m0U/l4YfPm7hjOwaQU+DssHCF3A9qXrY2uQVVmUOX8CT2Die6\n7QAMm7yKCbaX518ALo9pgmIhYT5eiJgkpGIZGF2EgZaQCGXFrgV0D0fRiqql\nifMI\r\n=FLKo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQVFckYFEIh/T3CD4a2+uj8Bm7rOFFiCoPtmliObJsbgIgQwV6t8U0SkUllg3RWpSEnCUbpVl9sa6RXvGNe2/UDhc="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.49_1548197252731_0.250107951558048"},"_hasShrinkwrap":false},"1.7.0-pre.50":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.50","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.3","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.10","@feathersjs/authentication-jwt":"^2.0.9","@feathersjs/client":"^3.7.7","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","feathers-memory":"^3.0.1","istanbul":"^1.1.0-alpha.1","mocha":"^5.2.0","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.1.13","steal-mocha":"^2.0.1","testee":"^0.8.1","vue":"^2.5.22","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"f1dd0089d88a2db12a26ad4887fe189a5d6622d1","_id":"feathers-vuex@1.7.0-pre.50","_npmVersion":"6.5.0","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-UfXFQCYBHY9EUoh6JztXzlKmDTYXvUUsOXdOM32USgC+AiNJFRer2tS1f+fgQMMNEOSnB3gP/SSM+itA4Bq4yw==","shasum":"ee3fd71a3fc8f5d5fed6469a51e87022fa3a4de0","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.50.tgz","fileCount":49,"unpackedSize":231177,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcSl3eCRA9TVsSAnZWagAAn+wP/1C5TcmYEL5CJYjECIDr\nm6FdZmSChCoWZhZymcoSGXMtMxZ1RFYHIb3pF8jG6NHx1/SWwy5gbZb2yWQi\nYIPWgjDpNtDAxecUvzEjJZ5hhMhGJbRgdkJOyiRcfSp3kJwLL/sD2ZtRn8Hp\n9Bw1YufbYIgXSVG/OCSAtWIkkvcdK6WPry98i1oKRcEobLjatV2e9Ahi39H+\nsNy1GeoHZb+9QzmYcmPJnbj/kL3i89Y1RiJ+N44t5nYeWWqmAYKJLzcdeNa5\nf6V4dxEY0r1iMdUmTQH9gTsRfa8FTkJx8UHx49TPNOEzNEolqi3TzsG8HNDm\nkao+fkkAUg/nrh9QtexUyMCXTp0amFsDsBtckMlgDyUq7LXgjf7cS2EUw1X+\nOaOUMpkKn63sRHgfCZM5/3N12wC28EhR0ZuH0TUbvuONw7z3d2e1k7M/SMHk\nJLVQIMtJ5+1VzSTyfU3x/rbmt1meDHknGkGeQaM6KuGiKZimASWAsYSPhLOf\nfveXO1h6z7ek9jE8aRrl0vi9kxtyEZhW4NpeoEw8TJgrbkMG8kDq811dNe4s\nd+akvaz53D4ea8sbAlpOpeQPjS6+rHTEDH56UFK12AHxuQaljXPz6vwAJhmK\nQr3NYTyChoX2xbOU5IFhwWBH+g1dyj8H2vCR0whF6yAStYlNUy0dpcP+JB28\nMSj0\r\n=3Brl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBRC3o00xGoj+NDWIiiKMIcbqOJu1K9YmbFRcYoW8JmxAiAYxtqwL5hPY1EWoog/QL4kvJeC5vr+LAsN/6lYK88ajA=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.50_1548377566237_0.7555244185035608"},"_hasShrinkwrap":false},"1.7.0-pre.51":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.51","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.3","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.10","@feathersjs/authentication-jwt":"^2.0.9","@feathersjs/client":"^3.7.7","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","feathers-memory":"^3.0.1","istanbul":"^1.1.0-alpha.1","mocha":"^5.2.0","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.1.13","steal-mocha":"^2.0.1","testee":"^0.8.1","vue":"^2.5.22","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"add28fb5947e3b01bc4d429c036b6a7b1c5198de","_id":"feathers-vuex@1.7.0-pre.51","_npmVersion":"6.5.0","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-vfs5MP3WuuL7zoPEZBdn+5AkEqGDsKgQjM1WjkflMNiZq7HwwKwPldw7TTc0U1ykEjIz/gcPdthzZ2YWdvI2qQ==","shasum":"088a977098bdca1e93c7417bbf8fba8f688adc1f","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.51.tgz","fileCount":49,"unpackedSize":231584,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcSmwVCRA9TVsSAnZWagAA3oEP/2NvB+QOC1nJGvueEGMl\nqPlJVT2UEjeb0Z3L22XTWlsrWWnyonBXYVr2LKE1/m3fXB99cBt8IApgXGSw\nbd+vITx+0YRF8dhPi3VIJXD0PbQztjhq3xjlkEpTfIHnz9qHPhL7SwsnEUVr\nnMY8HyHIKqIK06kZs8eU5a/5q/t1zxxNUyjp5J0HnQky4mXM0lstn+CrTUKB\ninDXeyV3nqKjMuH6CbjfRB+JrgHDzrN3XVCOA5rcGP/EyzsEfaUVSVpJYiIu\nYzrHvidfhkUv4WKXLIE4X5JqLGQ7BCcPW53oOWpkqydSaohg5hzG3hokuYDy\nebzcofrlJ11RDl1qAHxCPxQU7SZe5qKvk2m5u210kwrCcmQ6W6gHkDdj72DR\nIXp5W4IxWykE7eRbxcu/iQFycwnebpmeaiBaRaNLr724PgE2DhHk1W1vaabt\nJ/cMOASEP4q0QbgOTz99hVO7Q3NAimkovkOtXwW2rRDXd0YnEh0Zxje9M5gp\nJvo4SwnsAXTsdeQ4a5r2plT1AflkQ5L1ZpWyyy2Ll2XS89bWNvfsD+2V7nND\n6YSR8buUiMbHYTnGuCkt7o3NcoLA6RWWwqfs3oyfzXm7NcYACsiGQiYGOFXk\nF6Rqj3/mHNMk3VSOglKo1SFPityFQpVGnHFxAkgauAK6kRVmufYRQHuG4vCw\ncELy\r\n=InOJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDlsenLDcm0EduK7enabB0zgpGCaCxV8eZoEcPmJBt3AAiAFCtKNc0CuP4bggGzciyiyU0PzHFZ6YezxsmQcN6q6Sw=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.51_1548381205121_0.68682064994665"},"_hasShrinkwrap":false},"1.7.0-pre.52":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.52","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.3","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.10","@feathersjs/authentication-jwt":"^2.0.9","@feathersjs/client":"^3.7.7","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","feathers-memory":"^3.0.1","istanbul":"^1.1.0-alpha.1","mocha":"^5.2.0","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.1.13","steal-mocha":"^2.0.1","testee":"^0.8.1","vue":"^2.5.22","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"1307041341fa5fec6cdb303bdf75da94e04afbdb","_id":"feathers-vuex@1.7.0-pre.52","_npmVersion":"6.5.0","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-g5yCL221zxqpuEPC3SWoqN4vmQgKAdYOgGjonbOdyifKt9Y6FPH+9+ihuukOS2F48unZPx+/ctQvvSylH2jD4g==","shasum":"e80048d0b5b0b57609d5c2dc9026a0977252b4e6","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.52.tgz","fileCount":49,"unpackedSize":231800,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcS0n5CRA9TVsSAnZWagAAYIYP/1txA9LftdpleHMvUExb\neHWA9tOghihwGtl/JYe3wEeHjlvT64uhBChij7MA88gPj7lGZ2kB7FzaIrJl\nYzT4fH6PQYGrOG1knv0IwjqNoMIQwp0lQcIvwm0wBa4AyB/0fnBsBTDd4C3J\ncTl8TPipB6bv0nJFifvqongZlAMZj8EeyHF74x8e0YepPdlqbDpDBqpP40h2\n/72ZLdIMMh2wTN2yQz40uxvfmOtGyhLIQv8/i/jqtAnpDmHxzkhXSQekAcrX\nSZvYbd18vzLUx9NtLgrlk7NYsjnskmRgNu65bHomjnd/MQc6uB5UTTjJ/V47\nm01aQ6Zz4CtORuCjUxqllAANXl2faNb32vNaG9TT1V6ATrtPW8wOERj/mKPo\n6zeZTCCAAxI2XRIMq55bOQGicaQQ0ERpZT47jkufyAWfEbEYAIr0f0JvXyO9\n0UZNlau8dYOOTfkJcjO2biS5TaWEmkl/oealdctW5uOCZeiC2GcFYLd33YhD\nL2Wzbv/xC4751X79GZmy985JlGzMsF5FSbAFDLvP6lN/YhqFdGpKPO/0Jq4R\nSs+E+Ra5yZp3TRdT4+SGaEm3zqzHS9goE4CRx8ahiVB582KK26wNLMBT2i55\nEi89Srqo3vRx+pCPYTFDylw50pVIpnJ+kycD8qBb2Ondf61UCWt5yIN0G08H\nvOZV\r\n=Lc5J\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCFDubsu78zYIl/omYt5pWfir+kweMIvAy+0zG6IFylqwIhAMEfRosCgM1VP9aOiloiaUGm08gLgsdxsyI4ni5+zAtU"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.52_1548438008890_0.19476331143796743"},"_hasShrinkwrap":false},"1.7.0-pre.53":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.53","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.3","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.10","@feathersjs/authentication-jwt":"^2.0.9","@feathersjs/client":"^3.7.7","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","feathers-memory":"^3.0.1","istanbul":"^1.1.0-alpha.1","mocha":"^5.2.0","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.1.13","steal-mocha":"^2.0.1","testee":"^0.8.1","vue":"^2.5.22","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"1ef1a60700a49340071a18538a73de54fe3035fe","_id":"feathers-vuex@1.7.0-pre.53","_npmVersion":"6.5.0","_nodeVersion":"8.11.3","_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"dist":{"integrity":"sha512-BaXDdYFzS1QmjtIPq7emkwFfVOhKWzucs1Q2EphKlXBIRLCP+5BmcRe8SdeYansjmMNqCMw/17m+ftfQEMHYsg==","shasum":"c2c667f081020ebd65d836d41136f6794ec957b4","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.53.tgz","fileCount":49,"unpackedSize":232290,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcUMmQCRA9TVsSAnZWagAA8ksQAIBUcmikz+KUcO5ToHH3\npnuLUyEYOqStYdMMG7gTDqsVt88Slaz6YIFk/d4cOnuL24RqycYCmiUBMIZO\nWbEaQvBDrijvEVChDJHMcxGuX0/z5mozabcsbERxjDYW6+ZLCkyN2DJr7O8d\nDGa41uZ//VwJWDuJExald5Zj22XQGdxq6nWCOUYg5t33py/94e0woyetzO4o\n83KqzZlsWW5E5z9JCMXPeZhVhDfs0XqK+EX2GgFOT81NjvC6YNtX1+olANfA\n33G9tw44zdsp0ND+EYw2GsCCkTxqXu3nlBfiFnxPcFhJB4/z2GuATfgteYeD\ngkJGVJIwOc8U5ie13MqjwO6gJx71pqJaPO04g1YhYo5h5uxBLsnAbjNxVWZA\nA+3EqBIUZwahFFPUrbhspYE4/+Lnvn40/rOO1YOqCakMhIe/2SXocjliluDf\nvpzjOHocmc8QE5Jcyza7sEzBQr6qzNEA7PNpjrixZEsEj/uBhwa149ntH1Ri\nTElsEi4wGjbNAKCpHa7J5xen8QGjOig0C6UUCQAcC1s3E6w24NwdG4x73da3\nzODSSGp/7VexwBSZubzg6Ah8yNrmyYr8L3Ez6bt1J0qXnT9NMUaSW03WTjhi\ncQgB8lA4ZQNTW074fktqFw4Un+myWO1FnecHhZ7AmLdGPI78kVTqZv0aFVnU\nRjBv\r\n=RF9r\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDXtWdD7WFdtPXyvJKpeBarvch2ulXqLEZp6wHpNvG94wIgH2NcgqaPPUlG8bdt0Zw48OcHxBm/P3FVnBIwRbbawiM="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.53_1548798351884_0.745451118321862"},"_hasShrinkwrap":false},"1.7.0-pre.54":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.54","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.3","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.10","@feathersjs/authentication-jwt":"^2.0.9","@feathersjs/client":"^3.7.7","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","feathers-memory":"^3.0.1","istanbul":"^1.1.0-alpha.1","mocha":"^5.2.0","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.1.13","steal-mocha":"^2.0.1","testee":"^0.8.1","vue":"^2.5.22","vuex":"^3.0.1"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-plus.github.io/v1/feathers-vuex/index.html](https://feathers-plus.github.io/v1/feathers-vuex/index.html) for full documentation.\n\n## Installation\n\n```\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"a43b9dfb6f25592d7aab7e1930adfe4a87741633","_id":"feathers-vuex@1.7.0-pre.54","_nodeVersion":"8.11.3","_npmVersion":"6.7.0","dist":{"integrity":"sha512-PUVsARzDNhj84zOvseyxkTR9HFcfiF/WCLFFnIulUkbs/Br/oI+/+1a/dAj8ReZY10JbuPrzvfhsjJxNhCbcag==","shasum":"ec5c605ebdeb9781dd45eb39daf28fee1668bd03","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.54.tgz","fileCount":49,"unpackedSize":232448,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZK2pCRA9TVsSAnZWagAAkcwP/3zuDoWkiczBdVTd1QNn\nJgCPt+MiRzgYtBSUOpmG4knw5egX+W0/mWgak6lOKZYNMFQu+sJlR+2hzkfu\njL4SzvwV//nr3yry+lyMWYl5OTmaWEgc2QqMPk/0QCHW5k2j8e9MIL6hr65E\nGL6nP/39136NHFX8H/FycnTTciQor1wM1VepiZetVWaYUlxIqTl9NeGBqV9i\nvnc3XF4svFvPqw/HRiSTLDYXsKexMtInfXnuGoPC0yEClWhFhtX68u/RQvUz\nhLrVsliQRtOy6IbbKDNyoXaCBc/wEGYoP/4GICyFLt7pESC6igCXNxS+s8xE\ncCiDDoyQ/Qzl09KMmoYol3vDfOqJd5F8odCJ2JMxauNkS40cGZ1gVygsCDpU\n5IXRHJWKgyJct3ey0Rj0lirv7LL1RBmkhZEC+9qG4NSel0QMc7rWbTlxi5kX\n2E5FDAr/UUhesZ4oAuwr9sylU5SwTe/ga+X/OjBxpDu6wm4lmcTxedxc9D15\nWeDaSx8sbnvQFmn/ZcmGCZvz4qHluyOIxnjxTikByZQVvVXpoPZt/UbHRNFu\nmaVchU5HIRtxRb5HDtex68LR6iDhmcx+0NIEJxS3pb9UbQgo5GAiN1b0xmdQ\nNv2dKRrxL8DoVPOJcWFnoKXEHi7XjpYnCWecm4yo6qdnEwMWSeNHUkGetAGx\nruPM\r\n=uFh2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC8ER6Bfl6/kJYkDkkRXj00XnJUdZ7cXhXqQAOEpM2P/AIgXSKtCMRqzC7MplHjbWho7NNucln00je9zbbEXm8FM/U="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.54_1550101929129_0.6717693807824643"},"_hasShrinkwrap":false},"1.7.0-pre.56":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0-pre.56","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.3","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.10","@feathersjs/authentication-jwt":"^2.0.9","@feathersjs/client":"^3.7.7","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","feathers-memory":"^3.0.1","istanbul":"^1.1.0-alpha.1","mocha":"^5.2.0","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.1.13","steal-mocha":"^2.0.1","testee":"^0.8.1","vue":"^2.5.22","vuex":"^3.0.1"},"gitHead":"361e8b90495a67bf923c87335f74926a54fdcc39","_id":"feathers-vuex@1.7.0-pre.56","_nodeVersion":"8.11.3","_npmVersion":"6.7.0","dist":{"integrity":"sha512-kkaNI9MWs8Cbuy4vjRKq7NqghFSoWO+0gRTRc0FX5qEUJSwKE1Tvs+qYWoTFRW27z7dcUSQWzftIOB6wD8oF5g==","shasum":"61fbc73b31a3e87d0dea12b71b1aee2e477c5a1f","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0-pre.56.tgz","fileCount":49,"unpackedSize":232848,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZwpzCRA9TVsSAnZWagAAw7YQAJv72LAiaRKS80P0hzcF\nDwWgCMcrci4wmNlx9h+dcXtcsYtlmyatdVZemc7JD4PpS5mQDQ3JdEnycTkZ\nuEdVygn1D+Aqy/wQwLK+qiS+ycyOvV3MNjJF77BHuyEN7s94p5ygA1UHrocO\n+JxjRnmVs5539l2DaafR3o9JBqaruWKGDCrolNtb1FusFAKMEoQQAOuniUNC\nDAgP+oeHQECEBs/CCw2k3SqSsrwfwJVBJpOCLzj650Z7dSyxMX0Rqb7SzIq0\nW4BR1EOM0Q3gKW6G2iADjnY0QWMRJvrbev7dMKGQ2Pg4yj/eJXxkBXmo56en\nba3MPtHR0oZE8bqs7xASpc/a6pLfbPeuD+AglLqOCN+PHNBxO16G+n/nmUsA\nrG6iKssPo/Tnw4j6tzl1FUrRaaZprN90GdcI6jD6xkClYXsTxAP+uTF8HbVY\nokKdREAzVJhFFYlw9Wv6Fha91pdAyDpf8b5NNbtnGTIiEEMAScBX9jrmLMfM\nuGZzkhWdCEXz0gdhpFvo+GtbTFosr/ZuhmSrWpcGi/0Ui46RJV5Vv7DJ9DnB\n2YlsRN3YEPrN02BFIsIbaN6slxJKltUH8251alX8TQ/xhVNmhTdMaqPaYiZ4\nSqtDM7YbjTwNz79l/bvSm5GTO1C8vZyQpjkzAcf3fzxSpJARJCMHINvp23zf\n86n8\r\n=kJsa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCiunrpOAiFUZWml9g57v2DeRN5OW+18XuNkTcKAGV/CgIgeP7FUadaTih4JbCuGSXTmqjBczl4WrIJfyayGFGI+fc="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0-pre.56_1550256754350_0.4055197664260559"},"_hasShrinkwrap":false},"1.7.0":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.0","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io/v1/feathers-vuex"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.3","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.10","@feathersjs/authentication-jwt":"^2.0.9","@feathersjs/client":"^3.7.7","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","feathers-memory":"^3.0.1","istanbul":"^1.1.0-alpha.1","mocha":"^5.2.0","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.1.13","steal-mocha":"^2.0.1","testee":"^0.8.1","vue":"^2.5.22","vuex":"^3.0.1"},"gitHead":"8e0dc558adbd8dadad0b43235d238bc2b0a5b3b5","_id":"feathers-vuex@1.7.0","_nodeVersion":"8.11.3","_npmVersion":"6.7.0","dist":{"integrity":"sha512-S6FppRNdnKJMO+5oWsxIhRjaW5+IBstcjfynDzqjCUoKGqkty33hM9Sx8dodziqcVdpM1br1oe5Y2GhMOYLKMw==","shasum":"9c790ddba2ca79cd1f331e2b1650795492a7fded","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.0.tgz","fileCount":49,"unpackedSize":232869,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJca4twCRA9TVsSAnZWagAAAJ8QAJVOfenQUZ3Fl0BQ+byR\n3XGsO8ZF/N8n9tz0NY3VXBFUXPicYCW5xgPzK5W8tWLWGcuwUizWv08sBaIg\nArGVeqhLfw+jcdOf8pzGH0d7fWaKvjwxUYD+eAlmX7Vgdk0PVvKTtajvLU5a\nfYC1fkeuzvqong+P8rNjCn2q4X2Yi/NKzx9hbfAdxfco+bP0z0y0rzzbL/kE\nW8Z7cTeLRadQKN9YlCJ1HuNVeHaHyOiiY/lrSBEtKArwuRRqrGbiO2LaPJyg\n+ovc/NBkMoZhdZ+TDGFFMipGb6zk0oERxub0JqTsubJmL38R7qQcwfbo1y5Y\neJTwf2X5LJNr2kt8HNC3wfPc0wcalgZt/OkxO8xeSVUigYi5jrc6eK1Jx4b1\nQtbACuAngSrFhkeECMTDtVZOo/OS1TqRdF+0v1adYl/NMOrI8sTy/9je3QHI\n/YKYVcjFX6N1hOwsmvFEhgd4uhUjZiJdqBKPCOt8QRdOWxGZ4PrL6Bx/1d7L\n69+X9ZaLZhxHG66tVIY6tO72gwybqjZ+zFSkiktCr0vIJfOXW/xx9onskiZc\nm8XFEyy3SnUmyblSLL8EdOLGTQCnLVJrmccr3diapxdnhybEucQMYEOofcDj\nNCStXiqENgZW52vJBwa6sZ6ov4rO/0zgCH2F821SXvJ6aohOB/qcLfJwJ/bn\nT0ms\r\n=j2Zj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEwOAqvo9+gIZyrXjwJbhsZ7EJhjvgIJB+ShghC8r0u2AiBpp34mxONv268DTSZfJY7w76sYl3ITgfjwqqixREY9rw=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.0_1550551919626_0.7153450140289044"},"_hasShrinkwrap":false},"2.0.0-pre.0":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.0","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm run compile && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"221457578bd8fe0eceb21f7d33c4cd6f8954167c","_id":"feathers-vuex@2.0.0-pre.0","_nodeVersion":"8.15.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-UzGyIKQ45HdIqgMFjF2N0socKbpvLshxuLi6cCeU3WlI3OOWJgU4T+Ex4107xo04Amev3CoqEaPTrpo2SkhAeA==","shasum":"4ed046b155def798aa511d2af42428809019137c","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.0.tgz","fileCount":73,"unpackedSize":370611,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcoVevCRA9TVsSAnZWagAAA4wP/1xB96oxa58df+vDcevJ\nLwYGWtPgwd+UXdrerpUw5DWDXH2Il4GGGYYWRSbAMuULVANAJ1nIZSQxTrDv\nwLrpZIGSy9OcqB/6WoWVpyGaW1+gatOwPxeSxj1YcJRZpCjMrR5AjU9Cke8z\nY2g068FpB2hUWHYxSTYs3qlXlOFViDnabnjk2mVURhzOqv/stMvIeQ4/q/PA\nOmVnXNXnWMFvFrIfrjmOpHex+ufQrB5+Avjlwueu2/7R+nwo5Pg1B3zNKgR1\nUEGKIPqxTMrqDHDEFWCfNLLIPpl9lR+6D0ts4W/2ftpJPvGlgkhci2UKJ+5R\nlfR3A2kdVDX9cpIZfg3t07lzurQ3LMtHqaA3aXrMTDUacl7Uk8xQmk3hZIqq\nJCHe8VT0eeflQ3nA89fzwmV7ZVIm4SKokGkkofYRQEAEhNMbw/Ha2AIU3rYf\nnVgUo1FYOpCAybB4HWb9vwyL0eezQNyQp5EWJtBsvQqMFXlM9i/50ucf5qjm\niS+F9R4KKg3v03yRIyFhAZyv+/R+kIdE/DmP6BGVid9Vx51ZMMsClHYRL/LD\nXCtBJNi/Pq/byKMHEk36SYYMxs2da4bKLefISw6E6NQ98lcqTx8K0TKNa3SG\ndrqEpfVvSTrghPf091NEG79Mk/DGYZdFrjTLboQfEFK7xZLWpDn0o45ZPCGG\nVpdk\r\n=NoYL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDb3fBOx1kVO5/CR0vgNQ5ywg3eGNyQUe/C2t6+cxdJgQIgBRcgxaRH9uqfWwtu3qHOTJQwb1AsJJjhrNo2HIPVZnU="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.0_1554077614703_0.3265226349299031"},"_hasShrinkwrap":false},"2.0.0-pre.1":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.1","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm run compile && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"d41ce6701c6fce346110237d04a975b18b419f17","_id":"feathers-vuex@2.0.0-pre.1","_nodeVersion":"8.15.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-nIH+0NJxJB99L/MAQCMUj42U3W1o2FxoyPIonWuxXpnA4wDKSFDob/JkRj5C1/v2OCYCAVClsF5h+V24bqOC8Q==","shasum":"ae32d90d31d06c7f11753bb4d71c915fd2c8c62d","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.1.tgz","fileCount":97,"unpackedSize":432844,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcoWqdCRA9TVsSAnZWagAAqakQAJsDDtPkujyEPQh+/dyX\nGOAWPcNHn1+35gGgz+zzP9ro734LJTLWH3JPbGyKm3PDOnySFZ8a4S7pDfyI\nV40qM3irAgh7HxtT+BE0CiNu6L1LvmBDGlSQayPn69Mu1rNsrRbahd/rKI2x\ngMLV5dGWd43EhOT7fzIb+UTKGsIaqxUAPyigIOH3A7zxZ6nWl9+4YgtpDDfr\nU1zvOuV03vZtXy5B7SWHxwCwgLaCdzjunlUq/qgkg4NEFZrIGeuQ3t9NB7U9\nLPUItRbtrDk3O44+nFunzWbXbN07Cp0eWpsxXpRJeu4cM67/lsfstn4woFwI\nLunW04Ai6Rurfa6s3ozwqCfDnqwxJXlR45rsUWrVRhcNas1ddq0O6crZtISX\n5cGj1fufq3EyufWmtE7gkEF81wNcZxdzbXIFSwGIK1i4VZEJO66eq2Y0Kici\nueLr0T9+DgRXIrSiE94m6OGLVTbHGw93t9850zcaUXJjxTaZY5YB3g6TXsif\n3u6oVj1EeRdNWk4x4WtW+reOdFcaFzXFLUfTdOvAfT95wzMmE1bR6n5frI9X\nyKJ3X47GUYAOWB5kV4WviIURpkOOsmsuUbJ9NerUxmCuUJJu/Mdoq3X/eVCz\nwS1Z5hOZJTt4n/hhYjbQni5vUVTGXfyTiOlsClTlktSrmvtLzwmiKz26jFyk\n+OfK\r\n=oFDI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDbV/zV3PKWTGhJL/NJt49EomcQQysopMzKvZUHRu5G0gIhAKzkqamekqLT1d51gNVP2U9L901EKAWMNe1/peNaVqAg"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.1_1554082460620_0.8080004160015781"},"_hasShrinkwrap":false},"2.0.0-pre.2":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.2","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm run compile && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"e6cfa9355463729b296e180a7eabc1b149ae0522","_id":"feathers-vuex@2.0.0-pre.2","_nodeVersion":"8.15.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-kwSivYeGaLHwY6fytffDHG0ymsPMBp6mZ+RmNv7nIB105AEEfLVUk4kyUuot2kBaOuZchDCcm9xdP39hStDyMw==","shasum":"d2395ff7b6c5ea1ec17d0a0fbbfff6c4d2289efd","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.2.tgz","fileCount":97,"unpackedSize":432847,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcoXiaCRA9TVsSAnZWagAALZcP/3xYD2ZYepFJtfzIPYra\nTQHgs38p7cftPoRj1x3XPJ0/SuB+lznauQfCfZnY2gojDQAFMWYu1fnLOJaN\n1Jg4pTzd1QSrZpOsErHZIFGJEu+Kkuv8qt2HAHg+j50+3DJhYhCPSHV3r89V\nK16Zcjpp0OO+FcQt3bzdUkUrL1sNJLtbzC8ENkhKEDx3enYga2hihXK3mdDA\njnLLE/a79BbrcjAw5uKHgX9jB5BNmfT1PBVRwkFWETptAOhfg17ek18K/r3D\nWhumdv80zu3WDcaRGBVXFR146Mn7P6vqUinqtfmP0EJnBxN6EzH1cMe9BDTa\n3g6S82+51v270jFtY+FOwk0N+ev7duB+dCw3Qbk6eltP+4DDa0luxBRd2edH\n9X4UFpufpFiBd7aWTHutgvVM+cdTtJjC9g82yBIQT2cRVW0jVgmgJzTZklLM\nFJB59bb2DBtDGRj047bRWFF56Eeo/52utCklYHqnh5iDCOVBlqfwdCT4cDuX\nLauCuuzoyueDJLbp6REXxRD2J3UWauNZqernG88DXtnQqBp+mVHVR2frqlKT\n1lXV6dIf7b09RlreGVQPw3gqaLzFd6kSKowt7DpHI36UAasRKMZJWYCJDZh9\nHl4VG7NjIw1B9Vpciyz6QsoxOhe+Kw2zfd/BuKz7tf3mkIVX2dTf7mbMyAWI\nLt+H\r\n=+UvQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAO2Dlsvob5razgqeaVQvSXG6VO+0/a06rzHQpVYB+cJAiEA382US1/Q7RGEVLiiTvRbhuEjG/y/xIgt3qf2Tlu8+7o="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.2_1554086041183_0.5610981448651358"},"_hasShrinkwrap":false},"2.0.0-pre.3":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.3","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm run compile && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"64020e4b33dab92f6171928108b04bdc86adadeb","_id":"feathers-vuex@2.0.0-pre.3","_nodeVersion":"8.15.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-hUXye30j3yR3nh0BBnbCrvI69nH4NPi/IficrkAXnlKAL2PulCXrl4zjQkfxYtzJ3J8vKqWD6C9CoGOGhHk79A==","shasum":"23f717d21ce3b96c71762cbd8bf9ae421c64da6b","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.3.tgz","fileCount":96,"unpackedSize":445750,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcoXxPCRA9TVsSAnZWagAAhHwP/RAVHNFwzg9c9qYKiv6f\nWxs6Es6JbbMM7IItlVUqmZ12A260Bv+NVWf2NFUX3Vcd+YlGUMkCMkB+cob1\nVvWAx+McbrHtdMFe4w5Bhe1FheK/gvuiRIG/FeRF7LqKOD9YBrXgI3TsQtws\nsHv9pY2W2Tw+Gha+WPSuEitWKgL9gn48NQlLfX2nk7yYwjbQUp8QzQ1QkzQU\nednBkNAV7TX5N10BqcOC9XNJZNy5X6dCAvIl6W/uF/q3igfa1+4gvdzZ68SL\ne783IiDY+WXHbpkkItCuwrDjkrGesZjEEq1qEB/4cdWmeJgJ2oipD7y7N5BE\nUGC7s6HiqmAWomDK9QET95a6dXuAIA7SzU7cLJEN8DXHGdmwUhXTzZ/uMokK\nUr/R8Mtk57v04+zsC3iNGApCiwU5zjW6T5phvUe8CLZDElYucUcVri6d9e/S\n0KsV5xzxNgSqZrMAl1/sDQgH3vnDdd+u8+gvttFmPchraVgpnoqNVeQuRgKv\nrKCgFiqKnFe5sEWqwtpsI3mpL1CK33blYiowDTvrRILCpUSUj1fy0V24E3Yt\nEfecLkQx/AmnWm2UYPPliOnXkR+h9+uvbelxGj4i2v3/ApzW7lN/AID6BiVC\ncpuklz4Ejgrd8+HCH0XXSJM0+CBhxNuooU8XedYgDhLsfxI2WkeArwcItDDd\n28XM\r\n=b8Ro\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+F6yPerbPTlccGI4OAzqDvavJuO2EFu4n6IRXLEqpuAIhAKaN0wCbiAU8gWdFryD7i/TIEpF1yVuTHfQG3LXElhS8"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.3_1554086990661_0.07490374987926707"},"_hasShrinkwrap":false},"2.0.0-pre.5":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.5","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"ff8b239381ac7182b50096177152e1fa73c2a9f3","_id":"feathers-vuex@2.0.0-pre.5","_nodeVersion":"8.15.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-jHbfx/5PlqPsIl9D0wkMc+FRbBqfhU6nSRxheW0WDY6xnRQHCFEPhHKbZK7A0NCGwW2S6dmqCtVkMTgjJs8F8g==","shasum":"629c22d8a61c5ba78abf92ac1e55fdabcf4684a2","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.5.tgz","fileCount":97,"unpackedSize":449112,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcoafVCRA9TVsSAnZWagAAEkUP/3HTKdCIKOW/LDb3p0/q\njQHPyV/VBQwhvzn+tOznVYYqQMDdocemsKwYsjVbRrLHmga0iMRMRhTYNo2W\n6Hrudr2pu+Fry0njjjJzhQay6OO7zww6AZ9PzheeKNEa+CUB4LqbG+BX90II\n7sxTcJ7rq/r94fwY27+N68EGSi9WSJxbGB5azIrJI0aX/Sf2vo3JB/uL3dLA\nS+jz8y41rtYV4/3GowT+wbs5vfu4k1dBpEXn5ZheA1LNLGuTjkZRhHcCZEb/\n52ZsQEuPrvohuyCO7UjRUNesP12tfO2sDIWKO+OfI9hMQOIu8DdxAa5Z2ups\n4PopVdOqrRmiKAwtB5oOe+XEB+i7FlCNx8MYCFfpF2pJjpqTtkmNSoalvkuS\nYdajgWA3vCl2zE+hpdCeQOSRvHdSi92JexMJiLaSkTEI75r30Vbmfg9LGYNS\nRuD3mBaahe3kl1kntsk9bvYZ16NiH2iE/VKDJpNJ5Mo0rqN24hPWJ3T+PG/T\n+uoRB+a85uEOgCOEhyqtalTQTfGSz/ou2znB/yAzpJDMb725l1DUvOGPFqrA\ndhQeh9rclU2rW20JyPE+u5Zhgpt67Kbk3DpI+5UT8lmVUiUFtX0NgUFysj8H\neRlj9jIRXXh5MRwGp03jLeoxPfEFzfv2s/9zOL3dsqN401+1toXyTMmgOtRY\nOnPM\r\n=/zOA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID4GXr2EMPKgYqxKBvzcMhEw8VcanwTdENtbuBSdCKjNAiEA9Rd+wtQhJ7nEg7ATX5xfMzo23JAGzZkUzCVcpfj6gFM="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.5_1554098132560_0.3760319000625836"},"_hasShrinkwrap":false},"2.0.0":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"1df7ae26081ed236ee43ae0afbbf6448afa32d4b","_id":"feathers-vuex@2.0.0","_nodeVersion":"8.15.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-hBbwwxfjDqkSoQVM0sajZB+guTiuOamDXAcnbdNFPpVbUfPX6xS3J3SQHDjNLsEkawBFmNuKQ4e20NtvDH9tKg==","shasum":"e83b471428a17ced1d6590178f84785830f6d101","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0.tgz","fileCount":97,"unpackedSize":451911,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJco48vCRA9TVsSAnZWagAAp8EQAJBSURDXg9+7aGQzJCm0\n8XPR+0o2QfOJ0TT1h9hiT12WwtvQVwdmoJLmIdAgrshEzYLDT9h7COuVv4AD\nlL4Q/HPjOp7E8LR041G1zngQO7oIftZkrpeBsnpKDkUyAwkL4q9IoqvDtkfB\nLdkdYJnBgG6sOZtbDcJDxGaP9zF+bOI4ac0kpJulhMqdNVc/m34+NOH0pP5S\n3vtjvbouNAIvSuYCAWcAhitb/DpIYmA7FP6OmWgHseBaFy+FrZVeFSeKNBPC\ncF/ZnK2k38b3CKhoEjnqgvEPRNIJeqLemGtxxPF1RYpTz9pP5VqxFeGZ/dI3\nh8Oo5T4+KbqA5CKD3VagXBuLKt9wwTOjaz7w8/cGzcXLrTW3KP3IfqTC1shr\nXYhVof0gEMRgYy5GxersnePi5s/RF1MIiuKQK/gXD1KGgerF/lYfLbLaSCSE\nJy9mHkHZKkTmje4gSWB+ynwlSbQ7RF38VrWXBjPJVOXmtUs100Zxekg3hbMp\nwB7EYcKqBNVJS3kUbugCQdLJQBdJqEqu6vi6wjrnr22WYje+3ZsEMgm4hdf9\nPfYAwZCK/ApWK/Vbuk2S6H1h7QKZuKnVbsSHEteSelFa5mUmNj5azyxWJezW\n/uRqxD7KI+Jm2q/i+EonUiiSKDJ7Vz/b2U+MzB/reDk9aUSoKSDnN13Y4ECF\n/x+M\r\n=tOIK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCyaCSqgNuoGvoJNC3Hy1Kqdrjc/vfjcHq+k3H8vCv5qQIhAMk9rBqe1Dm7LP2VVFI5D1fgsQ1XZutNgr0Fyu6wap4C"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0_1554222894191_0.3705668337138428"},"_hasShrinkwrap":false},"2.0.0-pre.7":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.7","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"66e09690f019752a399928bc1477787dd2d63f34","_id":"feathers-vuex@2.0.0-pre.7","_nodeVersion":"8.15.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-9xXSTxDT2M/99SvM7qtF1xCR/r0qAkn2d7efxUxN8Sh4aBgnKK+UnB6StuFI0C8rlUqwFZlNFBirP4Lk3Q0vmg==","shasum":"f01e20ac01bfd9e8f0e9cd40b86470f79ff88080","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.7.tgz","fileCount":97,"unpackedSize":451917,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcpAIDCRA9TVsSAnZWagAAvuoP/3oyF1tREcvWZvF5thvO\nVJVTcLT5pXS6l8YiarxtG3bW9JYWWT4MOSavvTO9WJ6k3hIQriMjVG1D2x0T\n18bhcv74u/5vpQ3IuXZ7uK3N+fQx055YKS/os7y2yQfArQxRF8o/p01SK2pP\nHboEQrEy7hZRyPtJ54dnRB2sgzcTKvd6THTmN73U2N6FjtVG2Rl/OeyOLlxp\nxh1pe9LpP4P5BFMN0zItUGOaIr88CfiOL2xfUp+JS+P14YdiFIt05WhDR7bG\nFFIHQjcZatPGFOryGtBfatVxuGMDRmIz4bdWQp1ktQrwD7I3ItBC0uB9U99H\nvIVQ3UubJvUKDvk0K9pXcrAC0MrtfPQAPM8ZkC910/RdrxY5E3d/w4WS4eyh\nC9a8Nx4YukvWRmFnojwMFL7fqNpnR8FytBeOuVfUwsR/g3wTNyackSVfNceC\nQOzGJuMqgd0HURZV3MMTvZst3LCqEWtgUzRrrOWE8N3K+nvDvWJDBslcIh9O\nOe+5df10g5GDnoQex0sLPG6pbmDMGI9nKVE/ieRs8e3SBcKtGSticsSwdy4r\n28i55S3+S6p3cfzqok6gZA2zXldYBg7TarqRr00mzwFzhpcFBXUx7nSR9fgm\nuzw+9E5XyLw8khtsCleoPEltv35FRErOYfbGMvk6eA+0v27BotSkffG9EXBU\n+nlD\r\n=WWbH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDKeWleyUUgA5SOy/iVGcd9nh+NtCT7YuAXbyZCdkyxEwIgAp5SbwEcIXnuwiPg2T2/I1V93WGjDJJ8MP6Ljdjwkok="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.7_1554252290597_0.8908217534425358"},"_hasShrinkwrap":false},"2.0.0-pre.8":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.8","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"766c3c3bf03b9ad8421b599254318c340e1b1df4","_id":"feathers-vuex@2.0.0-pre.8","_nodeVersion":"8.15.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-DcF/VtNizaKeOzfxQXyOS7JwpWNK09AHVh4dL3iDjGo3Okhns99HEmF4FZybRwoQiBvr+I77N0lt6oBBe5FfRw==","shasum":"094a5740f391e1c76ce730ed9e638f64ea93e238","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.8.tgz","fileCount":97,"unpackedSize":454856,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcpCq/CRA9TVsSAnZWagAAzIMP/0plxI2xy7rC/ctWd6yJ\nI9l0hAV4gDsd2/i9uCa2ag2q0cqMPcIG1XLrmT5rCTr6wS2WJUagfyHLDyrc\nyqtV18m+p8iv5/cEUUobTXcleF3qo3FixOkvb4TnrhXN9z269n0QCYaw5zXg\nXw5umYoBtlllnpy5wvRsVMOVf+Mmn8X5iBAo/I8c1vbAaghv0uz5lKftkFix\n7KA4INlLToofgW3RaZRxxFeJYZQlH7MbOe0viMtTNLdgS3jkVioVXMboVFPq\nvlaQFzIhMjL1G2+Fucp0v2f1xDDpyoZe2PFoo15H2SNFtts+ui1ExEjQn34/\nfENQyts3ZA04KO56l/4G+CC4F00jXqKMru419KX2FbNfaKZ/FTFPXcLI+/0w\nac96/mMPMoY1GmgsOvawZyVREb/EsG3JxWjCrnFRRDYpI9GmqB0SX/j/bPS/\nQwTmcFY49HarC1kYD1nEu/J2KuCANhsH67SKUbCNdSY4tkw2YkubE54PhAbT\nzgixpmaWDOfuolYEWwR0HskmFCIaCCpGNoCa9UIAJUqJRCfRxq/Ybh4J9jdg\nWGYGMX4DkpZaLPHwN/rLuN6+sXBPvwLSXbKcDZeup1kKpprW8ojcJKiSvkcY\nH5wf6WHtTSneJGyzDLFWA9YRQLyCbUGRdIMf4pizBTwQoIXTS4YgJ0tgdFDj\n9CFH\r\n=uN8E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD56D/t1hBESNlhXL/TGutXE3zdle9u24udnfWiWq/bBgIgJUyO3PRcu9TQUoq79FdyJBE1ysy6CX1shRqC8iRI20A="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.8_1554262718290_0.3544009823181107"},"_hasShrinkwrap":false},"2.0.0-pre.9":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.9","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"e8e376a495ae05d1583bd2ce75c9b7b9e706bb72","_id":"feathers-vuex@2.0.0-pre.9","_nodeVersion":"8.15.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-/NJFR5/M8EJTDahPsBoD5dTkBQatlCLgZEPDadx5TBv4m9DTNYxGgHISplrfvXoSFj5PcymkKqNR5i75/Jk3SA==","shasum":"ebd3acb70a4258cd5470f54a663d7e6e4feed783","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.9.tgz","fileCount":100,"unpackedSize":458377,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcs9LdCRA9TVsSAnZWagAAWYYP/jLYEeFnT6qHEhJD+IhS\nlpzI9HE+Ws6RlAIgn4pl7snG2Sa/JK+pbZynDElqXHAySJCVe6FX6ZpP1WRa\nZe4oKP7b20Eg+iUaJQJT3+zvjVVrTXklKP8ddUEsEfGUq7mXbsGzM+Lm3PiV\nkOTUcKrWm9D7r/b4vwNJL7QG8+ZFauOh2OyQgec+jdJNs4WbDrU67FvCLohk\nmDzprpIPnLnoHfBgDemKB2aSZJoXcSHy8m7FmBH9izewKAxRpaUeaAaaJMyp\notMYXAnFS+IxBUZEyG89Xf8xduKtMs+S/G5zqFDBIgPmvRcfTL55f9mZoT37\n3HjFVg0HtwgSlxzpj/iF5Bj77SW0Tnks+aeOjVKZeXvWA8gTRvh184rXRIhV\nNhEqieE+5O8vd1W8JT4/7MM1P3ik426o4hIArrvTMmxc5eatuxpHIhS/2KiF\nB93EqyOFVxDWhwSCtUpQ5Fpy8NJpVNYvimxnI7y/azxzyRza9i9ZIhRpiLja\nsPNqTRTSbSZ4YbA5VDTlv/7LN+bNcP4veOIHUOhI8u6BEdPyeSfuD527g8Ho\n1gt3HdhgP7RpC1BHoOrzCsMNgsdwAFb2qK62eopSGDEzp6Lqd0H2pDzv7u/2\nVxB0AWYPqmJ+GbxtcUJkOJPpV39IJZU96vxa8HJuwIBeCljV8jGfT2PXaS0L\nXINe\r\n=E2QA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDGZ5KiJeqNyv6r/gibk4NTJOuPZxQeMFH6DgzJdtb6EgIgCcFFyjvNN5sJ3M/SAZHpZa/oVyLBYV320LYxqfnIW6U="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.9_1555288795605_0.06264970162442385"},"_hasShrinkwrap":false},"2.0.0-pre.10":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.10","homepage":"https:feathers-vuex.feathers-plus.com","main":"lib/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"f26d3778b47ca5b9b9b8e8fff9db844ddbd57246","_id":"feathers-vuex@2.0.0-pre.10","_nodeVersion":"8.15.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-uUOL0ToIPq490wzhnzjhXluAfrqqTdZqSlK+Hxq3OLHUNhX58cSreauPaIgNASkjIDtPlTwhyjN8x/MhA3S25g==","shasum":"3fb9baa44364d3c8b144ea0ba039bb89dd4517f4","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.10.tgz","fileCount":100,"unpackedSize":458733,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJctB2FCRA9TVsSAnZWagAA+K0P/jK/VJ07IyrwGRDI74vg\nqGC78XxgIngRIzjx6GJK6In4XGctlsV9zDI78MkvWSRvf+22IeImg96BhoVU\nOTBJ4mQMYn7XDc3t2VgQ2tWgAuF7kxFoOXJYcoeIVm34lBWN3dXwEQhLUQ9i\nNxIM57pfrwB+LaLCHAHKYIegHI8P17PlItroqelHIX9yZNqagZIzgszWS8ZJ\nF7RyYLP07wXAlqVP07sDgGoUjcWmAcfxk5rz4O7DFkukcz6TJCGj8ebomD4B\n1/iV4JlO9HRFKnYKWlLd2YHLym8xovqPATUPLvp2EJQmoggO7pzmdmdO00JV\nAo5WV2Nl6+9vbyJWXdzxy5iHhdPerH9qRp96mxutqPBqZ8Kf4+jUPNqA/ztZ\nGj6UtkHAGSfoDBm6jNWzm1sysKNAGYdcfD2Ko92QIvk35s8DYe2Wg5hdHOUL\ngalYgky2ZV6CPLEGv7DBWCjSBe2Yq2etic3g4HTZAn/D2C3JELGTJA1Hb93D\nAZYM4jVnqIRXAZcUZ4EegN9q/ybFukyYgYydJbdG/x14/kQOQz74Lk4lvXi6\n93h7b0UGQUQXFxjbs+Mq6ExO6KOw96+NYi/bIcsmPSDEDWvKZXH3Kmasd5+v\nUouNeCMsRzqzTcnh8dqfjBpXbAkRhESNqB7T+0v/H8nc6ovjP5y39ysVtf23\nA1mJ\r\n=kr/9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGKha9/KmEtEgcNrHfWJ5OxBeZMapJSDqxjLzV+9yOeSAiEA3A0+yZo7lZW6AUCx5RSLe2dbuas4PIFz/3bOGy3GtC0="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.10_1555307907488_0.7371424033246521"},"_hasShrinkwrap":false},"2.0.0-pre.11":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.11","homepage":"https:feathers-vuex.feathers-plus.com","main":"lib/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"aa3e351d0a41cdfd008886828221addf566b6a46","_id":"feathers-vuex@2.0.0-pre.11","_nodeVersion":"8.15.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-JEcejU4rm6HahYb3HkYzWQbEgahLus+JcomxQgQ+z31tPv+aoDrVEbmABnBQwJHEGknDrIe059uxXsRjZnyo0A==","shasum":"41df6a31819842c6b51ed5f3c8c13e80cd25bc74","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.11.tgz","fileCount":100,"unpackedSize":458719,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJctCDPCRA9TVsSAnZWagAA9Q4P+wVonQqBy7uCBuoHsDBz\nwNdJeA4IhY+UEJG/RFbQmjRGjt4Z44yERph8sXfIf9FvQ4Zx0NCdKaHva8IU\nULCHzXVflI6osQes/Y5BVgeuAKG7occhB1GNsnLdtTJ7IhKUcbUUtyUOgo4n\n5Jfmk5Ks+m9CsuNBwnnaq5X35ELlxJbP/L4UD1TEvBBPfOKzI5idFTUGfLar\nLKKiMNoBpBHng21o8zwps/j3HcBkZYj9rcyQTzTjGDvhhw4wjb5X36dgh4Qb\nrLD7OJwLR7z+IiNuEwaAFKAHbHDEas3Q/sfOFZ0TzmvqCjSidLM+efcxsxCs\n79e2r8sf3gu2DfFL9/Rc3idWvBl9OdET907onqANdckk8cRijIdchK1L+jH0\n6OJ7brP1y9u+27RztqW2VdLesaZ0l8P0g8frKGWjiPXpZfHQa4ijQX6CLW6U\nIg4li/GsCdTWoQodqxW4NHANXAX+PkbSRUBWe0J+eFi7h3dKO4aU/empmVfa\nQrV5SGQWK4RffqTYcUnOJ5hVcr+sXJFPcnGps0XjCHvCZIty7TzjitoRU0um\nw2I3feQFLEikq/+eMM4pjEzlJOaKohZQJzbV3FFwMRFu1d/Fl6eG/hKtF4tw\nhBM43aLo/dP1JCe8Kdqm0B/cqhh5Fw9o6K/npR7Y0wOpA+3aqfGZ2scyylIT\n4WDz\r\n=NS8i\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIET9id6ZyaaXZZfB1ElYaGN2MaDgDfY74eEjiyM7p0PuAiBYqHD3/OHPFt4bQWz3/q4MtegcjEBViyFUJd4pYJx8pQ=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.11_1555308750432_0.3710107542692298"},"_hasShrinkwrap":false},"2.0.0-pre.12":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.12","homepage":"https:feathers-vuex.feathers-plus.com","main":"lib/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"4b416a7e63d3aecd547952ac42b1eafc69ef1ecc","_id":"feathers-vuex@2.0.0-pre.12","_nodeVersion":"8.15.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-CWQdLQc1pADLgmXKVL3ZHwkhAEqN8qOFhngw72mqRBOi/VMM8eg6B/5NaMGECsL2CfNMeQ0Ab+5m/lJdP4DpAA==","shasum":"ea8aea4eb2342e32d5371f536be5b2ab12f423aa","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.12.tgz","fileCount":100,"unpackedSize":458749,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJctIztCRA9TVsSAnZWagAAPmQP/1Xy+/lSqjIpE3qxVneZ\nJQ+MSZN/kejUCLbAw2ZIXu6Yepg5mgjg69z0ZvVO2CgsEBy3dSF5AbrWybK5\nXZCW8hcO0cCfUdvEryJfn2UTfWtSEekQ6Nd9NEEdSgYB1ZXnJUvWJwJykkNv\ncW2zwWjkJ65oigy/fOOsX62k7j1+7v1bJzcuXNmwUyZS0V0hD6N/v2A1Zd7w\nHZtuRrn0nGluZjuO/sZxzFo8IKVQTuC/+2aSxzjOTeGeT7Kl1osz6D+4Rol8\n1R1wfkmsm3s/K/nEJ7uhj9m9H9U6TnfGCC6ywdnLR3/2b9VWDWK/wxH5osae\nmgedGmj4mgB29zFiakbH+O/W9cJuqhUjxxBX2CPIdw2E4A65vg9ZiMrURpqn\nBK2uwnV8pXoWjMejZ5towEwayZ0gzbvTDbryfYaSvnn6Ew5e1CxY4LXPIOgI\n48sogdFcSyf6efp1hoX1AESKcsfYAx8spRaFX8QbsvwY7/QXvnq93kSo5i2n\n2f1ipMb0BdTPR4pPb9baf+VAReXjbRUvJraNXEUZCur5t730HssUCvPvGZT0\n/0V13QTHzQsEw+8Lf96M977Halhrg/i0Sy9py6CZrUmRC4V5M8B5vnM/Mz6Q\nkA1sBvfOW9QV60bYpCQjjH8rc3EKnUn58IbXaMFCPX5AOK8/VPjB6QXgu4Lx\nxAtk\r\n=27y0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCA3JZdG2BbD6v5I8smNu30L916/gVX71tizoTAMOxpcgIgEDYkknpAhC+r6MtoYfGOtWq/7rYb+EcDh930pxF8miQ="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.12_1555336428605_0.9936991238946733"},"_hasShrinkwrap":false},"2.0.0-pre.13":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.13","homepage":"https:feathers-vuex.feathers-plus.com","main":"lib/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"0ce98949624d04d9a81ff63e1ad48e852db99669","_id":"feathers-vuex@2.0.0-pre.13","_nodeVersion":"8.15.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-x4GBRPGzaiEjLghdBlMSnyFniGLL5mnKTnN9KH2s6fPx1quOZgLoDzknXJhs7rL2gr91+B8YjLBqkJmVThE4dA==","shasum":"cfd95bd41329c2eaff40d61335175d56b38ab3de","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.13.tgz","fileCount":100,"unpackedSize":458782,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJctJciCRA9TVsSAnZWagAAmr4P/3PPydC9Pt6n7SOPJKwF\n+NCPCwQCLANm7Myc88CgYCTmbTKPBAs3QQ3sKEmzvMYceslaVdp4rG3e2V2m\noUFACXqKlxx7Emfi6KOkwjA/AbBOksolpEgBFBdSCI8V2Ebe/M7T4PD6gSht\nQjTQm0Fv2VnjRvVc4DF4oH7SVe/QGVIi2OWFKN+VWlC1BHVPTejEFqN9lSb7\nvJFqfVd7EGk3eCjCyqgQEjZNqHngjFoWQiglD4CYfk1PlZz5LrvMAfJQA6f4\nFr1yE6cFOdgQ8Rnn/mvbwZ8v3XOzFUElVCNS7ShhJccqyWXBjrauW7gjrwMB\nX3eisouLGivUb4U6DQqCUt7npDC1Ev3LbHWhKRXr0Pa2zqNGkSK08xpn+9dJ\nkvYyzFpEj4XftkU8No+PoMt9X7/5uo3mH6hRXss3513/sNOEhAr75DnHE9aC\n5cPEeC882CQqsjpWP7XMJP2RHgbGftv/FuTdJxWU0+E4e/q8rayjRRQhBXm6\nbWfoMEB0XSihDB5ST0PJCr2BFPJKrjyb+t1m3s8FTuW1Dm3Daq0ofSVZJIMV\nIwYovzTwMfpldxx424NbMuaE4tKnsE5s/W0Nk7P4Obz7fr4sp+PmQ2wx3ubT\nzroPGqNypQbWqLmHLnJEMdmFVgQqHYBLHDZneAAUjre7Eu3cccgAg3YFTNqO\nKNPT\r\n=LBMn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9qG7ZrxVicYPe8rhs8UbU2f9xXhRX2/cAqG35v7NFggIhAMIIW7s3KIY5w+yN0wCPNnPKGBr+Wwfr2+8YXFgIgpdQ"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.13_1555339042354_0.9556969556731882"},"_hasShrinkwrap":false},"2.0.0-pre.14":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.14","homepage":"https:feathers-vuex.feathers-plus.com","main":"lib/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"2ac3f39f9a4e21888a4fd2aa4806ac22c2d22293","_id":"feathers-vuex@2.0.0-pre.14","_nodeVersion":"8.15.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-GaTXWHBBPaabCK9iZGHyCJHLh5Dn7sAXDgLfd/+frcheqR73yvkWb2ulIAY5QnF1DNlqknVcn95hNq8UQhDsiA==","shasum":"7021c4be87e84b5179ba21387cc8a55e72f9007d","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.14.tgz","fileCount":100,"unpackedSize":458542,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJctJlyCRA9TVsSAnZWagAAKvsP/2rIaBLNICo8sjujRETq\nQzxuJdhv8KnhmwfxGaKkoWekxgnDZKnEqCgn9V5VBiZSwxhf2R5tsXV5mJEg\nli6a1HI6t0t0zrBgjSTMlywtTtBlaE/qljrQg3hOqiPSQwIH+bkWh3eNrvVd\nso8iiD1xINAsezjgcheeFtXBkRtSJlCvXoebxPZYuTQ9SMdA0YfsrfZW+55w\nTzWjSGfi/+J0FaOZSLcdx5NojyesLfhLS+JftqviYO8AbPteInS4n3ixtvg7\n/MFBHJfNz4AYticwvsCkP6q3VHDHQf4/EYivEWvTs1POYs9jc9ZAhmU7ewbD\nzx8u2tjxAHpCZBu4IqQ3O9lABqlvLfsdBa0ZeSVCOMFE3T8qWB+0ALpzGW+n\nBh1/Lc6qq74xlrKo8SoPNL+sUrZuYXPd8GX5+y1MSFb2ZR/BNKgN0/KT9Epo\nmAzAJg99QurYdYnNrp4A5CsCEVLV+PCoSCblvca9EmtGNfLoJq9Tx14jJzPA\nNVG1c6rA6rxRjQFifObNGiQKL2M/7jZaFtpt3pej0pP2Nht2sb95w6Dh/aXH\nxTqD4jeLkct/YIFJGqCR5hzYF2CIaKAccaO7fl3P0RqAla9HR+oYaVi7kE9R\nBH/At6gYQbfv2d+b87zDnHwoVfdUXS0QIBcw8hrifdxYg8UtjLv2nbP9UvVo\n5jxV\r\n=boW4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDR4YYhhgNd4pMpHvixaubhGi8jdcPGkQ64mt8kGrMOAwIhAIy4lrChD2R9OQi91knsAa4oOgZIWEaFqLsHFzNxifi0"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.14_1555339633451_0.39617884926021274"},"_hasShrinkwrap":false},"2.0.0-pre.15":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.15","homepage":"https:feathers-vuex.feathers-plus.com","main":"lib/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"bd18147d7c531d60c823d05cfd425973f218ec61","_id":"feathers-vuex@2.0.0-pre.15","_nodeVersion":"8.15.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-wwsWlDHAO40q+PbFaRXChIBf3sLBUKYjG5Rn6qNKIAiKYBEwwW1aaM4Up2mcf9VewjXH8Xd48d2P8q23vwv+Kw==","shasum":"af8b44942872bb49a6fc22764f41907d2bb970f1","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.15.tgz","fileCount":100,"unpackedSize":456888,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJctPuICRA9TVsSAnZWagAAsRwP/1m0ge8wCI6Xe1Qv+bCy\nmRCWITP03AKnZgA+j6MJQ2WoIIIfb2O20TFUQ3Bwy+V3OyStz/d6qimAqq0X\noMQN91Vhds9EhiGzrYdKraMpkQyvcgg/a9hungcTTrR+1P58ptL8Ob2muER+\n5nRWjSi0PeNRKdCD37y/70mlwnPuc8Xk/mds9mguu7LLh7bnmNyVkgUnEsrU\n5+ze1eXpCjJp0pdXOTtX+o5GDtNZNkFEoObsatqOQVR/z2BKTkWo2sotIydB\n5MNWODK/pgIdcnMe+N1k3fP8pPaidX3iHosR4Q5l8t+9/H3c35+3qRrVyjIl\n//o8qLvC4QMFdrpQ4yAvNIdIueLpnQpWLhJVGk68u4xfvHDjjYTaEH/lnQ/I\nEou5quia5EmGCOmpgyv8wsrHZTVc/fXYaPY20lCFIT/I9aq5GJ91lEqedMpp\nAHUYOZZzO7uLAywCbb9C2POvqhWpzQmU52gcK8I8VFRNGONBEfbhJCSxeoqV\nleIpY+aOKv7nEjEWGmILPgYKe0rUqIt1smJJyUaHJvRFO5Aw6NITPwiNuOO2\nmZQtoCORJ8ntHyNdAG+TSFpXuz2dCozkKbvjzHgcJqEi93x5msVTYQcXANmO\n9qQalDJsYu6+VotnfmduA6qAEDBqx/t9ztotzelcjVcc7NUoBlYbj3mmCnY2\napoF\r\n=4py2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDVKVxTKStgg8IavvFScc8dAoUq17uIc9G3qn4xE2je0gIhAMgYATm1MiM7Wege7lGrrGdPA7YKaQo8L318o1SaukyR"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.15_1555364743904_0.4945580243622747"},"_hasShrinkwrap":false},"2.0.0-pre.16":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.16","homepage":"https:feathers-vuex.feathers-plus.com","main":"lib/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"5c922934fa0af36d10af1ef22617c08b275a7baa","_id":"feathers-vuex@2.0.0-pre.16","_nodeVersion":"8.15.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-i+7KEcf1I+IBF6RRHsL8/9nBP6iNBFgV6KNoVcbIw1DsucKLZ1vjxXzA7dfn1SdATQTsZG5PaGYwAS8R1RlrdQ==","shasum":"677a561490533198a0c98e77a1a950ceebc725ba","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.16.tgz","fileCount":100,"unpackedSize":457097,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJctsJvCRA9TVsSAnZWagAAukkP/2Ml35SVEZWIOss1qDlP\nqfftMh2jqX+HoVJjICMEGYoENRO9I/RoOI68cfzfo8ynMTGayHa6lCrQv2LY\n1qI3dTyoP2ZFYQAXwafwZsEqf1ub32NsfOm5B+MGLFQuCp32ahd0YQ33E8EK\n8gJCViUdIwdmbQdIGrTYaeDegp7LoN8NHIaVs2UtHeTBVhSJU92nnLyqdxhG\nuWCg+dRGxXfKl9t3gdTYLhC15P9pFmVL8l7t/XPQxM4W0bmygE0nEHZ9YEtW\nRQGyVfMy9njJ2SUceFyMIboKWZUQ8pUNPDMjSWDD8oUPCDNa+vkd/InMXoma\n/JHr9GdfxD4Cj263RygXi/2WIS/30D75a+FyZmSDKaVlF0X18ZbBO5aoX3r/\nzj7h6G/gYWW1lNARtzoT4vZFNacKCfXNgVZ7NreoXQqhB898b/neo+koNLdK\n16MxYFePlzKJLqGr4nyYMDBppmpj2QpiJzI1UZLiut1+200ZNoyPcZvYkgy2\nsveXnape6Bjgc7dr09lDxjv96mVivT8KRlEetBACjgyPyrzf3T035R+dBRR0\nr11rk9CsVQMwjBCg7jZ3oBIAbBd4rK39le2BKYMmDP5Yr+MD0GmBjX9Vc84M\ncjPcWb2LAdrMwPjdC6Zb+ptvW7hvC2T4RSlqO1FNwZlCuCEci2XEJipZAdP0\nqHmU\r\n=Ht+3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDb4qH6dxKggx1n1y7SyyaR4spzAFCUJHoAh7SbaKKU/AiBOl6VAQnxWmfr2OmBU5d9V45t4Jxzgdy2HHGzzYkCnsg=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.16_1555481198550_0.9317862518469087"},"_hasShrinkwrap":false},"2.0.0-pre.17":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.17","homepage":"https:feathers-vuex.feathers-plus.com","main":"lib/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"65fcc383c8367573798a949862d1bbb871318f37","_id":"feathers-vuex@2.0.0-pre.17","_nodeVersion":"8.15.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-xkvDPdbavf1ZfhYPq+1pEfDmSaCkFr+dGc6CyVoyFQbuYyErzIlc50V7+JmqprITB9vyYXc9Dvr022F6762xyA==","shasum":"9e587a666add3dc6e2ea66bbb1af11d1d2fd919f","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.17.tgz","fileCount":100,"unpackedSize":457021,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJctsusCRA9TVsSAnZWagAAjyUP/3r5v+LbagCceZnOIX8T\n2qSJEOiG9fEM8xy+5V2/qE5I9SJvgsIvAIX3M97Rm40arYX1cngGwVmkvZpO\ngzL6VHXNWNt3SnXqeO7x2MaaHkCPKeWdV0e2Vvulxx3rU2SI7qVqJUdf38UD\ntm107VxMhGenovg8zv/4d+JLwak//KMLN5Gaqk3azKUfIoiHkx69TtAPsfHA\nZJlKSzh3RBLSKXZZhNUvPcVyPQ3/qJyiLWDCYQPIlu4O0ReXIYqbnytNBIdP\naAnrMmhAEFyVRfq3FtnWZszAIRS4ZXuUBnBAXXv6pJjM9kIg1tNf6g/GawCE\n+c5FuCBXZ5NHzCNoW0IxTjRsNU+XWaL/Ep4jdqLbq8vWn1qPKaML4lmzuMjL\nUGJnlt/zCxE+J6w7KqEkq828tvnXqm4eQcRHehyoMhGqJbL8UOs/QBFWdMUR\nP7riuHBK9o1GwZ8l4WOnv/g3DTBUol4f6KRZXF03izaWWaWGRBBCz7qlXr60\nT+Yy72KMcFVb5bqfQ1Tsi51U43rIp+EBnBbiGprjRqTLGb6hAcWE2m01VerO\nTTQ9A8oD0Y5eJBa8vrJW3+EQbz8PUZ1Y+SyVjimpsUELoRZc1G2bDKN0LX8I\n1mg2caV68RtK8617gwQnUC5a3IixNFfztdNleFa43z206UBiuMIwa2e4vvZr\nbaTF\r\n=uzH3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHNiFiOmESbzHib9U9yMcEZDiz2eeW6bderOTRJWJfVhAiEA1eH9TNIKNoqIAeZz1dwZrBD6Ydl8uGLGBTow3IB7XFU="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.17_1555483563350_0.19252306443320633"},"_hasShrinkwrap":false},"2.0.0-pre.18":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.18","homepage":"https:feathers-vuex.feathers-plus.com","main":"lib/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"4c53e128b7e9e0c32841b62c1d992c9d01b14ccb","_id":"feathers-vuex@2.0.0-pre.18","_nodeVersion":"8.15.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-qffwHz5NEC2qcKg8nRWHm/fVsJfOwH8DsaHMqhfoZy/uMTbn7sCCfHR1s/NTP5dlPV9sfenCWRpnjWSbo33DrA==","shasum":"4959b9bd4cd5aa204e8de540e1ecd827cfac4b08","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.18.tgz","fileCount":100,"unpackedSize":457267,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJct1IzCRA9TVsSAnZWagAAUOEP/iqcc047UynwZvJoWh3s\n1TVgrH+5y+lePHzgTl6K8mqBilSPUJCwadgzsNRZLp57HpuVCAOMkdKurtlg\nrsVB8xM/hOlsFvCYFW2gEtKoeuSuQH34CpH+21EYYcTy+MX5Rb2mVgPGCod9\nc7TSLE/GmOdTIlK86U0mgnQ96cZQCLQj+zjdVIEdvE4N/MR8S9ljlRd9O93H\nMPAcaZRpYYvqxkGIXjdWg4A9PCGbV7sYWRJ1OwEbgOIGRWioWsj/ddaPoCZy\nilU32pF6NOWx7BrbQmFiehnau/sh0OfP/TrOcFbgplpMPFABO5+RElT5JDth\ni7e2qbcAEXLARxtjfrQkRlhXZ1rnwElfwCOihAO+HYBQj2P7pr6a7BkE93O3\nJnqChCSX65jvKaDSaMR/PFtyISrY2bTXdIUc4efNkxZXjnMCHxISVfWEKjmE\niic6Rlk0YjZ490doZSUnIRfCf6xQHEdiERWJRwYAnYk06wUwJfAB/xZ7HnPp\n3GLmMO/+mzoCmuBwE4QFIA83cYpJhJFAKdO+ajXoij1qVrY/lAXEz13Nymva\nKcGDIp3Qo2iI5H9kG9rKQeKSm9oWgtqOVvSYGWf8XyqYbQGHdxRFbroCDruk\nnXDL+RDRqAqts8yYhrT22MrcUCwxwkijSWBKwQs1+AckPLKQyt137oUSlstP\nj2A9\r\n=yzZv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCoNP2gK/1e7+IYj8Dbb8TYdWfE+zp0FDJNJ8asqR28TgIgJ4xWyxCUcjyIhtRdFC9o5rq166V0wuJArtXJU7oUclA="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.18_1555518001881_0.07917906397911767"},"_hasShrinkwrap":false},"2.0.0-pre.19":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.19","homepage":"https:feathers-vuex.feathers-plus.com","main":"lib/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"d129cd69295d23dce6e85a2616eb4eaa008b0428","_id":"feathers-vuex@2.0.0-pre.19","_nodeVersion":"8.15.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-qwwrzDaDX5EtVRXGyeQ/DQ/cLwZ4wKdjZdrqywJ1EZjoYIii6FkkwuOgNR2dZvby08LurPzo+QzJH4A+NuhWqA==","shasum":"ec843b91829dbb432c2fabd6f22c99d9be33dbe9","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.19.tgz","fileCount":100,"unpackedSize":458404,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJct76CCRA9TVsSAnZWagAARzgQAJno5oVzy+TaJM0c3WRi\nvBmyxzFe6aoM1qImLLjtL+R0weRa3GNXjyjhus1JLbab3BxnVvRC1cH+XyaZ\ngnyZd9S6DiXQ0LqZ72iXOU3vhePED2LnO3HvXH3SCtYJ7XuaELjgakZC89gn\nE16kx51rE4GSEaBX/mRMlFdEj5H3cLY7/6AlX0UYnE1Hy6xNZoKIsf8VAVu4\ndwrD3PCTo0nCDtrotfgZXDPS0x90ext50ucoyyUcF3mt+mLgjo5hSU9nZ7ft\n8yCVz4yLe/tSzjVbAjKDjW+J7cCLAOZhWuUs5115BmO/Zt5qSOd28RbCLrjx\nwdfyC/LZI56jQwUpPt412WQm8t5RoWSKPHl+1BojjGpwQd7Cu8hybFji3BIm\nfEaiOQzUU11UCNdfg1uzsfdWYtG+sIT8pkKp6jfiUP2RxRHuxXphyqn4yDSe\n7oToINdbX2fZzCV+Ben80lUKNE+DZWwUdPWjPw3TUnPyUp8cLi37lD6KB5rr\nQ8B57bXUOb4LPEjkGn0zWtTmWz7ylfGUPi1TdGrBApnH6VpXgAsJPAod2xlS\nQNfffK1T8i8e2VIIGHP/B4NwX5NxxT7M2Xht999YWG3Aznz1TJVqdANBPbT+\ng4lK+nHyTaV53oxVOCcTkCFlDwsdRs+bmC4M9d35WcsRfg/EcTkcYT+6Zdrv\ns7dl\r\n=kP9C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDX+sAaSKZOQxSoodhazpfbE8clpOJnjapGccGPYeZhvwIhAKbgXS6CsBqVynWfrXhVCOVfXXVIUJu9EfI4MYiMjC6J"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.19_1555545729307_0.6631990776969368"},"_hasShrinkwrap":false},"2.0.0-pre.20":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.20","homepage":"https:feathers-vuex.feathers-plus.com","main":"lib/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"887414b37e3fd6652a8087d58eaddf933dec850d","_id":"feathers-vuex@2.0.0-pre.20","_nodeVersion":"8.15.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Qee374Qq8Qy9QhQ2W2xJ9MvrDeu+f7y1ddUlfG734Bw8NPoGxIR+MoxxOkGBHr+I5S6Ht5B/atz5zHwcqxz06Q==","shasum":"b68b9607fafa2068b262b20507ad0d92eed6e9a7","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.20.tgz","fileCount":100,"unpackedSize":459221,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcuWnwCRA9TVsSAnZWagAAiIQQAJ6vcaat/0mpDYn9iIPT\n5azfAvcr5Klbb46F1u0nQX7RQT+6g9CSxgrptKetQkDZxcL5J7rWv2YxPDcK\nb/BSF9zQSFv5rOzT/OaciNrB6vL7POAZL1Z1UGfQxcZI266Cgp6y/ycwaEDO\nWkQ3igvE3H/aIELxTJauMfelhHqgPBsMfS0j/rd9ewC/V7pq1V3a7BKE7HV3\nHRgOqv9r0RH4Txw8aJaSu3oaqCC3r5s5RGy+LOGwy7q6ru2nctGtbqI5r+SE\nlw61cDbHpWOcRzt7pP1q85bDyads290dHRwuV8Z+c8NfC7SuLUqj4s9UPNwb\nih8tIe1GqCs4FWkwDmvBOTHxtFtRY5UOKOVN4MjZfr2LDWyyo7rDt6oi5NvV\n/u8o+/c5LlDSro280tb2r81Bc2QpG3zcmu6fMiFEMYtqN///16V/b0FDaAij\n33JIcgGFHGI2S8fIMAKaD9Tx3Av9ZjFOYmVDrqqAsZvI3OoYim0AqXgRfna2\n5b1LPWqDl8RpGbzhtH82dOdf3b6utNyI9T/v8WMlw+VU0hHd+BBUGIAtQkyO\n1Jj2KpaeJhNS6b7DIPZZ1XrTH+8RdxQHBME+yMcAI8jDFwdEw1Pg4jUjAEA9\nWmBqh4FZW/qIfggRpJxoK3/bh8NICOy1s747LhmjE+X4B85arx2pbZsCYYRK\nwdVN\r\n=4FJA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAUyENAOTg5H/OYjmOGURjJA1rzrc4eqKRZQHSFmTle5AiAq6BM0ROB+eJwBbEKYBo8ODojIlG2V29uMyoTS2JdGxw=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.20_1555655151425_0.5217036049118859"},"_hasShrinkwrap":false},"2.0.0-pre.21":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.21","homepage":"https:feathers-vuex.feathers-plus.com","main":"lib/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"2b61a266cec0f4fa7c98b177b0494ae58ad0f175","_id":"feathers-vuex@2.0.0-pre.21","_nodeVersion":"8.15.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-cw8HXYTm95oEuvcZllzvzgnEBLjUFcNqJg+k3sBjjUyAcTKlsnONI77fSLfAwS2oE7MFhIK8zeFFpUUxrnJjRg==","shasum":"a5f4e7de3dbdd1e572b998744f8a0edd751284c9","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.21.tgz","fileCount":100,"unpackedSize":459265,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcuW85CRA9TVsSAnZWagAAhoIQAIhxDjhalNz3y3Se4K1U\ngtQmvj+q+E0bwpCI6OiKBiWciLMY98lM85ku2yIt9xrH7uY3KZT8lSQ+LJmy\nfN9L5luROcWTPAFFgsCfL5hg46XCrazvzqsatZpOnAn0XF2axC8SK9Qjidlu\nkmP4P6Yx5z1Ppgj10B2fhZlcwAaKpR5vPZek7B6jfE5xwdgpj4rfY9T7ENDY\n0TSFOWLIfv1fQc1mNR4rOBcWxTawhhOJnK2QDn7v5l2kdfDeXKzDsy4mY9x0\nRFVCivLC0zwDXkzlhmrAtvczkMFdOnDl+M0h8qqhQW9FhLsaOODerhbuRPSh\nVYa9eB8myZXGHrX8h7Czomkir4cX/94KxUfwCMAFGSDAZ3pax5aHjM/JxAK0\nFM+BHlQQG/YJZ69GsHFLRrL/BJq83fkuJZks700zNFsMm6OWbP5+NPFj3R8S\nmg77eVF7zu+M8pjiaKwlFzQkw/+SVgj+FbmvFynsCC4KRkKYWkP08VjuDYiE\nKBsyFJ+0oEZUMuwuhfqrxBxvdOz7FO0ZfTaY7pxeqUYarDPXVHKJHOXf2s7x\n6kfBmPhAal0nV7oHn63hjs7EnYI65A9KcnkBkoP7/IWcYy7JUVAWKDE8sIow\nI4l22YwN8RgABlImR6LHGh92/ovf3RfhWg1JKZBhlsvMPESeEvnpZ2z2PSJT\nwdo5\r\n=wrxw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG2Q0ghxP8et6RZW4IYfrgmzRKCSWhAiJ07QGrPDiyLmAiA5pRbhBpq+ZYcZRG2iMjxfrwyUNzooIk53hA4SwawBTg=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.21_1555656504825_0.07789421532284058"},"_hasShrinkwrap":false},"2.0.0-pre.22":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.22","homepage":"https:feathers-vuex.feathers-plus.com","main":"lib/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"971a8519f26484558b36bc70d65fe2817cfccbbd","_id":"feathers-vuex@2.0.0-pre.22","_nodeVersion":"8.15.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-AGN8xhygP3rkjYmc9ITC3JaM7+gDRnNgUDU1Z62McabUoIDjp5I40zsxtIZ3o/wpm4/BjQNHQP0/8GuT4fSn4w==","shasum":"16f3a9afb7939b939f90f303082c055aff63a8d9","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.22.tgz","fileCount":100,"unpackedSize":460259,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcuhVYCRA9TVsSAnZWagAAZeIQAJT38SDD1IsK4b2fGOFD\ngX3JVorAgIXZ1BdFOclEwhTLt1CNTT6+w4dJxefe8KIM4BP8n8TUhLQkRUHx\nbC8rQzmp1IDRcTJIlJpQZK/XKOkhd3AzeMei7OiACzpOAa7sbde7a3zwjCq6\nKqbKTmAeOONe8rXBSzCGnvbM2EIVlt1W0eiVgx6AkwOQ1fKXfAOF+8SduVYm\nexnJSXk+m9ZLlWppdXs4GhmByqOfaIA2DrbrM0QSMp3HowPFbCBSynFMWkKf\nwBxQ8gVvkAyuh/97nnY1aEzjRvsJJI0oQ9rVhlJ9PQhR6jgV8m/f6lmW5SEt\n68w2J6F//FoLg6ol/Adp9bVVaU52XCMM9tw1YsKVK1+KTLPq/Vc+HZEV6zCv\n+m3Y5RvFKd/Mbk0Ff0UgrA3N8I+kmchnCARqLeP/mGkvcKglObsZY/r1F2dk\nM37hd7mBsx8HCnZFNt6QNzgqVBsXCd1jSej40HE/iijSW9YVPy/vGfqjiz5A\nqb0RnnHHNlG5fivBM2v5g208jRvig+WbbEt+lSQtgkDM7iTHaJ0pFxmLUZ2R\ntzGFrhWyYzWr4fPz5Ho8WUcyAbJUXSCQV4b5QuMkhNJeFzzQ4O3ebFlsuDw1\nLHFQIlVtvCmGM3kEMOZdn4N40RuJdfUWfsQvZvUuMvMO71jncpKWrM771UBK\nFPrf\r\n=JPFV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHyrGkQxzr9L7EvVaUi7njVpZRtTXetl4T9N65LZqpZLAiEA/w9yRBH72CfMTb/pSO/IaHOA49vNLEZSZrIHwUa+qlQ="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.22_1555699031637_0.9210255073338856"},"_hasShrinkwrap":false},"2.0.0-pre.23":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.23","homepage":"https:feathers-vuex.feathers-plus.com","main":"lib/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"9f348ad08c41f5bcb6655910d3545ea6af157931","_id":"feathers-vuex@2.0.0-pre.23","_nodeVersion":"8.15.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-JLbpuZM0LKQmbpPfNFFDemq2qfrd3Pc1++GyNXWiWfnd6+m0XWNOfaEBnSosDFQbgNsuEwty4ZNZKS415TXGgg==","shasum":"32c050d50132e48398627cecf3ed5d321921b1e8","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.23.tgz","fileCount":100,"unpackedSize":460272,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcvC0ICRA9TVsSAnZWagAAaOEP+QHVRxK+Ai33KsKgKVP5\nZEiCGKBkliPfEwiRAyookS8c8zFvzkkKWt/CljAaj4tSXEd14fmiW9fAA79u\nYoYxuS6+Ciei31Ij6lkTn6W8+Azg5GH5YNtYR873okUVccrkHZlBBI++lkAD\naBzWTzovl2FxMjdlKw6hm4be9RlAszCJM8az70ymmyCgQOBVLEk8gHpawH2R\nyxDhXYpRurCkzXgcJaYI6ZdJzvzUz3ndUUKijkOho1XPveRo+VXws/70qhha\nmXdBDnx8ty4RslGDJp1xfinBEXEMVGruhWPsBiZn1dE6jNzvjGHhF9fgHkGP\njubOUtSMPzfLAKOh5FVrVE4hUf4qo3thFrs53hF66B5MVwwx4WjNJqCAWM3L\nXJZlfrbYJL3sQ42a4i5oT/6ZUtbIvLa4Eex6Jycab7kKlBYoFukLryo5ta2E\n/ldd6dT8JbQVOgIftNEMQbD/GLkh8+WrQPXdd+8aFfmHzfP2iqAlGJJoCDHF\n4RQ2ykURw7IBmiW1BSNIMvdEqb0vJBBwKc7/NAXMozftJ02uD/pLQv87/2Y2\nIVxv+CIjJMZOr6LmXSXuq8F+HCNd8iGohMPhaZnRfF2guwQ+NHsC9Ut+R+do\n7OvhtLbdt4Exo6XLJYn8r55UGDral7/DnJxa2qfGXDgRDVN3/XSssMbcYPq3\n8Izy\r\n=HpYT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVaBNwTbqTcZiE6kQSjLT4WBh9zRtWMM2f4f+V3SqKAQIgTMBEMvicd0z6KK9lCVykDyS3GtvMkAI6US7tbL9M3OA="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.23_1555836167903_0.33128494099223404"},"_hasShrinkwrap":false},"2.0.0-pre.24":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.24","homepage":"https:feathers-vuex.feathers-plus.com","main":"lib/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"06321b65aa94ae9053c5b93e8bb25298637a2038","_id":"feathers-vuex@2.0.0-pre.24","_nodeVersion":"8.15.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-AktBNYBeOdu7o5niXZt0jK9+KSnKFMpxoif3iPBF/gpQry8xDewotFK95zmnhUnSCwjrQiVuDuhIO8jlqD33Mg==","shasum":"1fbc2d909935cd5e5e4c7fad56f478122e98b064","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.24.tgz","fileCount":100,"unpackedSize":460600,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcv+cVCRA9TVsSAnZWagAAXSQP/1gSh4K2VAEvBiaVE/5o\nodrDOoAhlvvgrflUjnBabvgHwVME5ncfD2pUFVcWKqZiPN+4RpiHMRLgCOBc\nv8E9eEdpvra7vWRR6pohgMMA5Dag8VOebKPTL3FH5YtLnxfGT2pfl2BrU+Tv\n++SpqYsv6GQr/6XY/2AwZbMLemwvPLT56Fas8Dsq+58T6+DGgNF1F0w9yTuT\nrGEA4uW6obJdSSSJ56KW4RpbKn1bjJpt+0z4bkVGo1tKEJhQclOR2glVh3A2\ncjvwK/gdqrsH7/NlEii4CjuNuHzezVJIP9NDM2EIIjWiNgYCYMWWlp1U5OMk\nGqQknqHVsylvQ4t0QInrzvY9iSc1IrCl7FcUxWWGeOAYT8uzgS674aeQBXli\n2alnezLH1u9rD/HkoN9j1vV2ZnOdkhbskzm7SVoEcAtJ3gASvJ+MibW8kXgT\nfVywxaIFFDJn1oES/CdMrEE9Kytpu7d8LurDZ1EYYQi2GrYcBuzLfUceuKGI\nBdA6024KAPS8XoeFEtjQWy9me2sHofM5yXYYDV3wBdZ1xzhnEpHqlnS6Xe/C\nAdHa3Tz+HDRU0icmB2Bg7nb1U/I07DGaZJvOA8GPXjt6xfzpbx1DKHt0shiC\nnKrXLavm9bS/rhD2w2//Ti2TEbw6rxLW+o1SYeNhCIUglhafpAT5TeTucS9x\n66J0\r\n=VXAE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDmIVPVzsVNOg1byzUv/IY+q+rhZGWks0KBoo3VSQ1eTAiB8VjOSPdSzW5gitVSOHxYx+QcbMg2DV3CzkIZhD5mt0g=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.24_1556080404611_0.34727766533365245"},"_hasShrinkwrap":false},"2.0.0-pre.25":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.25","homepage":"https:feathers-vuex.feathers-plus.com","main":"lib/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"76be529939b1226393629a7a4350eb17c38fb201","_id":"feathers-vuex@2.0.0-pre.25","_nodeVersion":"8.15.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-FvbHEIS1plf34d/+3L92nt/jx+kk7wlUkTMYGmuLpZ7ixUX7oyFs4x/EBB4tiVrQBdSBI0fwOrTK2CbxxKFSOw==","shasum":"a0923a21ef69aca0868637a984d79145e1022a77","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.25.tgz","fileCount":100,"unpackedSize":460767,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc0saCCRA9TVsSAnZWagAARWYP/1NDdIjfz3aXWvCOj4RR\nbaJG5URGzVt9Qmcxrx1haLFVxP8nwe4dR0bKeUEW9ej4CCbAAElj9Z+kMtya\nbdTU+hGSLbL3/cpHMIv8pK9qxFxoAiFuxj3YbrUOa7sFvUqj6JL+50RmjyqN\n1A6lhvjmLez7Vi+RTm9+/wnt90+SjccLAr+km9kdw8iB3q7InCSrsUgl72f4\n8cPvvn9VI5rtd57ymfOWpQIder5OSGjRXLW9mYI9GYeZV/JWY1sx2udkssP2\nwr4PuTdYKz+XI98YnDq63xFuB9KxzjuIxz6emFir1PeeID3e8B3hHl93YLBQ\n/2MvfJ8YTW4p5cc8So0JlOj9SXWjNi4RNLJm10UuNQI2JRNO7XF/16YDukc1\ndds+zMN2YpBj3AMg+MkupkI26HVBsentuib/onhg7FlBuoXzMavCdV/8dTUJ\nxzFIbV0oEFyMkUa8fCZ+sDByIv5fR9/DSaYye1vuVUHRcmXVCCi6/PQDUAe1\nxYhWK2hJW8Xk5n2u5db4vPa97OgxinLi50AVtEUS2NPJ8IEgCpA5FE9FmviN\nYeJBXWAXQqKu+tIMkq7ltQT7bRxtwjoZtyWIVbS63qL6A6qPh7JS41IxyKCy\n57Lp+fDGiqfi1uWyDyHdY5I1PPPxUMzBtJKJkacQi3ahuRnUNwIVO6SyH+6u\nU4KQ\r\n=QvdH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAbitpEJIY2FOiUqq0t0eosBHFBZj0JdEkx7dq+89stFAiAWpejMlbO8mAPtK2Ia7EyosfBhexs2q9vhR7JRvH94Bg=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.25_1557317249630_0.13371342331685998"},"_hasShrinkwrap":false},"2.0.0-pre.26":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.26","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"59739bab4d2a9812af24c232afa15b3d69da050d","_id":"feathers-vuex@2.0.0-pre.26","_nodeVersion":"8.15.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-62D1OP5uN5bT69TGwSwsmHOO1Q3sXMkeEQVuVSLuQ2G6+7o98rnvqjHeLdMHfRI0jRUrffRz82ov4qGfh2dquw==","shasum":"578d93fe91457df734abf845f0276836fb0bd803","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.26.tgz","fileCount":100,"unpackedSize":460769,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc0tKrCRA9TVsSAnZWagAA4X0P+wX9KpWT2pPslcv8Y+B7\n7PSi6R4tZSLpV70dt0dkTE8hnUrx/767+kTWrXBz1Bh5KCABNCT4GI5ey4c4\n2luFB27gisKfSKsJU8WenmySpzjAxWEXoSbOgy5Eg7GA1Du2KA3D/s9cjTxP\n0jwa13us8S+myyXWSJw1OiPRC1kwNWd8oEQGttfpXUfkSUjlgZTS0mYJQCEi\npTYIFWOhAFkgpkUg4yzepdkYzRS3BvNL9WjowhF2MkDRs7gVtWYlJ9+SdBov\nHP+CN7K5ALINn62766xGngoPcMzqiuiVt8DTy70kHqE7R1SIgMwRi7f3+PAt\n/GOq1YQu1rLV1pOxD8KCMZWZa8vAkMqkm4C7LQAtsKqpKFRf0n6OtL267GC8\nAZasK/Gdi94ZIfh4P4JW3NEwVV1fabYEXAjcu91NSi8kqJnGgrCluNnv/ag3\nmEUlgymqcvTH5Pa5qjPRimb904MmhovViN6t9VWzqDY2ANeebdKYbmacwWCq\nOwMhSsD/Y4QtVV44u2wLia0f5fiXuwJ3IHCu+kkq4BiNkUziz8qfZ4rTTMZ+\nKt56g0v/b1B97duS1e/4jwc7ew8ITuckYksKr/kWy+6gHvO441qTuflg+YcK\nORm+inurpJjHXHYr3wPwUWQXnuSSHOynLcLSQD79wLuxCIEJQjLd3JX/QnWA\nuaMC\r\n=Mlgo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCYfQE34t3+9L7E7vODWwxugLR/u/Gnpkchy6c22YbgCwIhANxAoqESEKEQpBn1NCIgwuFOaQNc+/98liixbf821ilI"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.26_1557320362592_0.1305870369600184"},"_hasShrinkwrap":false},"2.0.0-pre.27":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.27","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"eec9f100bd8f496cbd8de5276f2ffdadc3d5c402","_id":"feathers-vuex@2.0.0-pre.27","_nodeVersion":"8.15.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-B+QT2zorcU3qrIGF3jBNsNlJm4/UFtys7CDElO83JsdzvOJD+oRup+K2bFheEN8sCNewff+EMj+nwi4gOS6DSQ==","shasum":"60faed92446a1c4b3a344f9b3932b4992b61703b","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.27.tgz","fileCount":100,"unpackedSize":460817,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc0t+LCRA9TVsSAnZWagAAJ0wQAJkqanNGpvyvO0ot0Tso\ntt+t2YE7EgreNUTn7zY03IsWHtxvfBbTcRkMY0zYp69CUapxGu7JNe20OFgD\nYT2KDF7N5NW4t/4bTHXf8WNuCM/6xb9qBxGIttYz4bE91knu17l3vXZTLLS9\nVITgpua28xLR9/eEPhE4tD85ATKXPy75p//EcwsAIiINZiF57c0Hkd/j5sXH\ntAj2BZOuGFjL1Wtb6askhdPBmsCg/otsaF2bIaOZgrfd33JR24AZ3p7pM2uj\nnzkh4qOFpYRVKRkjEbwfCACbqZxJa4o2DUiYUNauj74eCuFoDgzuWZgqDX47\nYUShsdme7KzwaH8PYLaaQ4zPK63gr75Dk+x2Jh8tsbeXKj0mEj4n880BSnLE\nVHizEnx9tuDjcCw8P75Op/NjWuqIgvS5sO1oWe35W/ghQQrDbhnDgKoxs4vY\nHhUPxDFDSHHYgwNnP9bJLoCbPsIDfq/e42Np0JZtMCFQxIhw2ab81YjZq/R6\nfi5wj8D8e9XJ9QyyR/s0kV9EduSGaSV0nF3i6h4WRBqMspIP5zn8bJqUZuja\n2EXXg8Fd38v+8DYTvwYuENF9pDKxnIY7/GogEURAbj7BWC18A2eNakDmh/bT\n81oiDiJGHwopLXH47xYjjOlLxJQ32Y1j3Tk4kasVUZtRp0tmTNLYwLcpAeye\nyrM9\r\n=jzce\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD3qOIuFOhjNqenuOjkgwNKY6Ojg6w85Q8Av85RiWwRfgIgBuGvvVSmcYvvoHpSCDzB+nXsDFpUP3ytoHGVMSZGrLA="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.27_1557323658861_0.024997461513723618"},"_hasShrinkwrap":false},"2.0.0-pre.28":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.28","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"c15cd04eca366ef6cca6c0b9b0360b741fcd4d04","_id":"feathers-vuex@2.0.0-pre.28","_nodeVersion":"8.15.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-+seaLkT+3Ghw8BOUsg+ZARlYbFeKMLT8OiU2UTiVXjya5uKqCySbZGIJpQFN3qZk+Sm9TaOzJxCZSoilCucP4Q==","shasum":"d4c124a0bd847a0fe4b65e4f360a8265512ccff0","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.28.tgz","fileCount":100,"unpackedSize":461940,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc+DUSCRA9TVsSAnZWagAA/1UP/2IG3YYRPTUujd+dKyvA\nIIO5yU3KPYLsacH0poWLojD5//Q+v9viJRt9lthQt68bSjoKsZ8h84IeurjF\nRe/pwrJzwH5VpxIVdN9LKrF1YtMd16t8NDCuwCNC6voSR4Qh9kxmVM6vp+rV\nAGCGLcfCJ3E6Ip2meOjvAJGeHhyn1oa9FUFyJNw0RTbrTgpIyNBzYbzzH93/\nY0OHGRwSPb1slbsBE5sLQAL4j0W3BBxdCfZLuin89T2YLlrCkVbyH906HwV4\ng01Lt2poYEd3NgMUuZfMPUjHjq33X0nmZ8d0/6h8qkxzh1q9rKCA54gnk0mC\n8q7NGbJ1A5P8GKdpetu7m0Gpcqkn62zGLlwklMwWZT4yGZPLAarg5+GGMVJ9\nNLuyA/JYovluVbmaDD/uc4lYb/V4ICDtzRGvMiLRG9vEuGrvZ7A8I/51xu3r\nlRYPH5r+Yhl09JZC/JBZDapGg7U/jVy7pVo+uxFA/YE2byojTzPPkvTVmSSr\nnZhIbCRmCDnw62F5dPvlMvDR9KVOyv3Q133YI+xSlRNE0qlAXVswBnGUNUny\nOBGpDBORBLkm4F2TtVSxZgIEY9CxpfLN0q0UHZJK9JT928PvjECWDeMYZYKE\nDBaETiXHi7RQ0k2kCL+PxLjv0eRCooXkDK/kubVUp2vp3So6HZSpVk2xjik0\nH1OA\r\n=/CRP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9WCkJ9SSB6JZOLt+3eT7pqJowr/KO47J/x2Ylbal4mwIhAImJ65AaYMVFk66QvlJgPAViaJU/Se6u1olPrm56QifJ"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.28_1559770385423_0.7134887306669979"},"_hasShrinkwrap":false},"2.0.0-pre.32":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.32","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"eac6fc75c242394cbaa490c3c92fdcc64c4808f7","_id":"feathers-vuex@2.0.0-pre.32","_nodeVersion":"8.15.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-2XNTh75bTfDyko9z+4yASZRq/uen6H6ei7AjCaBlww60tKRjoyXdNvI5ieKUEBgTKxKtb1Q8KTQLIuCh+oW4zA==","shasum":"29e4a265095c838941fd0a718c106b0d7fa02fd6","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.32.tgz","fileCount":100,"unpackedSize":447892,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc+V4zCRA9TVsSAnZWagAAaeIP/RFGrr/F6rtWTfHs1mVb\nRFzpviRjICCE9nybjlbbXOzx7TEOCoh7jFpD+FtbsvjYPfdcg1nkplOACKR+\nMNtxkMUAo19aGyVAc5SeXc24zBI2tyv7vU7df/y2LZDaz/nsxrYe3skcrud7\nf82N3v3G1+738A4cRsV/0wRdyNZH6MX+cfkaheMTryNOLLlETMtQB7AKstPg\nuuMASB6xN1+k7M7kuKgaL454ihztlnUJTqeIGgtu1GJFY4JieNl5RZ/lnrzQ\nQK7TVpYVRuuFq8EEgxzYpuQlBMBd6lbw5ao6pzIDCVWPxD1iudduPaUSFEjt\naWYHPc85HHALrsDUvt36pTzGve/5wINDAq6q3kvEoe9r69vmqin/NGed7O0Q\n4OlGXtxMvY8dXjkcpxvVA1+6go/Vfpj+U/MKixpfF0OcyMiUhmfifEj53/Rx\nQwsTOZ808Lqdo1amiz0FoMHMZr4r/d49HpEIyCy0dZRAF/Zki+nPKX1MTnAs\n4ZTg73QL8/rzgzsYFbclz3hqWvhGGGlW0gPzu8q9i9h79K/t7Vp9mkaPT9dG\nFHvNTnSka/4tYIKPEt3cP289EqGMF7CQDDHsaUPaFlwS+zTz2mh3Ifn1Ecnh\nUSryJwA7Fq2rx4kvq9LxkZp1InHAD2oODxNHNPUHPVG2nwhLjw3xCULB+fmu\nqNop\r\n=ZGEP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCmnooFtEdQXJX2ZcmNJ89YybsTIfs/1+ENF2fHV0Cp9gIgSXL73s+N4WtSlOxTcYSJw71FUyse0zWRwWZSVAwB/ks="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.32_1559846450400_0.20197892050867683"},"_hasShrinkwrap":false},"2.0.0-pre.33":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.33","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"1c4fe500d3f1c85fa9e3b97aa813a4d09f000eca","_id":"feathers-vuex@2.0.0-pre.33","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-J6mNep1OS3+FueqgYtBuVhD1SG78voPa+tM/xOyXSDqcIm6UaDBLBBOVhOChjOFGD5jd0P3WDGDZcsaxJ9FjnQ==","shasum":"ce6b171cfed2efcbd6f3792de271e527d1c85138","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.33.tgz","fileCount":100,"unpackedSize":447892,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc+ZZRCRA9TVsSAnZWagAAEzMP/08bsU6YXoWHFLeVpjg2\n30YUOfgFma3jO+RDJSjslZZn468zAqGRH0tcpHUaB0soCWaO6x8VeddBvQTy\nYSLOsuZqdooyrSpmKhERS6xxy1agHOBEk8iaBIuY/Uk1nj+BbqTMlnMNaQPU\nfgQmQdtpt0r62XrxZ86RkkYa42wwK72QIyJODtItDW4JEUbi5aMgn9OJO1Xi\ngLB1inppdSQg+A5U0zlCbZA+uBgustEqRqwWg5dCf+6BGEOHl+/hTW5nh9BA\nbkcJO9nzDyA/3wZJUXktPF3vAHPW2qoAPfYY+/sjIkP7RGcS8E+gz1yqhH8c\n8waXpDy0794kakOzrVNk1SsIDYwTWX12C7xPlmtvjFlr46gz8aMqrf6sVL8C\ne0lSzDSCKx1gYj7i7McTYoBAW/a0n756u+wbHzEsaW7TrDB9+mM8E7eKdyp0\nGWjUOxAoOaMklgPOisjDxybATP/bJfgidk6ELU/WWp4eHbFDEjoAr0HHhsSN\nOIggNVN+VR9H/40MGzEWE5+0cywDnMn/Vjl9zJo1i8cTw4KrxYSefjvEPMHK\nsilKVPn7xvdTzGlD/9GGVsNKp4T+mP1ncNak8muJP6GvlHnYFUQ5KrmoOgJR\nhpCKFbsKJhSnQJJD5i4iH96/Jb0vg4KILZ3SAdVAmui6fzOcuzj240Z7sdLW\n5HkS\r\n=FblZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBG5fopjzDY0HX7PUT3e+a0jjmDIdzK50nVdp26wFPCTAiEA+8M0rVpSxiX6mkP5ZNI2j2yHfxI6mK2nmFwFte+KEhA="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.33_1559860816866_0.7873630093204351"},"_hasShrinkwrap":false},"2.0.0-pre.34":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.34","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"fbd60502d706cd11a69ab0a9a2ec610583a5c7b0","_id":"feathers-vuex@2.0.0-pre.34","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-NYbOODIgJOf1sY217PdDffIO54lKQYpj4DHEav+btFZOfYmTsTY8aKWQtZQAa+Lv+IXYD1avmnP0c14M0ljccg==","shasum":"0dd345eee2d19da5fc636ea56149374e4aa94cd9","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.34.tgz","fileCount":100,"unpackedSize":447892,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc+cTSCRA9TVsSAnZWagAAHu0P/3qAFlmHPcmtjiECj5TF\nNYBFj5mAN9pHdZrx7LPMaO4/Z5l00d0jkegsjsOYCkq7L5wNQgI2M8vhVGPw\n4oFyvh6EXiT13EQnp3U0AtutE9fHey4q2JQoDtDR+DP0PzPSfBRz/x0Iurpx\n68OmibYXj4Rzs3cSglZNMg9jE4VFWr8G/J4gzkm+Bc+KDaUOdH7Bi7oVM4ZJ\nZhiKLE7BvpofMkwNY1vUkSlgEjsgjIOzgG7415Y4F2nvNJtHHMBtrpoWlWkR\nYvL7dJASl4OWNHjfaEJ1AkDjC09OvO1vrfPcJ+atocW4sGk2BLpSxl6hfEhd\nZpmQxqHgWjI863V0btMHPyKH9M59YrztnfGlF1gcYWHZLPTW2AwtsGPPRZEJ\nW/Ujs5hPUioLvdYNp1Zzpd4spImq8aEEX8LHtoF6A0Qo7OuzWO0mq7cSqyTY\nwlG5xrNVuh0eztMbnQa3Wcei2nSzIOQpExs5b1TD6DGfhfr1aVRL2ARuv3Yy\niTrhVn9AX5d/XtsUfhULvqnrGzDzKJtNNBQwmG0VexKSuQTtO/DTK7TH/XdK\n/tGoXLAzj2UojlxyFnzF9M+DlXKjboVUWF3DZEq4UGjENIVdWcDXp/14XX5N\nOetjOUKvwBMIbQa0ivWiiLeOdAGfampQ/FDLGNsQXcVpY6joLIaEaT6ck6/+\n4EDc\r\n=lfw0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFe5ei7vE57UV7cNQy1wTje4c4tc7srbngHtf15gdsqsAiEAssjCu6szZL8f8Rdz+PDTDGI/W/BuFSmCgAlcwPyxH0Q="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.34_1559872720995_0.8961843585040334"},"_hasShrinkwrap":false},"2.0.0-pre.35":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.35","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"cf40972e1babe60a1c85e8ddf90e68d74c898256","_id":"feathers-vuex@2.0.0-pre.35","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-GUyvkWPiRQ1VIsitFOLBoi2XHrQvZ2sqOhM+KyeyKNAssG1VVrOsICnIb7kRkJb0AiaWcebmt/9iQJmEofJoAw==","shasum":"1a2db0074fb4436e16296f283e57c41250f34d02","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.35.tgz","fileCount":100,"unpackedSize":446848,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc+ePPCRA9TVsSAnZWagAAawkP/00jr4vfTLIBMXyFftjT\nfZ3jVXDzUiE2Ps+4uA/mw4Jx1F6NPoJa8sYdXV/yKheQAjp4BBbqOPTmx7vz\nYNfph+sdU2ma1OjlQ/hML8XW1IDvq7/wbmqziuOGTeErl/Xy75IHN/c70kEi\nv8jADN0aa/U0ATaa/IziP+HCl+tguBzkdDT78k/Mnh3QeFbqN2E2zEdnOcbF\n9yhdfonIG/+fZWDBZqBsBzMlkct6q0QrHzumvnjltJ6zhQpncL11c0xd7Ern\niHE9XvhPaPzs7fQioI87NyPZL/mMkjlYXtttTdgBwxCywf+sa2Mg70d4F2lt\nbWV3lcBHKOucOPcV3XDeJ0Y51xyPDgynQVLrE7HkHfvAkIhw+fiA/GrrmjB6\nIeRa1aFc2dz1K/hjyY/5KS1lMDEPVqPuOr3M4CAVyY0RbNoR7JCvd0vjMSSe\nArlsmi2LvnUs+QyDWFCv3cXG27ZihNHyS5CbA8lV4PftZD4CFz/FQHftZ+GM\njui4Aaueji6CGbygJ8KLEAZ3Uxa3PFIpDWeyfJuK0udpf+lYTKAIlaRZYLAa\nv8xgnC4OhrTpvQLTY0MLUHCELCmn7tz915R9PWqIyCqkAjGb66+hfH6myvqG\nQYkXJ/wVH5U83qexlJYhYApckPqdcf7wxWh5qyN18gbJachhJEH9Ra5PgD9X\nayZ1\r\n=ukok\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCfe0J6CW8TAcNSC+1xNi2UeEb5BpZYbNeRWG+bokbiFQIgQ7zSTpO0SDNtZBohvuU5u23a0++h9AZP+mmDL6xMW5U="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.35_1559880654416_0.8428559788264318"},"_hasShrinkwrap":false},"2.0.0-pre.36":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.36","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"f9607eaea31a52389f6396e83267ffc64015b6f6","_id":"feathers-vuex@2.0.0-pre.36","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-twMpTd8OvFw8XOs7AdOZ+5yDbR757lLpotXzAmIoSWnOJ7uPpbIxwwfDtXEzg72ZutVovfpMrptPTJdGvF5ysg==","shasum":"8a9cbf2596f7948ae2e82055c6ee47045f6d483b","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.36.tgz","fileCount":100,"unpackedSize":446784,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc+e+PCRA9TVsSAnZWagAAN1YP/35VpiJJb9zlLLqD+EeC\nxnXbAQ9Rt8tYPHD8by9NtXKb/+j6fDp2epuvgjT15q7rH2tsczgLyfco91P/\n05zumnIJOYVrZrwb4NDh7TkPiOBiLFliPDXSjTMsoHdwQHNXkHuZ+1TQOtWv\nE50eDNHUS0qRO9djHO8KKaMjXg0jBrl8L3gQsvU2lmMLcaeHFWmwVYxTA1nr\nNfwqgtgoLT/KX9L+Gj1+iAIOzm6roU1Xn+ScFaWo+s0JkQ30gU8xZV/617ie\nOQUqZz/1oKZnfO4FKodGzTGAI+OAo40cgRzOm/dQA1TI0gDeNsCfm4c7qLiU\nmEyxhgxBznXsZ+RfzxHfDC5lZChYz12mI65OnmVUHzpVirCtmBYQ/YJLvrh9\njM/BQRzuGV7nzrD0XxAzsquS8jD9+pl4A3Tp7lPMha3P6RAUa3PUruaWFC/y\nNnuwbK5seSXPkuJKqwkA95VbJDCzPsHpwMyyjtLZNuBm+3baBPL4jL6vCwlb\nFnuMCv4KUnQcjUXw4qTop66GqvU13o/STkvOH6pPgEA0nmLz8iqZ1AeEu/w6\nQTTXG0WwXaeFf38MC88mr2Ep9MsqUkkpbmqpM1qDY1eJvMxdXwzSoxr9HrlW\nfiA3Y0ZJM4KtbYeVg2wpGyNZ5Wk/rusjXSwR/rGQUcD0zSML0SnMgj/m3m50\ncHYZ\r\n=tQpZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDDY86cR2orx9kGYcpfcKJYvHRYNqbqgJ2tHxmzf+KaqAiEAi4iJC6OZJ03Ajvez9l1UbpLqb2Pr9nQ8YHuEc/77KBg="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.36_1559883662391_0.48216385988664046"},"_hasShrinkwrap":false},"2.0.0-pre.37":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.37","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"749457d69554814f155973f9034795885fe512ad","_id":"feathers-vuex@2.0.0-pre.37","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-teWrY9cuJF3vYUU1mFy92swE37f2bn7xyo4ZRIwDgYYxt1wVLkOGpCJHXmrubpXFxVNhxFxxKCDqUIVBhWh2aQ==","shasum":"261a5bc6382dc623a0090d538195b91131846369","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.37.tgz","fileCount":100,"unpackedSize":446898,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc+fBsCRA9TVsSAnZWagAAkxgP/14GTG9uY6qbVqBEbgnq\nJ3pMizDXV9aGa0Q82crb9Dq0WLm2hGStpbyMh3UG3lnVC58OXioekRn8+p/v\nCCoqwrDfISZW8UPcuXRMEa/wi9VNVSeOukemdz+FAk+Tpzn5GFpiImi8Ll3V\nmChCCF2Sc8oDuBqwA5YUCdoux/0i6OyL5b8H6S0XgrG0ks9E/7PCSbCxfqRg\nOKEi1bXZMR9VkJCwfHYhLX2pW4HduD6pH6KFJENMD2mS2NbuZRLiJeFaXLgf\n64UNXDQNXb56mjPvQYzSovQ5uTGMA6Bwi0ydwq62iYijC0FaTZVJeqlTaPpf\nXDi7TgEi50plPGBcql61B8ZsaB2zrBApUVcWQBgeNVvUNLWydHHqTY4uz5L2\nPTbBoSOS2/g4ZWjzBs/p4iUrv8zG/Sd7mPA2l+KNMEGjTjUeJnbfuQy2lzrA\nCOubqJwMEXFGAOC3S7aIIa2682fZxwHGvwrSTbhmArKuMlkzm+CKdTpcbZIb\nZLCnIFMti5h9KXq07piLyMvpEBn6mboW9TV0syU4aFxILME/dzwlg2CL5eab\nL7AiWZYW/ok5pzku5BDjGwIERK6vNyBZj8rsofwdG2hRMmV5ZGao2YI3m8uF\n48d2dl1tPJgKbnXp/zT3zkdMJ2wktP1C7lzDimk5XQs9nq+aSxE3YyxBib+i\nVzUK\r\n=LXk3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCB4SMovl4tIqC6sZm2+PgwVDtAtB4Z/U76H8wFcTsqVgIhAIjAu7752VsFBkOaW395tM/K8GAW80k38FT4Xj7WT3jk"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.37_1559883883722_0.5693196541399153"},"_hasShrinkwrap":false},"2.0.0-pre.38":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.38","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"cabe31ba916b1b34084ab9f2b4c3e2d03b3a46bf","_id":"feathers-vuex@2.0.0-pre.38","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-wO+Cccrlnhcbd97zBdYD2TKXAbM+2wxTKZV2CBa8lZu9lLhA6d9asIpsdvBF31pCX3PWXkOhUlSNmfWl+Em/oA==","shasum":"0859582c4e9181ff0c9538354db0bd45558d6a90","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.38.tgz","fileCount":100,"unpackedSize":446940,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc+fJYCRA9TVsSAnZWagAAU4QP/jpodCeP8Zk9UI93bMK+\nrRSHPQ13dECizJYE2Eh3DnnER9bNJ6XApv4sDBYNCj8qCytvtklfZ4cxBcaf\nJQiGGoi5+HCRlZnP72E2b8gSuG1YgMIalu5PO4OzQKD+j79O3qcdxxN5c7m/\noYQRwnh4s32Ji3RtLshOM3rzviW/NKXnHRD2Fg9RD7i4lRfABV4BVkJVp+dY\n5xPcjhSoU0LpNvILLHOcdKjmjCZAYA1heYTPPQqciRC3BW423M/uYo5GNx9a\napa1cEhzfQxHK57kSZp0LL9NbzJ/3pA6W/SRsX+qPL9FgbXqzosE2cJy5mcx\nOdiq+/K5cjuxTOeFIM1pzZSLhQYf3eMMbu4k6SwI2G6uY+aG6PdQdH0RT3mS\nytOfEauCCCH6zEc/BtOEr4W2RYB6N7pUa69bBgY+uYWwcSChRdHrZ+gQzxGM\nTwGDgH9cLLlDVoMe1ltnugQtDvAXHlZ3w4+4uvbPPj0ysR375ybE2TDHN8w+\nOK73XtRIJKmIFU0SM1aAKEMtS4tvNmrcJc2ul5KoL2fNyjB8Fxp/7nUTzSwJ\ndBeuzl7RB0Uy9ioXQBZUdtoAc+lukR1b014oqRaZbmuNGbTywGQWLOfG1pQA\nFLqi9f06C3NeLBNnt5pdW2c6ZPPhmd4PPo6FFUDdSXoudne4jTa4MSvLgyVs\nQiSq\r\n=pwx+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDcTSFrb6ykKYKZVSBd7n7hdY7Lx5/HsDgT8EcPVtUHwAiEAh6oHRqoy6iMZqWwANYS+Vvk9QBLOV+J4Qh5qOSWSwhg="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.38_1559884375514_0.6351446807410817"},"_hasShrinkwrap":false},"2.0.0-pre.39":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.39","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"1c63c90ecb2ebc1fe934310b912f3aaeda1df141","_id":"feathers-vuex@2.0.0-pre.39","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-wHtw6AK4LV2aEods1S+97Uh9PXdewwJ4wonhEko3d/mvKxLYisJjGN7DACOJzvgI40guDCLR1Um/ul5WxndfcQ==","shasum":"69b00937985deb6a8909841a741c613180c8d1d1","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.39.tgz","fileCount":76,"unpackedSize":368984,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdA7xSCRA9TVsSAnZWagAAAK0P/iV5lvsBhNKh5SbvM+n5\n/AFPoxkpJRMNXdmjmxZz1h0xWJA7q9EFlyr+IrT6WJwZdQFkGSxrzryqIdY8\nIW7d5AJwBotpk4YRlI4izzEF6uqNrM0gK/NrvWr/w0T05a5YJuSLejsNFU5I\njv0kZTQaXG8m/6UJUtNR8Fp0i3JmRuUYKZ6XoVq9zeZ7Kj+ewG4GedqlU3Ua\nY+qXt14reQoHcvp063L5Q4c/5dkRCbp0ZlULH5bOWSfqSfe+J7e2sTc/XjGV\ntrxyqeumTPiAz+nNe9Mj+9FdlCP0REx8/ruJZBHpw4OJDrqVJS4+2mbjLCNl\naAqQT0OVAv0Yms/QoPPD1whrZLm/xDE4inLJfjGgX4nya9y1xSApXm3iHEms\nWSrSHfnMDh7O8IxdnysDuxJvGhhJTKcmv+Eho5oEpqiZH2YWX4VpBPYjvKqe\ngLAvKwkjPIBUCKsXRF6EQfJ1NW08D2B7IB72NYOaBkW4mWwqBTbC9J2MmkRI\nHBIqPSYnCIDqGL2BSJLpZShniWJ+eSs3nO7Y6qf7JodhaNWpk4nq78YroMux\nkr/qcjnhDHauw37t6E1UP8v9Xs3XayfOlPDoo2Pro4+xjPC7pgyGTrIkiXCW\nJkH/X57BjUAkUumclXPsjMBz6GLUr85zs6ViX7cgYNo3n8hfWQ9KaCqKMBO3\n3yQ+\r\n=8sN3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD2bVfHg86AY7xhKc/8RfVawMoQNZWD0WlycB4H8cqCRwIgTcbBbTE4YQBu0pfnYMIKT8yyvIGWBR0q4aA5v5U73Vs="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.39_1560525905817_0.5349238909075842"},"_hasShrinkwrap":false},"2.0.0-pre.40":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.40","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"2ecc8830c3c863a5bc04fcc6ddaae1f9d88b7a37","_id":"feathers-vuex@2.0.0-pre.40","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-0srPnkwQ/YNLb/yoyM/8hzPUlqG5mkYcjUheit8vabbmvYrifYkZ3AZixTqhJBzL38ZcdABgWBQtPH37BnbWqQ==","shasum":"89a89ff4d4a417db2790a6453cf87dc1686fb265","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.40.tgz","fileCount":76,"unpackedSize":370172,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCHUKCRA9TVsSAnZWagAAy6IP/0v5ZlhmQU49gRMDDw+d\n8FD7g3qPy9X46Z1gTQHpzWo3iR5JjJskqzUN6mZcdzHuok1Ir8PgKt7J6IqU\n4z9hmRxpNd1zIjJglnwiuEMN24T96j4KdMz7i+7rAOPUjkNk1vD2i7/0kWRo\n9c+rHVEt0zZsOw5xj9Jhx1+ZNKlV2u3A/WmP33m5vgC+i9iTayGg52WfvV7N\nlDXH8sz6XkBEWDCEHcDnWu35qYbadVu+wRpCPy518xB2k0Lv8TjKvS2lkP+v\nDIhqecq+6G6l+MN3ppyLHHyYrWD7DhgMQm4Ad5O6hee8vEA9Mluzpl+ALnM5\nisVejFxoD0qIZxgO/MvONgxbj90UHCrxKkGLi8m9T4NiWhEGH2uFAZkR9PIA\nu33wcf3o68GqUWcX6C1eOytmBG4u9UMhh3rzld+UNLLJymq+ittCpQ/VTWHG\nXfew6PCznZjPQRI2iu3J8ySj6N+Jo6U+VxBRhq39QtgnOhWyVI9hJsWpGkgi\nJTAWjNMyAjG/Q+hUx89ZbzNlo/vjVW4RD2UXCrhkpfdV4XyLMTySunVzkTVv\ndsPUpG6RaIXdfhJp3e/jFyrevCTSZkLagqldJBwNM2F4TEABKrBRHYUxC6jr\nE/CEg5fIU78RoHaD+KSUC8yl66VluQxvHzTdsIGXRv+EE1Y3Mq2OMOoxB+13\nazfh\r\n=vxFJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCm/u3FF6cADwYR2vzybBYrehUVgMTF2Kw7fFZfoqNbBQIhAMubmJO1kNlmGaxp5zuP2KwjD/sM+k8uWuhMAF3QaC1A"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.40_1560835337581_0.7134050261711264"},"_hasShrinkwrap":false},"2.0.0-pre.42":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.42","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"401d8a3c4bc5123e2f9ff1ded1089802ac17d16f","_id":"feathers-vuex@2.0.0-pre.42","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-RRVdlhJuTRYAw2HJjzqrQX5Uc3WstNTNjnSXbp4dsFWCxTJIlwZq03OcPiaqG68f6u6rE4sBiAyqIOoajf9bcA==","shasum":"4ad9a4420786f8437b6b58faacc0ab6e237032d1","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.42.tgz","fileCount":76,"unpackedSize":370098,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCdcwCRA9TVsSAnZWagAAZXUP/RvGKSvHsl0g2e9fWTaS\nZq0qksK8od+bGRUPsp5EWLeQto7hGc4OUd9OK2yhwfht0CqchjBHPzdUYzUB\ns6fS9VIkDTK9DR5mLsDNBua2Bqts1Jrq2KdIG+b2xfbQI6YlopGD+PsaoAH8\nzc7zHsvOa4bkh21eEGYN7rly5AP/2qxw10p04hOdN33r4wyXn3eQGUOj+tRf\n+UmcORpnRI3W5yC8pV2MbRkSHuv7XSda3/oNwRE9Yv7Fz9kPYE6KYSNpWM+z\n/7qvBhpIcrm+0tidwES9SQV8dGQnL7Tqc8rdsHGHlxPyN+CBK+0/66bep7GL\n84JCxBdKAs3L7BBnUPKv96Cqbo5rLPDAv+lb3x/Aly5gobOIZvOhziUMvRa2\nm04rPzLaGkh9rv0+Dl6TFGqb1t7bT/F77hhIn2hBSmB4VkDnhJgsDuYEj9V/\nrHTkVF8QAKVMxMrcvhfOyb3v0LGjDAKr/oyGfhl9dXfKRAxABDH4RoPWbYl5\njx0LvFJ7GumGcjanQE83WQaU4TjkjzBXI2iSTJRdUitudmQcQ6La/oxrCcSJ\nBTPAXBAmsQJ+vmipj1A2y8VQcHWrkLprmVb23qqy8EtzRXxiSNZ0YlKmfirx\nyCk1MF9lifuxOkeBqzfJs1FgMkiJmgoiR8Vn1lo4gMm0jb3O69qqJovaXX9c\nXYeq\r\n=1tQE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCnTcxR8XNpB0skMTZeDzXt8UNRMT6QeDTqlHRhyqHT3gIhAMmEW+QpSZeCxmPHjzR0W97HYgYz7XglY0oPtoC/DDFS"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.42_1560926000061_0.8147750167442178"},"_hasShrinkwrap":false},"2.0.0-pre.43":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.43","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"2e2dff1d8747b0192d21aac250150024f6fe36c5","_id":"feathers-vuex@2.0.0-pre.43","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-ujXHmsZUrhHTfwgsw/AljeRFqsvTCOJa2tI0BEPMraQvkOgRKa415oiRyIdZUbz95OXvhz1C7rwrjDHVFvOQEA==","shasum":"5cf17d35503dd6003719d6509ccaf1d7d08d8665","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.43.tgz","fileCount":75,"unpackedSize":364048,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCmZHCRA9TVsSAnZWagAAa+EP/RViHLl46ZkzBSXIZ4jE\nD5LmIHKKpjDbsDpzKVCfN73TgAZYKzp96VzeDmCjB2ULUuTcRQd2Zu8c1KdV\nnxtcQoJevLoX3dRoJMOke+5uEUyFiDsH028YDj5IoYNH/QJliH7ilFrMfmwD\nbfqmBqyDEFPMV1wPLD/7ENse4H8C5nfPwlOOQJ7vZhjjMCBxxI5uPX2QqjlN\nSR8BILOOMXyy/ERu1khmTpEJ1Mre018tH9l23qtgOvH012rTEZ/c5EcoXhJW\n5G1y9KmBrJsIoVfvhbo3ooQCy5/tGuX0CD1OQKXmQ9iEoNajo5F/y6pOeqJa\ngiKUx2W0MDHKRLcwGdDAc9Alwk3TekaESfjSxJJaxqguJx+h+cWLt36w95sn\nIjVimW+qG2X3atbAdyAnBkfubF7Z22N29itgh9l2QwIrdllRZH8ZRCXlieHj\nf685eyYvsETj4kN+bb4n9R4p72kuvSfKrYvwpT++Gwbi9HHwJB6pTqcpynjf\n3E3LixXY2UoT4OIhaDjaE+9Up2kAvxTzXaEPAXCimSZAEetTmeP9C0bq0lTf\n8rJon9/g/ebI7tkCIkXcPLT6/xSNN7yM84cdz2wICvHChVgyIWELKYOmJyq9\nMB9uYWRrfkOxnQ9VVd7thrAu5/blrtYgK2HVXa0V7EyBwU/AEAG8PJ1I9lWh\nVvxE\r\n=DseN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDwk5FWHDcplH08v3vzuX+yn8Vsyim43O8cHM5uqeHj1wIhAPsB7kA2ZD0gIayZtYJZKG6hG0t1v9eaClgi1UcX8gT2"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.43_1560962630848_0.08537200028161807"},"_hasShrinkwrap":false},"2.0.0-pre.44":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.44","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"0352fe0ef27c1d9902702a65b87ba4d2d6273a1b","_id":"feathers-vuex@2.0.0-pre.44","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-kmfjmcv09ONEVQr40bpDob3hLQDZ13j7KddCuWKa2lhaVnDxOwtWojoCABHnLf/eUYPeaSTPdsQxUrwFZDW4fQ==","shasum":"5addadd4f3198c5ecd5c86f902377f0b8bfc3d61","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.44.tgz","fileCount":75,"unpackedSize":364072,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCmjICRA9TVsSAnZWagAA2K4P/RDbVslOIKLLCv/zJgZq\nCXq3RnU3qd3AS3HwqJ9EmzhkYGBG1NMztc7/65xfN0cHKh1lBlN6NRZEdnPN\n56C0RHy1PJJEc7o5AhAWSegLAmJsGzhuSBIKANl6nSwcXYPGRAM8X4PQ5fwW\nir/5q5t31lpyyC/JNAcNx/Pc4by5f0MEg3AWGPaKVkCDGk3p3UJ5KEndOIjk\nVYZw/OfjhMLNGGmV13wGObSUD8tgWlVKzk5IQAAt4LFw9gs/i7OAowltuBgo\ncpxKg8KbAa/tTWkCgNl6e67dfJSACX1+krEhHaRLW3zZ3N1YGKprJNn0oKac\nUttC6Xzn7JFTD846CUtHIuftK07CbQWTqOsbcCFaxQOUg3JBi83/D0ECV50n\nHmmXAwXiPeHv/G1+ZkRHB9kzxrukP/qc7lIZglNUtI7XopByyQn3X/d0LP89\nHqzQ0/38IOYwVXdKX6nyp09upfHbE40IYB3Bju3bH8a6gRefrtrjfly03Zkt\n3dTkBttfToYsvn3+VLHXZgQnYsWN58sQyrmZc+FzAIc4koFlA4zCmE93aT9B\n1x0XyDJNQivJIpwV77W6sfjsefL8bFN2y5peJfggb8JV3JOWd7i6xeW1Jbz3\nhHmy3TwJy5/FXeohT9167Pt0ersDwDszO20i5lAxhLlHyPxaLdUxiNtNT9Hi\nmUvG\r\n=WAHk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJh/KvmIOej0yDfSY/uLIO7+Rea2dPVbUFuWtdxHiafwIhALXhBl49hWJt6Lrn+JeV4B9eWCW/A1rb9IedBNu208Xl"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.44_1560963271648_0.050081622938515924"},"_hasShrinkwrap":false},"2.0.0-pre.45":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.45","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/deep-diff":"^1.0.0","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"9f112dd28230c00ed7744fc6510d9209d0322734","_id":"feathers-vuex@2.0.0-pre.45","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-5cPo8tyKgeAVVSWRPOeWkuKXNJHSEkWAiTv07SWpPvKHVe/Q0kW7knNwC9n6P+2p5V8ZqqbSfKcypqfoiBtvQw==","shasum":"503085f6e4686c471da78bef75e95e95c0c6f816","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.45.tgz","fileCount":74,"unpackedSize":358388,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdFQBkCRA9TVsSAnZWagAA5iUP/0SPJVAlw8agKGE1mPds\ntCnPu/NSCsIx/4Vs6fyqlv7Cdptsh+Pl6/3U4PMx/qoOrJdiDqsYFmMB/pNJ\ng4mCaWSV2CeqE61byoUOqoLLJRw/u9vP4+aVJh0odhVuM9r6UbaD4XR4SSos\nKrHP5Fxd5mwcE1E7coNLaGRGd7INXqsBMa1Npr0O2OsHuiI/vti36AzLbal8\nuiE0BiJtPUdk6OayGcX95LcF6GVJ6uIVqL1RgauVxxXYO9frLDYUJ6J9wqax\nNMRU24uvN/Y2ZjJ2BW0MVxIZXdbGpjzuZx3TfYYhe3G9bxU3OpAdpdOHxhk2\n5vGqy1xMzohl1hqXS8uKy9N3Hsp483desUkBN/RPNg2fu+sLw2sfOoszq42I\ntpQPIoS9bT4gJb6KLPTvVVtLoXSO4MxbmkigDIx0OVsncphwEU4c2k8qNVwR\nApcuHRPOrkQHcEPVmqy9eV7tEbgvKqNlehNHerVKuOVC4AIU14W9jvdwP5a1\nF/cpyZmLoUD5HXk2AbsmV7q33RaOgErSDQQcyA+HcdOgrQNH+5FrdEBz9O9c\nQQZoY/5xCv8ugWaqPuj+vQ0WtkJEcfAx+Z7sNgJaeGrZj2+e/u1WKwMtrL68\nmIbPTOd0MQr1kLgpfALwWOeqKruFgRCTH3IaMllMSM7KyrqC/7Lk0p1Aj+dG\n0fqh\r\n=nC1X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDOlQZTUzT5tGCeiSjfq89am5ffzf6OwXP1sifqSdOkhAiBm49SJzJ9M4fZtSWLcYw7ytcXd3AtYLUIl0abvHGPgqw=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.45_1561657443614_0.022301549802901777"},"_hasShrinkwrap":false},"2.0.0-pre.46":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.46","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"6993e4adf338f3823fbc474a8c69fb9d209a49cc","_id":"feathers-vuex@2.0.0-pre.46","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-302Ezu5hQESdnu4vPSCbyqyKxko/PSYqje8u012+g3ZTtQ6SO+/sRTA/a4HMpOnPUl4uKxO1kEE9ucI7y60QoA==","shasum":"1a9e908bf68f02d5f65e8659b393b591ddd05ec1","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.46.tgz","fileCount":74,"unpackedSize":365804,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdGujZCRA9TVsSAnZWagAAGYsP/3jBmHbgE3LyR9yeXukq\nFo6oKiFkWxfRQAvpELZHoU7AzpfYUYv+kuBZZnRx4S2aEYZcics3M7x2/elV\nEoLhOrUtFkz3pRzNG8heqyofH2SSGcXvc+Xx3YluqJVEELOdIEHbx9fsZ3h/\n234xMnc3E9D7zdUN1zDee064oB1k+OvKJH7qPWuvTGBzdGRyC1sjzhPalAev\nXMuPUtMuoOxl0WM3zJAt2GRyO29PvHFSlCdXD/bfGIVOCD5ysAJp7sDQP7pS\nCAf6m36fgHPNYsvmhBu5TidZkOsISGjk5T+U9J+8Hbm0jt08eahm9JBev9eQ\nuWb4msQHQRsCCfUru6SVFFndfrv6s2Q+mW7bCT6zzxLqk59Rz36ShmslglAy\nkJFDU1ucvL2wmP9M74OhpRDmdqa/b4fmXDTVN/jvirlPEGLzFsOtyByJJ0VZ\nabeTR+hvYa45ULpv8ekLiuRj4AMR+F7r8AsewHyPA60BoqGJy0+LwJLYCrg8\n8PK+r4eMScoUoSPvTpMntjHwIEsjJIqyIHqYF+QsfPAF91DejZ3IhQK/BUQA\n9WcwBZhOlpto2qOG+PYdiXPeCtSlcgddFpNLx3VIlmFAEm+4/VuDPjCgDf0n\ntpnc8cOI6dBnnCtqhhTENi/veQJMIBRtQ9dAuYioH8KD5TumfHoTQpjtW4TF\nrOKM\r\n=UXrW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC3C3JRgUXfmwPMmyYlQa1Z0OQBo0453tUP6+3U051eFwIhAKGUomz14BNsLizoZWdSJJgODI2Z5MDM7Sn8AyYu+l9P"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.46_1562044632437_0.8980139294083824"},"_hasShrinkwrap":false},"2.0.0-pre.47":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.47","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"0302586d646e1b8b613a93e9dd09eea53314efea","_id":"feathers-vuex@2.0.0-pre.47","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Ek343c3qcc+JFb4BBbnsXjyssnIp5Z7ru9CDz8OoguqqWu8SJ40e1Yxzd1M9tMbc8EvoP64Sd3yRjwlTMa0t9g==","shasum":"bc0e4749a8d0e86569313b224906748802870d2c","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.47.tgz","fileCount":74,"unpackedSize":366060,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdGvOMCRA9TVsSAnZWagAAkfMP/3Ey1egHjEB/yD2cKAlg\nxInXLaOVlgLNg0Z4f2xRmsLv1VdrTBJH8OKOOSu3cJ6JursnnssaZABiZG+c\nHTSgGhS8O/KV3wTixWl/8ZQ5cb5R992bSOm5EoU8zBeHbSHol36R3IF8MoPw\nq5qh+n2GbLGgTxS1qKePhAMr53oieDB0kcHt7kM+aqn/mwysNR68gO2GG8N/\n0+MLFXEcMKJzO3rm4uu64wM16ZEvf9Gu+iubeUZghuWWFGEAOLsb10AlgE8b\nNt7mRn9EZ1mqDYHcoiKSCVgE4wDpHlsO3P1kdfVkBXPoL0f30ZWRDj3Lnvme\nqex+Y2NYwOYnGVrYDzRAsv2t2L7OjnWMBzlqNXDKTGw1zaAqRxQiijSnm8G+\nQRAgwLzx0VShtPgBEcFBPtrzbQXHXDnTma/zQvOPq8ISx5nH1TGJZ3XzoOfy\npTGEBQP+p5f7cuxAd7WzrAGzzvQrMdvkAx6In4B3nsj5hLkqPFaHX9tsr7K4\nXRAOGBhpFFYnP2FpCa22d0iFDOOOjQ/D1Gr4FVgZy6/6eeOCvypZ5t/Zq209\n/A8Sfz79cS32TikjmKA+3XMlWImLh9bnnuMGldiIwIB3+vnEnnvfEYJywtA4\nlhmdEDC/tx2VAXS03FxQG11RI1kXw+wtjnQbG3JIYCArQis+gLapVRRF+5aB\n4yIZ\r\n=D6W2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDe1xA0OaZqeBTMGiVVcksfhKqhH34vS0Rx+7OkKWQgFAIgBsXAD/+g1tdvQwv+cluLWkDOEzEI9bhGNE0KlX3j8Fk="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.47_1562047372328_0.9585069122977705"},"_hasShrinkwrap":false},"2.0.0-pre.48":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.48","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"d983424fef0789f6c4d6d03fe5b35036a3b14f5f","_id":"feathers-vuex@2.0.0-pre.48","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-kgka2c9Qbq0pRRBUG/gLBeFqxuY2mRTOpa4TGUSWtBilmcFeCTfir6vkg7gEpYF7bN1ozkzWt32kwWZebzOX4w==","shasum":"cec02e7cb8fd7ed2ad581b2118f193c443de23a5","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.48.tgz","fileCount":74,"unpackedSize":366352,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdG1F9CRA9TVsSAnZWagAAMGwP/jt/CR5WyUF1XZWlgD5M\n1RyTJ8M6OXT7b5lLAp8uIpemUIsIQYh7TokVYJODgx3FU6JcMtUtxczNpdf5\nyY47rbiUBO3qdmaE+gUpJkjigYenEcZutqww0dO7qEzTUZ7hTrHhYP7JtSFb\n0DAntE8D3duc8qQ1kWPHtwt38JPUvSGM4Qrgs+Ppu4e5PpSl49/0PZ0kRYl4\nymOFkReT0yYMO6CvOKiE+7Ddu53tSl9H2Iu0zdXOHoHygQ1IsZI8hmRf5UC3\nGgoAI6V6jodeUzjZ5KwR3gvNNae9CzmrOUGpqId7OnKMYw/9WNJ6KhWFKgJA\naVbw4Bcih56SoCSBlxmrSU3mLXk/MNPBZ2oqzABX8taZv910CmLl3m5fhCAg\nfcWHF0J/S7fRbMDakNJuue71q5aiwbFkDfEEIWzLGzWBsR+1aMdloVYvLoP4\nNLJBSIxQ7rc4ElhdE96Llp1d+yLAkyU/NHucUQiPiil0HWS7dyrh/mCyi3pj\nW67onNQXzAERWOwGXxmL8jyPk+mPx14qngAPYDfkx7O1JRPQf7Uj2DSwUWXJ\nx88KaVk3FuldMNJofeaMrtyCLjG6dfamScyO9oCFLwen/6AWIMYtq+j7ArzN\nuxCtkh/F01nPmUCk5siwIwe6Ck5Fsz57Xjxq7uN0+X6wm7LDo/o4H9Xmhpth\ni0XI\r\n=DKZI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIExT+J9Ko3QPGEfCkyV4rKFzKrKbZrc2HaCnDT/BlFGVAiA6vrLwTcRfcWufh6eSrP2pliGzexCAF8YW1a9cBuw7iQ=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.48_1562071420341_0.9249126471215203"},"_hasShrinkwrap":false},"2.0.0-pre.49":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.49","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"c357e655c80513146d22be932cb391fe9938b244","_id":"feathers-vuex@2.0.0-pre.49","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Ba5VTo+56nAScb53hFWMbVJ7dWZQNxQo8ndw65Btl5xVYdGiGSG0VL4NLEe723M2BD1QKC2yylVjdT5L4UYCjA==","shasum":"ee0a40d5b7b6ed81a21226432f57a1f629a0af03","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.49.tgz","fileCount":74,"unpackedSize":366270,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdG1LuCRA9TVsSAnZWagAAGD4QAJbLpXP9psgj+YOs/5kK\nmt1W6jA4Wy0KbV1lYrp8jBIuWjMrNfnNTiZLoZgALvfZNF03ck9aia/eO6ju\nrsN+7UO4j7Z6/y2Y9Ln2nFJOQNhtQDoggzAEVq+Z0k33bXwp4LEpAa/nvI+e\n0t9TuDA/G3w1A1Y+G3JM4poywCdkbw96cnxR2m/LnjqknX+QleY/HtWndB0A\nZoa/36OzzIqW4tEnRbm6ceyJzt2fcDhxzPfqlt70ruvrYqrY5Z8rsrbyO67B\nbW50xirnuZsLbXpLNmtReygV5OOASynESM7RQUuuBo+saTJqK3YEzon+CXAc\nKN23CENMp9W3vKz/tyIGszzlg1fb5tHYauwiqR53nnnQPNnKObnwqIr1mKZo\nTxqPQmxjtXIcpO4hM3+5Y0NV2WoRy1q0T4z/nI0NzDuk7GXOu84Z9Nb4TziY\nbof1QejStAVGxHvXU1hTZQreG2dZAF8sSrL8KU3dNWpe2HLwK/z/V488/Ncy\nTynhoW/8ynG7wXz3m/Vm85xd1cR1ALcIyV15QgmPTykMgbJ5KPgtOS/AUpwY\n05hfeVC3bZKoMFX4YNOb8ydY7JrtcZVxntX7JlC2dcs1hnjH0qYhr3cTFBE/\nTyvY2emLjT4ciwQYaKaLXjY9+2pfIUK4ugAlFap838HzV5Ic3yU48pmRgcF6\ntsWX\r\n=UFME\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHhxP28R3/ZRpdOYqXDcX9Aji5KA5KmuL9dbpma/aasqAiEAgEwc/glZ3Y4XP51JOYE6W3D911VkZOg2IoGNMb9+f4U="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.49_1562071789816_0.3503470854537618"},"_hasShrinkwrap":false},"2.0.0-pre.50":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.50","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"99b497a54e80f7771dacdec4bef5b81af4011aa4","_id":"feathers-vuex@2.0.0-pre.50","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-z6ADuawWRSyJrQMqXAjsGw3xXsTOQzxx/dgU/2EFTeCY50zDR7cXdbysgCxR53p92GhT8FiFO2nG1xrbTeQzUw==","shasum":"6608e71b19fa2480aab84e02426d60cd529b0c72","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.50.tgz","fileCount":74,"unpackedSize":366194,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdG1PgCRA9TVsSAnZWagAAUmEP+gNT/09gJvObdCTQipJw\nHO5tNMnHwYglW5XkGG+pwXtYZzLXKm8Fn9n6PT5aPbLceFwWDs3C/gqEsgWK\nU+ZrOvvHRchHtSBaIgI6URbGSgUdArhKVEsSPj//WLAEWarjBt0ovE9Mn7Gy\nHmhF0mYl7uRSXiOJbHnUoVG23+QMKBhM8rJqgL/SpJBJwsGvicyw9v5FbTgR\nnHp5UMp6oTLoFaNVF5IeJTznzmsptspLxnLG3wDFxbflE9oFghTYAeu9NeWp\nc+aQirx+r5p76Y3HjNep7fEBFnvds3NBbZbBRpFggLf/Ot1n35hPZVvDzYmF\nqwSWRRJXmta7tYDlZaCq0fY1gYiu2LMAH25oUVxy8ma/4wJ5wq1ZSjuHk4i7\nNiZ9+DyAQjJNlTvmD1PQwPUjmpSXkcy3i2ZXqdVwtuEpq+yXdU7upRSFUPA9\nPHGDWX7ftOhHB+eb75nH3VqKYscTvpB6xOnSDn+zuo9WwiDufvz9tGTQLFl0\nQ/uyCWR78vfD3tBpF4zkvRNucqErxoQhPWUf1IwSDhCgu5RnbJOSrL2xjQYA\nVmKJGTmTqamQHuB2grZV54jmT/DTQdeqrUSah9dWQvGPoGnCthdx7BHc/6/n\nNVeSFxe3cA4Ve1/+8fj5c9tPJrK6Ha5hgBm7kOAYoWTlyn5FrE5gNzoZ0Ah6\nwdLK\r\n=WFni\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBm6E1e/vQ0WfmiivmN9OVDbxdpIMtR5SaCi2+UxPHKzAiAZsnoSnaIHu9P2QUt11nffAYsfoXOVNu9iMS0KDO7Oww=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.50_1562072031729_0.26209651076380514"},"_hasShrinkwrap":false},"2.0.0-pre.51":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.51","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^0.14.10","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```console\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"8a0e310d8aa6efc3806bc405544ba971da592f09","_id":"feathers-vuex@2.0.0-pre.51","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-dP1WZDQnnEThE4Erw5l0BCmyWsvMz/tOXCD+8THSgsqCx4fDTu7WuxzC/TvR4o4V8plN3QwB53HyR2ydJBBAaw==","shasum":"752cb74f35d8d69225e79cf6779cec3bfe50dc0c","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.51.tgz","fileCount":74,"unpackedSize":366316,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdG19OCRA9TVsSAnZWagAA44AP/22NgYMCpV2NsFuUH9Yd\nqDiv4CcryCaVw78PqtQyrIjGv+7H9vZrmN/U47GF/9RcsWuR251PkO3JbhEI\nTmIdwSKotSB7D6a4x7KnZJMx6AOBgZrN1YvTYFNfaeDtYIodv6cz9ENEvRn8\nlfeQe5v3/Np8LggkiZQpucfaOuoWPnBMIW8PrPttwOkdEDG4gNeWSByzREqM\nbBZwNfT1Py1agJ+OIrV16lsmy9y5TGiyyaJcnHWeuYa1/mgEJ6RwRV6RS+gj\nT+jH8RDaMOrrpDM00Vfc1MFfS7je6M8pM+fqemIS01FNuNXX/ReejHCGzB9s\nXLa0XjyKCj0x95M58VBdSjgVwO662cEyAQmfILqlESHH0QiW7YJ1eVfDCFg5\nrzlGL1LMHDpGDEniXgQk1dxy7dwY9htpaOjyRwJCRkkVKRJ17Lz5xZjpADHx\n7jKutb8Ga+L6qI+jZ2AA1hOLUQXzXjcPNKVtq9PQpFenYgfGWpmDoFx971MX\nNyW0UkQz5c57KCXgbEOvqXjfjJIigKip+PC8fJ2kLBlDx5pPLgRfSDfuoHb3\nXXBEmJhcrHdSELQrEnmSkoJaDZCV5G8fKk1VDgHmwmz9AEmmBxIf4HZNPsqI\niQHxK8hGtaMfjNRqik2zE2XE/Qml3PjOW3uSKAHKmVdto0q4BGCu6PK/PcYH\ntJm3\r\n=R7I4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBiHsJ8JjxL2Kn1uBesfEMdisDzy75XIxGAUVtDWXpJTAiEAhA5smIs+XoUI1MvpZ0z7xaOGnie+KXvsgaVwXtqX6Fw="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.51_1562074958179_0.6319890655789224"},"_hasShrinkwrap":false},"2.0.0-pre.52":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.52","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"f829a1764fc9d21f2f81fc5d3932c4f762499aed","_id":"feathers-vuex@2.0.0-pre.52","_nodeVersion":"12.5.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-1m4cHGZFw8yzJZeQV0sAtaWLhXdxqkHWnbSbVYHPLoREfpmJX9mJqOeMdrjWh9ntz5qebY3JZblTQRE2+oqBjw==","shasum":"41fecc293f4b3b59f352ee43af67711461779675","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.52.tgz","fileCount":72,"unpackedSize":369185,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdInezCRA9TVsSAnZWagAAb48P/inz5g4jvIxQ0Vz/jxne\nKcGyBz5hr2JnD0lqsn28KMlsS1HxaP+qIR88Oqz2LtS5h4DWXQTkAXaan+cp\n54f/g/DwDHiXRwtZkDpRwiqnij84U3CREX6H1oN7y2OhBBoUs3nvU26vRikc\nYIsEwCtp17mNwny/yAr8tXPu5VJ/nmpakT/csblZrtTe37WSH2cB7lz+fJr4\nrPAGlntRfBEJV0FewwOTox4MK4NhSHCz7g5Z7R/nbkE3q3A4vrXeqZ/Jqz34\nUQQleFP75yvO5qwdeQoMaOUy1F53YZ9AKZ6G6+/oOot4TNWkAymwjes1PrNX\nh0wD9hHvlbLtd6yLbmcyL16lYAlHfsXk3nBMOxh4ntAcY6lWwQ03Z/3MUkhw\nZ43XBcgeHEpTxz2pdq1s4fwSHeS4JuvOBpCJztS7hNdKiMYtrU5YGgSp5azW\nvpVqIBsCUFrCSpTmfn4k2X+OgbZ+B94qiKKKUMsdD5VNVquSwTRicsHjAN0r\nEs4ICVWPwmwG3T9K1FOiAl7zxVHNImteeKjoKk2LgrwnHsQ4hzuwE7Wmuq7k\n4cR+ghMomcFlAAZvMS3XoGYQ/oaJgZi+BAjRfjz+epfvfLXldTEaRpgpcSH2\nqHO/GT5i489pCJmlvzF1jk1Foduf2Ez+Hec0b/2XYN5IG9wa4VxMvKLfrVzY\nNwnN\r\n=Zfvu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGMY2PE8zB+mbHZxbCn//J/cqXUFI27qKUHg1eIloAV+AiBfi24dvON0D90bkvowYXlRsLJh+ThDrvdyfOsJyjdc9w=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.52_1562539954698_0.9518564588702012"},"_hasShrinkwrap":false},"2.0.0-pre.53":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.53","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"6438f9278ec3ea3adee909d1e8fb9f335f57020d","_id":"feathers-vuex@2.0.0-pre.53","_nodeVersion":"12.5.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-FfvPZRRSvqlrHY1DoO96QmYEin7OY5iq/KY7WhB62oTzv41Whrhp12FHFISJQ8KuYmozNcXFxK7tMNMizSBgiQ==","shasum":"91698d7f36ef5c362ccba257ba3163811198cdf0","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.53.tgz","fileCount":72,"unpackedSize":370422,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdIpIKCRA9TVsSAnZWagAAtZsP/0F5a7LrhwG3Wa5xHQX+\n3mcKLWCe/vkETT6X/hfiOnjvvlDT8z+byB29p2FcvwXZ5H0RGgWivF1kera/\nPeZ/sIi0jTaEOPLK75zWkBa+p1hamTKqc6cBB6IoayligENjpvoiges+Npgm\nTeJ0ogheMnWFVFAgZ8yrHw19HtdJKgQGVd1+SOY3xG7cQm9scXzBbXJNx+An\nYcWONS1GYIQaSzOrgEgHiiZc2prOAXx0b9UVHxj2x/ynaaMuqEMyP+KWswlO\n4GYR8rhQwLb3MM8gneuuaU0MKJCw14NBeAkGLxQ+0so5F7UIUrlycfbuN2MO\ncq8Cz/g/1qzZKH7G7m0mwQ+zlu7H9R49ODksu+So0WfT1VIW+CcQFVs1XLBb\n9pYSMPKBh/XjHkJ7qHuxqLYFxyFv/7khrvb+DxY+rL5qsQtjZWBRfg80G4G6\nX0jXqgAbnzoih4GeIJb2Q9oRXDxGbHS2wijJDozWmaulAE53xlYPsL3aIRMS\npYKEv612OfmhDqdeUr31M1vhfgDHV/5wDSQINyGBw2vqilVNReIqOtZBgAMM\ne2nUxy3TrTB+aJjPYXYe/8hhr68RKmLDCaj/RxEzPTnO9J4PT8RLhYw9QFRl\nARLd0t3UcFRrIwnTJtUynlps3Q/fBsDCf6h2jnNo3ef+qeBZoaSVtEK+PwS5\nj42m\r\n=dT6I\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFJOUQvY9UxjNN/SfZEAPHKjtE3Ymrbssy9RP2GqfwxkAiEAkkLje7/6dAgsovOdiRN4VD1yTJp0QPy7o2+fQLgpymc="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.53_1562546698057_0.5470955727915858"},"_hasShrinkwrap":false},"2.0.0-pre.54":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.54","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"88c8074a6272504c782095e403338740651593cf","_id":"feathers-vuex@2.0.0-pre.54","_nodeVersion":"12.5.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-vSavcllKSWUKUsM3r+3Jp/HPB/MqHkj9uWWCSsnOGx46UebAYKYxq5bjMoc1GDnuBqlld3cH/4nowdk4B65bpQ==","shasum":"1ce8a319ae2484a7f5a2b8f88ff037c4e55c9721","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.54.tgz","fileCount":72,"unpackedSize":376873,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdIwCXCRA9TVsSAnZWagAASnEP/Ax1SN2ftw39hJB9/CN4\ndYtN/DXwwQ0cqoSpbui4RcukqOklsX7e+dGM0GsBd9NF+OTVBIR+4W3t2WSB\nitZL8t4adgq6rq8qd6IrBZPucoJDftaI6kv/u9gjuwalAfSf7QV6y2Uw1+1U\n73gTTCLIS38Q5kwYC1F9yaQD1liSWm69Yq24/FK9UfT+YG3Nz+Nay1qNfM7x\n7Z7Qk0wpY8lqAfxqQiMpZT06sI4mIIR152a6PR+nNsld/yfDqJCUHrg0gAUs\nld3iIkpze5+502JbYsBlvg4KSzKfPXoLihPfvNFbeL9gGLa9Ghbt1zMuWkHU\nqze1D9Ps/1iNSDyC4cfh7PlYMvuEGmvlH9rGX+YqimsBDWnawo+Y+KCT4et0\nzhch1C9zwtIcn2EDdkTrkpNuorqO0NNMMEW+pTPHrJxV8l61S8U9UQfdtLD8\nhcgLth/UwxpY0ePKR2LH2BCYhm4p3HaYE/p17RjKFfJrDjY5iVs3d1NrXlBV\nsLgsl8uCh/gdY5+n41H6DsTZPsfncc9JVW46OxkqwHpzwYqtvdTXDGdwXgOH\n03RAbQIwWYIJ8pD6Zjqep6b4ITiG1ImUoEPFsGeR+AK5A44lTIZwDSqXFWfj\nE9JoBMJK+899UQ42olL4NUrsm33nFcYT4EaowfQAbaEjofjM/lrJ304AonR3\nbTd6\r\n=UVQL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC/UXs949spiB1F+qV0CP29WfgrPZJob3Ex2EfKNu0KmwIhAKJNcb3BoeamHss0qNm2ZrhljiJkTd2TJQZi5N1YjtIh"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.54_1562574998348_0.04985114282531811"},"_hasShrinkwrap":false},"2.0.0-pre.55":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.55","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"8308f2a6d2eb00a10b25f34e69ce558be52bfd3e","_id":"feathers-vuex@2.0.0-pre.55","_nodeVersion":"12.5.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-edW6tzwoMe11alRL7rmheG6pPFFHBmsxDi7fgsRcmZBcazirGnH1p9CAOAyNmkcpMUO0n+h3NIDpCan6MNKSxQ==","shasum":"b03c548d1156721598a3f93948655c4f39b06ab7","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.55.tgz","fileCount":72,"unpackedSize":380716,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJCQQCRA9TVsSAnZWagAA0EkP/i0qIuqdoHTBg+Fc0Nfs\nEbxXDtEKJaOVctkQ8kpSpsnKWCnJz4ibzHqhTcuFjTTEAC9upCekzcNK21/p\njCJOAKM+vMg/TZTvuSSsg4fRoOWVJF+1qb63NofSnYyGycZ+B78qqo470jzP\nE35RlSioesGdwaCuITrYSfI9KEruZV/NtROLl3yVnHxFE6sf6bbjwpK2Q5kF\nFp1rogWNiBJtHKolGVbE9JACf5wbMF9eD4GsEM6AYhozREOH9JmVU08gGJAv\n77Bn9PHC1Ei4mdozNNkLlLqUkIHXW5aFIPh/Ws/ih5LL+35eWNBJMRzHPsoO\nRPwahgegPes37j384TNG74shhXhBWIbpuE+EtCh8VZXNISwNx/YfV1+3TySM\nHAwCSVeQKT6av28/ARB0PEaqR619DAoZtDKhEYOVaHFsCXSKGHI+u7xpE3ik\nEE/f8qpxnA2o8yDsx/H9RJE1ZXInflCf7DwM3Mo6kop8gIlEhhCM65e7mBMg\nbrvuY+EnPVhMD8RQodgU22v/5fb7r4tg7XlhwSTbyETCRg5ApRgJ3om6NaA+\ndNAihVRgRZSAVJvF89BjAgd02+n9fiDS0IfX0g9p2x2p8J3IU+NTy9sEj2P6\nkPHYPCz2lJmorkH0WphK1FhwXRVg/FeSyZPfSTsQS+fmmYWbGI7K1r0N8AAx\nhMtX\r\n=Ez/n\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAjHP0noiQkcwVb6ZjBzAjn54TL9qurBP57NwIVX4r+hAiEAstlN8QddVcANrSEahwiXCh5Ixffisdcb0uH/tISU52Q="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.55_1562649615371_0.9716784504567839"},"_hasShrinkwrap":false},"2.0.0-pre.56":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.56","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"b3a8d6021040844dd8dbad70b0b810e8b8d9d481","_id":"feathers-vuex@2.0.0-pre.56","_nodeVersion":"12.5.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-zsjmF4ONUU36DomwjpnI0BgDBz1qslVMSePvZ/qioiM7HDdwWJrsxxJGaazFlPJaIQHL3Pt8LASkxwqdV0RlgA==","shasum":"fe64783ff0d2b2d0e10d9cdd6638f27f338c8036","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.56.tgz","fileCount":72,"unpackedSize":381829,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJUH/CRA9TVsSAnZWagAAVTsP+gMzXJ3jnws1Zojhy67A\nRXDyVWsebNadJ47AifgVeuM9EA0cCRvUa8waolrzdDmnK3sIOnSnOkkq6sYJ\nChjnYILt9JEwQ0C9gzki3Ml7wu3fjiIt015iKV1w4XJrw2Znosw/ZHgoBdNO\nUYthgpJ7YBvh+Gp1pVillGiDY0hYkNTG5ydyOjk1KTp0av3QfgCik5GvZhXz\npDgGzWXRY6fo/EfNia84eGIEXCa382lMHTrLytqC+dCn9VC9XkpS8Q+PaWZX\n4wo74Xxa0K8Vgfj8MPCbg7hCUiAwD0y5twyLYSQjjFUla7UOBcdFrTwOKVyJ\n5ojbOT2Zf1M926bpj2B7FHpB3WZVdqtkwGKtNI4Ua864MaaBbr4r7mncnwFx\nmQUMrPuEloqI/qm0hY5VGyBBya2v/HjLubkAoNYXkLDe/oszOeegInnE73lJ\nAVTngHBCgZh2In6vb3u2KHEAkkwcyZv+RlJyTii0EGFo+g74P4cuBtPpmDBl\n3qTV0D37/4WidsTGfsPvIucwNXkXpz628pBtszih1WGw7up1i+MByY+qdCs/\n5/dzyjB3ZI/0dhn8dSJnjQexPCcCX7Wxu33SXGNVvBo7jtt9ryYRKDFyp+jn\nLsZ4AK9Vgx+J09cP8+nmm6ViTEKtifnfbmgPu7CLyw81WM3THcgOkR6rszPf\nujr0\r\n=R2Nv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF6hpAwl2LeA0e8njOQHOc7gSKoXynLVyn+SJ/zUTxdSAiEAoRHIBt5wnHVaRNuUth/VajFJK+FF7OSI01//9YjltqU="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.56_1562722814993_0.14365170974006647"},"_hasShrinkwrap":false},"2.0.1-0":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.1-0","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"e3a2c28d1fb548e844c5cca1850fe1efb2755558","_id":"feathers-vuex@2.0.1-0","_nodeVersion":"12.5.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-VpbDdzFaNgwvAaz2LSvbJldECLthhBwOXr5EGxyJsNnegmKg7xbwI6m5eSb115O91ILM/SNqJ72BlTEuThbrgQ==","shasum":"5ce8e64029cc17c40c67c12e1e23c7ca48442499","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.1-0.tgz","fileCount":72,"unpackedSize":383108,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJWYjCRA9TVsSAnZWagAA8RMQAJSwBb4iOvntU4+iKdDn\neAz65dhqjs/z8QHz3a+RuQafDa+0hlLDY1qBzvrf3tAgd8N0Um7Dt2sn9Fi1\nEU571QeI6KhqR1EgyqLd6syWbYwIXZ0sDbVFYgCoShGkbDb1Z6TTiTA0kW9a\nyn4Kq+vnn89S0Ri/aLp2bYJHGDoM6Si5VQjDtg1iAIgPL+nMVFsp6bFzzpGZ\nbxdP59os5PO2415EEk2xi4zdSbL35TwlYtmZGbRDVsZIB3H1Yr2Wy6xMEKDG\nKXI8DJRcCMVuF0AaiBKRveAAzIHUdX0wvaZV0bNjR1NAdyQkHLRwFEuYJ8N9\nTWuzmy6MHJ3TMZSwNrmi/YEclsByFonqCCOy9wuwbcTQVnB5sXfSl3PTN0QR\nabcq2RxFXPdJ93eWphHQ2N6RWQWBK/mY/xMFgJxXyTc4IoLPSQx0sXoZq46U\n9bpwL0rmLLOtvRH/8JgxxWsDxr3haiLz0K5Gb9+5yBreCwK+rxdspIRNHUuy\nbP7Ybgl2QMCm9tGAs6uKq4ZpBp9uY0PaY0V1l+ClKhCDS/Gr5eEcbB81DSoU\noo9wQD5IeklF8nYlo8eunOE2WGk23/IyTdzZAYvbolfdoyM7tV9FJNj4snH2\nqe1JMPdjmSeycBU0BkQ8UPSDeu9hxl3hL2sY5r3anztEmJ9TA++wkFUnfC/9\nyYv7\r\n=aWsQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGGbKXMzvzR5MWSNW2OKww8slPvInaeFNHmvn6p6bNEdAiAR1+IjobSjd+1VPI8w769wGDEXAE4mEgS/j4Qt6u2dvg=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.1-0_1562732066407_0.9917339875920106"},"_hasShrinkwrap":false},"2.0.0-pre.57":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.57","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"94ab8ee01c8362d1e375a4c654985d69460b0f85","_id":"feathers-vuex@2.0.0-pre.57","_nodeVersion":"12.5.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-5wRcECn+Xs5EPRYsLnmFUjbzvwJEwhWd3qbFA33hcK44yP1pEbRwycJyy5cpeDAc2hcQkXSU3b3tsdV8jYjkVA==","shasum":"367ccc9c772b009f774005ca30539e2071ff5a50","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.57.tgz","fileCount":72,"unpackedSize":383113,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJWapCRA9TVsSAnZWagAAetAP/2HPYF7OVrrv2QI85pbZ\ntetJLOmqxKf/nGkghNpPo91+UOV0iXGp+7Z1f3kN5LStCsgSZX1m1BfIp8Xz\n8U6ZL7Nf2lmwtZvQZ9C0D8db6FJ2LfkIfkmnJyaOMcnT/y55Xjt+lzlAiDyR\n0LfURdue1RvfVon3YR3TKLOsZH4NWrz/t8rrnUM19Gf7DTUqRO1Is5G1YaWO\nYRQm2TZfXkT1SdXdjWpHecjaZbz2aJOmOEih8M2JGu+v3XLXPoBV6+a5U8Ps\nRW2mXWvnRiP8T0asaSy+n9+zlEDBfgmx1FE+5CtLM6Apb+mSoaUtdf0QfHYr\nBx6WBmMGZytRznwxId+GpYyGFMog6FZcN1uDolKkihLQ3iLmd81sGYLaTS2L\nJIB7bFl/se4sBTfZnglMEUOa9PH8EkSCpCjFTaSOeKtFaslN7ly7IBFU6gcy\nS0l6FJtQKokDy6PJ0+8SsNe5vezyqduOdxqEjbtAfv53OvgYfJhxQf+9QMNr\nSMS2/7jl09nSovT5pZoA+EdKvFfBTa3Ilnhdz1nODehCQisUC3RcdVs+uK4B\nTH6yDnAHPeiTQWcQhs/oNN4OuExuEW+Lod1REhzyJGN6mEVBMoXWoQlMkXJj\ny4zdvrKXGNWgl0n9w1OLuoL96uNv7hjiaQYL7o/ID6N5SCXYgIe4cHurTylV\noyz8\r\n=a98Y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCbRkZkfFexm8OzXhhaUxegy3QOPP0ejudU27+kh0d2AQIgYb0Js11gvW2+AhKN4j6XgK9vzRqzuduW5fx/niOLNBI="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.57_1562732200958_0.36687313645380404"},"_hasShrinkwrap":false},"2.0.0-pre.58":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.58","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"f9f2a45d7645b3d01795fe05a1c66b5cc818fff3","_id":"feathers-vuex@2.0.0-pre.58","_nodeVersion":"12.5.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-a2kHT/BuB7RpHmFQuuWPNTU6Cl2IEgDCCm8PMoZb+PbwL8EPkJzqHbF9+qs3bRoLZKGAfCOnBE3mMqXxYHhfhQ==","shasum":"32c92ee9dcf78c5164c5dd5f7082ed76b80bc9df","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.58.tgz","fileCount":72,"unpackedSize":383133,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJZOTCRA9TVsSAnZWagAAnQ0QAI74NeHm8poY4tcKwejM\n/7Y3+vyk4PZMHFpNZvTSw9kPKcsgmTDNnoo8tufpeaWWQ8zrLj4oEWEJoGPC\n2Ne15Q8GPOOssYsrQBgyZ0hJnvgsFgUSk7SWU0ItE2wPnmRIFnTNC2jHuVVX\nTNBXiI85D9p/FVBIhp8mBleo2/MlUYtVO6K6VJmC1iyMWTH/hZPx3+bLquMd\no30Ko5irxZE1PdoE17HPOL+E8RwnhBkqRtcBtRKpLm5jj2PPnUMB5fDAlna1\nktDolXsZyFXcT5WUCWkYZ82c8zD6o/TG0w7SGgKc6Xaz95m4KL2QL1+GvBdO\nwlo4Pg4tY2cMNJMw44qHCZ2sX83AtysF0g4/uJFpiywTOUCEg0qjyyuL+w+I\n51Hm+CoIWV1peAG3XASzBIKtAAw8AmkNCAibOM1nNtNzrXK7pecxGzl1POd/\nI68Fk6wv/sqSQkAEYeUVJvPT201hamwbgP2U3CWb9SHlXi9clq1IqlA+pYqD\n1A/JzbwVkadUhLAiT01TqL20rFC31MvK5VtJ4MjmonISxPc5k4HGapU/DUU5\ntdqQcKdHHsiNQoST1zFBG2LEhaaePR3KQnsj4pWNsyrL/4hXfs5XJjeQ8Ac3\n3aF8PEEhOUpQ6qsvLmvB3L3b9AcZMyJUO8LyPredJLQOjyG6cXrLYE55iF2G\nkOVQ\r\n=kdNZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFyyTSjNEq01SgtxOTH0ocYo73IaLPWKrXL99Sfg5kT2AiEAlkPrIqoY5dHqrDlg395oB2D9AyYzBLHjUEq9Mm2SnLo="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.58_1562743699049_0.7912245337248744"},"_hasShrinkwrap":false},"2.0.0-pre.59":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.59","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"f29a76893a2c1ab1777e53bf344f20ec18bf5862","_id":"feathers-vuex@2.0.0-pre.59","_nodeVersion":"12.5.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-+0TXta+ESs9+VlhjGNAQb3OIylIFwYX9WKzFpY236/CVRZoB7VbhiAzT0U5AUz1AyCsA+ozRnP4v/Ixwg2ryNg==","shasum":"9b8171e63a800cdec58a453fb411330cd9336c4a","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.59.tgz","fileCount":72,"unpackedSize":383075,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJhCzCRA9TVsSAnZWagAAqdoP/RpqEjS3zo7+NQ6owQ22\nr3djQ5ynTWcz8KxKUa2G8jF3wGx6BMmVPXFEAxzW4JczjVC6N/PqPwQC3E7r\nLMZQl3vXOMywqGQ71tQZH9rKHsucyYMo/Nv4NMQ0ij7LAlHVrG86GdCGW++8\neAA8WCeI3krHU735UPdqxuQT6lo6qEirh56yOT08/UllpNn/s0JwoTmgA58X\nQzB83op/gmkYmkk5h7XvjuII6ik3KpztN2J7QSNZBnrZ11KBIF39Ec5wPnRo\ny4qLKGKCoyNiC9t+IA6F5iH+D1L9QWqFEal/udS96Pmwc2bgYsZ+FBqhN6KW\nph41vkf5qXP6FTad0H2Bqem+0Ly3nxPwujmrh5s2yZIvyXuHbLB35Q1L512U\nM3rZoNWoCjiB+yxO1faUtZ4ldTeT3am82cA3+snWp9aZxZ5j2eXAsIhz5td5\nT/YK/WdPp3K8lR07lx4Yfq48fQXxqK4aHGLfURVyDxdura7mGgJhAUDki8PA\ncOXJRTE6OEiQP/v7jOxTN2V8Iw5T6rCFusyOjEcC8AdU50LTndTBqXktngyX\nntkM/7gxnKkB7dqtkJ4IcyzH7ppYFibU7yxEzdDT4piS5ipktPwRO90P1zlq\nma8tk0NIa0T5Zy1zrrVeg1mIVzyynXBXVMGYJz3c9X17WF2PC6TyejrJmLZS\n+aFK\r\n=WcCc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICcfWN1mC/Huf3Bp0do9alotNpSC2SyB36mSPvBumOiDAiBzyGWWfQ8dAJ99rE037NoC06IuYfhHLWHdDBX6IwRmbw=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.59_1562775730961_0.8169836730626121"},"_hasShrinkwrap":false},"2.0.0-pre.60":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.60","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"5645d34d863cc59a010119ebfe11c697a7a9b186","_id":"feathers-vuex@2.0.0-pre.60","_nodeVersion":"12.5.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-dWS4bT581pGK/ztg9tqcBW7quUNhR9dNhV/7BzwT1IOrFdwcZqINLCaiVm4ogmwRwu0MUHAuqal8cYfGqM+U7g==","shasum":"0038193dd66e43171c1bb567517689f95f054f7c","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.60.tgz","fileCount":72,"unpackedSize":383085,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJhHLCRA9TVsSAnZWagAANQYQAIYBOmKbgBjFd6+kQlGI\nfApHMNa02+Z0JkrSPgOkZbXoPK1lpPzuQMa2VXC2ASWtAgY7f4QocwgfwKeW\nXMWOO3u+rnkUZGt8nysw8CAD5ykhnYpKwk69rJY/tYx/RKIHQH7JJwby8kFs\nzzT1C1yZJHWvl7GJ3JF5rMu3MAGPMTjyjUlhziTAdMcehoqi/XTOVZrr6vWA\n8Ldr3qhGFiNgPB1E5cpnpEhrfJZAZq1qmXJRoK+Jgfq3Tmvp1eJN//Lv2l6z\nJ9wDpBBlzdz7n7orhvS0qxdgcugmZT9SzlVjAmyooxb6jr+HzxZbvU0ew44l\n9Le6b8ZY9/cwKbIyaRQV07Ma+CLkGsgHZHuPfaM+dTiOP6pkr1Fxw9fOYMnR\njK8LvHNFw8RRoQMv5ttrE6cgTmmHUkwCOYVs1iwygL3v51ruDKJOBQs7OkOa\nQ3pjgCXoAlsVNtzGs2+KcaxaVIHc+TgbWt3bOd9QePWeJ0ZZI9j+QtSmI1ps\n7moEVbpOAUrQwpeQFPbbRCOhqy3MhCQ4FLkVf7u0b2T84BnQ/Vf6eUV07ZoB\nNROvEzz0Pz7D+MwrMV8AfHyCtnGSnS9pJaFuRz1Jv25edqIkqyBxd7Iu6BrJ\nULe3V1O/aEr2oVxJcvnw0nvMz1sAN1xpCCs7IV8CzY5vUxc1OL3QbPT8OziD\nV8kN\r\n=Qc0I\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA6iRFPHwqv/6RavbTP6fZEsQpf4sOIy5+ykUs/b9QkeAiEAywGT6pDMVaSZz6OjFfbeWZc+ywyXCypxKOoTl7FpAE4="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.60_1562776011313_0.5851879980185102"},"_hasShrinkwrap":false},"2.0.0-pre.61":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.61","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"fb46f35216163f28ecbe62f0f3deed64eb8a6dd4","_id":"feathers-vuex@2.0.0-pre.61","_nodeVersion":"12.5.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-xqh+wg7/gk9oy+EAGr6tdSitO5GDcJijXrvFnywmsFVQbPdtgdTlBhlkHJ99oE37MzyH3H+Bm1fUiouQJiQMIQ==","shasum":"ff322f9646217686ef0e3baba8525a2b9bff181d","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.61.tgz","fileCount":72,"unpackedSize":383203,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdKe6/CRA9TVsSAnZWagAAnlsP/AjjfAd1lx9frbVb28Xn\nHZI9lkxMcP69VaVI4kJbRyOxnVCMjEc2w2SnZUO3cp65DLYQv6w58MkpIb/g\nMklhgyi1U8gFWTGDVWpZggy41iKGz8ZLqvYAWUODK3e258Bfqxyl2NtCmvWT\npFnEAsqMTDIDOCkB70Xtb5E70MyzvnpyYSJ6X6LTyvvjmNUEqEs/TVSZsJdU\n6cWmIIUzwMYcW6+GKBLdmokwBjbRbdN+mQzrr8CC+mecXI1UugvaUYR9Da0O\nXvT4mcffMXE3msqSTDy9S8OXhPS1HF01674nQc/ofQ5h3V0cLyDKpWnEvSZc\nbusEncD+PO2BHuru+zssJB3OADAKssn/0VCwcYF5HnuVj+C79Fg4oFy4PILb\nnIdJSzcx58p/nf3837sLoq+iePx3FrwahBLVJfak5QmSYn+BJeQAQrc7rcA9\n9szpvUPcqhaRhhiAHLuuyeEhJUjznxdgAtUntjZEFATAsdFr1vZc+N3kLuZq\n+E/uXKRkRzEtlu6SSR8rpIa+jb5HhWYJOBmJxqPs+GONm6+wyKQkkWaA1PoJ\nQVhAWnHsliwQ3x5Bt2mdCCOOQLYzwyg/yfg1xAhhE2CSYNO1dRyfe3gj7pQ3\nRFuSw2KbLIQwRQtUbGLxFK4265/BxngaI+5eIvzKLslc2XazZG6BRmywLDwN\nYkUZ\r\n=Lib7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAF6XNX65XawFrKdnvCrCbKShkqHyD/Nw9RsPsoHLcfcAiBx4vHv/BrQVXCpz315qmk3CxTIj6eUgh5Zpil1d5WB4g=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.61_1563029182272_0.6943215883837281"},"_hasShrinkwrap":false},"2.0.0-pre.62":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.62","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"aad86b4ad85295b8d8a3d654c2088a449d4cb1cb","_id":"feathers-vuex@2.0.0-pre.62","_nodeVersion":"12.5.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-R9tHFETzWCEcOQVJyfECBwuds51XZK7Z+ICSw+PD0k/v7c011UtTayWAkZEapO84luZQqFkJ+8ERDHBDWnh5kw==","shasum":"d03111a318908ab619b0eb173f397b9db7ea9a2b","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.62.tgz","fileCount":72,"unpackedSize":383733,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdLNzoCRA9TVsSAnZWagAAbj8P/3aZtBvf3niTdFW2iRDI\nPJhBHbewqEL2yp7ej83lSP3YAdYLI4WqU3S+XND3NG46Ev4grykb+By4WKdH\niBH7KNveMFlh3LBK68Dap/IQ9TJvzqLHpNWph2kAmDE3LRs40q7JxGsFeYFK\n4WuJaG1DPpH9NxlYLOILdt9bgw6t1yNYLhoNb3CwIr6s2Ai51rCpX7D72Q8P\nttZSsnl2CCQW4uH5WgPMOSh9QIjxLvS4B+Rk2wR/ju6qTZiSmrMTDrGmcJnp\n0yvflfisMnPXoH+/EigqJ50J79XZL2PcqoxvwP34wbCNxOx+NQlQkzEZ3EVm\naYK3jsi8BVGNY6eYJWy4xyvfg2FSfY3Z5v4gXm7mJtOaC6We5cY4Gul3Uken\nQ1BBTqC1PtvYwtUJ6hKDHx+xsnKs+aV9+M2I46fxmBOVMLle2OODZdwZXNOx\nExe2rXS8Kn9wBAKoRyTPOVr98CvuLeVnN6WGy228Zo7yLsp+1T/okyWO8U8c\nNtjv0ekLuFkJ8IRL0NAZoQJ9lDgQlAespqA45YigiV10tusVaWNnEbn3ICsi\nCfCd7U//8178g8xb+RQXzsSLKxvyKTGKc1eNaCaQwn1k3YAhRS+pYSodyne8\nMx0XzXHYoZDxclPbaly0GYR0LB8DyVwJgq6e4BEX6p6E5Z5RyAEaiQLxqEqm\nTrs+\r\n=iH4O\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDzgSMctcHndJ0A0hiQc6sNGbdfwvOPWEh0ZX9RKHy3vQIgaBpZ8b5en3m3S7bxF4OtVumPWNkcZN8bAuLUTmT4I7w="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.62_1563221223537_0.6292752733751046"},"_hasShrinkwrap":false},"2.0.0-pre.63":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.63","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"2f79faba70a87c151345eae92cc954abb587674a","_id":"feathers-vuex@2.0.0-pre.63","_nodeVersion":"12.5.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-AMcUl+NqwpNLDS5hkwuIrwv3PvvaYJN+g5NoyEHZ2Jd8vRbd6ekMy9UtQnjVDyAVNkJ89XXaxjVODJP2+Sc/8Q==","shasum":"16153762c509704031ebabc735aa296e8d30d2fd","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.63.tgz","fileCount":72,"unpackedSize":384204,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdMXw0CRA9TVsSAnZWagAA1ugP/2JIiPbELqod+ZCRI2cl\nbD20vymgbW6/uOHcY/voc6fnF++3Rf5ENYY5IPbTSb87Mk5f/ASdJvKNhEWG\nUN/fjfbnB7Xh/4lvXOolPro229SVQOTr/thKl2Sa2DjCqSCfxBNxsVr1B0Ao\nEBH2xbBisrsr7juVgAI/2QqTvwY5p7HxgUdnk6LjbqKyQGmQECkDuTQYksIx\nmwxJpbHw61rdviTJZQJ1r4T2cY9rkLYRPslpQrJ2z5of9qQjw1uJIStLpYtu\nxiHI/zlfIO1UVhUS1MrHDUzk4DGvyY3ScUlLaTubECQXGdbi8t+UQh/cFw0e\n0lAdsmM7uGHiyEDvSZWEfNvoqVLEEMHA3K1xYWh6fcYkHM0MJthHaq8LOqKy\nfjmShmLFCGchBs5KUn1QmSnJe3rjRpDej+Ez5g9lYkHFdEYEB5bk1xVmI7dS\na/0EgRTeBf6aEo2HD2vNrGUybK7IhkefaqGSFx+wFlo20rCfgBlRRw7USjN8\nLk3kQtkzbWQDV1i+Vk5HnS5lAGakfbcjve4Fkf4LzuAPHkbJkt9/E5pSxXc9\nXeMDoNBM1fB3XEkM1oHKYN1zfUMH1t6MUhmJewBDMO2AWSNLdNJtWbrmslnS\nH8HmrhIwSDDIfuaP2JY90dlGdI3+rVZTe+qcqb1ju3aWkMHQPlydsDLfwGMm\nf0b5\r\n=A9Hf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDycEZRY2PwTOkoBKOwTk47oRlgZsuK6ipw6OEEs3wBYwIhAIdaWTxyQVNxMkmqWpzFxaQbQ5LWMVJtIMROj+ZgjCZb"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.63_1563524147558_0.8615178888412571"},"_hasShrinkwrap":false},"2.0.0-pre.64":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.64","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"8ff57fba9e70b4edc6b7f9ac9800157fbf39f643","_id":"feathers-vuex@2.0.0-pre.64","_nodeVersion":"12.5.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-X9a1O2413e1Tp4JMobSynCX94o7ou35IeBkRnRcIDcoRHUUw3aqaM1fpl+y83c9ir4Q3hHMPJTvzeBuktSLI1g==","shasum":"16632059c204918302ace15b3140fdb280de410b","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.64.tgz","fileCount":72,"unpackedSize":385708,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdM5EUCRA9TVsSAnZWagAA1BAP/A1g/4VIq7oqCvXDHGUv\n80kpASyJz/f+I6SL/PbGkraARIk8klQjsUm8l+nD23t3qB7zoR5dKbhOhTfE\nBotQ9K22ogeIO953yt00xfdtQVqZccXCt3dJzSVx8jW+t7fVne+9/NAYiUrr\nwjahSeVMcH/aQy078VCOVjFf4Yb1XjdTJCP6+fx9md8MKk26CBJltXu6k4tY\nnGsqbNBNCHIypHt6oK9cvkJolySg33ZUMJGGZxdJe7h2r2KCky5TafNIEnMi\nEA4LP8/OMNgIRZM6PcjoQwiKJGo7rtQQkxwjx/MXSopZen6GlNgLBPc5Hg+n\nbnknYHiFpSUYr2BOs71V5x2bSjXWypF47PfAlsB2hh9bJC0p6gmqkfBDBVmH\ncnc1pIMX8lQPaIVHRPmTqZxqUZ/hqu3kMBrCyvJoBL7rHi747apQl+S0ye4R\n7nenbdm2dz0lM/QUpnHpFiE4Q9ECGiHlRwn/85Lf/Xbqw8YzHc4puvVmaecs\nass/7dazZHC7hxY5tuIeh9aojFXbdSgA/ilqko+lresCcbdj2vfh3EtqDwNE\neSZSUUxjUH8EKpXXp+t1EJiRG16BMJEhdXhN5dCQrLaCT+4L/GqntnB5fHKq\nptoJ5kjy7N4LzVgB+KqaUhf/8GQXcuUcIcZL7TqYAJBhSF1V517sbR95sRYp\nmU/r\r\n=k8cL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCjKhQIBNhDDme8LaF/jWN7pY7kaZJ3b/2gWtZKVQxqJgIhAM3rIIW5zQ4bbxCImbASewIanoOTkZHyLj0htu/u6guH"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.64_1563660563754_0.5637166293395879"},"_hasShrinkwrap":false},"2.0.0-pre.65":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.65","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","date-fns":"^2.0.0-beta.2","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"8702c8ebfcbf96a2079c58c25cd8a42c14bf5036","_id":"feathers-vuex@2.0.0-pre.65","_nodeVersion":"12.5.0","_npmVersion":"6.10.1","dist":{"integrity":"sha512-cK2AZzA0luOxfz1hS7by0Xn2mXpGp9Rh4WPDQv44mKitkgMohE4/c3O6IuAMmOGAaA1L8AIUuBPu1Yk3bcFr7g==","shasum":"c77cf10a8b6361a2923fa30c003d3b0d5e5deb15","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.65.tgz","fileCount":72,"unpackedSize":390017,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdNBYXCRA9TVsSAnZWagAAxw4P/1j+XZrW7jRgfHhfE60t\n24PXnf7S4RKSNaSWfK6/M5aqbBNlnInm1YQfnmcblJ79RqEkWbgafCUYmZoB\n2L1+Wh/CXuUvQKTNY24d1Obey1QO8n5oUL77omlESr8OAv6L2r91KNQLDedr\napwBBhIIWwXHXgKKi5FGauuCBoxfmAF5VphBWQWTXbhIxkRY1ve1wRsVSsos\nBrZXxdC2J/qe9AvD+5iDZbGPrc6cLQcDMvMhTjcYh5u5yO0ZD3oYK4/3yqIs\n9E4q2HkBCZOV8TeCzEgMxAYRy2EcdXaKMjLJ1CuAfFfPhqbn30ce2da1NZvc\nDPb4WAKKGZgKwiW9XQseVpwYOoHV75zQBKwJUOkUtTPPCE1ZJ+QJ0q9v4uO9\n8b6QJdU/D0R9zexb7vk9r3IqWqZcygpcbPR/+Lo3DAawUp+XxMEYvQmVYidx\nY7yAObeVdD/XcmMeXpmhKhn1qGlzqxXmiqmoGu+uPskWKzk28fWLhXF0irUc\nTrzsNrM8KPBGL5DWe68YcdSglj11cg0j8Pk3arQ3uLmw5cXqeyYkiSuVDQGv\n1x+qGGJ0iu6dXBc1ulr5j1SztSoLayXJ4+BPGN+tF+BrgoqHDBy6aAmJYxK4\nmXySEcTnu9jmIGbPDs2CLOmGH/4e9BF7GdU7ks51ZJmM9Tv+FofbBa27K80h\nSkWE\r\n=3LH7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDseGdwmncEMssdPQozbn308STOEjLdPizKruNBY3UIKwIhAP11AtzZZ1oDIKbJ5sCdp4goVF5RoOOrklziN8SUVisv"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.65_1563694614438_0.0571640753110525"},"_hasShrinkwrap":false},"2.0.0-pre.66":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.66","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","date-fns":"^2.0.0-beta.2","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"78a2dfb6d92ccd534ed7258276d4d7a699528ca5","_id":"feathers-vuex@2.0.0-pre.66","_nodeVersion":"12.5.0","_npmVersion":"6.10.1","dist":{"integrity":"sha512-RDSAnNEecbEOCOFrB4pdgeHgrZsnNW32tHNI3XdgDjgjYwLg68GMSw3q5nOlBiMhLqB3z35UKzZFOteSHrYqbQ==","shasum":"f02a861653cd5adb81f4d4582f9f6859a3538375","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.66.tgz","fileCount":72,"unpackedSize":391734,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdN+A7CRA9TVsSAnZWagAAyA8P/36qU9LXn3ihUn9Bq4gI\nkw9Fx7bv4IEjS2iRwiqA1IOxuAmiYCGh/U2Is9UVS8Y3/o/6Sgn9oOxv/PX1\nvOrE2Pv7xitqE2PAHx+jI9i806qWwAmtt8jNmpbjqexxpEUs6gTrXPy5a/Jb\nUSJmr7HDdTCh0l4JXMAsKfH6m/hGyHCWJ1NOxRHvpYLUFHH/Ol+AkfIc5d/B\nsoDkFYE/ukMAISjNLhCsMmZGr9l2MNozSI6zT08Zm90wiDCsSDxC+T9t4ctu\noHNZ+wV98OCsf0VuaZIY6K1YOQMo09OV2y3mp8Sd4sxf4aOmryDbRfRGfDNm\n5SPJPrlSu3XfI0gs1B4S0IgkocXSz7+xn0rYIBhYdfU0RYqx9kKo4HZHfalQ\nPEqmh9bo3VrUkO94+pdwqLi58gTG5ngVE/Hq075xCCHvjLtulDZ9miWBo0Rr\n8fpMOZKtv99gC/4RFbnHeHLbf+AQSH6mCv7TxNl2+H71iZEivPV/Gp42hLD3\nXjyPr+Q5HZmrg28IQjl82LFWz10DVgQBN/qv25G5okc9it/YfGAjVBQf6+aD\nEGHPohgcDTGQew7ArIYry2szQw/rtchXqemUGwl9Dvm5pIQPSInTg4y0bjza\nhnFaH57KWNngy6cQjN0QWdEQky3tBDWy8YmgQmfUju93kmB04Rrf7JVWji6A\nZIBL\r\n=v7Ep\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCOccCIJkk9HVlNbAHroFPryCh+TpC0sS+iLxuuASkQjwIhAN7ctb7WN4jYH0/4hWg57ZyNlc9WJ5RlqhHaybDxhsnJ"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.66_1563942968857_0.18785111993445813"},"_hasShrinkwrap":false},"2.0.0-pre.67":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.67","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","date-fns":"^2.0.0-beta.2","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"cf9f50622f3e70a9bac26ec00e65410863574367","_id":"feathers-vuex@2.0.0-pre.67","_nodeVersion":"12.5.0","_npmVersion":"6.10.1","dist":{"integrity":"sha512-Z2jCLvOWCAyY7tWDOf5hdVnNm9F0w++AOhsqsAH9HrEFiXBhN+U3EA3p+hxWNkNM8VvI2skNLD/IXhdzx8l2pA==","shasum":"cc40c31ecd6fdb5dd3b326e32b943385775278c2","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.67.tgz","fileCount":72,"unpackedSize":391827,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdOyd9CRA9TVsSAnZWagAAWDoP/iaF/j/GkzibWRRRsdpM\n3Na6PJBsGcjofVNHrQO5gpVptY9TK0VfPfSkuDFx+lJ+oI7WSy6rQ0QqSegs\nqM2VTAItuVjBtNsN425S6Lr7Qu7QQC22c8WL5H7QaVwDUipUwzkdpRdPncxZ\ncRH+i2nig+QKW3eJVIRvTsolenF7BGq9e3tB1r2u/h7Nnb8FWfRj1Mg8/EQM\nNOrwjU/lGLJmVCEBxEqq3n/jE+qDxl8zWwZyfaX3PxsawrT0xbCOmuEufRkB\n0cnMcueElVYTcXjLLmqMyDrEHQGX9/ge2Uy6bOEkF8bpRpNQayetYtH88xYk\nqOXqKEn/P1BmfOo7LGTq4B39IBYumhYyoek7e1ylJeudZcfNfbU/jXj18N2m\npQ7Ba0zi0+V5BBmwfhbxKO5v2HG5HmRtYbccGIZzU4tsA9arfuGY50heoagY\n3ukag7bTW45QQ7cJMhHNBeF4TZJ4E3JPZklDAGm4otRTBptMvrnNO5+yaUSU\nEvM6B/WWp7Zk+R8QH9lM9a7e92YJPe0qjw4Tb+O5brRjMvDPZ/o9EhuZLEef\n9uX1piTv4WFANoanUw/PtqnPIOzS3mRTUccNk1pJJv6H3dBXL+C/BF4NIaii\nYKNpP6i6UUX8Cb3hu61Gtz77ji+SHpOGfbEgXCkqb9u2FnnJC1amenjyQ3z7\nnEhv\r\n=ANz3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDdZBD6M3bTIBEJ40b0KI6o3291rIyUJjEAI8UStLuUvgIhAPydqW1lDh1JRdGc5U/ZKgQkX0MS6qjiN6khBlH1QjwS"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.67_1564157820658_0.9467808302132079"},"_hasShrinkwrap":false},"2.0.0-pre.68":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.68","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","date-fns":"^2.0.0-beta.2","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"d6f1fb67efab53e535a08c4c8d8e71abbc4ed7af","_id":"feathers-vuex@2.0.0-pre.68","_nodeVersion":"12.5.0","_npmVersion":"6.10.1","dist":{"integrity":"sha512-l8mRuLSH7TcCsfQ3dqekuiqXmyrtIQx9V/1h4e9DcnzTLkiXA2DMmH+4DB9rZQPPqlt6r14r2Csu3jyoXpX/bQ==","shasum":"a6929c233c725dd4f4b84575b5539738d02dea45","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.68.tgz","fileCount":72,"unpackedSize":394555,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdPPjzCRA9TVsSAnZWagAAaLUP/ignkg1pnQAAUaoX1tcH\ntfWuQS1Cap3HyMqg5EI0EkElyRVSMYmC/bcic44AuiPSP+GnkZ5l5qGwonNo\n/RbfDNZALkjmQNJFRbSqtz23wzPzH2CBP60ldZyd5rGgdQqczB0d8uTy/gas\nBeXqoQ1N2OfgFH8WOheyiscVqmlLZJ0IcLYHSdWC0ZG4dOAzTEUPXeY010fu\nfdukfFUwV7gy3tjQCalN0G3qtI2JFPC6Bs++VgFViYErwhofA/wmbxXBv3I5\n8tasgwQL+T622z150P5tb29BVNwc/VFLIGvl2eHXolH5tK2RP+SPMjh8SNib\nCyoqtzS8ih9StpA0BrCGcs2yldyQEL7WacVyTOeGZfkc3rlkWHippxMXwd3H\nf4ifbBJvnrqmH5jitOVe7cBANux0d63cI2VMfNLGF91JOMLddtAQVU7BfBkm\n/i8b2IL2MnbTgLRIHfAVOL37XgQys6fgVZelwN0Yz7TFSU5D6EFRfdLH8Uia\nD/EUH5183SIyIhSC3JTAm85sP1wSxeYcBx0IrwycAxLUVwOKQ4vmMhUkPU/g\nRC46u2SOaCmmBIsJXvuEak2BnIrdmVNACJJBjvafvWXzjplVzTidoiCPeH5z\nEwcBgQ8Hy53yXAjRWeRsCjy+Uc8Zx0RFHdauiUJ/+2Gqbz+/+sSNJIMVhJ7A\nSFME\r\n=ZXia\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF++vWt66rkSs8qDqoxL9ZcTW+2nAJLg1uEqqKJUhtvVAiEA+blqEEezkn3T6znQXodrBGiqrRV5axUEtou/FxT6B/I="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.68_1564276978404_0.11147225197907806"},"_hasShrinkwrap":false},"2.0.0-pre.69":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.69","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","date-fns":"^2.0.0-beta.2","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"bc4d8883ea6caa4d77459dbfb346b77d871d24ac","_id":"feathers-vuex@2.0.0-pre.69","_nodeVersion":"12.5.0","_npmVersion":"6.10.1","dist":{"integrity":"sha512-b59VG+2wAjVi2XeTto/v/334L7RgC9GraQgijv8XGw6D5w7+ixDbGOAEMuZoAqWRlALBtb7lzBv5PmYxLyRmoA==","shasum":"155f72cef12b88185dbcf98af702455b76bb83bf","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.69.tgz","fileCount":72,"unpackedSize":395789,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdRDoLCRA9TVsSAnZWagAA8UEQAI6x4ids6Vv00aulHW1B\neaMFiSovxF1r9PUN4UJfj7umVFdfjI+IrLEC1dMoVuPj0RuVnX/WRfwnoi61\nwFVWrTUHxdSGtfCnBMNtTJJHu4eRUSIyHVBOuDgFJkRiUsU7ASgVttHrH12H\niUAMrmjWC+SBG6jMlX5oW3qIhNC5jHwSZSMzPcgLTnKQGX1JQAWiY9mGNoLb\na8Ca+/u/RWtrVxY75HMGLsMQUVaLWyKloAbxemBDk3AsSzFQW6Ji5EaqZcjO\n78KkMJyCCer5iuLIgmrVQ9dYZ1IsrBCxa16x7FqW3+coOQYZyrr7qfmTlSUX\nGaZ5ZTtqBXtDbnLUTgX/h/ny/nNpUNKDpSkDvfK614tA8D9FSCdg9f1iNWaN\nXUwaNXysX8JHYXuAOzc5w+PPz7NWS5B+MTXglZ5ZSK+tZWqdSUaSQBnu5v+O\n9jlmuiryk6f4+XYF0rqRotWDGEJUj0LdgUvO5N2fbx2jOrVnPQDHt3c2pp6H\nb1mb16jfqATGGYnWx+kh+DO4IHoekJWIluDm0dWmhoBK/hqk9lgcTEtXj8O6\nAzOCGmwY5+P9jEB2Lf1rt4nLzmkSU9a8RMBqdfScKEB7q2aYGufZrR0zl31G\nCh1x20+xgDwaKJU2HMOZTBVIaT+bWUemCK6TBCO8jcH/2NhLsYJmwXLKXrbX\nyz3b\r\n=mNf7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC9BWAkTQ9ABZV12q6DdS33miMxGy8fT0Pt+d8n9gtksQIgTvVy5Pr1xRvMhPS79IYcVsMET/DH6flfQJIOXJST3ms="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.69_1564752395056_0.3603838169651543"},"_hasShrinkwrap":false},"2.0.0-pre.70":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.70","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","date-fns":"^2.0.0-beta.2","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"a5cabade8e0cb6c4181bd3bbc598d9877f23c493","_id":"feathers-vuex@2.0.0-pre.70","_nodeVersion":"12.5.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-yUk0OwsTxfmeKtSrwkhvQGLlv1jr+nk//bL8zajAlV7RAOw1MRFtpIYV0n0OlbGWH4EYbkbtqRLjrEq+X+bdVQ==","shasum":"34407358c3a47a8bc89db747852362a4bc3e4665","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.70.tgz","fileCount":72,"unpackedSize":395859,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdTI11CRA9TVsSAnZWagAAA3sP/0rTdk93o9mw/YEZozx/\nGLU+fJNjbLzzimUi+Z3CwQEzP9UDE4xnj7Ozzc4oP4cqwtDaxiHM+TUMs3bc\nDRFGq/P7Uy9YNQ07zQRMNn3Z7IbA/S15RMCg4DcRdeauKKmQn+lLMA1+yJqp\nqYBpfO1qyngaXNzzjy5tA9FEkC607y1wXbT86mfvvT4FLA5tCp8yUEtRKWr5\n/E5RD+MxEk+kmGtEV14oZnXI+gW1007pdLiZqwiSaH6ySW/9JIZU71ZYw77Q\n+lUoukNiUgW8nx/sUEbFGrelwKlfqpNmq9JAA6VJZs1uQk7ofN8va35vjJ6R\nht3dN4Cz5wf+t6cWxLJANF16pv1s2Mbp46M2T/HUstqfZu2oK+shx0nIUQa8\ngxH0ia3TGK+prW7aKt1qGwa+znPJLQTwY2tx+53zzQv1cBKHH3z4oXSOuflb\nEYt42bTXqBSLqrMA/FMFYX8FglDxI4C2PUyYZYf7BcvUBX9WDsq4R6FWaA2a\nc5j9Lh/YFBR9NMg5UpyJjpI/6VstbgsMsrQLuBrbkIhh66NILfKiiNcZpqp6\nsbh+9JCBo04xsEAYp2uhrI+wCnljAB4P+Lu434uPwxOo2HEe9sMbB4dbX8np\n480g960naDNIGNxPU8PUvZ6UamqbbckcmxdQwM+0qGUF4YlclkPgyeBunEmt\nL0f9\r\n=t7gc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDjsev+hps+p8caQ4S6Yktjhp+1xbELLm4NW7T1AaJo6wIhAMgNU41RvBO15ubUuVwAcwdVc0TkOZrOtw96UjtqJoaR"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.70_1565298036713_0.6654575898708268"},"_hasShrinkwrap":false},"2.0.0-pre.71":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.71","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","date-fns":"^2.0.0-beta.2","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"4862ac5fd86faadc05d997c986744526f4ba35c1","_id":"feathers-vuex@2.0.0-pre.71","_nodeVersion":"12.5.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-R+YzoZ4cSthRik91Cmh1ebvvOg4GFFbgRM02DcI35hmv2Lmg5oWw9yyid6TqogvFmUH22i7U5VLS9UvLntZMBw==","shasum":"876d63d409329ad8ad00f0c646895cdada53b4ae","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.71.tgz","fileCount":72,"unpackedSize":396785,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdVN25CRA9TVsSAnZWagAAVGQP/jANZDPQJPybLMwufqeE\nsxqwZH5+4xWiXWH00JWXE/kpxS4ptRves9fafmY8srMJIK7v1wQHATxEbg84\nAqzzosObPTKWfCZt6zGtj3VDKqIOFt8IAa0lZnLDL9rgMTLumtXk7Nb/6ud3\ndv0MJ3+lhC6SxWpctQEkKCVE+20gbvUMNnKK5T5kY8ZR3B67S1Wmea00hf+v\nJ9+o79VVXOVKWa2LVGrRLBDT7m0cto5GN6D6nhQQmINRN2thdzQNmFM76wxd\nwwEdlHNVrGy4EICo1RdU0JP3uFqxdmNYCNIvDz6rcbzb+tjGuDL3lwahup6n\neVCKH8d7pFMdr5x708FDR8I2YFshdqKHZjqGDEB+24nxmatzObVxsfaPr7Rq\nUT1LZEx5qycDhpPVt39TUMBLn9DWR419dgM0Zw7LwMkQaqDoEcrKzscsrkcd\nx9tDz4TeN7kJ5PZiyPvKiOUufYO+Yf3MO0Ge+19COk44rA3WgDwP24revGpa\n+GXl/VJo532NMBsAQYS5kSLV+27gNiDwbtzUXNljt1C5LrWEyHcAI8aNcHws\npa0+E4CdD/YcWd/kN2RnSrnlZBJPs45+S3m/81rek445+Lsz+/kUWoEUU6VH\nTxnF8i0yfIYNx/QoKN5miw2PbwC5wdkP5oGZnsOgy2TCd6Ye+4LaUIaCWP56\nlt8R\r\n=NurQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCUYg+30vfu47JvsW5o2DjDIBRUgQZ7UpvePX0NntcU5wIgJkwyy2b20WjgriXlxE1eLiObRB8+WqNMHED8o+5JZG8="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.71_1565842872473_0.8332596593961641"},"_hasShrinkwrap":false},"2.0.0-pre.72":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.72","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","date-fns":"^2.0.0-beta.2","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"08d548e30a994cbc88fd02f72d1bd2aa424011c0","_id":"feathers-vuex@2.0.0-pre.72","_nodeVersion":"12.5.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-B9OuOBCZxpv9hNrGNJVDyDlKz/PBaJYKt7/mj1vAUJS5uBkBUe4/nRkQzieHCWkYZo9VEcoWGYMhr8bTSdy8FA==","shasum":"f7361cb6407088680f9a2d78fc88b6841fabd286","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.72.tgz","fileCount":72,"unpackedSize":396941,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdXswzCRA9TVsSAnZWagAAwnMP/isSMkJvzNtZ4HlUhzY1\nIyFGEIQaooc/fkTkyvFL1rjaGSur00+ncJ2OMI8zbLSSuXqNPVBYvmih3L44\nbGVHdIzs5mPHMglb/LmWoP33msHAW69a+S4TG0OPcRUFdR3p3eoMsXrUTa5F\nEPYu8epYflP/W9Gn6RM9C6rYSVQojqg5zhsNBhDWdRpxQIEVpJXWxghbCuLq\n2e6B+rfRQFObCImDBhdpxVD3VwHbajbcs0A/henEuDFNFYIgqA2cwjBEfTyc\nlrjj840NdukBZtucJiHN9dmPZWTG+QqcOeUCr3V3yD0+5+jx232/1r5S7oTQ\nByjrIk0YJWNdHSVlylh1oDpPwNhAsYpzyVEWM21Mi41qROvba9wdkPb6bt7C\nq+isUraV8WD6up2Awbphu0E5+oZiv/EZR0ue8htPWUCkhpuRqplEpNngctf+\ndCMTWXncQoA56aX12iLGfXpxCmni71SD02/gGgXXxORo/fnh8rEHtMHmrJ+1\npx6gdI6M16SPmqcoNLfFA8JKm29Rr+jOHKdc4kBh+FhG4kA6nNyGVG+BTxPU\nPXJyuuxqVS+w1H/u1LykwjWa9mVLUKF/fq+44R8ueHNRSH5Ba1AnSmxfkb36\nH0QsXSqDj3CzLgHcy+tn4LeLutAb3XeGntOIOI5rnNebx30Jwzagh/Hd4DB/\n70p5\r\n=pq9H\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKwesO5QreIgnYiwmNh2FxGN+hMmgtLlFFsU/9BswTCQIhAPP1a8ccMZRqpDVZ0biP7QqsL7oZKexbVHLly2uYnR82"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.72_1566493746128_0.7902707812414353"},"_hasShrinkwrap":false},"2.0.0-pre.73":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.73","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.11","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","date-fns":"^2.0.0-beta.2","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"aa8ddd7e524ef0761e64d0894461bcfa5ad12132","_id":"feathers-vuex@2.0.0-pre.73","_nodeVersion":"12.5.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-tX8w+wgLfuOfS+7j/D7xcfb5zyzfeo0WB8q1uCN6Lts33nN3CFT1k7ZKPjMOoPXPuKE+HssVw0wvrvj3dUeiRw==","shasum":"6305fa39e9dee4f4dca4dd159d2348e948a2bd8c","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.73.tgz","fileCount":72,"unpackedSize":397013,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdX1AfCRA9TVsSAnZWagAAYMYP/27Kw53WQEtXFJOWbz55\nAZFHDxD1I9zCE+D1zCAWKHCDZm8fgVSF/5f+ESysgktUvVgaXDy2dwmnDtHv\nlRXcUHoseHIFWvPAA4LY/z0TsTYonEhgjLB4C7EWU6DJlDxnqqmHAb6d3RMK\n7V+XQhcbwiRnULdP6aZWKunIRv02bnR67+yZOOnq7lHSC+2xsIPnTJZMxLt5\niL57yOp5RD8FS0UWc3rWSIz1GUx82nYNw+zcCkfzBjd8A4JHpaHcyK0WfjYI\nmeXfNHCWN8sggPe37b+czzsoDDoUJP4WNrljXmF0NxxRcuxxvfadq7tnhjtM\nhg6sm9BGIaU1ODdorhqaDErrLRvSDEG7q4oSoc5oQ7mjAyShLxDdUvP/bjBw\nFtZ5fHeFJNQXxnzIMhKja/LPU8tJ6cdqsShj1XHCPCi0rgqC9nCSVMz+GNfl\nMYxl2AAE8RfPT/RUVGrsf+7DpN7NmiGZDGLyniRlcaDTtzNgMPrLadc+Yt84\nvdqTl1zEpfzPdKGpYSGnm6wGJW/gXeR0XAgghnfXy3qXo4oPMg5ZPMS5ve8c\nY87EkyH8yx8QQIUU39fSCCzm9RoA/7xMk2FO4tJOdjilUwW0AN84r5CPuvJJ\nIYs6p5qg+2JVh6icGH5Cze/x85yTPKkqGciSYgH1Q+x+xwFBX4qxJn5BpF+i\nLS1A\r\n=L7QS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDdiqK61xYrMn9NJLlWGGDqjLr7HFq2KgI+vmK5kjfuHgIhAKfdGaQ8AEU4i7L5apJNILAxJ2KrgecBz95k/q0RByKT"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.73_1566527519136_0.23825776056475112"},"_hasShrinkwrap":false},"2.0.0-pre.74":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.74","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","date-fns":"^2.0.0-beta.2","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"6072c136bb76b730ea92b5ca4b35a7efa4908954","_id":"feathers-vuex@2.0.0-pre.74","_nodeVersion":"12.5.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-OnjftPmRgdi/le40/jIW6skbjdZro1RGFv7Xw395GUQEsXp5uhsmSJsG3MOe3NiCiUyj+DI4vXIkHeAy+0zu9g==","shasum":"6dfb7e0b87fe4f2bb9914bc146cdc57c153bb251","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.74.tgz","fileCount":72,"unpackedSize":397140,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdX2CXCRA9TVsSAnZWagAArBIP/3vh9O53luSHE3I1Ck8h\n4hM2viM+e/Hjj2A+1L0tVfYdmDyRSGtQMZjdCi4LP4aq+AO2cVHERfQbYem4\nSKjVFkquZFxz9ISJWeV5SgNRdZckY8vdG4NDMdZmHCWh1ccnFKIbYF9zfpw0\nGuw8xiBa9WN30V46q3R+RltcCVZ/jRqxhxTvo+GjEo48gqqb9CO+QRhEmJqL\ngha50j1y2RPkbEigztDP0lFk3ame+3zEyokYp3qo8neo6gFSlV+OyOpTG1ex\nCP4dovHmBLGObX3+XTVB2v1noFQ7hOtrf+ZzLxly7TZmGl2KxVSijIj0MEqd\n8jfwdum77ilpB+iuOVKjHEI1X3VW1UyuyonOAQA+88FOg2V6xuNDPqPJQYDX\npy0P+abwO8HmWH9yaaYcyD75ANQaksC7R8MkYXSTu3VAJwGfTnTQjyakSDL8\n4Y5cyhboUJ7ndzg+G4Wxe6i1ZkXO8U3Qy79Krbp2G7Pf8RIlfAmSvDjLFq6O\nfoigu0Fid4solxQyvScLbb86hFLhVNUZzRfNJLQHasf5y3ARlhTrNnMejcs9\n/q7oFtnAyja0q9C6HF3moN4bQ6Crfm414PbqsAXaNbozntTfLBMjJ8tzyooZ\noYTSQIQSwXo7HR85x8oqpAqEznZE7c3NA0HZdWm3tMaC9gezQwm37zuhZIp4\ntZeB\r\n=vSe1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICBsoHv5bVr+0zNF4DcsKHB9SjOYWhnr84GW33xmLGkRAiBJ3Kc0NQfnq3TYeTmBS9aUxHIxaG05N1XmK+5QP+CJTQ=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.74_1566531734363_0.7793354386280942"},"_hasShrinkwrap":false},"2.0.0-pre.75":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.75","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","date-fns":"^2.0.0-beta.2","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"92e1e8531097aded5d87b669fcd1b860559aa686","_id":"feathers-vuex@2.0.0-pre.75","_nodeVersion":"12.5.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-3IfCcs7yZ3+Cw1hksNqU5jpeJy165GNeQbvMQt+FGhlnMWwWdYuJBtK9lTYCRX8Rqb/pofcUKWCRaXnrfjh1tA==","shasum":"8dddb9a9893911cac53bc10808cc857ddfa67584","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.75.tgz","fileCount":72,"unpackedSize":397092,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdZ/ENCRA9TVsSAnZWagAAlWkP/j98XWemGOnB9u5zZ+nz\nKy6HYCCO0jUOF8tPTudr1JaexecQJRXO7edivQwNqgebgWC2z0l3dD7/+2LH\nzbbT8JNWy0GpLkRpyjgWR3OP3n0J3rviwnbJAfL8s/Qx5Rb64pnnS27Pxtnw\n33ohC72IhhbyjHjqmX1rf+9vsHHb9Pw4tOD5ZdrZpT9a8DRyqa7VlSWRDE3W\nk0S0caiPjDiKhPfCwrsYoUbbgcTNfpDAlJuhWlNRH/K17CrLL3EDyOkwxGT4\nO9C8Hblo9Cp/H6Q+94jsXCmTdxCw9C4c0zP7jN9/Wy1vEhDcalFWl5vWdS8z\n4+8h7ThHv/5xWegwvgK2j7okKmb8nYEJNsap3yMLras+ep4q76w7nIpBFbsw\nuqB54Tu9MKYUzMmporN1QvHWXXVNwSO6IWk6xYZLe0+4iKfElmgBU0XopdVS\nGXPZYb0pBZOdpXb72aJYiuW7Z8SfD6zerwfRv1t+W4lyfBuKDOHsQxRlpXcJ\nuykctJRjdTjW9qeVY9Vjo7CFh7RjSgcN9CPIaVpcroEiQLBmYuz4JPzc3M4n\nPJYy6nIAuZpF5XvM3BnxGu1dB5YHm0W+61hMdUbXKYalO5OJM60br7vnFvMm\nR+9asZ4VS395JTUpZ5EjCqxak8p5GQX3GHsnPK0MutS8VDLnG0Dh7OcGOL2J\nrV33\r\n=qKN7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCJQ+ETtJDF1Egr+tpp21Qt/lUOqCjlozO2BcfcU5Ye6AIgHPkb9/E9OtFqKXQTQk406+gLN2mDN4rypXvK6mC9sKA="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.75_1567093004472_0.13970007043002375"},"_hasShrinkwrap":false},"2.0.0-pre.76":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.76","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","date-fns":"^2.0.0-beta.2","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"240af6d0bcfb4e406a11f4c31e1dfc921e07a391","_id":"feathers-vuex@2.0.0-pre.76","_nodeVersion":"12.5.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-wpmSD+2jCoCAfh/SqgiCDO7ZYKJAQXvCX5NxPOhAJ+KMjE9oUZe2G6mFAy+Po208wEyVQQqS14LM5HIR2wOrHg==","shasum":"0d945f60b8994dfd4aadaa20d7e315f968aeef04","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.76.tgz","fileCount":72,"unpackedSize":397155,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdcUyICRA9TVsSAnZWagAA8ncP+QA7dMcmpeHFmNA9PMkc\nPe6r4X9huDdDT+Rc+TY1B8IxLnqrXmY+dwmzXdTUnNQQ7gc2lWIK6YkTRK64\nEQRuCpJPCibacIwbUq+ojiNyDCQ2lChHZOdMWkZu0jw5r8yttcpSClYTa71O\ndwcHNKovC7M0FCRW3hjDWMV75Bsxsg8bZO7QAuHczhfMKWTyk8F3tGJy+Rvh\nKKsNNGGIOOSMeEcxO928TjTdq4YpAmxdYNUawReAdjbNO4v9QrDXGATMqsmw\noA7CM1REn7rH7VYdffkgd7H+F2hcVw92sLIqiFEnwggmaUPrd8eYtNJ+t2c+\nFyN4cInpCXomfFzdyfyOvVtARz/r6SfP4gZdtpN0ov3zmx4t4RV3TIQyctB9\nUjyB9HxRzpY6lhxXhSnA24W+FDc6oAX2Y8c98HuYB1ReddVLbgzZSlFcYPy8\ngcAKF9bfEt3GcKPOzKaBMuPpKlLtG4xs6gQZygfv30BOnLpMQ8SJcE16+RNs\nxv+hVWmqgP27z5BpNuJ2Kl0qGVEPnc2g5MtUE7bcXUcrdGTwUclHjf/s5/Ny\n9NU4BrRxVKKYNRr3CYXkgHEtIXneqS6nSHX5e6Ti3Q03X2NBl0rVYHXVHC8g\n0DlBNm3W1Xqq9HWOTDuZLseJrnyCBsigifhS3ihPnooljqnLT/6/lfQJfF3D\nobH8\r\n=6Dde\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDMi5DoIoGWAtoxJc0IpyNLvTwqp3vdF1FRVSv/yH+NPAIhANWhfRgdGq05BJ0yFie4/f2dREb8y9z42kn+FXwF6kGl"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.76_1567706248214_0.7156212959557822"},"_hasShrinkwrap":false},"2.0.0-pre.77":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.77","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","date-fns":"^2.0.0-beta.2","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"3599e07c8aba9d3be8e28d2d4da451ce02243cf7","_id":"feathers-vuex@2.0.0-pre.77","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-Jl3w4Hyh5d0QJnnkEmyuvHp9rb/Ac58hgSJUUBcgQ06ezg4IereFHJIVOKQHKvsEpxZusdJpKGf/0yYG61A8qQ==","shasum":"769baad771f5d549520b8b8c0c07d0dda551f9fb","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.77.tgz","fileCount":72,"unpackedSize":399922,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdeBCOCRA9TVsSAnZWagAApVAQAI6WWaQkcFQhL2vU1Hgl\nb3Xq5YD2+G1CpSF91CZ0YrqmmaQc2uhFK85msEca3Ewrc2CmzMgV1681ohQB\nAsFXUARwgfX8jSZ3aXV8S+0vEoXl2DCk7EaVSpTfgd4BOh7ciE5MOThqN8jF\nsIiZKAgyp+9+SWGb5y5/EiRjz6PHPP6Yvg216Wb3r0orXdAdH27FZPS7RhIX\nXjLwmUpeQVfBYjWH20MRaYFTmkN2hi8FQaTYuMUaFSIS3A+ImdP4z5zDVCBt\n78bRwSg6rnApwehNIBz7Wv0FRuUeUwMxDoLvCKG9zMAfIy2oPYQ8dQNlRDgC\nhPHz/+FszEcx2fQoBtJlwjILSX+wKmMMqXDMmSRmgx+aimqF5E+ybneZUld7\nQUDbc38dvl87DwlCyHU2neWHbG1MSzAD9mBN0/bSZG/qoSt9d8aRKWm6cTEi\nBRvY4nReXXgSXBkzS2SZk/X0fcluuZBaLBxDI8HW5tgotHHvPqWMsGcF2Qg1\nJRqVbxy8JEF34vlANtuW84T/6AX0qoGvNdLqsTpu52g7stJg5KS8oDJPvbmf\nNU+95lmQwbysBIZgjjKBIz2uD6Jz8oEzoIpQxG1E+XpBCAVxALmd7n9FJ9ur\n12SFUg0NrNsGXMCR7SAryvuf0G7AoVlf3lAtFkLxa2Vu23G/tnZfa8hvTtBj\nCsI7\r\n=CEO2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF1XelMn2wLyq4WFqRVH3Ddqf5LjuNmdbrWsVWKS8SLgAiAokWWL4kzgu3GCB1cX+WNsgTkLhEN9v9uMDO614BhKzQ=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.77_1568149646131_0.901108182153892"},"_hasShrinkwrap":false},"2.0.0-pre.78":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.0-pre.78","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","date-fns":"^2.0.0-beta.2","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"readme":"# feathers-vuex\n\n[![Build Status](https://travis-ci.org/feathers-plus/feathers-vuex.png?branch=master)](https://travis-ci.org/feathers-plus/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathers-plus/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathers-plus/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n\n![feathers-vuex service logo](./service-logo.png)\n\n> Integrate the Feathers Client into Vuex\n\n`feathers-vuex` is a first class integration of the Feathers Client and Vuex.  It implements many Redux best practices under the hood, eliminates *a lot* of boilerplate code, and still allows you to easily customize the Vuex store.\n\n## Features\n\n- Fully powered by Vuex & Feathers\n- Realtime By Default\n- Actions With Reactive Data\n- Local Queries\n- Fall-Through Caching\n- Feathers Query Syntax\n- $FeathersVuex Vue Plugin\n- Live Queries\n- Per-Service Data Modeling\n- Clone & Commit\n- Vuex Strict Mode\n- Per-Record Defaults\n- Data Level Computes\n- Relation Support\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://feathers-vuex.feathers-plus.com/index.html](https://feathers-vuex.feathers-plus.com/index.html) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n## Basic Examples\n\nTo setup `feathers-vuex`, we first need to setup a Feathers Client.  Here's an example using the latest `@feathersjs` npm packages.\n\n**feathers-client.js:**\n\n```js\nimport feathers from '@feathersjs/feathers'\nimport socketio from '@feathersjs/socketio-client'\nimport auth from '@feathersjs/authentication-client'\nimport io from 'socket.io-client'\n\nconst socket = io('http://localhost:3030', {transports: ['websocket']})\n\nconst feathersClient = feathers()\n  .configure(socketio(socket))\n  .configure(auth({ storage: window.localStorage }))\n\nexport default feathersClient\n```\n\nAnd here's how you would integrate the Feathers Client into the Vuex store:\n\n**store/index.js:**\n\n```js\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport feathersVuex from 'feathers-vuex'\nimport feathersClient from '../feathers-client'\n\nconst { service, auth, FeathersVuex } = feathersVuex(feathersClient, { idField: '_id' })\n\nVue.use(Vuex)\nVue.use(FeathersVuex)\n\nexport default new Vuex.Store({\n  plugins: [\n    service('todos'),\n\n    // Specify custom options per service\n    service('/v1/tasks', {\n      idField: '_id', // The field in each record that will contain the id\n      nameStyle: 'path', // Use the full service path as the Vuex module name, instead of just the last section\n      namespace: 'custom-namespace', // Customize the Vuex module name.  Overrides nameStyle.\n      autoRemove: true, // Automatically remove records missing from responses (only use with feathers-rest)\n      enableEvents: false, // Turn off socket event listeners. It's true by default\n      addOnUpsert: true, // Add new records pushed by 'updated/patched' socketio events into store, instead of discarding them. It's false by default\n      skipRequestIfExists: true, // For get action, if the record already exists in store, skip the remote request. It's false by default\n      modelName: 'OldTask' // Default modelName would have been 'Task'\n    })\n\n    // Add custom state, getters, mutations, or actions, if needed.  See example in another section, below.\n    service('things', {\n      state: {},\n      getters: {},\n      mutations: {},\n      actions: {}\n    })\n\n    // Setup a service with defaults for Model instances\n    service('manufacturers', {\n      instanceDefaults: {\n        name: ''\n      }\n    })\n    // Setup a service with light-weight relational data\n    service('models', {\n      instanceDefaults: {\n        name: '',\n        manufacturerId: '',\n        manufacturer: 'Manufacturer' // Refers to data (populated on the server) that gets put in the `manufacturers` vuex store.\n      }\n    })\n\n    // Setup the auth plugin.\n    auth({ userService: 'users' })\n  ]\n})\n```\n\n## Contributing\n\n`feathers-vuex` tests run using StealJS, which is a 100% browser-based bundler.\n\nOnce you’ve installed all of the npm packages, start an `http-server` in the root folder:\n\n`cd feathers-vuex`\n\n`npm i -g http-server`\n\n`http-server`\n\nThen open the resulting page in your browser and navigate to the test folder to run the tests.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](LICENSE).\n","readmeFilename":"README.md","gitHead":"c342fc2d20b2f395f04505bc5d9df3c336023291","_id":"feathers-vuex@2.0.0-pre.78","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-xGQYVRGXmMVQ+9JUOuDrg2YXsSAIaOpRqQNpCrucGXSwpU7Lv7MTafTYfVZk0T7LYq0XU5tHmuyJp2/Y8x2UTg==","shasum":"d89359306821f00d9fbec8e205990ea6614bd23e","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.0-pre.78.tgz","fileCount":72,"unpackedSize":399130,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdimT0CRA9TVsSAnZWagAABakP/3ZIYu2sorgSPvVIUD3L\nkyY1EUuyzXUsx9m7pQudoAk1df01iS1eK7mqjXtc/uXqiC4wC8CWcMFNZJQc\nZutNpl/KpcFx4lmFBSmciFXPY45nTKZSbBjl3nnn4lYKz/y1+Xm5Zi7iVsAN\nNOANhdqkaOixpsjFHIhhZO38Vnhlk4Lqssn7AmIu0EeS347FhOndC6Ugp9bI\nKhRKuNN2x9pTFOcr7uQtTowtMv+VcdcKEH0L4DS3ijGzN6817ZMs9SqJEB1N\nFcgZVYQCjfNjC0u1gjXks8k6U+HKIY+iUKH/zyZ4R4Mx42AIGANgmu5tD5UP\nfHYE5Ecov7DDAwgKRkAMTo6z+xdx71iItqhB/wuUZdT5p8bD5phQB53qUxZe\nsnkeFsb/J3jRV9eP0rp5nz63agORyRNiZYUZ3omLvEfwsmZ8Wqjkdqm9eAtg\nG3W7IedIdJfFNKc0kZWFsZpVvzFES1dxsD12wPoz9xZYzpfFIe44EWryRqK7\nuzgVu0Y0f3P79/kYumLUE4YJ6pkFR1qFD15jt8j5eEM6+VdYfrSljhqnTIHD\neYZUM/bwvBezpWLOP1a8TlHzuwRnhj1R5nTvEOubtI+cR+8PdUkkgUaY31vY\nU8z2zc1SxaJbNVOGfox3oI5/6jksgQWBYsPn2r2zEi/EIJdBklOMWb0Vpcqt\nvrKu\r\n=1IxW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCzZ4KqMn4q9DJjyN0cMmdLixKZc0MICRNUJue3GpcFiAIgJKELuhEdJSE7bjlJdjBcET08mBnC1no1a/5Ju3i7Q9A="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.0-pre.78_1569350899460_0.149787201575577"},"_hasShrinkwrap":false},"1.7.1":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.1","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.3","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.10","@feathersjs/authentication-jwt":"^2.0.9","@feathersjs/client":"^3.7.7","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","feathers-memory":"^3.0.1","istanbul":"^1.1.0-alpha.1","mocha":"^5.2.0","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.1.13","steal-mocha":"^2.0.1","testee":"^0.9.1","vue":"^2.5.22","vuepress":"^0.14.9","vuex":"^3.0.1"},"gitHead":"311863bd891dd334f7173794d907bf8f759c6c1b","_id":"feathers-vuex@1.7.1","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-8nKY73kox6UaN5FyfynfatfEZjXXg4Y29NNMDjB/rAFilTA9NIrSVAPx2Aic0u3Fa8uN/1MxpAP01SxfC1nPOA==","shasum":"6635a1069489b87493e7e5f9f840f318f26c48c9","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.1.tgz","fileCount":60,"unpackedSize":325680,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdimhcCRA9TVsSAnZWagAA7WIP/ijzojMjOAN1Vn4lSHwr\nOB2+Xj4K2G72p3V+W8ZdJMapISQh1J/+gL5enHHg943jz1w4bb9tjUzlC5O/\nxD/cd9VbzPOKDzuwdf+mk16wEhjyoC+92+mLHocmabXww6QvRrNVMXathNzN\ndKfdoNxYrh48jOPKDOdhgtzYeeGbxH4j67RIVM1AmWpxV25rsY48IxLSrkeZ\nwFIlaHsA5vBLg442yIvovnJNiDhRZEgOJLXOoa2jw5SbzsNahi1ITY6fYZZM\nD7spRG+UqqnVXUrL9zXqsArPnUs4xG6em/E6Zuq3+EAEPQVb1uom1wi6oAFF\nywWMhi6DvuQlzXJTZYtW8+SAYMjCJtcB2pAtMdjOIWOSv3efuYwE/sPaklh9\n96GVlQ6otZIjL0+92Uu0tH+r367o9dz1uA3FR/mpnyPSNDjcBoOa65SRFqRi\n/CA6IawahBaClyyQa7BPZqy5AbC6TtldKOJiqLPzfl6X/7G1DiZRNh7a1FUD\n9B7OnICA/SbiA8dTpbVrA55/xaaZdd207eCKe4X4+VOxUZsIFwu+4+mUTl9i\ns5aQmxs3jGvTD6VlzRAjdlBQ59oF3faUVzKwrWGUQw87PeGv5fKd6qc8JOwE\nnNA5tzDH6uiYj5MAQ0yhZZBuGtW1UuMfFnB94BgMMCyzpwFuzYj+FDQ/1t+E\n0nxb\r\n=SIdp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIARNHGzej72ZHI2lp7hI0TdcxX2JESa8zRPu8G4zqT8JAiEA5eoe1es2gmwv3w/vQMLmKW/QLUesWcRuvrVQ2Xq8dL4="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.1_1569351771613_0.5828774389237679"},"_hasShrinkwrap":false},"1.7.2":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"1.7.2","homepage":"https://github.com/feathersjs/feathers-vuex","main":"lib/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathersjs/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepare":"npm run compile","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && babel -d lib/ src/","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"npm run lint && npm run test-node && npm run testee","test-node":"mocha --opts mocha.opts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs"},"standard":{"sourceType":"module","env":["mocha"]},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","debug":"^4.1.1","deep-diff":"^1.0.2","fast-copy":"^1.2.3","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.10","@feathersjs/authentication-jwt":"^2.0.9","@feathersjs/client":"^3.7.7","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","feathers-memory":"^3.0.1","istanbul":"^1.1.0-alpha.1","mocha":"^5.2.0","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.1.13","steal-mocha":"^2.0.1","testee":"^0.9.1","vue":"^2.5.22","vuepress":"^0.14.9","vuex":"^3.0.1"},"gitHead":"6c7b4ec402864976c680b19c490a6580205adef7","_id":"feathers-vuex@1.7.2","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-vDEhvzShvBwhqANZOKsC9UikzBNfKSDdFgnLhquTHQjz7ep60ZE1GHhV4WTK66VU0LgrRCrt9dYJ2103ndVLhA==","shasum":"e52a1b86348a8bec70eb67a25fad9527d6330f58","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-1.7.2.tgz","fileCount":60,"unpackedSize":325814,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdine4CRA9TVsSAnZWagAAR14P/jc4k5Xe3hAriQrj3WF3\nY22Q7Po7BLmB1AS28nJY5vKabDYt0Bc2Ldumz7Wkr9C703+RTxdW9D6k+qg7\nIKkIZxLsRJEPXB2GzZbzcCxvACGBIlqGDZngOwusjCCG/vEFR+MZ43+obvHe\nkOIlJG+283OCEMYJ05Rd+eXsAu/dwrD8tw8p+ywnIazBJ5gxO9vuFlFWwQq1\nPrzX4Jka+ChigLZq481KmE2iJvyN9lkE9F8cmaBlA00YVR+5b+kqjjSOpRaY\nEjt4fpxUY3qGI91E6tQ7ZOjn4bAsJe/xa+T4X+EiRBKuc6NjP+bRK0dFbIQl\n9+ih1H1gu0/gzv1z6RP9F4YT8iLQNjOMWpTuQTW5wp6ETobvxp7PZnI3o2gE\nvAsXgLNgwgzNvNu/Nv9wIwzat43vbkOm2rExpv7J3xasUanyfqvZbZ0Bp5/+\nJqdN4/c40xEvSwlBagU8hpuCZoreWNmoXf7wsoEG9fiWzMtPugDp1XKyHXAv\n1/Ly+Z4atuK5cFzJ4LQAktSGjCrR/BHej83Z76Y6HpMnAxpGxIogSxOc3WPw\nNirIWYJxiPch1ycUvsJyMF6x0/vMPnZCyPq4mipLgiOeeTI3VP3MAIiIXgDM\nFCE+lvY6YKc4Z5FEmkLqC9cM+gzqAy6FZwOz/UDrbtJJXsIKHDQjehfcRZ93\nMLxl\r\n=jRJ0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHXG6ropbZlGuJCJjNuPm0eVhWXARZC18s70ui3m72HjAiAp5sQdnvXC1GUGm3I075J+M+7+fsNRWScN18xVJs1U4Q=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_1.7.2_1569355703723_0.6334436781774757"},"_hasShrinkwrap":false},"2.0.1":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.1","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^3.3.6","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^1.2.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^3.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0","vuepress-theme-default-prefers-color-scheme":"^1.0.3"},"devDependencies":{"@feathersjs/authentication-client":"^1.0.11","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^3.3.1","@feathersjs/rest-client":"^1.4.7","@feathersjs/socketio-client":"^1.2.1","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^4.0.1","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.18.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","date-fns":"^2.0.0-beta.2","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^4.1.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^3.0.2","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^5.2.0","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"gitHead":"c5539f01cbf0692a65da72ff9c181a31b69c328e","_id":"feathers-vuex@2.0.1","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-EgWrixE07r499YS+mz0QdR1fBF8k8tPE2r0KtXs5aIh1tQ4sKLz9cbgUxDFYc5In6rQ4RRS3+7Gg9VL+BYxQZA==","shasum":"e3a481a067176847325a7479c3f231bb4e40c7d8","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.1.tgz","fileCount":78,"unpackedSize":451962,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdrcCUCRA9TVsSAnZWagAAr4kP/RMtN7j6KlFqKRmIOjha\nCLYjIcSjaHydWoJayo8kxgoG18X9aLJ10NgWAGbMNPazbP/JgD7NFY3ocYwz\n2UUTkS4btpbCzgj/iyeKzggS3A/ppn2RVsB6mfpwcMzeSTe3IJX2B4KZl7wL\neJmqj1tdnacZ6ESshJl+87LIM81L0hnKv5iUx8wv4mHVfZGuIRy5H/TDRsdi\ntp+lzj6qbPgB4ZSqeVeUqXNzmo8O+MSeAwQmvzxS1eWI8zN0Dr8rtSNzG+bQ\nb2Pcs2z7jNBtZtNtGS6ptHbYyy34qu/gdlo7H064KD+ernWycyldmqME7Rmw\nCzxC3BguRFMu4Nvkq9EHVjaVt/1QwPzF7eB/soIDDhz6xIY3AMiB2B0IA+B3\nCzVQ4Vnq7f4SACafqTeiUny23Ab6YmTkF3B3H4XyDNZrq+5qmXLRFwdQI2d+\nbaitA/sEwFbCTnDN50J4EV+OyfRQv9LWwZMkd+j9Hs0afRlx7qJOu/PDnpsy\ntYZIWENBrrwZrtSYqd0Tw0GxfxOf0i8AadPlV2aN6YoUM+iJBQFksUFmfOO1\ne10kvYaBKZv0lxh+48BKO9anXfjXBbR9is1LWi/IHTg8hdxdZPrVyoqnEO4F\nEqYOB+ESr73Rp9iMi04xU8Ec/dOrLPt6WPQOO/ZlsfBHKy7x8V/Kdj3TS4Aa\nKl2+\r\n=rPG0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD/9udwsSH60zKZ/ANm8gG89iTZvW1mAOiM1xOHvt3VTAIhAJsZwZK7T7XasK9PEA/YrheQPCay/Vt5NH00JfHHkjoU"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.1_1571668115687_0.4655435414795901"},"_hasShrinkwrap":false},"2.0.2":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.2","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^4.3.7","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^2.0.3","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0","vuepress-theme-default-prefers-color-scheme":"^1.0.3"},"devDependencies":{"@feathersjs/authentication-client":"^4.3.7","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^4.3.7","@feathersjs/rest-client":"^4.3.7","@feathersjs/socketio-client":"^4.3.7","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^5.0.0","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.19.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","date-fns":"^2.0.0-beta.2","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^6.4.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^6.2.2","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"gitHead":"cc458102514b7542fcded73ed78537671d1ea40d","_id":"feathers-vuex@2.0.2","_nodeVersion":"12.10.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-NYrbJjbsNsAg1k3HTFfHZFcXc9nCrhZX+vKK8tRFCs1dWHKI8z9wVaDvsW7xpappl1vtXjgd3G/VPGtZFyNJfg==","shasum":"5e28686e980dd0028f14a77ca2232ba76f1744ab","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.2.tgz","fileCount":78,"unpackedSize":450895,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsC1ACRA9TVsSAnZWagAAg/MQAJKZcDKkag+ks+6YgmSU\nbJVDrlZqrOYl5cdvh8aN1lEf1Kaju5wcCfjgWMqFcxfO6wbfIcrrFW7zW0Ku\nA+8GMCeGDNIrK2Lk0K19xq0JbsUDrZYMHr9XuigbVyIOVEoubzjPy4UVVjr7\n/r1+LbafZyCAj3VQpT4CG0TQXMA1Byo4EhenGprjv3RxooLtGuQ5e7FuAEh/\nBtCwg7jvyXES21yeRNh/xfmjPFO0OrOkHgJoyXTIBpp+xe4z7a7yXZsx3fQM\nnIJ/WZCJyo6G48auVzpWUBV/FFLzLf+yfPDXqiB8O6xtOwGolBRlzB7B5mzT\nHm4/bpJ0HFzFgCjsRQbqlAawbbbjQnSxNZ1EXH+8qdY4CQOM88UftWUifhow\nptwWhV6puU1djMJSn6dJOhLEWftAYgQo9HXPexnkT6NCZMdcJjH0JdMB63hn\nILeyM2yWMhS5Eaq3fnH7dVl+GVga9E6Xkorlb7ekW5ajKus6k5b3DeQZIqZy\n4pLuDKRFuq9nVuWggcbuG03md8a1y3GumHq7Kxm0mHiiwgrVBzFUSxyQqUQv\ndebdl336wOYFM5UMbrcp/jhk+54TMbahhsTYc/0k9FUd4rN3l/UQ8YwoVTJ3\n8lkJ/WPmw4wCL0SF/2kLZL+xPlc4rBl2jmq8wKTPBIowjauYMkbbEhWdG7gj\nRcfT\r\n=GOGv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDiIJm0Zj7src8WwKAmlx8P24kl3G7oLlmQs10N1+6jjgIhALlP6WNe0D4p7bShujgFTEJ6zMvgC9XwvydZnfC6xAnq"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.2_1571827008316_0.5266935546769496"},"_hasShrinkwrap":false},"2.0.3":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.3","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^4.3.7","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^2.0.3","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0","vuepress-theme-default-prefers-color-scheme":"^1.0.3"},"devDependencies":{"@feathersjs/authentication-client":"^4.3.7","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^4.3.7","@feathersjs/rest-client":"^4.3.7","@feathersjs/socketio-client":"^4.3.7","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^5.0.0","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.19.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","date-fns":"^2.0.0-beta.2","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^6.4.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^6.2.2","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"gitHead":"02be6885e644b37869b728632cb99e09a0170d52","_id":"feathers-vuex@2.0.3","_nodeVersion":"12.10.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-749IFe3EolFcudvYEzAVO/GE2YAozjCEEdHCBhWFImcpKfktlMvFRDoZsnLh6o7al30gcnW0glO9AxQRHujmrA==","shasum":"f7f3085a54f016f4451fdc8bbde601a722bc96c4","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.3.tgz","fileCount":79,"unpackedSize":452981,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsD58CRA9TVsSAnZWagAAjcgP/2lB4h+hMDApH5oZvNFM\nwmA3R2/QnT0hO09TtMpDPT6iIANNIvIjPhltU9vapcZ7D9stLRh3+Ob6JuzA\nuO+tQ1dTMCfP1Kttin1j7KLJjOv7pXPdQ7XiSSAeeviOsqbE+O/aHwQblvh2\nuTCzfpQhdppZ5bVeg7igsuSfN+JlNse5fi30X0wHzA5a+ixrn16acjK1kDTo\njtPtzXHj0ETp/MyW4LABroAdqyl4MjvFwzX0omDBIVRXZ8xEYqZp6URReZsJ\naEX2EhqggQajCWQ+humPTt9S8WzfXRbRvaQ2fcdXw9tG/bwl6xE/bPo+LJCW\nO9czbgM/ZoahgSjdU7YtjKcAY9EJlyq48mOZfnnc/vIG03VmuOIt6eVssz+c\nD0ITLM3rIjshTyUyVWXvUAnk8sPu2Ot3tgEHvGbgBGkGxRvwkygznouC+WlJ\nDuyzxZw1lTJRttm4S/HRFjtD5JFSlKBTBsgreibRcXyW0YM8dBEH+lk9xCDz\nGOW5/f/bwJuF2gjOe36ZbDi5nGvMyOF4cg9kvcp+LsGUGiNAel7w3Vkc5Q65\nVqb41cZGOgZ8L/kCfDq5H0ekSJtbGTTSMP+sNayqYCYEBrXhC8dwp+3LV3NE\nRtHP00K7on8vfl8qaHYjGwVA8aG1juhmd30+93ZuPKpfi0gq8c+dRannd0G9\nbAmM\r\n=ksh2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEDTQFKBAONJS6EJqnhHE/1s609P78l7pLTuhW2zss+iAiEA9BMoc49qJsEM6hjUwZOi38/Us4Pgok6OYT/fnUopFPo="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.3_1571831420436_0.0865245623347417"},"_hasShrinkwrap":false},"2.0.4":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.4","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^4.3.7","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^2.0.3","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0","vuepress-theme-default-prefers-color-scheme":"^1.0.3"},"devDependencies":{"@feathersjs/authentication-client":"^4.3.7","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^3.7.8","@feathersjs/feathers":"^4.3.7","@feathersjs/rest-client":"^4.3.7","@feathersjs/socketio-client":"^4.3.7","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^5.0.0","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.19.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","date-fns":"^2.0.0-beta.2","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^6.4.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^14.0.0","jsdom-global":"^3.0.2","mocha":"^6.2.2","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"gitHead":"85afe62cd417b1a72194ab807b3da27c51371f1a","_id":"feathers-vuex@2.0.4","_nodeVersion":"12.10.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-noCb4twP5dW0QgG24mevQ/smggaicYXuQXuIg9lDUx7/L5FlWJk77xNyRQmXf5hN6dTPyHoLk1XlfQUm1419fw==","shasum":"5d18ca666d0bb1a2e7de362c759520b514216791","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.4.tgz","fileCount":79,"unpackedSize":449272,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsLxzCRA9TVsSAnZWagAAt+QQAJ4auMk97qcI5t3ymtII\n1AQCnpNfzWZKsEr7OdiO22XnxTV0XDM4g06VG2G6E8vCyaCS/p+f/S1a1/4a\n4rrO40K5wsUxP8or/9vVtXDGYvUdFy5tk6dWExAJMlLZqRfJXiZwqWQ4C1gD\nlfyb+QQfCey+oHsi8z+hI+MkbRWNg4/1nHttlbCIyRa7mSb57cboiYsEcaeZ\newnPF7wZnhNLKQsT0hsr0ne5nAWWpkuaXY3WYrZb7KYN9V5CIvqF2Onacgs2\n931JsoNRvY7WFVABSzdxzh7TPht6vgjkDoPtXoJ2r77TbUECVrwLBW37XkNJ\n9is/tLLGfJiWrX5jhziIsGl0NG74IBhuH8OCPukb8U7gnu8sbrqjLuHHTYa4\nBicXuimZDGCCJ3Etw9KjEgQ/IJBVgNukDbLPQGZcb41QMb0oggnIsq5wmfaC\n2X0WmZIE6qJ/0WBkxTS7c5ZpvmPCc70Wcj2ZxdyYkEY4atOVa2L3vs2uzlj1\nbZJmJ3a41m8yE4Veh6eE76AaLp8wVEY4axWsm4xw1gmJdA6Q3U5t2/bJhB5E\n7+0JuWz84R0xpCM1zI6jPxgrr7b7WwZ5yVY1VvhrWwnhk+wjKM7xkK4XUXo9\nYtJa4yLenV8xViuVg+il77bqsqgeuRbIqCkIq/MPlkgZastF+1lKZQQNnkVj\nDdLK\r\n=5fWK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDHQ5Y08CRNTCAcGRenvi1+xTXPnOTozG83kJMFfe3J2gIhAMgkp4vQ3xPuFHXBwshM0bmU30e+mE6Iu5ZSMmdS7XI4"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.4_1571863666815_0.08324438769983522"},"_hasShrinkwrap":false},"2.0.5":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.5","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^4.3.7","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^2.0.3","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0","vuepress-theme-default-prefers-color-scheme":"^1.0.3"},"devDependencies":{"@feathersjs/authentication-client":"^4.3.7","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.3.7","@feathersjs/feathers":"^4.3.7","@feathersjs/rest-client":"^4.3.7","@feathersjs/socketio-client":"^4.3.7","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^5.0.0","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.19.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","date-fns":"^2.0.0-beta.2","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^6.4.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^15.2.0","jsdom-global":"^3.0.2","mocha":"^6.2.2","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"gitHead":"78a5b2ed48c6d4885ba49711bd363860da61a4f0","_id":"feathers-vuex@2.0.5","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-1TeyTc8U800B/i4XXrlOffnp6XvBMNWuNuPbHHifwW0o3uwhZoiaV67SsoKkXkQ1HDe60O/SjvUdHsuwoyM3AQ==","shasum":"5a8466b3d37031cf3d3ac08c5490d51e572d2cd5","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.5.tgz","fileCount":79,"unpackedSize":444156,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdvMqUCRA9TVsSAnZWagAAJ4YP/0ITd+DYvHj1n2dJBLSl\nkYUYqAw31XoAhVhZ0BHnwCRdXGWpXVIsZaHUBU+DVhnPS/Tv+4j8r16nyARH\nw5r4FHzi4Y9ePounpvPJMNSWbuZRWRNbmU0nDQkUlfBdwpO1RrrqePRhfZFm\nRGgGZ6yT3Fc/Sy8TZYR3EaTtaEEbdtk2eGFZOy+BszExT7tKrMNXB6wrC6zk\n5i0wyNE4jJ1IvOYeSMGNwEWkfkS76cm4q3YZxcL9ehLj8fAVMUM/Arp0KU+q\nZ26vKRvDihfLF0QVBmgMlj/4OYzEGO+r1IvoGIPFY95VaLA7GuY5dZuCrUMt\nKst/rKkxhRHUSOXxBZsIsKk85PFwY3fzu08151OYYXkmNvD40QBdydNsHjkJ\nZlfXOnK2Ef0bTOsO/86gfW2e7OLwOHqT2uugwwtmn0vl2SXHDQSWyi2BIVrH\nbhiJMqOD1N1+kiopIsOMRulakF9z1v7mY58SQSOwOYr4GlqBa+ycWdfXB2uI\n7mNtcaI2Zy2KMlYU0fBXeIveZ1sc428VCVRExeLlJV7H9KChh1r9dd1IQkFn\nEZapI6tfWjVZ+ifeOj2xDdOWEf2ubb8wgOJdL/8uMvV7XQoiTkDMy5QeFp9f\nivauqQsy8wj/Tt8LfRXmha+SDcoWcoDwHeAwYf/s+zZPaQPYAJGoSTG/RIwi\n85v1\r\n=TtIq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDH+XvTDERzGTDVXIzF4XV6UmhTXHff2e3dxqMn7bCROQIge01lYE3SeB4cDzwqU2fS+vx7T5qUNd4PNUGBTTjpO3c="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.5_1572653716209_0.8552696757540541"},"_hasShrinkwrap":false},"2.0.6":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.6","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^4.3.7","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^2.0.3","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0","vuepress-theme-default-prefers-color-scheme":"^1.0.3"},"devDependencies":{"@feathersjs/authentication-client":"^4.3.7","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.3.7","@feathersjs/feathers":"^4.3.7","@feathersjs/rest-client":"^4.3.7","@feathersjs/socketio-client":"^4.3.7","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^5.0.0","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.19.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","date-fns":"^2.0.0-beta.2","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^6.4.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^15.2.0","jsdom-global":"^3.0.2","mocha":"^6.2.2","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"gitHead":"ffe24dd6efa107c51cfc8514aa9e41c3ca063161","_id":"feathers-vuex@2.0.6","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-ifW9YWIDNDd0AXJZJIYtUGiMHNx4SAmcb14uszulgo7hOUJ1kYia4NiUFBffq9SRt7mjR6s0ui+KWWK2YOIFSA==","shasum":"2b9a07f8b114e28621b620275f5247894335beda","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.6.tgz","fileCount":79,"unpackedSize":444445,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdxxY2CRA9TVsSAnZWagAAGycP/3UkhEWvDvbei80G6YM1\nQ30kvEdP/hIoMpWwgRZHSpPbpR4Wv0Enu/rI62fVGKpgAkK3NU7GPiovrzdI\nAxspP/m73nrzJR/pCzQ4oDYdEI0tC9g5Efv1MAIcv72joppWe6EhfZX+oAwA\nelu5CW3DRgIAyDV4+Rkg/H35HfPBM86iGnEyJlsGit2bYi5Q+k67naI7HH/s\nkB+cEOvKpdT6t1ZxYzc/JOPLJ2UrZkbLEEqVhanvdPEODvZoqU5A/JFcdnaf\n1767UxZKOFtwE6CfDlDADxGnLtMMRExBztb61rbQWj2iELjwjOsrSPTda3Mz\n42Cr0HlLlKQhxlBIQ/kWm0Wwh/yERBJFL73Jn8SniNSXr34JljB8Ec8qynAw\nRlLefJY9NzBTTNjfKGz2vNkcFCkpHt54Epud34R2D0gVB0k8NvHV107/CPDj\nZxNl3jh8ISgrGvhKvJFGWntQyvSOiBh0h56fb4R7TeCjDk2m86PVXzELRfjv\nNVIsaT+iid5gCrt/lknSVa6iT80p5rqiscPaGKGdOa49vtw7M5kblxLIFMmX\n4lb0MeN5ZuG3iNuUWgBxQIj9uDuDA9OcWRrYnFY1CySfScU1DJUH71xg5a+G\ntXqg0VgH0hYW/X7b33jKtS8x/w2083NI74RPCAYYko7OmEPQAcBllKtGv/OH\nm/Ki\r\n=f1y4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE5GTn+nFwcrBo2QlgtDasgHCAjTNBuj9oFIq2e+wHgOAiBZvT/PUjNNOTY3GZLFApEzwPBv0PqtMqi7Af1CRcDeqw=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.6_1573328437452_0.7463260878519078"},"_hasShrinkwrap":false},"2.0.7":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.0.7","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^4.3.7","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^2.0.3","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0","vuepress-theme-default-prefers-color-scheme":"^1.0.3"},"devDependencies":{"@feathersjs/authentication-client":"^4.3.7","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.3.7","@feathersjs/feathers":"^4.3.7","@feathersjs/rest-client":"^4.3.7","@feathersjs/socketio-client":"^4.3.7","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^5.0.0","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.19.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","date-fns":"^2.0.0-beta.2","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^6.4.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^15.2.0","jsdom-global":"^3.0.2","mocha":"^6.2.2","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.4.1","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"gitHead":"0e2cc1581bd045c5154ef7d00ab4dca71bc619a8","_id":"feathers-vuex@2.0.7","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-lXA2mKhMjUu/ASzJAATXYIR3AVwwSyUY111ite94fAjth06x7q40QOHpSBN4IDMvNcwlHpvHu1tfYZDy58QM9Q==","shasum":"ffd1fcf644599903dc1b134921a3a89ad3e6c0df","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.0.7.tgz","fileCount":79,"unpackedSize":444569,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdx3sPCRA9TVsSAnZWagAAKWsP/A0qjeUhpNQqws9oUnlq\nFlP/xg/6V7UjEQFM28XxoZw2JK0XSX+gGwOHIjyjVvF0T/ldp/FsYf6YObBt\n1ximmtZ6L8ENauPmvUrYxY/3rx7940HlND9u+Q9coqzeNAdrY+n1/5sBvXpk\nnjq5+sXI0QYaw4kTDBYBa8cDxdCKDrDBUMPbUTu7MdOlVOvnAQEYtY0LLB1W\niojWNmgPs0lGmTmBhWlQSsjV/gwEFr+hkMqHM+HK4J7nRACFSjhF165bluXL\n2SkhmnHUTSYOhaveG66lfXdGQ73HbA5UsZJMMNzo3QXB7YmJe/X4uH0rRetk\nhMy9ueGIfOJkqiwCuHSWcDHGofVtMdEcj4fnxTFTCpNOphoapatUSskIz3AC\nQYQP3ykgSbLR7tooOuHw5oR0HO7OqdPI4ce9b02TWvf47TmqBnfyIEQle4hu\nyalz1eNRhv5qJTnTlonc9tXix7LsSwSjgGWlpFWoVilIyBE+OTTRfEsZ8Ow2\ngyPvzzNNFOQWudllqXObWHzQ9YgYpSjflzjNrER942hIbP3hHA64PDRuSTAZ\nU1hSwO+ROuVq8yOORt6Tbiu79FQsm5UbdyrL/VaNlBHtDHKNwTefNAF3Y2/g\nFAZ5jhgNge54PIIcU4WPIjjs616c1oQQ/HU8MySxU/sLOXATQvQB/WE7N7B5\nO0tH\r\n=MWxB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFsOh36wK6Ioz+DK2aSpQPha4LNlxDxLVUrdxUMSgb47AiBCE2DLxE6AJ1gPAfMAgAowTSV6vuCzoySe8+ZLzoQtDw=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.0.7_1573354254834_0.9581648163961765"},"_hasShrinkwrap":false},"2.2.0":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.2.0","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","types":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^4.3.7","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^2.0.3","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0","vuepress-theme-default-prefers-color-scheme":"^1.0.3"},"devDependencies":{"@feathersjs/authentication-client":"^4.3.7","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.3.7","@feathersjs/feathers":"^4.3.7","@feathersjs/rest-client":"^4.3.7","@feathersjs/socketio-client":"^4.3.7","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^5.0.0","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.19.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","date-fns":"^2.0.0-beta.2","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^6.4.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^15.2.0","jsdom-global":"^3.0.2","mocha":"^6.2.2","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.7.2","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"gitHead":"61156956c938c613e37d4481f7eef97d2c87859f","_id":"feathers-vuex@2.2.0","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-mwU0/V7ydXNcbihEQMLfYK9XGHRr/nJVdrD9UwfwJyC9LKYonl5jFuVFEKMpBh7FO1dD9xRmQFgclligmMnk9Q==","shasum":"664c1cd416d403cea0081b28bc097bae360119d4","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.2.0.tgz","fileCount":103,"unpackedSize":467534,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdyQl6CRA9TVsSAnZWagAAATsP/RrUys7A4DuDE6ZdOaWR\n3pLNK7BQtDjoUB9vLuiMpwUXX8X/0vMk2beZ9Zdies+xQVKqKdd9XI40ckRM\nkee22VhM8bV/QP9Tf1aL0T6FEermtjHkm3V5tn5ej6bf24OociKJNrKmJSrW\nGs9ayU/Lu8N5fJbGsm92A4N3sV93Nod1SYFZ/c3GkjtO0IqGtsYC4WeHeC3P\nrLzR4OkWuJxX7Bo2f53lsz+jkXDJkdzQuglPKnRTvywSmT/zIdltGG8Ol0Qh\n1kFzYRGM58Yof50r67SaMPlkbiyFwdWciNiwVJjdkDf/1okE1/msIsQXrAQ2\n/z6AzVj5672l/l9MXRgKmy1WeDbhsSD+Idk8py27WmdMq99M83P5D3Rgi134\nO9BiBmOrfmbifS4uDxE9A/gSFYw0GEwZJ46AqKLo2xFT9RSHlnlJDJgLlgJ8\nFEq4ge7zRsIt72vH/nwhK/NWNGLNy9A7iPFOH1CWVFnH4fZc/uGVtqVlvCLW\nazHGftM8XuFXUHYL6RrRTzeFwl9vYt6Juu37JauAkDy16yaZuF4EkQOQbN//\neb74YhLDIcc3T+onDdkfEq+Y1r5wPDEVMBMWT9i2vZgSVxyQD7Qan9dsHnlP\nRaG/dy07IHy91P6turHVhRT3Dh/ClXhFSMV+PG33fQ7AiMu7gw/IaESYtzS3\nUVeP\r\n=t5WZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDZFABV1d8rb5If7LMkOfAdmsLzF7U0KTbIeUhKfzAZqQIhAOSyb8F5GhA6yITAAiTxDvG7dscORjt54B0d4p9F4eiw"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.2.0_1573456249028_0.21853868475533456"},"_hasShrinkwrap":false},"2.2.1":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.2.1","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","types":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^4.3.7","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^2.0.3","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0","vuepress-theme-default-prefers-color-scheme":"^1.0.3"},"devDependencies":{"@feathersjs/authentication-client":"^4.3.7","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.3.7","@feathersjs/feathers":"^4.3.7","@feathersjs/rest-client":"^4.3.7","@feathersjs/socketio-client":"^4.3.7","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^5.0.0","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.19.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","date-fns":"^2.0.0-beta.2","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^6.4.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^15.2.0","jsdom-global":"^3.0.2","mocha":"^6.2.2","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.7.2","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"gitHead":"33f6da38828f2671efb12beb9c88635848350e96","_id":"feathers-vuex@2.2.1","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-46f6K1+WGWjnp0Wh37FFs/6/9r9OOBmML+Ju0d+A3LpBQe4//ro6LkuMfph4NA0bZyoDbA8vEda40hmVU9sSUQ==","shasum":"a8e1f772553aeb77f242941f5c43d694e8e0d620","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.2.1.tgz","fileCount":103,"unpackedSize":467550,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdyRX5CRA9TVsSAnZWagAAor0P/A1AgDNkXcGp15HSiv4L\nwg8fgjFY6YN6SHioX3OzZPoyd8R5Al5pUtlvBRgZE5xtX851GG50OPL4Tym1\nxmfR8cDfwRSM1hzfPwaTAHvOZwuJ29vv5JpcD5DsqXVvRxeE/ZbRkYicg/1p\nTeu84OG2BK4sd6lMY5oQS1dG7VPiIEksOqRtIhlxu92fdlmA0NC7zRfA3I+P\nX6+5in2fsh64LdA4q5OhDRDl0d7xxnIWbhXRuL/f6uFTtwYWKBPCJ0Mec65I\n4jaw7Q5QlVj/G9Or2RFq9uBMkKMD+/qUiqiy7WrJjaD3dxX3jz7jnS+X/tB2\n/qSKg6g54XPBWUnWJOm3QMO6ZqJeDe1pabyQYdrORf+MDNOldRJyh+KXIz1r\nGHykvFSnHJMoxqKdzy56H1qwNAtiTkKEj6d58WSKFk6IzW6tFHuTfA8ca7in\nnyUH9y69gewxYvDo4CiGNnh4zs2xYnJm14jRkaCRPmzeZi95woGMoRTWDHs3\nvevULRusojdzcsgV1s8IneShPpI4vbbwGXi+uBkEj7zn0VwNpvui2pdXeleu\no+imBe8qaU4ZsQIjBu8Z61bB2SyMk6x0KGUY8yT8FZblHMBfD9lXbaNOS98D\nFEBm7KKckdsx3nwXiXabN2leIhFW/vooOPiPa3wh6crnBECGE42bCwxgEc/6\nRD+d\r\n=oifh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDYtdhuw9XuNq9nc+C4r5w2VJS2tJhc9slaMyEa4MwHSQIgEjVo1LyOpWfYopVHT1BLrlSf85+NgdQIyucGLO9JIKQ="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.2.1_1573459448406_0.9423304717645076"},"_hasShrinkwrap":false},"2.2.2":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.2.2","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","types":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^4.3.7","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^2.0.3","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0","vuepress-theme-default-prefers-color-scheme":"^1.0.3"},"devDependencies":{"@feathersjs/authentication-client":"^4.3.7","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.3.7","@feathersjs/feathers":"^4.3.7","@feathersjs/rest-client":"^4.3.7","@feathersjs/socketio-client":"^4.3.7","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^5.0.0","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.19.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","date-fns":"^2.0.0-beta.2","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^6.4.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^15.2.0","jsdom-global":"^3.0.2","mocha":"^6.2.2","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.7.2","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"gitHead":"aeae7c210f2a6c6189f866c0e553fe7dce744506","_id":"feathers-vuex@2.2.2","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-cnMt3d7ogMp2VWzVJNmTmkxju7hYoFOeIvRkFVxpCKuAJpGVAhSZJumc4UA1OcuxMHzalnegQee5DCXCTy8Ufg==","shasum":"215185483fd3e339733240ca7e0a9277fac8ad09","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.2.2.tgz","fileCount":103,"unpackedSize":467562,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdyRgcCRA9TVsSAnZWagAA6kIP/0yNKsAJ+DBUYiiXIVZ4\nkd4+uXp7P99yWWnGJUPPbZ+AsM/Mgy4HAXwT7rIjcvdOCkTLKBfHRE9FFSJW\ntMhE5YgQcop+rRsYk4E2i3PtB53DgqoDc/Tcefn7W6Zrv7Gy/nPixCmky/fc\nc8ky2QAr8ZPvf1X0dLLcNrRF2c6xZBzFnPPFHDshyMeuvv+IhOoSj76wMRNm\nDIJmMXAqMVvUNncLdvDA9ml3LA9K31LdK4OyFDviokbZzTCe2PsPTao91hYI\nek90cIZtwh/0NLgWBULj9o/3yL5PElhUw9qPVC2+HHwoUG0BOBhspmTTibUy\nQAdROuLU66bDlO1kqR+aY4KChoBskbW6drnfoA+zPI36WXg1vSShSt5QO58E\nu1EAbNY9qtBNC8bym1tuGDuLWJ6sfDXuJ0qwOQCRx40DkiMOK0PwcuF0COqS\naQNrRqWnrrEGXQKy7gi3y+zKmcULsR6CiLpjm8LHco/8iddqq4rFNHoiIcTI\nE1jhnR0tDc/cHLQKRSvwC0nM1Fa0qWXVhGN/Qks3Imf555nlHu6HSlxcJ7+8\nhO2wVtK6g4hDBBkWXKrbl0CDDM4xGQJhyK6gq7swicKyPMR36KOwpXFeL3ei\n+XQXDBQiEeW/xNW5hRAkuNYqTKASGEfIb22KVkfrR4zUH5lmsL1k/OB22Tbf\nQON7\r\n=WZkz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDwF1Olb0gimnGz5a2LO9Ym1ojv3raqvlFHzxk784rcbAiEAqx5Gd2fEgf0B5/2UQPyio7GHVNEpDouEQqjTmSazOxI="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.2.2_1573459995758_0.3027265444052971"},"_hasShrinkwrap":false},"2.2.3":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.2.3","homepage":"https:feathers-vuex.feathers-plus.com","main":"dist/","module":"dist/","types":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathers-plus/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathers-plus.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathers-plus/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^2.0.0","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^4.3.7","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^2.0.3","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^7.0.1","steal-typescript":"^0.5.0","vuepress-theme-default-prefers-color-scheme":"^1.0.3"},"devDependencies":{"@feathersjs/authentication-client":"^4.3.7","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.3.7","@feathersjs/feathers":"^4.3.7","@feathersjs/rest-client":"^4.3.7","@feathersjs/socketio-client":"^4.3.7","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^1.5.0","@typescript-eslint/parser":"^1.5.0","@vue/eslint-config-prettier":"^5.0.0","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.19.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","date-fns":"^2.0.0-beta.2","deep-object-diff":"^1.1.0","eslint":"^5.16.0","eslint-config-prettier":"^6.4.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^15.2.0","jsdom-global":"^3.0.2","mocha":"^6.2.2","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^12.0.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.7.2","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"gitHead":"20b71049064c3087984f0a0e8795bb2d3dfddbff","_id":"feathers-vuex@2.2.3","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-07BVolIlbKEJNNnUauhY2hxptJN5Wwd51pzNkjW6NeqYiP3gGn8XerCP9pikHhTpvX7wNv6ziemTETKpBwAduA==","shasum":"43cbc2cd4fa34411b9919c3889eee18e318c52f9","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.2.3.tgz","fileCount":103,"unpackedSize":467662,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdyRyjCRA9TVsSAnZWagAABoAP/j1dIZDXDtNCjMdedrG9\nm9V63HjK0c8auf4zjaOznh1n2B3ySADf+0zEa1xf7NaNgyjQqMKsWq8vFVUM\n96BU9s3sk4IQJuIQqkDX99FrsiJDh8ea6gh3HjRrLFWa8eZOSaSkVr2w3m3r\nUKx5GLHNaMAmT4YMXstI0Kp1LpXdHViDbs1Gb/x9E0gIkV6bL+1Fh00rUMOt\nNItBGBYhaYpg+EIIur3PVedX5MnQ3DcfOTf64sNrGaz5+jmWUy/dCJiR+Sg+\nxtlSkfjxdlTfZUTKyU6QU20nrgnG2UoKzC6jFMlWD7a7ob/pOp/4gpcFF8ll\n1aOo2Q5S0xoEZtnci3a502lWuTxJoH+OoPMi+y+riVazqnUxtVBvHRaBvmQb\nZTgMkJzpmj+5Y4jVcTSEZuiYN6+r21hg7pqHQw3kTBONyy2UJQEDpC7q5NRg\n5EY3ANDFaAQrDLKHDRm5ZhiU0Mkr4ZfKbAH/EhNq+rwhQFnBEwbJh3lNOC6q\nhPyQ9k5DiNZDpSkURwYPm5Xy7MM83UoDM3SwElUjMmurPaSihEiec/qZ0kbw\nn3JcG+YHVjll9RW4fL7m12OjadNyYOjjsacqxGTAaDQXQi8/UevUJze6Lfkk\nXTtzgkGVanEq23ptlyhDvxBAiwdwSv/yOmdlgWmp3iJUlDQQdZBCrP3u8B4E\n8Icp\r\n=tg85\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEfgcOvZJI28cSOc6EZkBLatEWokf0O/uj+f+Xnk+Se8AiEApM9DUihyBKQJ16NoQaCtpsZOpWyGHyx2Q667QphkY3s="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.2.3_1573461154576_0.6705127077328961"},"_hasShrinkwrap":false},"2.2.4":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.2.4","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathersjs-ecosystem.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^4.3.8","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^4.3.7","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^2.0.3","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^8.5.1","steal-typescript":"^0.5.0","vuepress-theme-default-prefers-color-scheme":"^1.0.3"},"devDependencies":{"@feathersjs/authentication-client":"^4.3.7","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.3.7","@feathersjs/feathers":"^4.3.7","@feathersjs/rest-client":"^4.3.7","@feathersjs/socketio-client":"^4.3.7","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^2.5.0","@typescript-eslint/parser":"^2.5.0","@vue/eslint-config-prettier":"^5.0.0","@vue/eslint-config-typescript":"^4.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.19.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","date-fns":"^2.0.0-beta.2","deep-object-diff":"^1.1.0","eslint":"^6.6.0","eslint-config-prettier":"^6.4.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^5.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^15.2.0","jsdom-global":"^3.0.2","mocha":"^6.2.2","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^14.3.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.7.2","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"gitHead":"e6aadc0ed13b82fc1c2368573a626a7277e55e3b","_id":"feathers-vuex@2.2.4","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-yU6KlTPj4JhqrePEph24fZ91dsVB7D6V822VZkaBUZkALeywawC1J3xli4GDnY5nfBw2iWOteUvILZE85AmD8w==","shasum":"011e0e169b281b3628b5344b15d15955e5dad88a","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.2.4.tgz","fileCount":103,"unpackedSize":467755,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdydRMCRA9TVsSAnZWagAAu2IP/0dPF7hovJGJ/MzjkNXB\n1FlENEgDvSekYsNQiPT6LLsWeADR3OD/p6AmNqM2gtmDM3jze2ysHvgbgX3N\n0Pxq4TT1NFEG60yHQPebTFigc6PQIFjpGx9N5+A+o780rmDUS3aLL53WBKjp\nwy5y9BEee53QvWBqDHSwrI9e6Uriypb0/2Ewk0DM+fQl8w0r+nIym6NS0isQ\nSxhZ57smNmPout0T7gOdWXIt5ToRA3f7eBPAagRTAQ4KKEqaeLjwzAEJpzq5\n0r0pyLo3YEqHXJh0AbwgX3WBFG1IfsqwmJgZnt1ahS37DMYFAk3RTfBTCQld\nSZ+RexLuyOl6gKTLn55LfoyA0dIljvgzbzBeJ2VscLS2UNzWxmSE2ucoTdPs\nXYaU8idvucrlFXXUGRUxOeJ41Mg22gVEfcwWzGdPecq4TdaM69Nmd1JK9VjL\nT9JIK1ohoKZs8yNyy1zd9BqI7eJ/+/x9xfbar0cSAzYwSDcLBX2OsCqjIhMo\nMaY1lcIfIU+DVqQQ1OiO3mYbebpwVbZYMK5o1c1NsDHUNsRCkbgIx1DIQNZk\nrdixl3rcsxq+SX7xTJoOBJLRoyPI644W+gATssfZICFtjXHLvZCrVCJca4ys\nRnG3UuoSM/DOS3uLmZuwmxvfbJg5cofW90TQxfC8mxDOkkgdbEvupCWxb8hZ\nv/rZ\r\n=IPa2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCGGnhof9EfU+gpYV9Kruyo493tEnef+K/AZlGSAe/xJgIhAMmeA7I3boMoLq8hFNhwPexnYmUgv5Uc09FlrOQhl3WK"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.2.4_1573508171772_0.34321237860081544"},"_hasShrinkwrap":false},"2.2.5":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.2.5","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathersjs-ecosystem.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^4.3.8","@feathersjs/commons":"^4.0.0","@feathersjs/errors":"^4.3.7","@types/feathersjs__feathers":"^3.1.1","@types/inflection":"^1.5.28","@types/lodash":"^4.14.123","@types/npm":"^2.0.30","bson-objectid":"^1.2.4","debug":"^4.1.1","fast-copy":"^2.0.3","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.1","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^8.5.1","steal-typescript":"^0.5.0","vuepress-theme-default-prefers-color-scheme":"^1.0.3"},"devDependencies":{"@feathersjs/authentication-client":"^4.3.7","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.3.7","@feathersjs/feathers":"^4.3.7","@feathersjs/rest-client":"^4.3.7","@feathersjs/socketio-client":"^4.3.7","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^2.5.0","@typescript-eslint/parser":"^2.5.0","@vue/eslint-config-prettier":"^5.0.0","@vue/eslint-config-typescript":"^5.0.0","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.19.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.1","babel-plugin-add-module-exports":"^1.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.18.3","can-fixture-socket":"^2.0.0","chai":"^4.2.0","date-fns":"^2.0.0-beta.2","deep-object-diff":"^1.1.0","eslint":"^6.6.0","eslint-config-prettier":"^6.4.0","eslint-plugin-prettier":"^3.0.1","eslint-plugin-vue":"^6.0.1","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^15.2.0","jsdom-global":"^3.0.2","mocha":"^6.2.2","omit-deep-lodash":"^1.1.4","prettier":"^1.16.4","shx":"^0.3.2","socket.io-client":"^2.2.0","standard":"^14.3.1","steal":"^2.2.1","steal-mocha":"^2.0.1","testee":"^0.9.0","ts-node":"^8.0.3","typescript":"^3.7.2","vue":"^2.6.10","vuepress":"^1.0.2","vuex":"^3.1.0"},"gitHead":"6a8e6abf5011b3f59255ccab47aea0bfa1ddb7f3","_id":"feathers-vuex@2.2.5","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-4r8mQpS3Oq3Oy3p1ng8DIqI2iEaEjFZwDZZ65HQIElp0MXM52WKFVWd2MIXs9bh9P748HUDzCcaQt8ARXCmPrA==","shasum":"dfcbbd451bf0fa2fb1354cafe91df04ae206925d","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.2.5.tgz","fileCount":103,"unpackedSize":470086,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0E//CRA9TVsSAnZWagAAPDQP/RuKGqa7kzHPjkWlts+p\nMr4vCuIduJXO93WhhnLKTdGbeYGbdLMSMAUav/LvfE266P9UrNa4rxEMQzjO\nR0x0SctdHIpj3p279Z3L1/2NGL7hnxRzkqxkW4QFRsvCYA2cVxwGGw487OgZ\n851Olwijewd1aJQIW8x0qoIoR7PMqox1cegbm/PNzmoUphHQ5+7FZdB9MNM1\nYQV5Da4xA/DCab0W4dmoy0tR5KQjTK+DXpbk9ZGHwWtuweZhXjQQrrmZP1WD\nxAQS99PTT5Zwh/PXbiWac3eHASp6ZvRv3M177DgBtjJy9JSlC7+0x38Uw+1k\nvVZ+GKnNVPrsg0Fq/BdDoaxHcJ/7emHbmg8uQEWIDnqHLpSCtkEIGM4WxqPX\nRVMVxXBQkVSppZCfA3BWeBB9QpavV65xT6szPTxJ9W8F22Nv3ZER6NLXJDNt\nHNHcKYR7FqIXIbj0EQqLIz/xgdrCpJJg40lNfK4D0EKNoxFh9wjNuUI21NJz\npSjzNln7TpNUpX2RauD50EHTxwKpwkZl21983nZGsa8b9xxfaq82JICGOE3o\nqquRwXkXERdjmk4R+Pwf0Pojjwm16PhlvzQzBypAylZbyxhFnKQUmQuHQ4yw\nleb2Lln93UhCLqEEs3mA8PzAzK7Mb9O0d/M5maHr/BWIfzLuffobHlk/KSBp\nJl2I\r\n=5Ss/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDejnHpXSd/8v4h4T8aYtZwzmd4/l9rQd/YseUGBjpjuAiAc2DaQJptrt7jWfd/3G83f8qbCB+YWuD8itFQw/WB23w=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.2.5_1573933054823_0.5243285547734651"},"_hasShrinkwrap":false},"2.2.6":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.2.6","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathersjs-ecosystem.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^4.4.1","@feathersjs/commons":"^4.4.1","@feathersjs/errors":"^4.4.1","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","fast-copy":"^2.0.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.0","steal-typescript":"^0.5.0","vuepress-theme-default-prefers-color-scheme":"^1.0.3"},"devDependencies":{"@feathersjs/authentication-client":"^4.4.1","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.4.1","@feathersjs/feathers":"^4.4.1","@feathersjs/rest-client":"^4.4.1","@feathersjs/socketio-client":"^4.4.1","@types/chai":"^4.2.5","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.9.0","@typescript-eslint/parser":"^2.9.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.1","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.19.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.8.1","deep-object-diff":"^1.1.0","eslint":"^6.7.1","eslint-config-prettier":"^6.7.0","eslint-plugin-prettier":"^3.1.1","eslint-plugin-vue":"^6.0.1","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^15.2.1","jsdom-global":"^3.0.2","mocha":"^6.2.2","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","testee":"^0.9.1","ts-node":"^8.5.2","typescript":"^3.7.2","vue":"^2.6.10","vuepress":"^1.2.0","vuex":"^3.1.2"},"gitHead":"b9bf3ccc62d17edf15a8708204a3e399b7f38d97","_id":"feathers-vuex@2.2.6","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-UerVZq6PgZ6ERDdCszzZPsPb9xXzDt23+LkqTpXPPNC4h5PIZPvpafOhRxxOHg3SDMVLZ5kO5zgGy5eKCaPajg==","shasum":"33d66e14a941e51e6e213af15e3e8b919ae83dfc","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.2.6.tgz","fileCount":103,"unpackedSize":470207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd4xFpCRA9TVsSAnZWagAALP4P/iGc/hXb1J1fAcjb6h2i\ni9z0OE8xSIdajWozfkjhfO69R0x2iot72ypoypP9Z5wnqxKWHjZih552m2Lh\nEMVeYoRo1tgMcQDgye0jfXkP60Iqj07tlnAu6i32Th9Ah7TOytAF/t65QLqk\nh09fGsfU3aebWATGp96ZgjViCAz9j/mZ5Gilm5mCFyE0frE7NPVJVoM/SB2r\nQzXegc0gYlZnwg95UNzixygcsTJcJ1fcE4TOrKh5dSaRjNOa81qAaEOVh/4x\nLw4jQKVlZY3DWFfEwxPoukmwwx30AwE3V2sVtbOpn9b5+fa4SRav7izMVwEQ\nGgxbdFVLR0CyasXGK4d3xAtZK+J/n+YM7dxUitwCT+i19xlxXqMGNrr3+DLN\nMwtQ2DZg40IrXpFLcvMkwJmz9IDkhJFuS8IR/PfjJ7EZ+x56nSasSglqCy/X\njCFPGUdxApiIUQRaNkXc5YvXRQSHe6EwvQb/faLkddP/6DL4stSp1NHdAVUQ\n7loc5ohcUQa9dCJNMwW1Feq8VMcMO21FOUCQUsqcY97dpQkefs84KyvTx+Sx\ndwJFTy2muzO/ZBUqeGMizGsCfV+NEVMAH188Z3QuikvdNIUdgAuMUE5Af84y\nGxYVfsZj7kw6B2Q9tWO3BfgLM6trWmH0T2LNZnPpOAyC+iKF3H2Vm3p1Sijv\nDGUB\r\n=C3+e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCJj8jWQDyS57J/rx5x5DyvnCow9+4Ml735649gfaq5jgIhAIK4Ib5OhAbXUVXVg2IdCEKT+hpo3heNNiZJKTEw/1Hg"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.2.6_1575162217056_0.5907270535557909"},"_hasShrinkwrap":false},"2.2.7":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.2.7","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathersjs-ecosystem.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^4.4.1","@feathersjs/commons":"^4.4.1","@feathersjs/errors":"^4.4.1","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","fast-copy":"^2.0.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.0","steal-typescript":"^0.5.0","vuepress-theme-default-prefers-color-scheme":"^1.0.3"},"devDependencies":{"@feathersjs/authentication-client":"^4.4.1","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.4.1","@feathersjs/feathers":"^4.4.1","@feathersjs/rest-client":"^4.4.1","@feathersjs/socketio-client":"^4.4.1","@types/chai":"^4.2.5","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.9.0","@typescript-eslint/parser":"^2.9.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.1","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.19.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.8.1","deep-object-diff":"^1.1.0","eslint":"^6.7.1","eslint-config-prettier":"^6.7.0","eslint-plugin-prettier":"^3.1.1","eslint-plugin-vue":"^6.0.1","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^15.2.1","jsdom-global":"^3.0.2","mocha":"^6.2.2","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","testee":"^0.9.1","ts-node":"^8.5.2","typescript":"^3.7.2","vue":"^2.6.10","vuepress":"^1.2.0","vuex":"^3.1.2"},"gitHead":"18442b070834a5ed2aa38307708e38c1af4f8f9c","_id":"feathers-vuex@2.2.7","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-FZbVFsFkCJ7nnwdXS+i8DJ9PMriLkVrUASuiNYbvhRJKSxYwkue1rpVzmKc/IdrIbdcdDuIXTzXyeIxMYFYP+Q==","shasum":"ad542a4e5dffb20734ffef0cb64032d01b41d9d1","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.2.7.tgz","fileCount":103,"unpackedSize":470795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd4zm1CRA9TVsSAnZWagAAHFgP/Rt/93OmiTzF39GwF3J6\nqMNS07mUhdlFX4gM7KJhoTGS9SjhKhz1Z5zhLRtKLvdtSuuqhTcEGEdsE2Rj\nL0D6JBklvj0Bap99SR5k26rOH1gNBu8AhfL7RGq1xcuMsf2V5LqokZ6RZ2Uy\n/CHYqyNJGs6h3AlfLcRFHCnZ5mqduJ73kyLoDAGzhrjohEEuUk5q9nLIo8Lc\njYr3tgEnmMz63kGJw6yWgqLdQ5235l0EN8xRk2liUXyWGq7s13RYEyMTtMK5\nSjEAake2jiKu++Q4NFFqMrrSUu2/Hph/fWSzme6Szk4cJnHOfP7ZIsdwyMdW\nMTTp6A0gM+giMlQrgrewQv+9cLwAvLEZxufUpoPesQ9nSL/1m6R8pOz7t7yc\nrdj8En7va8prDHz8wDnA4YHsuvxIYo7v0v4OkDraJJ1yLVVwAt0SpOJrcEV2\n2713WUCbHuoLq5T0siMgwPc6rYp+IlG/jewvhJ/61j8O+pWvKQes7qHuD7Ad\naeN+MCOMyCUB7ijywkJKcsgr1MJ6uaa+Sw6GoQKsy1zVhYYaXo5/X4bwtWcR\nJNJWxxbLW+yFdyoQgGkFtBdX4WEZUH81o2/CONiqfoNoNzUgxWYN8tUyP6ij\nGvQRqaps4/btdA66I5l+Slmk1ES7eMsWXYqPb59w1sVmf2A05WvfWhkWwEMx\nHwsP\r\n=EdlI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHDY/EenZPIKwg6rJ7V/pa7H4HtJtJY0hX7zmMhKe2W1AiB7Wr6c80BIpOpMR9Adid9SwWSla9GdNWqSaCK537V95A=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.2.7_1575172533068_0.5615159239302883"},"_hasShrinkwrap":false},"2.3.0":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.3.0","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathersjs-ecosystem.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^4.4.1","@feathersjs/commons":"^4.4.1","@feathersjs/errors":"^4.4.1","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.0.0","fast-copy":"^2.0.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.0","steal-typescript":"^0.5.0","vuepress-theme-default-prefers-color-scheme":"^1.0.3"},"devDependencies":{"@feathersjs/authentication-client":"^4.4.1","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.4.1","@feathersjs/feathers":"^4.4.1","@feathersjs/rest-client":"^4.4.1","@feathersjs/socketio-client":"^4.4.1","@types/chai":"^4.2.5","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.9.0","@typescript-eslint/parser":"^2.9.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.1","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.19.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.8.1","deep-object-diff":"^1.1.0","eslint":"^6.7.1","eslint-config-prettier":"^6.7.0","eslint-plugin-prettier":"^3.1.1","eslint-plugin-vue":"^6.0.1","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^15.2.1","jsdom-global":"^3.0.2","mocha":"^6.2.2","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","testee":"^0.9.1","ts-node":"^8.5.2","typescript":"^3.7.2","vue":"^2.6.10","vuepress":"^1.2.0","vuex":"^3.1.2"},"gitHead":"6460df84f7169692a2f65818f1f7f639461825b2","_id":"feathers-vuex@2.3.0","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-pRW4hXNc955OghjYzoJCxQAMjYGKvUSCwSEX/IPATpUaNzZQnyRJLCDbrdSbY6f7jvMgO8ww2zKcM0YPuhAJ2g==","shasum":"0eeb8e22ea265e02a1c2265c246731eddd078976","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.3.0.tgz","fileCount":103,"unpackedSize":471732,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd5FFzCRA9TVsSAnZWagAAr1UP/0vgxhMr50dyQpssySHf\n3/tAArUMxam5UFLbZIgDStYw9BfKXNyCUYXrm/RIM+jImuRRxIr0gyEIK/Jw\na5DFDtuALGlkLv84cyxVb6ZR7Zmp7Dn+kzaPrxTB2RgJoj+ZfJDLyb1gecAg\n2xQ/JrqWShfFjsOSHb8iwZnWImUfddzujSaLdjZR+SNRC0QCTTPAOso5w/Mg\nYiYQiHSd451ijnzSFQJ8Xsaf+2OWkFvSgDgZ6uwEl4pk75yfYQAdQpct60qR\n7WOrrgJ45Qkb8gHQJo+Vb3o+ryApqdYlrNbwmGJrfF+WdRNUmyt/mjkgplHi\naKBM31GGAsFgPePfaGmkEKOTezKOcNKbiXCkMMre99mP7njXrBrc0zejbZyM\nnWmPLzYpvstt6BUbAoKVHuVfNKbEWBESEeBYZETLIT3fbUjqiFrwRh6GgFtf\n+2jvNHP7w/96YSBFK/TJAw1oc0UPKFmzt+QfFAk7E2uXv9gREY1e+tJ3P1DH\nQBv1U7DoqpR4U1Gszztke3UVWET1rWZSP+3iug+ap8+qxP/6eskMYcGWHUkL\nYSvetaRrhzran2dd3od67N7u0JQQfDantRxFqhWomUX21lecJ5LsTzT/qj6s\nA4MnupngfRp8qPC+fbBjmTQhES4aVT8Y2+HSn4UcpTax3qN4tfnHCbSc4ZXE\nO5hH\r\n=YikM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCTI9XDNv3d4fyutomcgekAaL278feEUV6quV3KR5vVQQIgdUe7O/8S5LlkhtuWp7Ea+5Ru9qBfyiAcIHMNIdK8+Jw="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.3.0_1575244146796_0.026964145139024343"},"_hasShrinkwrap":false},"3.0.0-pre.1":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.0.0-pre.1","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathersjs-ecosystem.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^4.4.1","@feathersjs/commons":"^4.4.1","@feathersjs/errors":"^4.4.1","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.0.0","fast-copy":"^2.0.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.0","steal-typescript":"^0.5.0","vuepress-theme-default-prefers-color-scheme":"^1.0.3"},"devDependencies":{"@feathersjs/authentication-client":"^4.4.1","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.4.1","@feathersjs/feathers":"^4.4.1","@feathersjs/rest-client":"^4.4.1","@feathersjs/socketio-client":"^4.4.1","@types/chai":"^4.2.5","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.9.0","@typescript-eslint/parser":"^2.9.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.1","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.19.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.8.1","deep-object-diff":"^1.1.0","eslint":"^6.7.1","eslint-config-prettier":"^6.7.0","eslint-plugin-prettier":"^3.1.1","eslint-plugin-vue":"^6.0.1","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^15.2.1","jsdom-global":"^3.0.2","mocha":"^6.2.2","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","testee":"^0.9.1","ts-node":"^8.5.2","typescript":"^3.7.2","vue":"^2.6.10","vuepress":"^1.2.0","vuex":"^3.1.2"},"readme":"# Feathers-Vuex\n\n[![Build Status](https://travis-ci.org/feathersjs-ecosystem/feathers-vuex.png?branch=master)](https://travis-ci.org/feathersjs-ecosystem/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathersjs-ecosystem/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathersjs-ecosystem/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n[![Greenkeeper badge](https://badges.greenkeeper.io/feathersjs-ecosystem/feathers-vuex.svg)](https://greenkeeper.io/)\n\n`Feathers-Vuex` is a first class integration of the FeathersJS and Vuex. It implements many Redux best practices under the hood, eliminates _a lot_ of boilerplate code with flexible data modeling, and still allows you to easily customize the Vuex store.\n\n![feathers-vuex service logo](./service-logo.png)\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://vuex.feathersjs.com](https://vuex.feathersjs.com) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n```bash\nyarn add feathers-vuex\n```\n\nIMPORTANT: Feathers-Vuex is (and requires to be) published in ES6 format for full compatibility with JS classes. If your project uses Babel, it must be configured properly. See the [Project Configuration](https://vuex.feathersjs.com/api-overview.html#project-configuration) section for more information.\n\n## Contributing\n\nThis repo is pre-configured to work with the Visual Studio Code debugger. After running `yarn install`, use the \"Mocha Tests\" debug script for a smooth debugging experience.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](https://github.com/feathersjs-ecosystem/feathers-vuex/blob/master/LICENSE).\n","readmeFilename":"README.md","gitHead":"73ebfba7a0ecb295ace2b7f7fd1d0cb3f98bb31e","_id":"feathers-vuex@3.0.0-pre.1","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-8RTvzpue3JFGzGIL6fVgZuvOcFmsKhKDDx3r26+F7mhtRX/ezTfQHgGOJcYsvwsYlERBZEZsSl/580gAhf2/5Q==","shasum":"34ee718d4d3af315a52e4f769fc40bbe67f70f32","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.0.0-pre.1.tgz","fileCount":103,"unpackedSize":473055,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd6CvTCRA9TVsSAnZWagAAzL8P/1xueRWfTUCkjivHE2j+\nTpmOpGJI/3JrIxMVnxG9TfU14xG49THijOep8IpCQADs3dI1jjBdDiOS2T70\nmDVOtr5UZpVWhtSF5pBJ8EG82Tvjh/GtNVDPtwlb4GdYNr7mF3TKe5ASJssr\n8nv63EplKETh0zhfCMOoydWSQ9v3oXPn1hcPnzytvBMqMmJ6O93+TyI5Yv11\nalLHjcvGYiQZGknwaI1qc/N+VwgrKKwjd/VFWg8R8PzV5MLaMNk6YJvFsjmL\nll5HrqE5lENl6Tnsh94VusRY+QjLqFsIAJrLsh/SV+uKXXlBMbxPTDaTkjrc\neo9BjqzJLqNQEFULr5M+6g56XnePenITN5HrCBuREVB+b12nlhF4lwmiw2qU\nZJYBH0j1GXbGHGqFxUasJgGASIUiEz/eVGgCxeFL0USN3GR473isP58yk+uC\n0vm5ehIA4TO2+J2FvqO6fEB0QotDnuX4U9ZBy+1lJYMfTZJe228OkQWLjdju\nu7LiYhU+SwAbLeuNSE791Z7CFtCKCylPtu1t2ZspFIp/bHX6ONX8SpUfgivN\nV53x/lokypkNkfBqJSUpyuaLwY1z1fRQcL49XxOzM7lkCcTgacM3nk7k0EcM\nhtT2Sf79gsI9H5obZghM4W+8CkXw7S4slFIS4U1w3F7qWxvUlRpeeYdU4J4j\nLMNY\r\n=2rGs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCvjbdRS+SgtfrO/tFOvIKb3eCSPPN5XlzSyEPU00nUWgIhAI/EIJGzJy4fExNgF0rBXhsKDAydxqbAYN3LyrbNKbUU"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.0.0-pre.1_1575496658910_0.6873389421663954"},"_hasShrinkwrap":false},"3.0.0-pre.2":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.0.0-pre.2","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathersjs-ecosystem.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^4.4.1","@feathersjs/commons":"^4.4.1","@feathersjs/errors":"^4.4.1","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","@vue/composition-api":"^0.3.4","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.0.0","fast-copy":"^2.0.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.0","steal-typescript":"^0.5.0","vuepress-theme-default-prefers-color-scheme":"^1.0.3"},"devDependencies":{"@feathersjs/authentication-client":"^4.4.1","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.4.1","@feathersjs/feathers":"^4.4.1","@feathersjs/rest-client":"^4.4.1","@feathersjs/socketio-client":"^4.4.1","@types/chai":"^4.2.5","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.9.0","@typescript-eslint/parser":"^2.9.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.1","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.19.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.8.1","deep-object-diff":"^1.1.0","eslint":"^6.7.1","eslint-config-prettier":"^6.7.0","eslint-plugin-prettier":"^3.1.1","eslint-plugin-vue":"^6.0.1","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^15.2.1","jsdom-global":"^3.0.2","mocha":"^6.2.2","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","testee":"^0.9.1","ts-node":"^8.5.2","typescript":"^3.7.2","vue":"^2.6.10","vuepress":"^1.2.0","vuex":"^3.1.2"},"readme":"# Feathers-Vuex\n\n[![Build Status](https://travis-ci.org/feathersjs-ecosystem/feathers-vuex.png?branch=master)](https://travis-ci.org/feathersjs-ecosystem/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathersjs-ecosystem/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathersjs-ecosystem/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n[![Greenkeeper badge](https://badges.greenkeeper.io/feathersjs-ecosystem/feathers-vuex.svg)](https://greenkeeper.io/)\n\n`Feathers-Vuex` is a first class integration of the FeathersJS and Vuex. It implements many Redux best practices under the hood, eliminates _a lot_ of boilerplate code with flexible data modeling, and still allows you to easily customize the Vuex store.\n\n![feathers-vuex service logo](./service-logo.png)\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://vuex.feathersjs.com](https://vuex.feathersjs.com) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n```bash\nyarn add feathers-vuex\n```\n\nIMPORTANT: Feathers-Vuex is (and requires to be) published in ES6 format for full compatibility with JS classes. If your project uses Babel, it must be configured properly. See the [Project Configuration](https://vuex.feathersjs.com/api-overview.html#project-configuration) section for more information.\n\n## Contributing\n\nThis repo is pre-configured to work with the Visual Studio Code debugger. After running `yarn install`, use the \"Mocha Tests\" debug script for a smooth debugging experience.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](https://github.com/feathersjs-ecosystem/feathers-vuex/blob/master/LICENSE).\n","readmeFilename":"README.md","gitHead":"241e9b32ffbe51186e88105a26a6d16ff5d95f9c","_id":"feathers-vuex@3.0.0-pre.2","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-Lhmathqyio3tVZP7Qu2wqJXZyRG4nU/jsM5KBDSys06a0N6aCglBmNh8q4cD6hCJyRiEVsDp/1ZamAxEGXerGg==","shasum":"53aaa93f92ecff18c3f7a72ab42078d30ad97a66","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.0.0-pre.2.tgz","fileCount":110,"unpackedSize":487816,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd6DdHCRA9TVsSAnZWagAAY8wP/ApX7mNDh4rEcm20QNgp\nObiS8DA7aU0I+4I14NYPnSdxnXpA7G6UZs1x/QJcGOmCWBCHY0Be0AXVCpAs\nSbynw3JcHfwOyyNdnwV1P1K1LM2Ihidhs+vWS/VRso7drwUY3ja+m95/FY0V\n3pjNuBB14gjsmnvk2xUIG3q2q1svf8rbsfAHfvoOg20z05IhHMeayaYaFluj\ncNFJqXk4aePpv09A42LFjwII1t5Ddxa2SamhfBTV7F1/psx1s9FVWtsPS09b\nqtA84YbZct4NIJ7EfI2qEZIMaQ2GRH7Kphaz0c3BZlNuQbFPY6bDStbhbTTv\neDB6G+CWE4q2qGBdj6TB+8JomHkU7ADPYiKZcONKSDJ18Lp/tr2TI8Tl/b2w\nM6hXgBXRmRoDGuf/ZEm1iT4CAp0rzHIP6fvkUv2P91AyxMJZ3JxusPZHTf99\nHGvOar+GngWQRL3D6Wk72gyz3kUyQtshdrmqnB2LgARPuuKVxYNAfvnBE/FQ\nmRDedvXN+8i+u2jGoVOo+5M9zIxEuFS+KRwySNMjM1CpR6sqGlAvuBf9XUD9\nyntTz/0XMV1agnEiWJhnNp8L6c+WidrRz08d3fWzNlwM5xTbA1TSwhz3Uv/n\nTaiILISk9Wnw+8H+PHLsj/apGOuKqqZlAt2u3AMk9MiIzNYxoLADvIPPQzo0\n6EpX\r\n=orHn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEP1B3csaHaioqAwZrHA1Kks0H6OHBsx8QGksbUemvsVAiEA4M3cA51EQQzPE9ERcKpWG0OaLqFLRn90hSrmJINZbkc="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.0.0-pre.2_1575499591176_0.46541248634675747"},"_hasShrinkwrap":false},"2.3.1":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"2.3.1","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathersjs-ecosystem.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^4.4.1","@feathersjs/commons":"^4.4.1","@feathersjs/errors":"^4.4.1","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.0.0","fast-copy":"^2.0.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.0","steal-typescript":"^0.5.0","vuepress-theme-default-prefers-color-scheme":"^1.0.3"},"devDependencies":{"@feathersjs/authentication-client":"^4.4.1","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.4.1","@feathersjs/feathers":"^4.4.1","@feathersjs/rest-client":"^4.4.1","@feathersjs/socketio-client":"^4.4.1","@types/chai":"^4.2.5","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.9.0","@typescript-eslint/parser":"^2.9.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.1","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.19.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.8.1","deep-object-diff":"^1.1.0","eslint":"^6.7.1","eslint-config-prettier":"^6.7.0","eslint-plugin-prettier":"^3.1.1","eslint-plugin-vue":"^6.0.1","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^15.2.1","jsdom-global":"^3.0.2","mocha":"^6.2.2","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","testee":"^0.9.1","ts-node":"^8.5.2","typescript":"^3.7.2","vue":"^2.6.10","vuepress":"^1.2.0","vuex":"^3.1.2"},"gitHead":"211189b63393db92a7d2f516fe3a2864f77078b8","_id":"feathers-vuex@2.3.1","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-ZSpLODeQwfCayf84h/b8wXHiqXqYHR2cdlyo+0KIBbop9KChpEKX6zihJkCdWprO/+SI5ylN0UTgH8sb7XMvpA==","shasum":"5c9f921fcb8ffc35aebb432ecf6cb991030c360e","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-2.3.1.tgz","fileCount":107,"unpackedSize":479120,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd6pw9CRA9TVsSAnZWagAAa8sP/3IeS3q00ZprgW1ODlT1\nEVkFRHOsU5ScjivBk41Z9o4UHjPpbKbsK38l2uFmkOG4wLY5/EfeXJLYIzJ5\nHkGg0O+jx+EirM5LNmXpGxGJ3hhv9DO0b9BHHixWOton33iZvgcAisYAra5l\nEXQp272hQND15HESW05KEyp75Ry9pZaeTNeRdoP3O5+j0zBCN1KD2oE/HyEh\nHUVzvTT4ijUhWyXImlY6ukfo8kZUv7/EdOC2wDSj1gUvF4GxQvMSudocIzC+\n5vzoOhz1uul+w646m4Xn+Zwt7qThbpc/xHt6lEP7u6ak1LgH/Q+zuIgLQnxx\n8IiKZ0B+xYbdZvp7zGYU2+yFh7UNf4goYTdAcrs8hIWmyLoF7ZTuV89hWoKF\nv8faVf//Rzh0zYFtV8s27Bo87b/hdSqPaDdTRBGt+uhVCePCZRH5K9UBgNYY\nC0G1CmGTu5+PxrMVTzJZsEyq50uYXZ5OJxMGXDlklwoY3c2qNiWGT858F6/3\nxKXF3DPDHqm0VwLjNFMeV8TefXmdY6DuA2pErlMe78wCxbSuUsprDBmcP8E5\njLDqNn6Hry7DOGwu22fM6tLWzlb/Vhg9Gt9yKG4cyW2nAglYCa2dS/DRTpc2\n2KiWNhU6YrAaIliRwCi6pY0ZQg/tsFevc1hX0L5MSYX0K6gZGLxvfoaaGtVJ\n16LX\r\n=TUWy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDKV2oYXgEDfBt/1uKSksWWsVpGY5m66Xv/nWaInvmH7AIgRTV5D75xhrxlMgWKzxQN+6OvwjJZ+emCUe2Drm9XUrU="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_2.3.1_1575656508670_0.9576462656882667"},"_hasShrinkwrap":false},"3.0.0-pre.4":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.0.0-pre.4","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathersjs-ecosystem.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^4.4.1","@feathersjs/commons":"^4.4.1","@feathersjs/errors":"^4.4.1","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","@vue/composition-api":"^0.3.4","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.0.0","fast-copy":"^2.0.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.0","steal-typescript":"^0.5.0","vuepress-theme-default-prefers-color-scheme":"^1.0.3"},"devDependencies":{"@feathersjs/authentication-client":"^4.4.1","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.4.1","@feathersjs/feathers":"^4.4.1","@feathersjs/rest-client":"^4.4.1","@feathersjs/socketio-client":"^4.4.1","@types/chai":"^4.2.5","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.9.0","@typescript-eslint/parser":"^2.9.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.1","@vue/test-utils":"^1.0.0-beta.29","axios":"^0.19.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.8.1","deep-object-diff":"^1.1.0","eslint":"^6.7.1","eslint-config-prettier":"^6.7.0","eslint-plugin-prettier":"^3.1.1","eslint-plugin-vue":"^6.0.1","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^15.2.1","jsdom-global":"^3.0.2","mocha":"^6.2.2","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","testee":"^0.9.1","ts-node":"^8.5.2","typescript":"^3.7.2","vue":"^2.6.10","vuepress":"^1.2.0","vuex":"^3.1.2"},"readme":"# Feathers-Vuex\n\n[![Build Status](https://travis-ci.org/feathersjs-ecosystem/feathers-vuex.png?branch=master)](https://travis-ci.org/feathersjs-ecosystem/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathersjs-ecosystem/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathersjs-ecosystem/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n[![Greenkeeper badge](https://badges.greenkeeper.io/feathersjs-ecosystem/feathers-vuex.svg)](https://greenkeeper.io/)\n\n`Feathers-Vuex` is a first class integration of the FeathersJS and Vuex. It implements many Redux best practices under the hood, eliminates _a lot_ of boilerplate code with flexible data modeling, and still allows you to easily customize the Vuex store.\n\n![feathers-vuex service logo](./service-logo.png)\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://vuex.feathersjs.com](https://vuex.feathersjs.com) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n```bash\nyarn add feathers-vuex\n```\n\nIMPORTANT: Feathers-Vuex is (and requires to be) published in ES6 format for full compatibility with JS classes. If your project uses Babel, it must be configured properly. See the [Project Configuration](https://vuex.feathersjs.com/api-overview.html#project-configuration) section for more information.\n\n## Contributing\n\nThis repo is pre-configured to work with the Visual Studio Code debugger. After running `yarn install`, use the \"Mocha Tests\" debug script for a smooth debugging experience.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](https://github.com/feathersjs-ecosystem/feathers-vuex/blob/master/LICENSE).\n","readmeFilename":"README.md","gitHead":"cf2c8ec00ed9b3eb54772cae331263f230ca5bac","_id":"feathers-vuex@3.0.0-pre.4","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-OmbSFMepoQEKNsE90Q37jsAN40AqgyHckaiBP+rUub06lL7GKpj0C8Kb6Xx3Yyi9DyF6TyxyhJjHafzTFA9Vtg==","shasum":"51fd8bb8a603cb11f504c84741fa4465b4707874","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.0.0-pre.4.tgz","fileCount":110,"unpackedSize":488576,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd6qwACRA9TVsSAnZWagAAvLgP/2lE8UVf+uOZHCuT6AtY\nF4S9+32SdRALU78wXTLiBicJk6pkicQZmraDQMpRbfiOQBnH/ZQnwp9hhXH6\n+4siQTlaAeJARtHqgMqFVhxPP1PLwf/58dCfRbMS6qkUqXgYIM8cMtfAHLN6\ncvdD+UZGWDN8/nhumInY6GJYbno2AfOZ6JaFuiGGGRGRoZPtYYnilNBKFBl5\nLA9aEthduKiGHFqLuOmDb6YM+j5XWvmThv52MsjskjGCrveuziB02kp+pTBQ\nLnFv1ik3xCzePtxQe3kjVq6TUbtBbXCDDxwI/ib1RCGayPry3NpIfLSA+4fM\n2+yIj944ERs/0vR39GvGciOB+ddTbxpe6dzA8UTl51hvP6oEP3FAAPclwKMJ\ncnHblaJ6hSVrOO0QWqeDXrp9AbynUhuRkhoKhzPmMeqxclbOivIeyr5iFbJr\nrHp7/ZYxqUrlT98ig+gOXJIl3tYQBhw/FOP0CASsTLLHQS9qz5K+B9OUpZwO\nQytgl4VxoNbp0jgevPAn4UJMZqYK1FGFNhbn4WcS2MLd2uPNmsO8Hsxb/Z91\n3NEIdX5HxiLx6Ip7TZVKHCu0mZuFmV9uUe3AmS+OzuJTEVGuCy4qK9dk47ez\nREs4YQ8xT3jXUhWmcaqt1VSlq4OJwbEE0EpFiclHQbzbNTK/zLHfSJeVX7vT\nHYMf\r\n=cVu8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCyE6Xdhslo91ftSrf2Xu2BkeZqdiRCWJL0OCZGbgmu8AIhAOcPdLLe0cVzimjiwUKrcS6LWwRqz1WBxmT3/+ZRF8d8"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.0.0-pre.4_1575660543365_0.5888153693436116"},"_hasShrinkwrap":false},"3.0.0-pre.5":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.0.0-pre.5","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathersjs-ecosystem.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^4.4.1","@feathersjs/commons":"^4.4.1","@feathersjs/errors":"^4.4.1","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","@vue/composition-api":"^0.3.4","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.0.0","fast-copy":"^2.0.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.0","steal-typescript":"^0.5.0","vuepress-theme-default-prefers-color-scheme":"^1.0.3"},"devDependencies":{"@feathersjs/authentication-client":"^4.4.1","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.4.1","@feathersjs/feathers":"^4.4.1","@feathersjs/rest-client":"^4.4.1","@feathersjs/socketio-client":"^4.4.1","@types/chai":"^4.2.5","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.9.0","@typescript-eslint/parser":"^2.9.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.1","@vue/test-utils":"^1.0.0-beta.30","axios":"^0.19.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.8.1","deep-object-diff":"^1.1.0","eslint":"^6.7.1","eslint-config-prettier":"^6.7.0","eslint-plugin-prettier":"^3.1.1","eslint-plugin-vue":"^6.0.1","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^15.2.1","jsdom-global":"^3.0.2","mocha":"^6.2.2","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","testee":"^0.9.1","ts-node":"^8.5.2","typescript":"^3.7.2","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.2.0","vuex":"^3.1.2"},"readme":"# Feathers-Vuex\n\n[![Build Status](https://travis-ci.org/feathersjs-ecosystem/feathers-vuex.png?branch=master)](https://travis-ci.org/feathersjs-ecosystem/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathersjs-ecosystem/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathersjs-ecosystem/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n[![Greenkeeper badge](https://badges.greenkeeper.io/feathersjs-ecosystem/feathers-vuex.svg)](https://greenkeeper.io/)\n\n`Feathers-Vuex` is a first class integration of the FeathersJS and Vuex. It implements many Redux best practices under the hood, eliminates _a lot_ of boilerplate code with flexible data modeling, and still allows you to easily customize the Vuex store.\n\n![feathers-vuex service logo](./service-logo.png)\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://vuex.feathersjs.com](https://vuex.feathersjs.com) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n```bash\nyarn add feathers-vuex\n```\n\nIMPORTANT: Feathers-Vuex is (and requires to be) published in ES6 format for full compatibility with JS classes. If your project uses Babel, it must be configured properly. See the [Project Configuration](https://vuex.feathersjs.com/api-overview.html#project-configuration) section for more information.\n\n## Contributing\n\nThis repo is pre-configured to work with the Visual Studio Code debugger. After running `yarn install`, use the \"Mocha Tests\" debug script for a smooth debugging experience.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](https://github.com/feathersjs-ecosystem/feathers-vuex/blob/master/LICENSE).\n","readmeFilename":"README.md","gitHead":"373e38ad76835c0a696b3be9afde951ef572175d","_id":"feathers-vuex@3.0.0-pre.5","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-q+3fjcj+usZxmVI5lkCxvrId7KcSRzf0+99m2i2xMwh7XgMomIkZE6Qp0jpCRHs/WxseJ6Smcj+d07n2NfOgIQ==","shasum":"7dc9e0861e78039588a16ee5480787705ce4e466","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.0.0-pre.5.tgz","fileCount":113,"unpackedSize":1157329,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+eqACRA9TVsSAnZWagAAcPQP/2GUWi8m/b4M9JdpK3oB\nX+w6F12moJEIfRb9u4gQ/0QFVedt6ytQV8QIFyNl/mNde9VDOTfIxOjH8yPc\n0j+zQL7KiE8w6sSpLlWBzGVIUe/zb7Z3anmWgLg8z7lhE064tkU5XLLiGJ9n\nEzQ8t6ejWQU6n2RAkzcyRopqis0R8l1vYk1AhW5+XWsm1Swe42j/aNOj7T4k\nOWj4SW5rezGwZ7Q85NbqQV4QaptEvehVqO8JqMfOB9vbbGODM7f7ilTT78p6\n78fdMkAmHbn5hWbZaEd2BxijwFnTTbTSVVLH+mLxlHxtVsSDVapIdd6VAXPa\nYmgx9uQozpJc0cJ93jCYTEmWmaGbZgWSgUvv71NQB+ttHJ0pud4w2HDM+IGJ\nEuvyocHoEDc7KIvgQ1l0uu616Elf63IYaLdxLRzkjops6wWziQfdc4i79xr9\ntRNOVvcGtsNA44kc06hpujdG/vnCGJ+vKQjRpF0dKgO//BSxpDrQaw5LH1em\nrfM14uXSnMMmmswR8U179pzRVygQlRf6c/x19059wu+/Qvxf+j6u9V8ULl3c\nJageufsf2UkAwbdDu9PT0Vq8JkXkPq2JIydtJikIOA1nhzGATijhaJen7LRS\nKXfof5G5md+MyxC9D+4iNDEa1nhkkY717TEoID+oh1EkPZeEUTvf3vMKxfQz\nQPOK\r\n=s0XF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC8TKDqf5cGvm15KpGw8NFeH4B2wYhjFyLZHxMzjgCYaAIhALdIuMs42v89kGyeP9fUIsZ/GWdiWwRUMNgObXjZgeaU"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.0.0-pre.5_1576659583653_0.13581111588046868"},"_hasShrinkwrap":false},"3.0.0-pre.6":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.0.0-pre.6","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathersjs-ecosystem.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^4.4.1","@feathersjs/commons":"^4.4.1","@feathersjs/errors":"^4.4.1","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","@vue/composition-api":"^0.3.4","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.0.0","fast-copy":"^2.0.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.0","steal-typescript":"^0.5.0","vuepress-theme-default-prefers-color-scheme":"^1.0.3"},"devDependencies":{"@feathersjs/authentication-client":"^4.4.1","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.4.1","@feathersjs/feathers":"^4.4.1","@feathersjs/rest-client":"^4.4.1","@feathersjs/socketio-client":"^4.4.1","@types/chai":"^4.2.5","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.9.0","@typescript-eslint/parser":"^2.9.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.1","@vue/test-utils":"^1.0.0-beta.30","axios":"^0.19.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.8.1","deep-object-diff":"^1.1.0","eslint":"^6.7.1","eslint-config-prettier":"^6.7.0","eslint-plugin-prettier":"^3.1.1","eslint-plugin-vue":"^6.0.1","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^15.2.1","jsdom-global":"^3.0.2","mocha":"^6.2.2","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","testee":"^0.9.1","ts-node":"^8.5.2","typescript":"^3.7.2","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.2.0","vuex":"^3.1.2"},"readme":"# Feathers-Vuex\n\n[![Build Status](https://travis-ci.org/feathersjs-ecosystem/feathers-vuex.png?branch=master)](https://travis-ci.org/feathersjs-ecosystem/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathersjs-ecosystem/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathersjs-ecosystem/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n[![Greenkeeper badge](https://badges.greenkeeper.io/feathersjs-ecosystem/feathers-vuex.svg)](https://greenkeeper.io/)\n\n`Feathers-Vuex` is a first class integration of the FeathersJS and Vuex. It implements many Redux best practices under the hood, eliminates _a lot_ of boilerplate code with flexible data modeling, and still allows you to easily customize the Vuex store.\n\n![feathers-vuex service logo](./service-logo.png)\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://vuex.feathersjs.com](https://vuex.feathersjs.com) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n```bash\nyarn add feathers-vuex\n```\n\nIMPORTANT: Feathers-Vuex is (and requires to be) published in ES6 format for full compatibility with JS classes. If your project uses Babel, it must be configured properly. See the [Project Configuration](https://vuex.feathersjs.com/api-overview.html#project-configuration) section for more information.\n\n## Contributing\n\nThis repo is pre-configured to work with the Visual Studio Code debugger. After running `yarn install`, use the \"Mocha Tests\" debug script for a smooth debugging experience.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](https://github.com/feathersjs-ecosystem/feathers-vuex/blob/master/LICENSE).\n","readmeFilename":"README.md","gitHead":"3cdd511c8a710fe1dd674e2eaf0da7768c3e1385","_id":"feathers-vuex@3.0.0-pre.6","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-WeixjasAmc2MrAWkMz90ABYFK19NW6dK3wrjCIa2jkRtV64AXO10UwHd9QnUtUspRARleMOVRPB8fZjl88vfAQ==","shasum":"81e3303251c145925063149cc1296a39eac96f6e","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.0.0-pre.6.tgz","fileCount":113,"unpackedSize":1157008,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+esBCRA9TVsSAnZWagAA0fgQAKKnmI3PFcjXdB29J/ud\n38VAqTTN/HV0jAHUq0pbQcBftMjOqEGLn8nqBrrMKRCm/etiQrfCtWlcpDoG\n4BFzCw9GgIMx5ktnb/8J8PG4twlDfvsJ9nSfMuzvVyxTm+aGKe7Nh72gDmQv\nhs7x76/7+b/JQFnjpYsGzVT3znX4mWi2vTcE5ao7i1XfUfrKAWiZ8tkU9XlR\nag1QKI1jNpvsHkhiDakVaQr1oft+1r8huTsJ1ouBsLZkPyBbERJzg5A+JMu0\nFDE3iUxDYwYzahbwAfHUE6gdS+XqXpWlaNgLkQ7RTjsTAG02Tav4ss8fHuBF\nqEsrsNcyf5Yen+yDLzlfgmbmw4/DN3lQz89bvsiklwEkwdBR0rIFYwyDsyCg\nf+jLLE1+4vvUsFe7N7LaiK2Np6wmrPaQIImqNH74yGQy8X8JD4KJJJTwn6Hn\n5KRlkoBv2U2WJHnCKP3CiOhNBm2T241x240UyatoGeReO7BFR0hvF36Cj11c\nImsCKbwbfvJEGbiW5N6pKhnQZYfZLv8efT5Y1mXrjUoEGQS5gDVbktCn7VKj\nId1gcn87Q/OAZGAYrv1MFo7p7fktMzAuoU5RuqbkVLZtIMoXO45ajoA2yuFU\n2JuhOcmEatl7Hu5ZtAGwUt+Swqriav37krDN6VtrbZkZB3txtvHqvKQKVcAU\nHDer\r\n=N7+1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBpUbFRpIxKV8xstaZjL/RaE3nEPhodcDF02Ohf/Tsh8AiA/0LLvBuxDxmO6UkqtLiofhEVZnIKpLx5DRTLozNixpA=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.0.0-pre.6_1576659713105_0.9788294377768825"},"_hasShrinkwrap":false},"3.0.0-pre.7":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.0.0-pre.7","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathersjs-ecosystem.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^4.4.1","@feathersjs/commons":"^4.4.1","@feathersjs/errors":"^4.4.1","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","@vue/composition-api":"^0.3.4","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.0.0","fast-copy":"^2.0.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.0","steal-typescript":"^0.5.0","vuepress-theme-default-prefers-color-scheme":"^1.0.3"},"devDependencies":{"@feathersjs/authentication-client":"^4.4.1","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.4.1","@feathersjs/feathers":"^4.4.1","@feathersjs/rest-client":"^4.4.1","@feathersjs/socketio-client":"^4.4.1","@types/chai":"^4.2.5","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.9.0","@typescript-eslint/parser":"^2.9.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.1","@vue/test-utils":"^1.0.0-beta.30","axios":"^0.19.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.8.1","deep-object-diff":"^1.1.0","eslint":"^6.7.1","eslint-config-prettier":"^6.7.0","eslint-plugin-prettier":"^3.1.1","eslint-plugin-vue":"^6.0.1","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^15.2.1","jsdom-global":"^3.0.2","mocha":"^6.2.2","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","testee":"^0.9.1","ts-node":"^8.5.2","typescript":"^3.7.2","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.2.0","vuex":"^3.1.2"},"readme":"# Feathers-Vuex\n\n[![Build Status](https://travis-ci.org/feathersjs-ecosystem/feathers-vuex.png?branch=master)](https://travis-ci.org/feathersjs-ecosystem/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathersjs-ecosystem/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathersjs-ecosystem/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n[![Greenkeeper badge](https://badges.greenkeeper.io/feathersjs-ecosystem/feathers-vuex.svg)](https://greenkeeper.io/)\n\n`Feathers-Vuex` is a first class integration of the FeathersJS and Vuex. It implements many Redux best practices under the hood, eliminates _a lot_ of boilerplate code with flexible data modeling, and still allows you to easily customize the Vuex store.\n\n![feathers-vuex service logo](./service-logo.png)\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://vuex.feathersjs.com](https://vuex.feathersjs.com) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n```bash\nyarn add feathers-vuex\n```\n\nIMPORTANT: Feathers-Vuex is (and requires to be) published in ES6 format for full compatibility with JS classes. If your project uses Babel, it must be configured properly. See the [Project Configuration](https://vuex.feathersjs.com/api-overview.html#project-configuration) section for more information.\n\n## Contributing\n\nThis repo is pre-configured to work with the Visual Studio Code debugger. After running `yarn install`, use the \"Mocha Tests\" debug script for a smooth debugging experience.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](https://github.com/feathersjs-ecosystem/feathers-vuex/blob/master/LICENSE).\n","readmeFilename":"README.md","gitHead":"6d584d4277d1adb42363f4f2d29abf670f53f40f","_id":"feathers-vuex@3.0.0-pre.7","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-92+PQAF1WjtZQRD/DEbwJpjwf93gQ0gTCd4PP62A2z4pcnM0ObDimgZB1bOEdKSFRdfNxv6LI/k/tGBmh7c+rA==","shasum":"3b4e09a97e716f8f0b5847296d0a4dd3af3c78a5","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.0.0-pre.7.tgz","fileCount":113,"unpackedSize":1157120,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+e3eCRA9TVsSAnZWagAAr2EP/i4f6GZpzVo/L8kI9pnV\nYkXI3YW55/TZAR+JDKraMXmjnWM9FfbFpLxiM66K1WuKp5goymjq/8cHTjU+\n8Ykfv41UOkBK+tB7aHVXUukecnmuMl17Bdr1/MSHcU6j1IsmLk3QQMng64Pq\na5iIoxWS/iwfpdE/JQhFFMhlFqEeUT8EG7d3KFhnP6HAlQkAjKGoJ9Fz80Y2\nUS3RQOxhXEAW6fRYMGLAxLG5V8T1QYSdgCOUjfImjoB1gkEt/V3wCSZkSt/2\n7V+6yw/1fsgRM39GCOAKUZlkV5++hl+UDTo7CeAC9RJ3DSDGNdBFenjZGc69\n7onUMSx9T+ZZf6iKNMvSYk4ykkGmU0YGp3uygkXmWnMfAEypwaW+vV3eAWjl\nmQ1sGd4UqLtlqBrIVDibUsRjZTmO1XZEVD6Jb5mXkCcap/x07uySYdp8z/KP\nbRYMXJ3RynRc/WptOIwYGl8ZYtpn50Mt7MuqcEDkZUmZckFcwTAmj8YmBlq4\nyM/t2TDav1Drsbni8+botiHtsvuPWo265qGrdVndVQGDYNT4e0wWYRWurugL\n53/XWEftlw4OnRm3GoOdFZJVAU4Nf9frDhcntTeov3y52xh9swWoHhekC7QY\nII0m/cIfILm6dI50ZN84dEU09DAmvp/3At3LAEP0GwqyyMmSIPf5OiOQHv9X\nn+8o\r\n=NqDz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICbdeIokuyltxJlKbJcqkwa/sOXjsGlYekWNg4UD0oB/AiBhizmVmsIv21W2jtNEAy6EM8d21cRtI+3J8GBHFYbamg=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.0.0-pre.7_1576660445688_0.1138530995784044"},"_hasShrinkwrap":false},"3.0.0-pre.8":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.0.0-pre.8","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathersjs-ecosystem.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^4.4.1","@feathersjs/commons":"^4.4.1","@feathersjs/errors":"^4.4.1","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","@vue/composition-api":"^0.3.4","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.0.0","fast-copy":"^2.0.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.0","steal-typescript":"^0.5.0","vuepress-theme-default-prefers-color-scheme":"^1.0.3"},"devDependencies":{"@feathersjs/authentication-client":"^4.4.1","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.4.1","@feathersjs/feathers":"^4.4.1","@feathersjs/rest-client":"^4.4.1","@feathersjs/socketio-client":"^4.4.1","@types/chai":"^4.2.5","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.9.0","@typescript-eslint/parser":"^2.9.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.1","@vue/test-utils":"^1.0.0-beta.30","axios":"^0.19.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.8.1","deep-object-diff":"^1.1.0","eslint":"^6.7.1","eslint-config-prettier":"^6.7.0","eslint-plugin-prettier":"^3.1.1","eslint-plugin-vue":"^6.0.1","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^15.2.1","jsdom-global":"^3.0.2","mocha":"^6.2.2","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","testee":"^0.9.1","ts-node":"^8.5.2","typescript":"^3.7.2","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.2.0","vuex":"^3.1.2"},"readme":"# Feathers-Vuex\n\n[![Build Status](https://travis-ci.org/feathersjs-ecosystem/feathers-vuex.png?branch=master)](https://travis-ci.org/feathersjs-ecosystem/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathersjs-ecosystem/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathersjs-ecosystem/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n[![Greenkeeper badge](https://badges.greenkeeper.io/feathersjs-ecosystem/feathers-vuex.svg)](https://greenkeeper.io/)\n\n`Feathers-Vuex` is a first class integration of the FeathersJS and Vuex. It implements many Redux best practices under the hood, eliminates _a lot_ of boilerplate code with flexible data modeling, and still allows you to easily customize the Vuex store.\n\n![feathers-vuex service logo](./service-logo.png)\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://vuex.feathersjs.com](https://vuex.feathersjs.com) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n```bash\nyarn add feathers-vuex\n```\n\nIMPORTANT: Feathers-Vuex is (and requires to be) published in ES6 format for full compatibility with JS classes. If your project uses Babel, it must be configured properly. See the [Project Configuration](https://vuex.feathersjs.com/api-overview.html#project-configuration) section for more information.\n\n## Contributing\n\nThis repo is pre-configured to work with the Visual Studio Code debugger. After running `yarn install`, use the \"Mocha Tests\" debug script for a smooth debugging experience.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](https://github.com/feathersjs-ecosystem/feathers-vuex/blob/master/LICENSE).\n","readmeFilename":"README.md","gitHead":"1b7b207a92c1e1131f091ddb88906479e6a9c272","_id":"feathers-vuex@3.0.0-pre.8","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-axHq0u7eX2PiBzk5I/0Uge/aahJ0ltzaLb/f57TRR91WDax9ysrlqTtMNlO5xqTOadWInFl3Pd6e3458AFtt9Q==","shasum":"53abf80ad6c7db8fdb08b072835d52be04d1adfc","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.0.0-pre.8.tgz","fileCount":113,"unpackedSize":1157158,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+e6kCRA9TVsSAnZWagAA8ksP/0Zc5Jb41WXfpfkVkIsb\nTLlCSaYbgnUVoZHmWBGL9YUKQKeABJynMtbrxsTvg4VeOI4Ec7LDpi1ULRhw\na+qVHObfPFIjW4lBb/6Xl+5eVVUP5RT8zdsXfcC+uk9jprynSshVrLvPf7H2\nWjfn1mMBkHRpJl2dbO1umtqwKQUIJOixY0/UYayaMCwJvjNwknO9hTayiM7E\n4O0cAMVJk5fB8fPO0h2fuSDtB2cuSVwfNI/LpAivmaCdkzrQlnNvupoLJgUt\n33mUD3mf4IBW4BogAbkAZb/sZBx20yrrp38hCRxPELTMFHSerCpQWzXJ0SOF\npD9z69G0tQ6w0p1QtHoHIQp2JfDJMDubG2L4Qu+6tvJbOAHEhjwm9fRqRMnG\nyB4W/lUtmYfsM6NhJVgUqMwflSoe9YmkPK0t7SC0wWFKlMRn1aY2/gL6TrDw\nh7LZwV+L+jnROop6xhh77W8ciaVb5kqN2RzEI2Hn816fI5aKoaquAneSivJ7\nD/n+24yQ9BQt41cKuS0PoYFDCvmiN/zinVlVmIzKeGsDTSjnPTUtguVdxTJO\nE78b7VIGAAAeJrEJZVhso/eE6hl+iSGz6oHv3SfGYsISI0aoDk5supH4lcEg\nBLkxUpcir3amrcFxYVChPquwYdFsGdPnDo7engA4umK1KyDk69rhlesmzhC6\n78Oh\r\n=dXg8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEdhA3GaHGtPoeFJwzx8BfLhjpMjLDFY65+GrDkB7PXBAiA4BjiRA+uBa3I4GjJm3w4/Z8MLUs5gtX2mWMo9k5INlg=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.0.0-pre.8_1576660643748_0.9583616226183542"},"_hasShrinkwrap":false},"3.0.0-pre.9":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.0.0-pre.9","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathersjs-ecosystem.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^4.4.1","@feathersjs/commons":"^4.4.1","@feathersjs/errors":"^4.4.1","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","@vue/composition-api":"^0.3.4","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.0.0","fast-copy":"^2.0.4","fast-json-stable-stringify":"^2.0.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.0","steal-typescript":"^0.5.0","vuepress-theme-default-prefers-color-scheme":"^1.0.3"},"devDependencies":{"@feathersjs/authentication-client":"^4.4.1","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.4.1","@feathersjs/feathers":"^4.4.1","@feathersjs/rest-client":"^4.4.1","@feathersjs/socketio-client":"^4.4.1","@types/chai":"^4.2.5","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.9.0","@typescript-eslint/parser":"^2.9.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.1","@vue/test-utils":"^1.0.0-beta.30","axios":"^0.19.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.8.1","deep-object-diff":"^1.1.0","eslint":"^6.7.1","eslint-config-prettier":"^6.7.0","eslint-plugin-prettier":"^3.1.1","eslint-plugin-vue":"^6.0.1","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^15.2.1","jsdom-global":"^3.0.2","mocha":"^6.2.2","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","testee":"^0.9.1","ts-node":"^8.5.2","typescript":"^3.7.2","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.2.0","vuex":"^3.1.2"},"readme":"# Feathers-Vuex\n\n[![Build Status](https://travis-ci.org/feathersjs-ecosystem/feathers-vuex.png?branch=master)](https://travis-ci.org/feathersjs-ecosystem/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathersjs-ecosystem/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathersjs-ecosystem/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n[![Greenkeeper badge](https://badges.greenkeeper.io/feathersjs-ecosystem/feathers-vuex.svg)](https://greenkeeper.io/)\n\n`Feathers-Vuex` is a first class integration of the FeathersJS and Vuex. It implements many Redux best practices under the hood, eliminates _a lot_ of boilerplate code with flexible data modeling, and still allows you to easily customize the Vuex store.\n\n![feathers-vuex service logo](./service-logo.png)\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://vuex.feathersjs.com](https://vuex.feathersjs.com) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n```bash\nyarn add feathers-vuex\n```\n\nIMPORTANT: Feathers-Vuex is (and requires to be) published in ES6 format for full compatibility with JS classes. If your project uses Babel, it must be configured properly. See the [Project Configuration](https://vuex.feathersjs.com/api-overview.html#project-configuration) section for more information.\n\n## Contributing\n\nThis repo is pre-configured to work with the Visual Studio Code debugger. After running `yarn install`, use the \"Mocha Tests\" debug script for a smooth debugging experience.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](https://github.com/feathersjs-ecosystem/feathers-vuex/blob/master/LICENSE).\n","readmeFilename":"README.md","gitHead":"f9528538d6f58a0c6f47e7bf1be502fe1383c22a","_id":"feathers-vuex@3.0.0-pre.9","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-c5Sl5H5dtjidmZje7GgfI5cHSlQxQ0DL1cegGy13at7M+f/uwCbbuSrOLJt0cbTzEIyJ36Gijyru+vsv7iTqnA==","shasum":"9710d41bcce252d85190915a058d277a27ae0aa8","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.0.0-pre.9.tgz","fileCount":113,"unpackedSize":1157486,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+fB0CRA9TVsSAnZWagAANG4P/27Ai+6b5tySpEqfaVH7\n4kuClafCHI+u0Esw1t9uuHaj2q9vUOiwn00n/K9WbyibBmmXtm/8J54J8L3X\nrSIj9m21yYtFUnsfdV645jbUo/KoePw+6AY7R1ZQgTSuZXrcY8NkHN1ppdXH\n6h0fwLp+CLOALt5PKgeIzuElF/Ev6kvlY3wVbZsRMlPaS/DLO0pbv2YSRKyR\nDDnjxn+4h484bSHk5FvrTQp6vIO3m8OB+DHhncQhjPpt4mooXM26Ec9subVd\npaSsiQWfHsOcAof9XWQeewvqa4Zf0cG1jll+M9pfBFaslshprr2wqIE6ThmQ\nVj2VMmHFlauYrR8s8EZuMyKm4HWkIDVrSZubqe7GHatgvGBPW4nIxP53OClm\nMVzGWfBQyDjPFNjKD+sKOjSbB8aiQhpx1FVDt3eDXbHGOWimDQ6XvfDhLl2/\nMYOBqqfIi3GSyzwWhPPSzKcwZdbIBe/TQgG+nuQGiG6EzGdN+ZJvKgCbO66/\nz3klW8cBKbgDWyoHfEN0+I/eqjGToR0uOZH5wzALvqh+Fq6m6BZNIF0+wcHL\nF1xi07FhD+kLIvJDcAPWSFqLTHz1g9o9S+ZoLeiBLiGTlvaCVUlejYef/9/b\nDQo9U6tZBvwOOZ5unvm1eljOqHKc9cQmO67dXiQHERbYsyt/1Hys3bStchjM\nWyhr\r\n=ICQ7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDmQ0vFZUIhXqiXvGhyFGy8gLn7wL/UmNv/IZf+i/zJeAiAllXD6dS5tGmANTd+rkYNaEjxQaRp19lRKCWZcwD35cQ=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.0.0-pre.9_1576661107612_0.15923029468601002"},"_hasShrinkwrap":false},"3.0.0":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.0.0","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathersjs-ecosystem.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^4.4.3","@feathersjs/commons":"^4.4.3","@feathersjs/errors":"^4.4.3","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","@vue/composition-api":"^0.3.4","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.0.0","fast-copy":"^2.0.4","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4","steal-typescript":"^0.5.0","vuepress-theme-default-prefers-color-scheme":"^1.0.3"},"devDependencies":{"@feathersjs/authentication-client":"^4.4.3","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.4.3","@feathersjs/feathers":"^4.4.3","@feathersjs/rest-client":"^4.4.3","@feathersjs/socketio-client":"^4.4.3","@types/chai":"^4.2.7","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.12.0","@typescript-eslint/parser":"^2.12.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.1","@vue/test-utils":"^1.0.0-beta.30","axios":"^0.19.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.8.1","deep-object-diff":"^1.1.0","eslint":"^6.7.1","eslint-config-prettier":"^6.7.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-vue":"^6.0.1","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^15.2.1","jsdom-global":"^3.0.2","mocha":"^6.2.2","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","testee":"^0.9.1","ts-node":"^8.5.2","typescript":"^3.7.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.2.0","vuex":"^3.1.2"},"gitHead":"a7fc0335db3ab1c82195e23e899052304b11c01e","_id":"feathers-vuex@3.0.0","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-WAmjlCYkDTAKSyEV01z7aHHRW2wxSq06eRsDRVXt08AusXk/l1f+oyqh3Wnnxg/fiZ+EQ/k7hWUOH+WztOacEA==","shasum":"c41861626cb32227434024d939eb50a264b58952","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.0.0.tgz","fileCount":114,"unpackedSize":1162782,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd/EG+CRA9TVsSAnZWagAAK2cP/j+LG9bMqxu08AAa++1W\njYFBdXu5CxNG+ClTQcPdtER8Tj/FTIOtIGp+Su8lNBjGdk7loX4mLBD0eZ7U\nsqKCbpXilypoPskQ8j/MI7ozkAzA9JfOidVvcCWA2Tz8IQtcTOHLzHAxWZE5\nRpivao9IOQZ3Rj1edzpgBjopAdAqCS/vSPs3huPrLdy1VnIPL+CmWtKbIDI4\na0bxjZisSWtB9qDQ07FbBSH3Bu1VV5fNhK4MwyMmuK0cHiDIPfFJajZ1lBuU\nm7yuxqki/ChoGbIICN++0PMWDsZshzleElFWaERWHDiuKjjK37s+b9hbN7iu\n0mQx1+vm1vj8Wuwl8XFsFeRcWZKHSnfQSVV0a3c1kyFl/50Stcj1n6SGsUiK\n1RDFsUramvPC75rEU8PPQelt2PbP7JfVT9nN2LybhWT66jCRQ5vH78wfErq9\n0hu/zPBSMts3eLMbTRK3sYsNkP8e91F4vbSpAM5qg4A59DfcFH10RRkGOUuO\nVp/fuSq/rvdwoxnSvTC3JMCWB7rTDQgjxV+3PCIpY0pAFXg7A/IIg36pM+QY\nKsDDR94CO0va39vAbTo0wM00QTksnTGizxfd8bNDJMc/8HSSiT2ET87B7wvL\n6u13Md8NqlNnQgWcyIm4XrxfhoLgF+2pbUryffo17Z/q2RKQoGb7GB8NTFUl\nv/Wg\r\n=bNva\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHXgzsvkgjbKwvmioreuez+NWbnptNJ33nuYDjJMJc5FAiEAt4O38hz3xjBZtoZFOfVwCRWmY2g4h8zN7qx1AfrYWhU="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.0.0_1576812989245_0.7455140986969733"},"_hasShrinkwrap":false},"3.0.1":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.0.1","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathersjs-ecosystem.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^4.4.3","@feathersjs/commons":"^4.4.3","@feathersjs/errors":"^4.4.3","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","@vue/composition-api":"^0.3.4","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.0.0","fast-copy":"^2.0.4","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4","steal-typescript":"^0.5.0","vuepress-theme-default-prefers-color-scheme":"^1.0.3"},"devDependencies":{"@feathersjs/authentication-client":"^4.4.3","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.4.3","@feathersjs/feathers":"^4.4.3","@feathersjs/rest-client":"^4.4.3","@feathersjs/socketio-client":"^4.4.3","@types/chai":"^4.2.7","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.12.0","@typescript-eslint/parser":"^2.12.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.1","@vue/test-utils":"^1.0.0-beta.30","axios":"^0.19.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.8.1","deep-object-diff":"^1.1.0","eslint":"^6.7.1","eslint-config-prettier":"^6.7.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-vue":"^6.0.1","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^15.2.1","jsdom-global":"^3.0.2","mocha":"^6.2.2","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","testee":"^0.9.1","ts-node":"^8.5.2","typescript":"^3.7.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.2.0","vuex":"^3.1.2"},"gitHead":"04058c07a56590724d72ec03f762526d8d4504fb","_id":"feathers-vuex@3.0.1","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-gXpZXPYoZDMRLCRDu61XgCPCGCQtjMx9A8afRY2t/vWFWI94yQIve9asFIbRNeSOa1vfy4pVn8GwKvmYbCn+5A==","shasum":"2f3490298ce24c32363ed5df1d7892746a22a941","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.0.1.tgz","fileCount":115,"unpackedSize":1144263,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd/Q6/CRA9TVsSAnZWagAA3P4QAIksRluHS2FF3pxikegT\nfPzCv7QQcTOQE4tLepBaczaaOGDIGGn2QIsKRcaYWNYLKZl0DBcImID2l8Ln\nidt+5hjACIwcQ06Fi03ILlFTlVLAf4KBVmfj9awSGsoDvkbVEIEhLztVSFRs\nRZUsI3rbX2rf7N3+Yx+B4a/gx37RpzzlTpzJX/KM7NP5PzxmZVshy0Ri8Lf5\nBs2JggERJz7ObYdH7u6Qmfj2aBkz6LA+3p44MkSeL7Y3j35WiXAwFBv6y8Zt\nCmKSIwe5AhZbLCsK3ei23fC9wcni70LX9c51NQ4FFzhE41yohYEl6jctkaT6\n/+JVFp92Cc0EvaLegx8FCs3Wi5FSnRLrRHD5qTagh1D0XiLFgo/+NUFdOzs1\nVj6IKyvrU7971fCinBwo5fSfhdmQ+VgdqLPUcCXrCtGkmQdPkA2+DbSiR6Yt\nZM2MZ3GRZbeU173gMt4hLtpzmLjth63Ixnj+HP2QMoHV1Gt38JcZApKmPPTO\nWDAqf82yePkVIlmz0tOC3wcI4zAjA4yT3TtWBhp4/JvB04+G4J0xyui7ln/U\nAC0fVqsme82XrZx73IQsirf1BGdFOmh43empamhYUCunyhMXcSO0OlBQ59lz\nTTfpZ35Wf+0T6cYrWL/oyNhfT0Sy4u+mu9KYr1zYsM9A51k2l07g0ZiKMXeP\nhSUt\r\n=pjbd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEyFNln+tYkg7nyyH6EfN95KsAKIJDhnQMeIVatORrz6AiEAoQD+JdhRawrew2KLIH3zscgQjJEhyxN7tus112ED3cE="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.0.1_1576865470481_0.5375811736373819"},"_hasShrinkwrap":false},"3.1.0":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.1.0","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathersjs-ecosystem.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^4.4.3","@feathersjs/commons":"^4.4.3","@feathersjs/errors":"^4.4.3","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","@vue/composition-api":"^0.3.4","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.0.0","fast-copy":"^2.0.4","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4","steal-typescript":"^0.5.0","vuepress-theme-default-prefers-color-scheme":"^1.0.3"},"devDependencies":{"@feathersjs/authentication-client":"^4.4.3","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.4.3","@feathersjs/feathers":"^4.4.3","@feathersjs/rest-client":"^4.4.3","@feathersjs/socketio-client":"^4.4.3","@types/chai":"^4.2.7","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.12.0","@typescript-eslint/parser":"^2.12.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.1","@vue/test-utils":"^1.0.0-beta.30","axios":"^0.19.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.8.1","deep-object-diff":"^1.1.0","eslint":"^6.7.1","eslint-config-prettier":"^6.7.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-vue":"^6.0.1","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^15.2.1","jsdom-global":"^3.0.2","mocha":"^6.2.2","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","testee":"^0.9.1","ts-node":"^8.5.2","typescript":"^3.7.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.2.0","vuex":"^3.1.2"},"gitHead":"e0a1c9304a5fcf3bf733d9d65566247f96642f1b","_id":"feathers-vuex@3.1.0","_nodeVersion":"12.10.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-9XD55ejZd0omXJRKBRUJaBhgfnbtrEQMfwoP1Ni9f0JCZPBCw2NNbLKXZDa6qeOxvlaqT4eUX9WgIXEM4CiBkg==","shasum":"73a9de0e2d263aee1ccaf49b820650ae4a2d2835","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.1.0.tgz","fileCount":117,"unpackedSize":1152616,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd/XFECRA9TVsSAnZWagAAk9oP/iIsGVTjBk2feCTusLtS\nPay63rkX5wjOR+vbRA5+uTEPMQXEoKzpteYNLEnKAPNP9c6b9oBXkCmkjwo1\nctQeIANQjai95a7ECUleB8Ex089L5jnuadspK4tZjsVc/OjbAghIHIkpMtZ/\nIwWJ40VkAoMrjkyGbKzzEowPrL41kFa9X2ydgi5K6fF6EK7iFMPmXIbIb5IS\n207t1nPVMhE4SP+4OkI2/pl1cpg6USbfF/ThEePQyV9hKZ4T4JrHTEqBl7J/\nak70HLX9WIicL9ZTcaY61OcE6unab4Hoj5aJclQF37Azc/u249DuWQvf6wDb\nUXzWOV+H6zwpskxL/w+Nu1Ga50B1eEQRbN7XNeYdogLWZI6VeXTIvzhYYJa9\n3yegSC73wfhxxGhwqIxlO5SHEehUKClMBPSlu+b6YDiOGpYfmNyzRxA8XG2j\n6opiqFrHXKbAzNpmuStTc8c5kEe5yrfGuYuiNLkk9c4z1jXF1sDebJOkUiz1\npwP+yH+TEBwwST9B25nWbyazuvO0Vjc0wCTgrFgaMbOn87qsitrZaShRxpgQ\nQeg6ZneeThkqzoj6jFAbMZtg2CztsYZCGmrNtc2BNc7suzO95/3rJvXTned1\nXhsjOXHxqaM6ocWH+4rBhW5LO0ZlZSvyD5T//t4Sc4xd/BSXKDNZ176ZAWZi\nIuxk\r\n=/s2t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICR8s7r29fJcmom25x5JBHsSn1j40D95eMdoTqzsk+NYAiBEBhZDLY7NeqVKPt04wkwUXnHzgoyR82x+0MVAQeW4GQ=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.1.0_1576890691798_0.8406433903876707"},"_hasShrinkwrap":false},"3.1.1":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.1.1","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathersjs-ecosystem.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^4.4.3","@feathersjs/commons":"^4.4.3","@feathersjs/errors":"^4.4.3","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","@vue/composition-api":"^0.3.4","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.0.0","fast-copy":"^2.0.4","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4","steal-typescript":"^0.5.0","vuepress-theme-default-prefers-color-scheme":"^1.0.3"},"devDependencies":{"@feathersjs/authentication-client":"^4.4.3","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.4.3","@feathersjs/feathers":"^4.4.3","@feathersjs/rest-client":"^4.4.3","@feathersjs/socketio-client":"^4.4.3","@types/chai":"^4.2.7","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.12.0","@typescript-eslint/parser":"^2.12.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.1","@vue/test-utils":"^1.0.0-beta.30","axios":"^0.19.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.8.1","deep-object-diff":"^1.1.0","eslint":"^6.7.1","eslint-config-prettier":"^6.7.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-vue":"^6.0.1","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^15.2.1","jsdom-global":"^3.0.2","mocha":"^6.2.2","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","testee":"^0.9.1","ts-node":"^8.5.2","typescript":"^3.7.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.2.0","vuex":"^3.1.2"},"gitHead":"fb0556ab0bc442c9fe15fad60454564f52759ab7","_id":"feathers-vuex@3.1.1","_nodeVersion":"12.10.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-wNsvYgmLZGQqxhbPqr92qoNzkjRS7Aw7QTD98BuBqTiIvbOfnEGiVyRo8FKhEcymrXlXzEPNqXF0NmSHsli6Sw==","shasum":"eb1f93201560a8a6b9590926097618ae7e3dcd63","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.1.1.tgz","fileCount":117,"unpackedSize":1153198,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd/slWCRA9TVsSAnZWagAAI2EP/1/57xZnfn07dSlDLiZC\nBWR3jCZFayNlb2wzhbNxfodRJR1/jpickymc9UJrBs+G+j9Q/f4sFetJcSBJ\nibM5npD/spak2VAUvJRuzyTB/vJl01T4R1XQXid+mP2W/q7JkcYgAWvH7DXQ\nwUxmD3J7iw98TKFiLbsbep81Xy4tHMZXzwm4PdonB19PPsJshwi0TzQu+aCs\n4G5yx9lru6bSwaHq8FNTuPjCErvL7oir4wymuyHX2NDghn98kDuL5F3gihGc\nd8nitbofM70GuvZE1gqiR88DlAryyZczZRShod1veMybyY8zrSBdFlw75fZf\nCEnN4x41IYWTxVOPC6OiCRk/mUE5cDe06C3G8j7deyW9rzPjU7Zl6Wtf/1+d\nU92m8qL5npR+0zT4G2PqmD6CA2Z5qDTAyd0Jpf20dQD5YQYOwpLAt9xLpaDT\nuAtbM7ZuUhI0ApM9v5ZM1YZBlNVIneQ51yDoqbeI1jI8MVcjuif9VDVQZEh1\ngCBFnGGoWnEFVCyMk9mqk32pRy8ZGq+VoTEP/iRFTddQEE/haZtm8q5V/Hc/\nv2HjatOuR9FZgjyXytWZP1HXe0TylMxgrK9tWwLR+C5mauHq9JN+2RcopXvL\nyvlFQFnur3Hd5Dr1UfiGiVBAHK117QThEB28ubNZ7inqFOhHHNzMM9vpyTbH\nILVn\r\n=0zCU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFPioc3WEdTxuD1abK696OE8djTRoPKMCi7C1LV/8fGrAiAX1NjJ7Iagq28CtyzoqbWOQ9tbkCdNeV3SEGzSCfE5jw=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.1.1_1576978774217_0.4590352558637818"},"_hasShrinkwrap":false},"3.2.0":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.2.0","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathersjs-ecosystem.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^4.4.3","@feathersjs/commons":"^4.4.3","@feathersjs/errors":"^4.4.3","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","@vue/composition-api":"^0.3.4","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.0.0","fast-copy":"^2.0.4","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4","steal-typescript":"^0.5.0","vuepress-theme-default-prefers-color-scheme":"^1.0.3"},"devDependencies":{"@feathersjs/authentication-client":"^4.4.3","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.4.3","@feathersjs/feathers":"^4.4.3","@feathersjs/rest-client":"^4.4.3","@feathersjs/socketio-client":"^4.4.3","@types/chai":"^4.2.7","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.12.0","@typescript-eslint/parser":"^2.12.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.1","@vue/test-utils":"^1.0.0-beta.30","axios":"^0.19.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.8.1","deep-object-diff":"^1.1.0","eslint":"^6.7.1","eslint-config-prettier":"^6.7.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-vue":"^6.0.1","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^15.2.1","jsdom-global":"^3.0.2","mocha":"^6.2.2","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","testee":"^0.9.1","ts-node":"^8.5.2","typescript":"^3.7.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.2.0","vuex":"^3.1.2"},"gitHead":"e80998cbd7f816293c56c8363e271c5a17ef7ddb","_id":"feathers-vuex@3.2.0","_nodeVersion":"12.10.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-WN3zb+KjrbON5aMZDAx9cuJ76tWsQVqodM4oRSIUhFlouF+g+sjKqP4Zr9d24jULfiEhnh1WNBdT8PXmYz4Few==","shasum":"cf356ace786ca6c4d4bb473e44ff4f9e9d99e4ec","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.2.0.tgz","fileCount":117,"unpackedSize":1154208,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd/wqLCRA9TVsSAnZWagAAFQUP/0DRyEfwgMWNv62boqB3\ndIuoCzfGGspfYxGyS8KLSA6uOVOk2OT/xUPignMYc3lAt06IruqkmcNBWArK\n+AIDnfElAs8IHFn4XNg4ZOnMyDsRs3jmWH9skNhFdTOWs+9OpeXict3L+r9r\n+1t7RPMXYeN4EErxBST25Nyx8kyuctMpW2tKG1ShpoQa3AeOAwXcb+8eyz2X\nEc3RJXM3sK/u04a+sfqRgN3UoHZyjd++qnZ9knOXSL/91w8d3mMjy/wd7OLn\nKx3b8/Q9su9YOZZZOEr5vPPYJt8U1WjaNRj3C+EIYbULqPRZeWew9C90bxPN\nJaIYcgUTx7PQXy1UWj7apUOO0cL+SH3tLPzBH2HXh8Mcq3/1lRaCpdqRyxIk\neB4VlvW3POr3tdcsroxg60quKE1jjdBxvXw2R6XqvF/K7axT1BY4NbBg/Qc3\nSfxJFsLl7hYNP1sJz6IPOIh+Gf43F31NHXci+EHnm7jSK1F6HfDdqcxCYPMV\nmJcg8arOUZ4OqHsY3f0IGAG7atw0jdUVvoLoD4uJa940YRmtRwjrQqnkO8yM\nRqiGHqJeHNUK2rbE0hlHE0roRKWKspTe7r8hs6vAppV8Y+s1v2weWSC/bpS0\nuu5hOq458eBcnxpScGezJ4Nwf2lpFVTuo/2Amg9UWcJPCRBN7+ILuwFonvRq\nrJfb\r\n=wqWE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDZoi26POSCFpyxbYY1D0mK81cyoys3rNCzM0Mkl4nFlQIgP4z/X0OVwCeqrq0wriio/VNoT+wEbtsLWW+Gx+exggw="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.2.0_1576995466492_0.08087088225543959"},"_hasShrinkwrap":false},"3.2.1":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.2.1","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://feathersjs-ecosystem.github.io."},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register test/**/*.test.ts","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^4.4.3","@feathersjs/commons":"^4.4.3","@feathersjs/errors":"^4.4.3","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","@vue/composition-api":"^0.3.4","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.0.0","fast-copy":"^2.0.4","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4","steal-typescript":"^0.5.0","vuepress-theme-default-prefers-color-scheme":"^1.0.3"},"devDependencies":{"@feathersjs/authentication-client":"^4.4.3","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.4.3","@feathersjs/feathers":"^4.4.3","@feathersjs/rest-client":"^4.4.3","@feathersjs/socketio-client":"^4.4.3","@types/chai":"^4.2.7","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.12.0","@typescript-eslint/parser":"^2.12.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.1","@vue/test-utils":"^1.0.0-beta.30","axios":"^0.19.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.8.1","deep-object-diff":"^1.1.0","eslint":"^6.7.1","eslint-config-prettier":"^6.7.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-vue":"^6.0.1","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^15.2.1","jsdom-global":"^3.0.2","mocha":"^6.2.2","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","testee":"^0.9.1","ts-node":"^8.5.2","typescript":"^3.7.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.2.0","vuex":"^3.1.2"},"gitHead":"0d292b6638cb2dbf3e9107a66a5ce6a0e608c400","_id":"feathers-vuex@3.2.1","_nodeVersion":"12.10.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-hqKvojD4fckRbDqu4IM9rkMpOTm9VatL1/rDJ+L/eKONgBlnbkuI/DA3E9YIULXsk5TxYFTS/y1Dd0neLYigBw==","shasum":"8743de32ff6e05059fb2dc0b89ca822930275110","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.2.1.tgz","fileCount":117,"unpackedSize":1155664,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd/7oXCRA9TVsSAnZWagAAfx0P+wWn6UOqNMC0CTfDvlCH\nTkxLsi+2+snpKu8OfvrBXrCR31O2EKi7uFvT9LjeIyyG0FHMV6WVpJY2JyhE\n61essTuaxIc1JmJXFu5WBZt8dv3oN+Pl30161cfb0+vCAzeewk2jdFBy5Z7V\nOd+H4gxOjs++It5chFZ0R6pAIR4TDFY3NDzFoLLGPim892atx1Pptgxp4NiU\ncUQrSp0k3TggyvsIJLXeOtowAHNPNNxUf3oJqurxrqdZCgfXP5tg60fVGDtp\n0eAkL3GnnqEBWoAqe+5xSZ6HaYjpIGcbqYAVYl/z3FmUnAX3ODVYM7pRHjWI\nKQPI0MXex4LwTAff9brB0PyvV0J5JUFPTwCBqgNfttqFr1r8BIDdG5/d3a6S\nk5jhqaH2S/GYhtKkjZfbaRqFaYPXzVfEPMql9uj94ETqNlqPC8KEQc5Oji0b\nTlvBjMRH0vfGSmqePn8uu7VhWhzCg3ju0dxJiFChTNyfQJrItLq6VRHutT43\n0Bmp9fbXeqetVDHmDu14LbAZFqlyE6UCnyEWRRZdor0W87Wf4PDIkxZZ5riR\ni5ki72UU/uscIPryhhEqdS1g1cj4l7vqiBFrGX45b+SeMjZpgtbc57RlGVz6\nIbR677e4ldh1FHjGcLIdyw4Pi07zSCgcd5w/RJvcNKkotWtMBoe90Fw9MYXK\nzyeD\r\n=IwUl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQChrglovr25Y+Cres0NdigdPekh+CRS4uTNeKGJwNrVbwIhAK8U51y37rzqx7mzPIV6V9Zo1zGVarUpfnOp9X2MGtjA"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.2.1_1577040406701_0.7317143112923403"},"_hasShrinkwrap":false},"3.3.0":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.3.0","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^4.4.3","@feathersjs/commons":"^4.4.3","@feathersjs/errors":"^4.4.3","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","@vue/composition-api":"^0.3.4","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.0.0","fast-copy":"^2.0.4","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4","steal-typescript":"^0.5.0","vuepress-theme-default-prefers-color-scheme":"^1.0.3"},"devDependencies":{"@feathersjs/authentication-client":"^4.4.3","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.4.3","@feathersjs/feathers":"^4.4.3","@feathersjs/rest-client":"^4.4.3","@feathersjs/socketio-client":"^4.4.3","@types/chai":"^4.2.7","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.12.0","@typescript-eslint/parser":"^2.12.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.1","@vue/test-utils":"^1.0.0-beta.30","axios":"^0.19.0","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.8.1","deep-object-diff":"^1.1.0","eslint":"^6.7.1","eslint-config-prettier":"^6.7.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-vue":"^6.0.1","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^15.2.1","jsdom-global":"^3.0.2","mocha":"^6.2.2","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","testee":"^0.9.1","ts-node":"^8.5.2","typescript":"^3.7.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.2.0","vuex":"^3.1.2"},"gitHead":"f0f5ee18742c116fb047b68866067f477e8b769c","_id":"feathers-vuex@3.3.0","_nodeVersion":"12.10.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-06aRz0KRgzIITLQOW7PpcAtY/9hk6HCJXSKgIU7fVX+xV3FRjm55qKa9q1HYd2vpfQ/wNDHqaO170VEoYNcaJg==","shasum":"3986f22bbae46b6ef6d313d8984839cd941fd37a","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.3.0.tgz","fileCount":238,"unpackedSize":3336000,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeFSYTCRA9TVsSAnZWagAAyx8P/2iJq8tK990F93JdvqUE\nBdw3HhijamGA1OV5ZErauJ7zZyFT7bXtTExB5P7K+C89Xez7yfSobc1Be5cv\n7ijvjWjWPzHr0ebKLPiRdif7DiTP3To8WhwjS57tCW4aRvcDrrux2bTcGrdl\nLk75AccLy5vDPe/U+t6TeMFh59LcJyPMNq/G1VXY+ZbK6WzPxmY/38ooH58w\nL6pKnao/krxlt+VH/nXNpdxkJS7nYfFBtMnxhOxGZQ88bMxAvl/5n88w0lN8\n+iRvXTeF94Ouat+GN+tiAsDF/mnk6hahpBYMXl9kCcqoXPFctnoDVkTlUEMH\nWGZNmcYUr1bLhFOlp7QAQDBd0ujELpGjzgRr7CkaQYO/CRlLDUSBGKIG8m76\nDnmz622z2QZTPQ12PN3uZP8SpIZxR492IfufCIt0Om/WqIQgKrQ/MrMYzjTj\njTBzYCwV6/Zp3FFxH6QHCLRulZrypD/WoQJxAsJY2iPZAnLJRKJ3vBsnKjsu\nNkinFOXaOeF0w3P/8h21Wxs7uH6H6R+J/5jxVnLVCmH4UWo6h5ypBzQNauDr\n/chtL1hiCvRm6qx5o9yUStHJ8dQm6rTtWgO0OzCNUWGUZ76F6+CZJzhgbQKu\nIkgcG3UyZ+iWKuJIz5yj6f5aNlj6pyi1vFnVwk4il9Be1DV9TV+n7qj9y2dJ\n1x0A\r\n=vSE4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDEUGxOUHri29xoZEpy7RR5sqKIEX9HjFkvlh3mw9MuxAIgY0GJxv3nhPd/JDYOkCPq5q/SWduhVP9hDNpHup4+x+c="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.3.0_1578444307352_0.09850671881113016"},"_hasShrinkwrap":false},"3.4.0":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.4.0","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"dependencies":{"@feathersjs/adapter-commons":"^4.4.3","@feathersjs/commons":"^4.4.3","@feathersjs/errors":"^4.4.3","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","@vue/composition-api":"^0.3.4","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.0.4","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4","steal-typescript":"^0.5.0","vuepress-theme-default-prefers-color-scheme":"^1.0.3"},"devDependencies":{"@feathersjs/authentication-client":"^4.4.3","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.4.3","@feathersjs/feathers":"^4.4.3","@feathersjs/rest-client":"^4.4.3","@feathersjs/socketio-client":"^4.4.3","@types/chai":"^4.2.7","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.16.0","@typescript-eslint/parser":"^2.16.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.1","@vue/test-utils":"^1.0.0-beta.30","axios":"^0.19.1","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.9.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.9.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-vue":"^6.1.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.0.0","jsdom-global":"^3.0.2","mocha":"^7.0.0","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","testee":"^0.9.1","ts-node":"^8.6.2","typescript":"^3.7.4","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.2.0","vuex":"^3.1.2"},"gitHead":"6512242652b777473d07efaee2f0f71139dee29d","_id":"feathers-vuex@3.4.0","_nodeVersion":"12.10.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-cMvon83wPRTQDo0N8Q+6WItz9qjSo6Q19zw61xhho7LKrJFywYUBh9cmk0X+QShnK9mW0b6TMkFfPRxhcGHwZQ==","shasum":"a38d6c56d747ed2316e8898e97e1f19eaca18494","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.4.0.tgz","fileCount":238,"unpackedSize":3338892,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeHS2LCRA9TVsSAnZWagAAHCIP/i2Y/UrXoBniSyq7bjli\nQ0CWMJ1zyITtNS/leRmyRZIl/pRkHe8GW0Wdt+OL6oZ/Otkj9CZeHx8x8G59\nW7GEbwc58FfGZ5/bCE8q5AX0G6IfMNN0ZbdaUQcX9pxIiTcQ0TOimsH9O8kK\nPYMZycapC4nnN4S+yK2SHuhOPIpsgNaDs5gLRgmAoGoHbHczUXesACRJyR9c\n0HdLdCj84eHAWY59cqerWMqFtaQLbOPBmwN6DhhkXZKKP9l3kfpyHMVYix0Z\nt7dKQwZsPMjRX0Zu/1ccYUOvSEt7pv1tCLvo2EYedmvnsRXLpixamhysJLxr\nGCUjvkqVXLMfi0njqRhPRm4YvcMErMRu+W0nuj1ujo5BPdxaNjwgGxo9I+zs\n+ZtoQMwbr1Cw3+edturdX/ac3lsxEKZI29N+YnneaFSncIcVtIh5zZee6Rr/\nI/Npi/oGD6qbQ6iaUwzERo60Cf0K1WuHu1e0LIa5TYmCINQAguyrQ2PE8uJZ\ngvhRl3Rhmu5f7CLrqI06kmyXuBmkBZn+1zF//t5PjOxAko/cC+Ic4ikXIn7X\nYW3Ej9pYfsJtYwJiGwIyqzk3QRbREi+ML72CMAuUYl3yBPzI4sVpE3ZRuA3J\nVvDrn5oK4C4PVStBsjCPYGBtUDW4b7cBczcd/PUYgsE9LwmRbaFmLNWbHaN/\njPwo\r\n=A087\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDfEovCiojl4MH+zwDUJ/5S4J8n69wCbn4fLlKwVAsVIAIhAMKOZJlH6FEMQ2Vs5Ct9H6cW4PRsk0ALOXOvgZcpWbGb"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.4.0_1578970507004_0.5222958315281705"},"_hasShrinkwrap":false},"3.4.1":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.4.1","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"^0.3.4"},"dependencies":{"@feathersjs/adapter-commons":"^4.4.3","@feathersjs/commons":"^4.4.3","@feathersjs/errors":"^4.4.3","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.0.4","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4","steal-typescript":"^0.5.0","vuepress-theme-default-prefers-color-scheme":"^1.0.3"},"devDependencies":{"@feathersjs/authentication-client":"^4.4.3","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.4.3","@feathersjs/feathers":"^4.4.3","@feathersjs/rest-client":"^4.4.3","@feathersjs/socketio-client":"^4.4.3","@types/chai":"^4.2.7","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.16.0","@typescript-eslint/parser":"^2.16.0","@vue/composition-api":"^0.3.4","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.1","@vue/test-utils":"^1.0.0-beta.30","axios":"^0.19.1","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.9.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.9.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-vue":"^6.1.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.0.0","jsdom-global":"^3.0.2","mocha":"^7.0.0","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","testee":"^0.9.1","ts-node":"^8.6.2","typescript":"^3.7.4","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.2.0","vuex":"^3.1.2"},"gitHead":"5c05ef3b2d626f6a5918302f176e8b9e05fdae8c","_id":"feathers-vuex@3.4.1","_nodeVersion":"12.10.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-MwiG6Pr9WPyHdIuLQtumw1HbrhvYy72IlVj/DgoClmkiSLrEdYns289cXqV53F2OJXbmeGilhCAKAT+QjW4FMg==","shasum":"4f894f965a48a70f77c3408a488f1906cd852013","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.4.1.tgz","fileCount":238,"unpackedSize":3338606,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeMvVmCRA9TVsSAnZWagAAYBQP/i2aqBlhQJk2WQA5f7DM\ncA3QdlfzdVpKMNkynJjXSpowjsH+AX9gTWQ2J8McoK56J7MonPNc5Aupb1uh\nRMpbYcQMti7XNZAy2FkrE9nV+g2S7yi+N0LNIJ8drke9NG/CxfHECfG2Sa4m\n624PZU8bX7z/ugludwElrtKUJMBY+Z+bOb1g1de28TnPplHbHuGTEf8ZqQJ2\ngiEXkfxrNDDsF/bVlLhv1DL9j2zX28lKWaKuNxiyI0w7mjKDiM3bzhdLVwtI\nspngrhKhli7i5iJf7wXzgMmF3PiBzvmTK3qGCSs+5piC8Ou7D06McYOLrrxF\nMl3osLw8+g5T9X8wgfK37Lx24NlhWiLo/cZWMxTkZlFgsqSmcXnxVZpxOls6\nqQP1UdufrP/VJAoKPHJ4Z64swd3rhck/eDUKnjG+qAp9zHI9c4g2+QLOFRpj\n6Om64p1fOSCU+9uHk0Z/8m10EJMKClqRZVQMN4J6bPlAqk5L4TiFu4wuhLo+\nxZC/PbaBkPHph6ssZxcQNrLt8NTtfHf6vxRzbbKLU8ispcgxLHmsKzorxa9g\nwoybYDhYDv3ltEGZeagU7lY1nr7AppxfVCsyHRB/AN+WPVV1XT2Uu4INt/oX\nehAB5BQDBgMMKiluKvGHJ5Ple1hkwM/3lQbOXGYa2McRNig5gNykXO/x4gcm\nOdpY\r\n=WZnB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDhxQCaNvKcuCAyaOwAkh0CCmfrgq85DdC8/Zlv7FkPUAiEArcrY8uKhF1nPDptEO8oVF78PyiJQuoMh/Ird6rpsrSE="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.4.1_1580397925505_0.9756201937960973"},"_hasShrinkwrap":false},"3.5.0":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.5.0","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"^0.3.4"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.1","@feathersjs/commons":"^4.5.1","@feathersjs/errors":"^4.5.1","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.0.4","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.1","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.1","@feathersjs/feathers":"^4.5.1","@feathersjs/rest-client":"^4.5.1","@feathersjs/socketio-client":"^4.5.1","@types/chai":"^4.2.8","@types/mocha":"^7.0.1","@typescript-eslint/eslint-plugin":"^2.18.0","@typescript-eslint/parser":"^2.18.0","@vue/composition-api":"^0.3.4","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.1","@vue/test-utils":"^1.0.0-beta.31","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.9.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-vue":"^6.1.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.0.1","jsdom-global":"^3.0.2","mocha":"^7.0.1","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.6.2","typescript":"^3.7.5","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.3.0","vuepress-theme-default-prefers-color-scheme":"^1.0.4","vuex":"^3.1.2"},"gitHead":"3a702018c2df2f6f6e5aeaf83bd54989ce31abe9","_id":"feathers-vuex@3.5.0","_nodeVersion":"12.10.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-uioJ968CPvx//lfomF6qO+EXaoJYEHcDICt9/BRAltNHCPStzwCH3r6mXSYIQ3EYgzjKNMnVvdMpHb6cpFVDEQ==","shasum":"ccff88df4edd2203718002c98990ae2cc0cc591c","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.5.0.tgz","fileCount":242,"unpackedSize":3353519,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeNJQoCRA9TVsSAnZWagAA2CgQAIQpee563s17M/m+2cQr\nRGlkKejktRGJBm9vs7x9tEtuOJhYT6z6HD4bEOsm5UIV//zHCBQBoR47M0TX\nlmYaQ6fk3OKEuSKdgbSWNBW3oT1qtBzV9e+MyAGiV0HZk6SjC4DkLWwvF5sI\nWH6ApzenMjmFn+LbTfAeFSl2H+8VkXYX9CmdG4T5/kaRlyWs+31Wbk+DEHjA\nTAouiZnj++hG5JfzjKVhkLm8JLYYhbHyVXp41bfM+mGcJi1OnRJ2g+/4eJc8\nm3QNkaWalfX9vEtEWtjwcNhXEt89WCTHtbL+LD/n8vhMyT44v1S3An/pFk1L\nPfiw5XF88hTuug1ZRGjFFey0gbuERAO8AfmO+pxS3k0WhwFKuZHKTQT0LfKN\n3qNvKfltmqlaGZBLgkMH0A6KewgDQRdhYPe7AxnfJwBHGX2CcFe3ww9u91M7\nb3LX14gZxgRegT9mdqiU679ol/WXYFuL7xuJk8hZPEuLY+BFxb7FhmaOUKBq\n2QyMQk6Xahnr5UEKbm5ayz0K0Q5HwypSCrJ6XvfoaLA1ALsnnmKMduX1Jptg\nCZ3yqg4cPN2reL5KDytX/QDgK/T2sIh/7nF1wI9NFedd14oH8ySaMDZ+422M\nOlrgwZxqGsyFD5gx7cTDZrY1PivDWMWL9stIQMxuM3NLfoIY7jCjCuhaOK+Y\n0cIW\r\n=9cc8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFDGl9Jd54C1J0t0cTZ1YWW/3S/RBHqIEl3/kOofyiurAiAyL9Ens7/XkI6kjHvcGhgpqXVjnyq8oMGg/zpV5cHiOw=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.5.0_1580504104065_0.9928267228593826"},"_hasShrinkwrap":false},"3.5.1":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.5.1","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"^0.3.4"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.1","@feathersjs/commons":"^4.5.1","@feathersjs/errors":"^4.5.1","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.0.4","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.1","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.1","@feathersjs/feathers":"^4.5.1","@feathersjs/rest-client":"^4.5.1","@feathersjs/socketio-client":"^4.5.1","@types/chai":"^4.2.8","@types/mocha":"^7.0.1","@typescript-eslint/eslint-plugin":"^2.18.0","@typescript-eslint/parser":"^2.18.0","@vue/composition-api":"^0.3.4","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.1","@vue/test-utils":"^1.0.0-beta.31","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.9.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-vue":"^6.1.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.0.1","jsdom-global":"^3.0.2","mocha":"^7.0.1","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.6.2","typescript":"^3.7.5","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.3.0","vuepress-theme-default-prefers-color-scheme":"^1.0.4","vuex":"^3.1.2"},"gitHead":"909b675ab8d7617a355781b37fc4badd09529135","_id":"feathers-vuex@3.5.1","_nodeVersion":"12.10.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-uBvBiFGV9nadBhvONIE36WjkhT3a6BYYDwgav1ruX+4fZtfHEFAlDP2s02ojZ6uzzk3sDX2j2yj/LVoAff+5Fw==","shasum":"cc6241ec5859d87549ccadf8a6669e745848ca58","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.5.1.tgz","fileCount":240,"unpackedSize":3349156,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeNJ7hCRA9TVsSAnZWagAA0x0P/2N2oct4hotSEZnQytpB\nBZdOQgo3v+bTayk5o853d5b7Lz6GkAO9adcM/xmnMZGWUnGCYxr+cH1nUcY5\nSfKOtmLuyR7AVM7WPezcMPbTf/SeKB5ar1x+9E3FvMbDstNAHPzRAD4i85Hy\nnjVJUdyJ5YManZJWsomWU87sMdAMHr4+AFwr6rQRBgyD2kBK3JfqONtaP0oo\n/hMyjMAVa9BSsBLPiIiE6P8UzsqelMxN8CTUefu87o4/REBYEG5I/apHNoC4\np/BoyriRfGQxUPXbZvKXBasogmGYdOYAJsWWGvc+4For424SnRZ49r/OOCm1\nkM5ZjcVW0SSo3DCWaNrS1pQOFUkEgFppvJx0U91DaH5XF246rHC9HoxMIIqU\n149uXD2NEiqfAApT1AFQ7BRrPVWJUJRHahZuyw2MkqZclflF8hybbaVNoQhj\npHzWonRfWWVXr0negWsdbC+bBL9Oyym7D09DNxXC+c9sEq9RmF4RdUr+6jOe\n52G0P1NGht8mTDF1yxpIT9d6x+eH+GPfO/MA4THC6MN5j/YmwDz8M27rDCMK\nylYOKO54Dth6KmEJYU4T31Pyr0U545yoK5OQis7M1MMDoIZcrQ4NNgYxkx13\nUMQEpUORCWcDRJ524QwMvp7fr95EvInWNj09LIYKrzCeHfMBmIHBGfN7Iexv\n95xY\r\n=x8SS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD2kwND6cIYS8dUj1nDcb061OwffqQw/t6VYcHblgmadQIhAOK8L+K9NOSzdH5XVLp+5jD40p7ARk1ErfbEP4R/BWV8"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.5.1_1580506848685_0.40672176449337427"},"_hasShrinkwrap":false},"3.5.2":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.5.2","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"^0.3.4"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.1","@feathersjs/commons":"^4.5.1","@feathersjs/errors":"^4.5.1","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.0.4","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.1","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.1","@feathersjs/feathers":"^4.5.1","@feathersjs/rest-client":"^4.5.1","@feathersjs/socketio-client":"^4.5.1","@types/chai":"^4.2.8","@types/mocha":"^7.0.1","@typescript-eslint/eslint-plugin":"^2.18.0","@typescript-eslint/parser":"^2.18.0","@vue/composition-api":"^0.3.4","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.1","@vue/test-utils":"^1.0.0-beta.31","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.9.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-vue":"^6.1.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.0.1","jsdom-global":"^3.0.2","mocha":"^7.0.1","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.6.2","typescript":"^3.7.5","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.3.0","vuepress-theme-default-prefers-color-scheme":"^1.0.4","vuex":"^3.1.2"},"gitHead":"1a3165c43bfd1095e22964c479088363b988af21","_id":"feathers-vuex@3.5.2","_nodeVersion":"12.10.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-h47Ye+9GCoVEr53PtkGdhZJGT3nOywReCWAdtTHJoPX1RJTh905p8UhYyt1LvnCKigFht4pNnbTuJeytB8EZGg==","shasum":"9cc8d6808c825f4ad64541d38d179784ccad1595","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.5.2.tgz","fileCount":242,"unpackedSize":3353252,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeNJ/0CRA9TVsSAnZWagAAgtIP/2awVungIVYQjYEJ4NME\nwml74voRanj3Qvzu5fxRFgblM2OafHCkRMEmArKQI1hZQmuLHuwp7Mwd07+J\n4lA9xM+LZuEEww1Qsk+OXXBJ4+0XvG6qDfGYudVS/WgUQS5h4kC74MnTI52A\nCN7LFdGhgna4qAVjzUvYcp4P4TwdwQ5qlSGZvSWHrVdP5LNWR05uvDgTTFbI\nvcU8rM6qbU2UUOHjyobhZjxkGn99MWEtmn94LIYjRtnJxj+sncwVsxdhnF1i\nSR38vYS5kLwGP19pkTGOxm20jxhpQbs1DqDdXEBhq88P+s9anX23cn3iTKPl\nHI5Qiq7EfP4lgZ0KqIojJsFR7yPJTEKnjlEmzjdNOzW/y92MgiRuFyYPTgRu\nF3QMBr2HnKnZpGR8e2XRiAXTOghkIQajQOafp4q9CuYIkR2vQei68oc8t2EK\nKCocUgKPcqn2bKbHO9mU3OvLTX3uFl9AHMrr0JF36jo0H2nm7zGXGVafVyNw\njzuRtKgbJnmA+dly1cKWVoO8mlQ5yN2K1gsMM0FQditC0+pEW6rdZTUv430T\nor3XLOQxuML/BAzL2zuMFdMpxY5bKqnMVrJlilaUTasDCSzDMqPuj8u7D2Ng\niTbIAgJzXkmLRMswTtkIjiJUluHKkLWU5AaWiGzMwyLDW/LtvuEd33MkslI5\n9Bkp\r\n=Y8Vv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA+TajACxKJk/4OyOvIqpEPP0jc8+NR9zwy1iYSrJeenAiBbRUJqb4OdIivgHQgiAqYMDu4dE6gT7mO/C0uRToIiLg=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.5.2_1580507124336_0.4274772755837519"},"_hasShrinkwrap":false},"3.5.3":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.5.3","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"^0.3.4"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.1","@feathersjs/commons":"^4.5.1","@feathersjs/errors":"^4.5.1","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.0.4","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.1","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.1","@feathersjs/feathers":"^4.5.1","@feathersjs/rest-client":"^4.5.1","@feathersjs/socketio-client":"^4.5.1","@types/chai":"^4.2.8","@types/mocha":"^7.0.1","@typescript-eslint/eslint-plugin":"^2.18.0","@typescript-eslint/parser":"^2.18.0","@vue/composition-api":"^0.3.4","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.1","@vue/test-utils":"^1.0.0-beta.31","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.9.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-vue":"^6.1.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.0.1","jsdom-global":"^3.0.2","mocha":"^7.0.1","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.6.2","typescript":"^3.7.5","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.3.0","vuepress-theme-default-prefers-color-scheme":"^1.0.4","vuex":"^3.1.2"},"gitHead":"3b1feb503df033f9d24a34eb1f3cdc099b648068","_id":"feathers-vuex@3.5.3","_nodeVersion":"12.10.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-Lv/axDxrpL3bq3GSBAGLSULsLTvr8dBWCwFLTuMFpxkTPY9xero1QX2x6X/lG7kIF1G6CCO60H/dgrC9TOT2LA==","shasum":"c98fadcf25e93d864d6d741bcf0f1bc9725e9181","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.5.3.tgz","fileCount":241,"unpackedSize":3352296,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeNKDwCRA9TVsSAnZWagAAY/oP/iw6zkhhJgAE4OueV4lE\nX3cgfLWjJgiILrzsoh+fdBIxoH+LMvE/V0EBbvRyGayzNJKwvYnUXHnbtQIs\nu7KqhMWQqn7C1g8AL+KS09XslOz5CGOKAg675CdPUhinSJTBUmKSo0uLwsse\nhHT4BsinBoTx9+sBkiP0KjAYn7N7fuvOuqVpYVGvX5v0aPKEtSeHtO+OdIQr\nw9hhgFeY8Up/vMnP3+WNW0qL+DCqnUFM8Ovxfr4+FVEkOXGLIRF6cI3lVrf5\nbkCO7z+hT1pY8rmdYX+GMk2IckDs3VzrjNf2pbW44ntOFQVXyASlAT2G4gan\nVupAYby5DBEMIj6uOp0Nkw19Oq5cDUsTRXEklyhaQfiftiHTNP3U8c4dnmXr\n2xZ2hvu76VMHLXJ2CxGj4hHPc0l7HZ/exdcPKD7/8K6Y1rF1qREYvmQ3/XcG\nIqgE+YYlREQJV2T7iG5sXhmNCuegfv6NeUddQyOR4E6gfQcOwsN/PJ9+UMV8\nwqLC+Do5fjY4QLvuAFrbBRHljFidlVqZDT/UdB/UVlgVaT1INYliEjLbisfW\nnXIGmjQ7WwX+Shlw2DDuKQzJxxF8+niymc5n3eFhY28qpSs9PRudcvd3pt7B\neXE8UkfvS6Fw7369Gc0Ym7/1mhozP/+jTV0+mG8o2Fmu+JqP2Eu4b7DQeYEM\nG6Nu\r\n=jK78\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGAXq+Ve13ocR7D1UqL38HfmmgDLbFWlQ/ufgHLc7WAlAiBsPX+fG4cES4jXqEJcyr8AARimNZ4QwRAIVZ7/ClcXSA=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.5.3_1580507375739_0.23804623763517885"},"_hasShrinkwrap":false},"3.5.4":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.5.4","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"^0.3.4"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.1","@feathersjs/commons":"^4.5.1","@feathersjs/errors":"^4.5.1","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.0.4","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.1","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.1","@feathersjs/feathers":"^4.5.1","@feathersjs/rest-client":"^4.5.1","@feathersjs/socketio-client":"^4.5.1","@types/chai":"^4.2.8","@types/mocha":"^7.0.1","@typescript-eslint/eslint-plugin":"^2.18.0","@typescript-eslint/parser":"^2.18.0","@vue/composition-api":"^0.3.4","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.1","@vue/test-utils":"^1.0.0-beta.31","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.9.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-vue":"^6.1.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.0.1","jsdom-global":"^3.0.2","mocha":"^7.0.1","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.6.2","typescript":"^3.7.5","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.3.0","vuepress-theme-default-prefers-color-scheme":"^1.0.4","vuex":"^3.1.2"},"gitHead":"1afc8e0c4f1b3ca206f8d5cb4886466d778c9cbd","_id":"feathers-vuex@3.5.4","_nodeVersion":"12.10.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-V+EXd7hAStRc+HmhvQ/byHgnV30/xYYPEWrc258ckWH4boHiPkEHqmXalL5rCOHVZV102tfNdA8aNQls/zzplA==","shasum":"372aab8bb3c19d08a5e1af3e5aa278526a50702f","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.5.4.tgz","fileCount":239,"unpackedSize":3348200,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeNKH6CRA9TVsSAnZWagAA+EsQAKF//081IIb8E3pzFIqA\nPINw7z45kBHYwV6wMa+49xxO8LgRH2RxesjSh26A0F1dju+vAyr0zxRF+Lqt\nM0mDp9U9mI9+1v52H6dLQ1I1+/1nXJg6mWTLMbyp4qPXLiQFn8QOTC2/zRcF\n+gRyjy3fl65j961X4K9ad24cAsX+4nyNtSmAycKS51ZFEOqYjy9P5Vd0Guu5\nVrvtuoP66+/aIGGDqkdghQ0gyhq0sXR8d89uw7rd7ybo6uy2LMR+/B3eFVzc\n7cxuyFRHVUPsaY5+lmTm2q2wtGPpXlPeL8VnNr7D2w2m5mU/t2jn+vhNCps+\nyTMTWJ+Rue8xzudjxk0EylGBN+QNwGQitZ/x0Nsk+XzDUEqP5foCrfuYxbhy\nhSMJDPFiKy9FDdRJQcF5M9koEVLg9+zSExweADVsakEMIHsK4zB2lS/+0TSw\nuY6TwGWrVGWVHWEyiVhyBecwNvv48TtC6xLab+DLcBNiJPn3jwWtAQRoh+o5\nsVtzY8d4Pwb5Yazu+9POX5ct3R5nUio8qv+ZGXTqkqwhyfbydAR8b2KJdEri\nR25VvSIo3tCXosylKbrp3bda1ssgg4nQmpvJMoKRxLAyxz9YXWWl3REVg3nI\nPeT5GrrbyICTbcUKkfqOEkgxoPWLnDm28RzIcb8ysvAJRh6L50iPRezjHaX4\niwGl\r\n=BCer\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDfvX0m4kEAYZAKc6DxpP1b0A2UAjflipTLNqeWRaDBiAIgaqRV10tQyBK9X0ULv0ezKs3gIIFQOXAmaI6gWkPV9UY="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.5.4_1580507641937_0.8053532755818573"},"_hasShrinkwrap":false},"3.5.5":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.5.5","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"^0.3.4"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.1","@feathersjs/commons":"^4.5.1","@feathersjs/errors":"^4.5.1","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.0.4","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.1","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.1","@feathersjs/feathers":"^4.5.1","@feathersjs/rest-client":"^4.5.1","@feathersjs/socketio-client":"^4.5.1","@types/chai":"^4.2.8","@types/mocha":"^7.0.1","@typescript-eslint/eslint-plugin":"^2.18.0","@typescript-eslint/parser":"^2.18.0","@vue/composition-api":"^0.3.4","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.1","@vue/test-utils":"^1.0.0-beta.31","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.9.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-vue":"^6.1.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.0.1","jsdom-global":"^3.0.2","mocha":"^7.0.1","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.6.2","typescript":"^3.7.5","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.3.0","vuepress-theme-default-prefers-color-scheme":"^1.0.4","vuex":"^3.1.2"},"gitHead":"bef5f3d75dc8ad6f271b12136f0ffc59f1d73ada","_id":"feathers-vuex@3.5.5","_nodeVersion":"12.10.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-P7wgluHIN9B1nm3hwZnCJWGks42xGV+mvXlaMVcpqC58snNY+O/uyWS/DZBRx/XIl35FwfMEBzYgGKObvWV+7A==","shasum":"c93835633ac26df80de77291cb0f2aaecd4ee106","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.5.5.tgz","fileCount":239,"unpackedSize":3349084,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeNLOdCRA9TVsSAnZWagAASxsQAIw5ZEvsrf9VTWjyzCnG\ne03lzNlkFbraWtZ/HwS0SltHTXmiWKvu4WnpVY40//iPq6saAFLGpI+pOO/U\nNXz8NTxn6LvSQX1erZZvl/vOgdaIcShBiTCVFgFgVi1wdLnpJbMUNAn8zjyt\nzwMsN5kj/+k+MQrH13KMy+CHWGSHOuuqsZ9SlDRmzOwYkXNXlsZYqoB6rSZy\nQ9On+E67yIOZt0YhrcimRzEzFc5bTbvTIQCDW1eKcHBEJqzrqA4FaTwtj/nc\no+B24aKSDDs+03NyFu57yO3hRxFS+K1CsY9/Xlmf2weIPi4q7GCUoBA8s7vT\nphbQ8zkpWWce+XhpqSMVntr3/dPWwgE3YTUc9/++lqhM6pr6D3K0Of7/x2m8\n+7ZwkfUk9J7bD+5forXiveB29EtGZFN8MWpyYSh1ofZOfbzvj5glgULJzFZm\n4fjnKj8H08ETroQLD3Fa1KF96Tnzxe/KbWHQoEojlXJy8Qs3x20SHoGSu/qO\nonPSZMvHB5Vgj+iFRJhoehTmpiTbOu6s1m8DrEC3bhVWBNVuaG1BVy7lx+5J\n+lNsjZryOcBwBiMT48Mt/ko8Y7axJmqweQEtyLCSxU8KXFmc4Qb7zPevCMpL\nwzrT6tmkvrfRzMygtKCqXuztw2Mu0Ja4Kv4e4JT0BsmjjlLD+3zCIs4jkx1G\nDfs6\r\n=xlwl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICarVB3cXtr66W6r4HqIqf9NbP1+UrY9iOdrx6zLWUBCAiAT3qGWCw1JdfEDvM+WckyJceLB+mdWI6JmLJSIYyLnjQ=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.5.5_1580512157402_0.4413593369883597"},"_hasShrinkwrap":false},"3.6.0":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.6.0","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"^0.3.4"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.1","@feathersjs/commons":"^4.5.1","@feathersjs/errors":"^4.5.1","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.0.4","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.1","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.1","@feathersjs/feathers":"^4.5.1","@feathersjs/rest-client":"^4.5.1","@feathersjs/socketio-client":"^4.5.1","@types/chai":"^4.2.8","@types/mocha":"^7.0.1","@typescript-eslint/eslint-plugin":"^2.18.0","@typescript-eslint/parser":"^2.18.0","@vue/composition-api":"^0.3.4","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.1","@vue/test-utils":"^1.0.0-beta.31","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.9.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-vue":"^6.1.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.0.1","jsdom-global":"^3.0.2","mocha":"^7.0.1","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.6.2","typescript":"^3.7.5","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.3.0","vuepress-theme-default-prefers-color-scheme":"^1.0.4","vuex":"^3.1.2"},"gitHead":"e08a9692d10503d51e81d4dd5787072cced7fa02","_id":"feathers-vuex@3.6.0","_nodeVersion":"12.10.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-yzgE2/bb5eYd6r489upNqFZjPDuKekJem49QeFAXh3EyftkbDBO27yw8jhCTqdRwokFKJcawg77u5oAXxbtKdw==","shasum":"8e71be94380a107c65ad8b7ae9fce3493afdb32f","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.6.0.tgz","fileCount":239,"unpackedSize":3349191,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQ4OVCRA9TVsSAnZWagAAhIIP/1VCrRLOjd4Vr+iXUGb3\n+8zBTQ2Vcvi6Px7FI7EAtYOc4Ko70bbVJYNGxCGAw1js4OPv1qCM1HbQV7qc\nrXCP29fUGeRRWSbb80RRvp2TGvkXJb9cwub+GHrRGyvTQZyz8vtkzxnixcRR\nm9//7A33Ydy8PFBr8y/ttl/BbbBv557gyBsYucZqgi2tI6ULG777aWp6UCHE\nSAvEjNAmeDxN/yA4naPW0cH7KuI0d0gGi6iW4OebfCrYevSF1YT8/vi1LrYJ\n2k5QAQQ5FiTDBedKHg+zYlHIA6rB4b0XoS78LsGbkMe31KmEYraxo0ZWIlhB\nAZUUO6ILIwbOMVUVDovQflgJsy1lfXZ7G3FjMAfTjqHwCmsVbLd28GfgICCn\nCHG8HxDvithdZ5p/kZefBJJO3nlhvqT/XHLsVJigbDYfDssx96j3XWqGLalu\nN5sBRqvgdZMfSA1UaOEWX6ygMvCSIQqnvK2Vt15Hh/3be45Rh45xngvOdyBy\nP3fMZVfAQn0MXAg7uOe8iTJQG1jeoMjFWhk2QXAM+iNcBPxhdYTFVOLBb8F2\nThe57ubQQsJMWrnGAG7krp0vhDwk84DyfI++x3vmHep4WIK9XUUC9PZZrSOt\n2LsW8eS2cDjob07XFHeRttpuBHoDvQZ7qhUEqP66W9LquhLW5lSMR4993UPI\ntz4q\r\n=GsBr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGoeVI5gqf4kig5/oI6eAlsMASNAAKGew0uRbR/rHG9yAiEAvU+pHEerFdfQYzQ0f5HSnP6Y7EJ33gK9LIDGw90JZew="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.6.0_1581482900902_0.22390797136576346"},"_hasShrinkwrap":false},"3.6.1":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.6.1","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"^0.3.4"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.1","@feathersjs/commons":"^4.5.1","@feathersjs/errors":"^4.5.1","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.0.4","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.1","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.1","@feathersjs/feathers":"^4.5.1","@feathersjs/rest-client":"^4.5.1","@feathersjs/socketio-client":"^4.5.1","@types/chai":"^4.2.8","@types/mocha":"^7.0.1","@typescript-eslint/eslint-plugin":"^2.18.0","@typescript-eslint/parser":"^2.18.0","@vue/composition-api":"^0.3.4","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.1","@vue/test-utils":"^1.0.0-beta.31","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.9.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-vue":"^6.1.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.0.1","jsdom-global":"^3.0.2","mocha":"^7.0.1","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.6.2","typescript":"^3.7.5","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.3.0","vuepress-theme-default-prefers-color-scheme":"^1.0.4","vuex":"^3.1.2"},"gitHead":"06c0836b11f820ebc4fdc65aab9a4a82a93ddefc","_id":"feathers-vuex@3.6.1","_nodeVersion":"12.10.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-exiMT0I9b0nELWydYb/CKxaIpSs/AM32z0eBnP92YMUl+dhah8JDGUc0fCBp+XXuDp/hgg4Qj5XDFr8dgxpR2Q==","shasum":"706b742bbc6c4b1a48098b753f39babb2efce976","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.6.1.tgz","fileCount":239,"unpackedSize":3349235,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQ8DUCRA9TVsSAnZWagAAG7sP/0cfeT2YEKE4kdqrAZfI\nsizw+zMKNtABI+95cEeCtHCVTDfQRnTPTMhDtk5jvDf8zTPHLKTUebWfKXKp\nwv/2QK0gmbB7mAcUR4msLYwTqX3vgby3ONYN/lf3M+JFFShv7yHfCqnu0d3Y\nXc3ZFJqKqWMqRCC7NniGp1oSPX43WwBsRnldNq0gC2fL1SspBpLUOryFPFX/\nauhPIGdS+OgUC6y/2LBRmQ4HDsctuUAmLH/j/7/3CiQkzTFHqaN5QdWdtsBJ\nPuC5hx7zrPJOk6IKkxpAni024slF+FB7K7Op2tLmpO+gPSK9XYAR9T7anCL3\njN3UdzHqRwvRyP8xKuTkWQAlcNLsQ+QGds7CUfpYH0x+1Ccy27aEbQ3fiUTu\nBDUR2jO8HyQln3iejORMu5gQN2yPEup427v4VZmHTYx6HF6/WwGdcThcAOUa\nCMeh6iUD+6AIUjGcaioZ0oQaTgkGze9VDGyvsJEGKJ58yOLpcXK6EjD9Jw+g\nVNBT9MwiT1CNW70XH8vsp0XXwARicv4EpyhJfkkPJZQXYpCM0J0GdcEbBeIv\na7qEA3PWruNCinhbzRPOlkEq7QvD1xLM80iwqRJUC34FpqYfMEQspaN4IqyB\n0Z4Vrf0217Fi8rvQltnpFixZNTw3KhWbQ8JhBo6ShaSX3AMA1v7ZuoZ5/WKa\ncXiV\r\n=Fr+h\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD5uUFrfaKSOCBfV58V43K4kTk7AtquoUBUjCAAyeQ8sQIhAI6+QCvqzMtgJvV31R1ItmhvPt772wdCj0V5zC1xHv55"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.6.1_1581498580267_0.8070800312749749"},"_hasShrinkwrap":false},"3.6.2":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.6.2","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"^0.3.4"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.1","@feathersjs/commons":"^4.5.1","@feathersjs/errors":"^4.5.1","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.0.4","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.1","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.1","@feathersjs/feathers":"^4.5.1","@feathersjs/rest-client":"^4.5.1","@feathersjs/socketio-client":"^4.5.1","@types/chai":"^4.2.8","@types/mocha":"^7.0.1","@typescript-eslint/eslint-plugin":"^2.18.0","@typescript-eslint/parser":"^2.18.0","@vue/composition-api":"^0.3.4","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.1","@vue/test-utils":"^1.0.0-beta.31","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.0.3","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.9.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-vue":"^6.1.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.0.1","jsdom-global":"^3.0.2","mocha":"^7.0.1","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.6.2","typescript":"^3.7.5","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.3.0","vuepress-theme-default-prefers-color-scheme":"^1.0.4","vuex":"^3.1.2"},"gitHead":"6c307fba937a3caf1a60ef67497b78899a222981","_id":"feathers-vuex@3.6.2","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-f4xJYXc+GQzwpi41HReFbzRXmq87QIRdGtN85S+FrXDhS9zGF58Zy0TXyeuzDx87z7sc/7Dv6Q61WHxoFecxRQ==","shasum":"09763953a1ae1931e727b6e9dead5ffd0ffe09e7","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.6.2.tgz","fileCount":239,"unpackedSize":3349239,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeZwjZCRA9TVsSAnZWagAAdzsP/A7QmU8rH5Uk0ZFIJvPc\nMutOVz/TEPbd9WHp5AuO2EcnxcG3LlJY8eI+zhqEtjD6fDRImLP6/bHhesXG\nZxIheGTavDB5CKr8k1tgzy3Shvy8WYURJ5ipiXsU6IS5AzG2DFqkYX8EUyj3\neXgo95Gs5zw128mG9qQ49Oftnmz8/6QP3lks3Xm6wajPNfRbGUu67ZdCObAW\nU5EtnQIBDb9uo41wHdBJWka9E6/M7G4RgLAqDcyiEve+CFVaA4VwR37ccfr0\nzJ/TO8rjUVUjfiipDtWJVhxTBLykZpo0cIglFBAztciawQ7AlnyAPtJycTDy\naGuvr/FKSvhcg0e8t7+WkERfExXQUgDY0QWS7wJ/BiFO85GmIomnzUccYwUF\nzyvmhDPc+0UKzH7/d9CBzo+aOdEoTV6U79mJQpcjJkqnCzB3Kh2uHS4sNlG9\n2TX43DQSzRG36QBNkhJKwVhIFLFEh+twvle15bhzDG6E3bzm5ZrV+OjZjUdY\nw8c2jNgf59wCqpJrtUcp4eNqB80NgNMf1+f5HGXP70DjfaNRvu0bboMj6dqo\nN795+yviLLYgYi+m3gywpEiyJIF5OQw+zFZcv078oEQK2Wu1Ozfyy7F7hd5x\nJls9cbIoJNvXvHVrskPxJkEJJsx4lDATZO6a8m+mC1pelblN8LywyRY+8jjW\nCaYg\r\n=skYn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAG93mx3sJrILOSmEg3JRMEsAaY0fwhYSqUrOmg0y8I4AiBRDkDbfk7XikDm9nn+AJ/9Qcvu5IiPWhfyKPzt/Bvffw=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.6.2_1583810776628_0.5405914797351832"},"_hasShrinkwrap":false},"3.6.3":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.6.3","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"^0.4.0"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.2","@feathersjs/commons":"^4.5.2","@feathersjs/errors":"^4.5.2","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.0.5","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.2","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.2","@feathersjs/feathers":"^4.5.2","@feathersjs/rest-client":"^4.5.2","@feathersjs/socketio-client":"^4.5.2","@types/chai":"^4.2.10","@types/mocha":"^7.0.2","@typescript-eslint/eslint-plugin":"^2.23.0","@typescript-eslint/parser":"^2.23.0","@vue/composition-api":"^0.4.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.2","@vue/test-utils":"^1.0.0-beta.32","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.1.0","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.10.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-vue":"^6.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.2.1","jsdom-global":"^3.0.2","mocha":"^7.1.0","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.6.2","typescript":"^3.8.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.3.1","vuepress-theme-default-prefers-color-scheme":"^1.0.6","vuex":"^3.1.3"},"gitHead":"d2bb78fc102e24f61332b849d6b2099883fce224","_id":"feathers-vuex@3.6.3","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-wvfyOMpSRFVvqOw+Jb58azluD74/xbyVf0Hd3TnWPkJlnu6h0TDGz7JLFIrqa/mWXqLq4+NtQMocnun35n1reQ==","shasum":"a30adbb31693d1f2f38c6e5ccdcd9e9b9565de1c","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.6.3.tgz","fileCount":239,"unpackedSize":3351109,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeapjWCRA9TVsSAnZWagAAO4gP/iUY1PTmahS8bCbgbiUn\nI66h+XoiS3Qxip+Vcmw/NP+TyQ2KqUXnO4jxHDa1dM/v6Y8iqywY5hCloK3+\n2GkdKPm6iFJj9vRtbBPUzWLxNAyz8+YoA3Q+ZlunvpwwiRRYKJUiDtQKJaSi\nHULKTWfYZy06TbYNkaKCB7mNvcnqqvxcXibkeCXu6cq/p81mclzUaOGat4MY\nDMKIxrmuthjbwIU4ZRG/qH6cHeYVtGWZ9d2q9jQOlZwytv7FGa+r0+oNV2OG\ngcOtueQksO3NfbEzyJfdVD+TO09eArIShwkAOY3Lrrj0ykSE5cCHqdL9n7WC\n5DDyK9n9s951GADTlFO62IaKhXBhYeXRasfCK9TOtfbmkV1hlhhC08/TPi1B\n48FhQ41JD0nzCubLOs231/k8nK2qlEKIQAlyyhlQyNtE1gEtqn+qnd3QyC/C\noFR/1OljiZy3E5sD3gb+ZF71VPBPB0iCI0uctxzvJj0Wax+0Pla2oF3nGYet\nzAPmpxT4CWiboZpyVcK/z+60qBqXCzpz/My8hn2Yc+PTiYTwctGe/vC5lSVN\n22j8DBOq+ZfmCV9mQE5PPfk9jQBE6QYpWp4DdVmBkbeWIcIFfgYyfk2Eb8NE\n7ZKfddKqHdfK/dDVXtEwmjwfTyGHgIfxE/r7sTOvhy7oa0iQE1pZ27vY1skT\n8u6Q\r\n=mJp3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCx+pfEtMvqzgj53YfeicD1m7zoD21/VxnMbtH1gfbSKgIgB2yI7D4qUle5PQJ13VyNhnP9O6rK+f8Hhw25BPWdLtY="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.6.3_1584044246403_0.21486530684256788"},"_hasShrinkwrap":false},"3.7.0":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.7.0","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs:serve":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"^0.4.0"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.2","@feathersjs/commons":"^4.5.2","@feathersjs/errors":"^4.5.2","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.0.5","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.2","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.2","@feathersjs/feathers":"^4.5.2","@feathersjs/rest-client":"^4.5.2","@feathersjs/socketio-client":"^4.5.2","@types/chai":"^4.2.10","@types/mocha":"^7.0.2","@typescript-eslint/eslint-plugin":"^2.23.0","@typescript-eslint/parser":"^2.23.0","@vue/composition-api":"^0.4.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.2","@vue/test-utils":"^1.0.0-beta.32","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.1.0","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.10.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-vue":"^6.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.2.1","jsdom-global":"^3.0.2","mocha":"^7.1.0","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.6.2","typescript":"^3.8.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.3.1","vuepress-theme-default-prefers-color-scheme":"^1.0.6","vuex":"^3.1.3"},"gitHead":"951bfdaeb118e3f31be618f616bb607714992a04","_id":"feathers-vuex@3.7.0","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-M0LY/yqFmMa+1OUz70POjFGlsmhORsBOJgvvT0BmmtbDoEhcOKqA8pqJpE/MlNfn4+LTMLe3YZXYXkKHB8wPDA==","shasum":"bce97362667a377e93dfce2c883db441d9f73f82","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.7.0.tgz","fileCount":239,"unpackedSize":3351109,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeapkDCRA9TVsSAnZWagAARCMP/0s310KXNoX2Lhrvj6Yw\n7QNzA/FH+Y/fpNHvi0T0+xVKnEQL1yPSSa9DEQ7+o4DzX5pvrehHUbvc7B/e\nxSw8zY4Ux/HgumBUgCpuDUuIdZh30Joxfa1WZ4kcVggEyD8bT47PeSWGC6ma\nWdy9LCvjIwF5RUNrTjH71+0Ncv3mq3SJwSz3XJLVsgkdgo2KbnQUaT6bt9r5\n+HplSJLe5YLdQuxZXNIpjjcp2wK3JURVf4ce8Lk9cEqU0H+sc4FzAN7Ns5JP\nayRYmrsIbRHFNJBsOxYiQpz7s1Ovi4KMe0UaHZKKCG9DWV5lkwd1dJURX51u\ntFaV31evxEptcEH27jlKKM82yPc4E4AKbEU/bHFfEKz8mSbId06D2MrZV5F4\n/4LgXjBYBeAIE1CM3LkD44amU33bYFKOCJZNlVKxC6gxd2gl+YfIzO34FVxU\nx5qkfPn/M8k/RRDaPHAl3bjxqc495z/I8FPu5HcXkYir3iEmxA1dZzRjIjKn\nhuymL+tDZV1vcTOf0WBHayVu0cXOg6G/WPL0aUg6RN/g4Vz2Vupu3HgiXMhX\nfpVeOX8pkyAMuFJffIzitFxXxXuWP1NLtrZO5S/xJZzPFBbTc3kAhHbrqX1f\nmEc5z3YowPtrRF9T26Lyqq59C8dTbcJAGxAVaOjNfN1G6XJxfOiHT5Nh6FZr\nqRD9\r\n=miBi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDosNW3Ljb2Bezn5wX6re/Ll9/178HqEZnQrKl/xwrESAIhAI1gCChIo3MIp4bSsa3xi9/QIzx+8Zko8zU7ta539U1P"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.7.0_1584044290929_0.36489441672354284"},"_hasShrinkwrap":false},"3.8.0":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.8.0","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"^0.4.0"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.2","@feathersjs/commons":"^4.5.2","@feathersjs/errors":"^4.5.2","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.0.5","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.2","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.2","@feathersjs/feathers":"^4.5.2","@feathersjs/rest-client":"^4.5.2","@feathersjs/socketio-client":"^4.5.2","@types/chai":"^4.2.10","@types/mocha":"^7.0.2","@typescript-eslint/eslint-plugin":"^2.23.0","@typescript-eslint/parser":"^2.23.0","@vue/composition-api":"^0.4.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.2","@vue/test-utils":"^1.0.0-beta.32","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.1.0","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.10.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-vue":"^6.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.2.1","jsdom-global":"^3.0.2","mocha":"^7.1.0","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.6.2","typescript":"^3.8.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.3.1","vuepress-theme-default-prefers-color-scheme":"^1.0.6","vuex":"^3.1.3"},"gitHead":"60aaf1dc29a432b205a563c2c8cf70c7ea501e9b","_id":"feathers-vuex@3.8.0","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-TRvIcVexer9YmyfJK8zXLCtep0gviYgvPCVLujk55EQ8pqI9GnhRcdEClHZYpZQ1AOZjgA2hi25ezki7c+hRCA==","shasum":"0af0c6a66068615db559a7f1e1fe4e2fe42fcf74","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.8.0.tgz","fileCount":242,"unpackedSize":3366193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJebGZKCRA9TVsSAnZWagAACNoP/0xSdFTLdaU51W6qE6Lt\n3dKvnx3TbfOtWItnUx6ie07D0UdSAcOXUvXyNB4WyNC7G6Ze/91L5T/hoIU6\n0Te5qVW7qAXVzZDcfDKSMTWqoDFuyhWrP2mWNdS+s4MglEIQehyLIgrZvfcq\nGZ4fPRbn5q9etvWw9bNj/Qi/7G3845PpynfTkX3xQE2l4j0dwBi3WPHfJKMq\nVVutMETNp1gzMtn8gDL0e2X69JsaWXwmxtEteuA60nAv3UyATh91nxBjRpGJ\nsHGT92Go8sikfdIsvosJeDcs7xp+ItVUfHNxhBDNzl4qEUTS/OW3gseZvFP/\nbuq2oWyGzyIJ8Y9q0ewdoMdk/5sKLoN0YBdR6dITqbRg0SGZf8UkdIdDI1+g\nq8YcQCXggOwMI3Z6Rdaa1orauXwo7VgOI8ZV2Jte4tAr3P6YOZnifEpfEA8U\nIkWTbZr8QABNeNLmkZkBOwtKXT88zVPEdDuDKp6yEkt247ifETJdiAtty7/I\nFyuEVDQ1z4ewvKq5ErIIks26TFKApQ6F+XIiket7fEpdnn7DzsFmmYn4mFxk\nEF5VXOlAznrAQlDQzuApumBHBoYVT0o0W9zng7O78CmpppZo1KtvjjPUA+U7\nvpU2K2kHSFp+ZbB6S/KByK4Id86LqW9mdjfM9qvZihu68U6o6mdH/VMvyL1q\nST01\r\n=/qwg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDHoKX6sSEzCyQ9DG+3h9ZJVLSPH7awuUna0GpwcjSECQIgYLVMn0hPLvEZAyDXVLfGel80Tkr4A0BytNtmBdr6YCE="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.8.0_1584162377741_0.868734775272713"},"_hasShrinkwrap":false},"3.8.1":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.8.1","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"^0.4.0"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.2","@feathersjs/commons":"^4.5.2","@feathersjs/errors":"^4.5.2","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.0.5","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.2","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.2","@feathersjs/feathers":"^4.5.2","@feathersjs/rest-client":"^4.5.2","@feathersjs/socketio-client":"^4.5.2","@types/chai":"^4.2.10","@types/mocha":"^7.0.2","@typescript-eslint/eslint-plugin":"^2.23.0","@typescript-eslint/parser":"^2.23.0","@vue/composition-api":"^0.4.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.2","@vue/test-utils":"^1.0.0-beta.32","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.1.0","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.10.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-vue":"^6.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.2.1","jsdom-global":"^3.0.2","mocha":"^7.1.0","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.6.2","typescript":"^3.8.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.3.1","vuepress-theme-default-prefers-color-scheme":"^1.0.6","vuex":"^3.1.3"},"gitHead":"cfca1cccf5b87a02acd2c8ae679cc7255e30c0bb","_id":"feathers-vuex@3.8.1","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-ZNijjPIGos4Ve2jrii8aRdPxZphF28UvG/gFqbVT14S7vJxsC6zk6ae2CPUWWJhJb2rvlXqZYI/N2HlJjynaiQ==","shasum":"8ba1fdbb8e9f7bf49dbbbe560b75590c92b95837","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.8.1.tgz","fileCount":242,"unpackedSize":3366284,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJebHhSCRA9TVsSAnZWagAAmtUP/R+sBEATlIG7CTrevi6t\nHEz1QmtEtk8V9sHHL0XBvEve3dh/oeeSkdlYGHNgFJp5vHJd5+zw3KL+c77g\npyZ/ex+w66pJbKFaz0x2+anY9jzkVq1I7+nOxXKyE1yl+3merP9Pdb5x4jdp\n4LkarXFZCFqqytsekY5U5sE7xZ5ZulUlwFHYEXIMeuPXoJ7sPze2XQjOHliM\nvwfyOHWNaVaNmU3HedEbUV95Hdivefbwv0gUMvOq7D3ezkELPxLsayVJ0uQg\nTWI14AAL4Es+nFnFLK7k5yEfJyW/xE0/UqoJmQkg9t+vnx6qzOS6M/FIRt/N\nEMj9O1i2bnRE9J8pGj4KUUn8eblr5oXeXz7baT0CLO/qVe76iB3eQ++0f+Kh\nqRsP4zq2Cl0LO1gQlIJ09qlSjzAcHY6H7soEZXUQrr1z78Xz90Fv++vfFbY6\nOwWlOFHReUnriIhNorlz8rRIVAmVBmFkvZ5SIcLLsY7Mp6ewRhv1S0IRtaYm\nunis/NL0cbIgQNstmd1ENeB0YtMt/hDEDgMF9bZaXIV63UiCGF4D8FIZ533n\nAWXy3T3aPjMtbCBJyVxV6xkjmaqqOI5tCc6oRpC1JzQ3NFupy/4FbXbNYfp3\nB/Bc0bQZO4orivH+fIAvsOIfP+MLqSnkACXAbpUGrPkfw16kQSjYGs9Hjawt\nB+1N\r\n=W+lC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHqDzfMwkNRKKgP3+u6ROG+GKCJep419zm1yR1acS0QGAiBFhGZFfklfE9Tlt9cxYuoNskWgbyNDruFgNah/RErhtw=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.8.1_1584166994201_0.19319891959673607"},"_hasShrinkwrap":false},"3.8.2":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.8.2","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"^0.4.0"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.2","@feathersjs/commons":"^4.5.2","@feathersjs/errors":"^4.5.2","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.0.5","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.2","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.2","@feathersjs/feathers":"^4.5.2","@feathersjs/rest-client":"^4.5.2","@feathersjs/socketio-client":"^4.5.2","@types/chai":"^4.2.10","@types/mocha":"^7.0.2","@typescript-eslint/eslint-plugin":"^2.23.0","@typescript-eslint/parser":"^2.23.0","@vue/composition-api":"^0.4.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.2","@vue/test-utils":"^1.0.0-beta.32","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.1.0","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.10.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-vue":"^6.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.2.1","jsdom-global":"^3.0.2","mocha":"^7.1.0","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.6.2","typescript":"^3.8.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.3.1","vuepress-theme-default-prefers-color-scheme":"^1.0.6","vuex":"^3.1.3"},"gitHead":"329291ef529019c8f16c6a82f57d940eb1aa4bd5","_id":"feathers-vuex@3.8.2","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-FqYt4T+1jNcW0zKwtmeOLpAgckM4MyXGq8ICobnA7fa8/+OVxxZkUmIRaIUUoS9JxvBl47nJVjef0EirYRgd/Q==","shasum":"80c7497e8c6c7ebb8de61ab954420791dcb4fa1c","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.8.2.tgz","fileCount":242,"unpackedSize":3371518,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJebhsyCRA9TVsSAnZWagAAbd0P/2dGnCTEdJyyhWojfWqV\nrktJm2tmH9flmsRL6XCBQCyHPyxhDLbJe+eK8HmzBKINYTXmJSXcIKVgT1TL\nX7egPUTFRCKnP2Nvhi5sB2u3yJRB5ayBp86BCqroXrpNduZfj6bF0GmXW2cy\nLtE7pEQ/+c+MdZNZD/MFnP6Yv1FRRE3PbIrSdXQuo1Y5LsPd6TuM8IlI/NUd\na4TE37S9uTOBpmnmSCngVp9JNIM+cfBgXPFcZs4ktWgVdcXszOduHR6jeCZt\ncvLx/t+ltn6P0e19Ljz1PBp9wLuecWJlUe4aHRvUtwaldFhXxZwWHFs4KPrP\noJQ4RZmWGwcOMFGEgRMfzU9ttuv0Wnvwv1jZkjTMQb1zGr8654L7XCnQ2Jtm\nMdgSiXOSXjh5FXQduAFB1JK1BCE9U7LEtUvCQTPkgU6DH+oLhg/laT6FolYL\nAQQUdVgEGrDByo+8iRMvXPECzoWbWIJDpxDLyidOAHPpaTxNNXb6M7M9CA04\nw5UjsB9u3Y0QrJiDCfOsZwYiVJ9Mo2mBy6xS3xUjQu148JyjdHiL2H97sG2Y\nELtvfHJLQC5F9RTC3imVGij350e6fpXnbFem4Uxw8xjqMwZHGiCNn1RXt5w4\nXRGam4eukmUAxb9DrLljAk3iMBEcp0niiR6ei7rvWutsQYkgwskoR6LrwsMc\nYrI6\r\n=vAsu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCM3JWn1YOyXwLjPKyn7gRDws1nBpent7WOGZpse5DJaQIgb8ETi3tFKGfeXLs5+mVc48WisW5JQ0m7o8Ts3/5yv4M="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.8.2_1584274226015_0.9299885794784069"},"_hasShrinkwrap":false},"3.9.0":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.9.0","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"^0.4.0"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.2","@feathersjs/commons":"^4.5.2","@feathersjs/errors":"^4.5.2","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.0.5","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.2","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.2","@feathersjs/feathers":"^4.5.2","@feathersjs/rest-client":"^4.5.2","@feathersjs/socketio-client":"^4.5.2","@types/chai":"^4.2.10","@types/mocha":"^7.0.2","@typescript-eslint/eslint-plugin":"^2.23.0","@typescript-eslint/parser":"^2.23.0","@vue/composition-api":"^0.4.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.2","@vue/test-utils":"^1.0.0-beta.32","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.1.0","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","date-fns":"^2.10.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-vue":"^6.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.2.1","jsdom-global":"^3.0.2","mocha":"^7.1.0","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.6.2","typescript":"^3.8.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.3.1","vuepress-theme-default-prefers-color-scheme":"^1.0.6","vuex":"^3.1.3"},"gitHead":"a33feaa428877031cc3ee53a99cc7fe62730a6e1","_id":"feathers-vuex@3.9.0","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-Ifm5txL49v8vzMhn7HkjHd3nZm2XBYYOFd6/9qba7QOoZIaYb5D4u/4Easw7VzJbLyYEIvy9UqdOhYmm4o50zQ==","shasum":"b12104a65a1e38076b622bfcc4d8718568212924","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.9.0.tgz","fileCount":242,"unpackedSize":3373271,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJec9OHCRA9TVsSAnZWagAAyk0P/jrBD2OV+mkWXbf6qc1t\nz7L0EGBPxAGXPkGiT4lUMtXsh8vD8vvt6bwdVl+kXQt5VcPRIJ+HuFY/l950\n9yA41vcTZCazaxWowFj9jKDFx0GNoGPRWv1Ero2NSlaL1PHu2XEnGRALo5Jh\nmgLUlIH3KjozjFsJTasFQRnEKoijxJyll9UcqN7CVX/GeIYnkSYPC2aKwU8L\nj402xOHQ/9VpDkLrk0yzzZ/yR96yyf0HKCqyGvIIF5V2SvMoyI25R6N/g/34\n8Rapy8Qc2VTFQIJOJ2mzyo5Zk7uxJsY8nP4LErwryRM1FA2d0539evwI/O2d\nz0gnlO5wpyvqhbVs4dx1NZOQba69X7hvRJGfsc94RI4kVI4jGBqzI/6igCBU\nUDLSHGBjF7Yi7+uNtnJ5GwKw99LPC1hS9Cd+XTy2+vJ5PgFdP+HCh+dNtm8C\nLeR66/zF+lTBHJtZ6MHOOdtVTG61fDMg3cav2ltacdxUWlblL1/zq9RAjZVC\nFtm8x0xKF68sNFPN5L+AmXpfFa6FN3XaIFfJxq8Yp52o5N8yMenSwIFHUA09\nY1iebM1aD8d6CCTs3GanI5F4q9DPNon9FYtlTDkm6t6rd7SBqZYXElRGJlut\n0JMPwNfCcuEkp9Jj9wY9ZSsbABqFRN+xwG5Xsr9GGvV00rnqsi5O0e4Gzk7Z\nxqYt\r\n=Em8P\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCNgBIvhBvgRdVnK8wioRZGsoQuD8XDdI7Tw1WjXV+qsQIhANbiQ9qIXCwWLJ6lgqIjzxduJ0AbDtX9jHqB7Nnb/5Ef"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.9.0_1584649095058_0.10867537447810105"},"_hasShrinkwrap":false},"3.9.1":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.9.1","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"linebreak-style":["warn","unix"],"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"^0.4.0"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.2","@feathersjs/commons":"^4.5.2","@feathersjs/errors":"^4.5.2","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.0.5","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.2","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.2","@feathersjs/feathers":"^4.5.2","@feathersjs/rest-client":"^4.5.2","@feathersjs/socketio-client":"^4.5.2","@types/chai":"^4.2.10","@types/mocha":"^7.0.2","@typescript-eslint/eslint-plugin":"^2.23.0","@typescript-eslint/parser":"^2.23.0","@vue/composition-api":"^0.4.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.2","@vue/test-utils":"^1.0.0-beta.32","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.1.0","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","cross-env":"^7.0.2","date-fns":"^2.10.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-vue":"^6.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.2.1","jsdom-global":"^3.0.2","mocha":"^7.1.0","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.6.2","typescript":"^3.8.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.3.1","vuepress-theme-default-prefers-color-scheme":"^1.0.6","vuex":"^3.1.3"},"gitHead":"ee22a8d2b6741877f7efb8ca09992bb9b0fc11c5","_id":"feathers-vuex@3.9.1","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-npr9+fGFLsj2d0odit5R3inQNSZ0q8wq0u7XaO7iRb2OIlYMJKrJXP4rDkNyqfiM8shsGKvvcZV7MfxMJLlxoA==","shasum":"007db28066112f0a27aef9b02b9bc6c9d448befa","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.9.1.tgz","fileCount":242,"unpackedSize":3381793,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeg21hCRA9TVsSAnZWagAAl1kP/3sJ5cZy9z8BtJ5SlVeN\nekWT0TsKGDMAAeB1BAFBIbhvioQgUyBUmc81XyK9gQi2LaQLyDaHjxj0rgMP\nQ0YYIF8BY3Gw8MZHlnjqA/kfDkNVmiS7yLSaLnjQ3UDITuF/e6/Jd9g9PzI5\n/EarFhWTdjLjpfLkskasRe8J1S7oE1uf8Si0zVM9ehZBGdfl6zMWF4VB8IvF\nX5tgyMwtSny0S2eTyrLQXOB21uT+UljfGn2R2QnyetGovuwqcQK3O/EW8Ovr\nkfK7SeDInHjQQn91eom5v87q7PbFSdRB0Oh8QkDdyvKX/FnfnQNYNHzT/5sa\nCTBwsIOjlXdq0gQlfDPWVw7ZUn5c7J+onlaZlu8FTst7r7LQOEoluwSCqsIs\n71cmFm4D7FqgtvZSt5sGCu7tTxMQTbJpIeq9PjDEOewrQEN9YgM3zr3EaZIx\nH1DO+S2chgnxD7MxDwKVsX1wstq4rThIIgZt1L9vEDWFFT1i6CTJ0SuvTgpH\nsAjB9wD7BMBRO4fkxf3AinIZ8u1y21p2hqa2LTI+YyPWPrbZlHECSJmvRzOt\n0UL0jzXqljRJtw671kzbQVG2kh1uYeIVG84fazclGlbvaQ9S+Z8HX9NJBbyf\nCFgESZy0DfaOBdxz9ioDPJfYhdz0p8/hlX5khMHKZPjSGnF1t5+BqIdF3yKQ\nQ7r5\r\n=v/iu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDj3J68aajtaiPi6tZTkIbN6+JRofdDAqmCfba9xAvO2QIhAMNfsFWjjx+Azpy9/n5FOhyAsteH/4V8PCqhHi4x2L+4"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.9.1_1585671520505_0.9751284174645223"},"_hasShrinkwrap":false},"3.9.2":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.9.2","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"linebreak-style":["warn","unix"],"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"^0.4.0"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.2","@feathersjs/commons":"^4.5.2","@feathersjs/errors":"^4.5.2","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.0.5","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.2","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.2","@feathersjs/feathers":"^4.5.2","@feathersjs/rest-client":"^4.5.2","@feathersjs/socketio-client":"^4.5.2","@types/chai":"^4.2.10","@types/mocha":"^7.0.2","@typescript-eslint/eslint-plugin":"^2.23.0","@typescript-eslint/parser":"^2.23.0","@vue/composition-api":"^0.4.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.2","@vue/test-utils":"^1.0.0-beta.32","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.1.0","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","cross-env":"^7.0.2","date-fns":"^2.10.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-vue":"^6.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.2.1","jsdom-global":"^3.0.2","mocha":"^7.1.0","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.6.2","typescript":"^3.8.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.3.1","vuepress-theme-default-prefers-color-scheme":"^1.0.6","vuex":"^3.1.3"},"gitHead":"6434679378c48a3837b0b325be23252acee5d9dd","_id":"feathers-vuex@3.9.2","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-hsLuaWRrSAHUGnjImirgY35SU1yt4CBNlkual9yxvsx5Q1A4lKT+PvyqZfI6tn9odxmSc4f8Ep7T+foL3m61kw==","shasum":"436e69bc79e8d5a3a5c0cb88bb12317b1d2a5da3","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.9.2.tgz","fileCount":242,"unpackedSize":3380262,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqdEcCRA9TVsSAnZWagAA6GcP/0e/ZNIondne364vw9pL\nri9gT13LTFfiuTNgjC/pXdjeII/uT1oTIPpGUaaHJ8cik1w1LfMgKQby9sae\nqicAi+v4lpzPrMlfzBJGLtMMzrV+P5wFYBl0YGP3Zu21qJLDqyZC6b306quF\n/2Nn43OeImSQs1L6OFhB2xtlgQpPXD5nhD/xnCtIdwiQcyXy7LGjLo898MET\nfSBdY6hdfh8iA0iBRwzZrj+ciWqm1JkkgQnpr82q6dEHN4jxBhmNu4Gx11oI\nq2+y/i+Jn7OGMdiDqf6HzoVYhE/UtMoV4iVLz+WwmSvSpagwiOLiEgwTJC+6\nL/vp2rZU0mivhm1hhlh7eSIDTj/+iNh9B9xmOWdSiVXQ+d0lVGEh+288xWdZ\nXKEnlEVrtuCsXcuFaSJwD0lda35FGpk9JsG2ek+8ph04qLogjirV4Q+TMf6X\nKLtKkZdDZAhdthLT52DcZTCzmo1HZU+ei3xd5BFH6RbP5UM1bE2TsHL0ojvS\nE6eS5o50Acz/369P+WNiebiHdhZdsLBpldGcSMPYUBV9fMKy/v/r+lj8elIP\nD1m2laJO0pL/qBA42OPOmt+T2GXY7VL3MmRUJZL+2S9HVAD1GlVJPotQ2y1S\njcz4MYNK+dmql32xaIM+IEVMRQ5OEHKc7L1TBrl+FZf2Mf0362Y9YNiv9gTK\n4eFE\r\n=CDGC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICxSqYSRD+sXuPZCylvitoljaHTD8IbClBceMqzZNQiMAiBZu/dYsfVqJMFALZotJgzhsad/8JW9kmOX/R4MwcF8KA=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.9.2_1588187420230_0.5774204020913576"},"_hasShrinkwrap":false},"3.9.3":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.9.3","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"linebreak-style":["warn","unix"],"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"^0.4.0"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.2","@feathersjs/commons":"^4.5.2","@feathersjs/errors":"^4.5.2","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.0.5","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.2","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.2","@feathersjs/feathers":"^4.5.2","@feathersjs/rest-client":"^4.5.2","@feathersjs/socketio-client":"^4.5.2","@types/chai":"^4.2.10","@types/mocha":"^7.0.2","@typescript-eslint/eslint-plugin":"^2.23.0","@typescript-eslint/parser":"^2.23.0","@vue/composition-api":"^0.4.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.2","@vue/test-utils":"^1.0.0-beta.32","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.1.0","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","cross-env":"^7.0.2","date-fns":"^2.10.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-vue":"^6.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.2.1","jsdom-global":"^3.0.2","mocha":"^7.1.0","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.6.2","typescript":"^3.8.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.3.1","vuepress-theme-default-prefers-color-scheme":"^1.0.6","vuex":"^3.1.3"},"gitHead":"015ae999e2b1430fe824414b537e28e9f07d0bd2","_id":"feathers-vuex@3.9.3","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-OM+3/rO31uX5d7LipqUaWZr4jLp9OOxdRCOt73YoFxb8lHSfJBW9CS1ZJDHZyRiHo1+B3XttSiBOBaIsyQ0tRQ==","shasum":"f65d44ff9d38d84ef6bdeb043cdc5b72741056ca","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.9.3.tgz","fileCount":242,"unpackedSize":3380318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqk92CRA9TVsSAnZWagAA4M4QAJj3YeivhzWOKUqexN3r\nGXX32LKC7aFUbJ7KLC2B6eDhx9cEDzt4AJQ5RVbzFMGR/N729IW5GFDzMIX+\nnjRb8WYRlSTVzemBH30xQJe08uhSH+0EoYicL4TcoZBYcarfG0RAJR9bQF+5\n1jJRC1u8YV90gAYl8Wk1Y8wsHd4WkXDv3EGvCbXDQ/d8gynsIjU/24YTd1PN\nIZnLaBRdHVUSVdfozcmbMX2P27hriC/f3VRPlnJ+JLC7jzu3ildEtgi+W5kf\nGEvRGyCgAdMRpaUDDxZUdkii7B+q7hjK11wFE3LRz4hJP71LQfN/bYqCMMeP\nBorv/8c6HxcTg/qdnDVZ5MDuyLkZqKagsmhUj7lCjn7AYAAAMmyobP/gy3ad\n3QeLqNfJXsdqZgT/uRshHNuGvPdwumkcSe4Zpbmj3E0GWDDthiHCpVuISAfe\nV7h5wCvbGUeDPuqDjIWSjVLd6HI/k/yt/2zcZdsbFAOjn5K7EqTyd0pazfCA\n/UfqoV0WeqL8R2p1SIQbWC/JKZzhpRyBmc0MAnobRbMDfhNH30wxGXVIUKSN\ngEIkHzo3TCbOWrnYo6/HjZRLABLo0dWb9Vc8OYYyAQ4Xb6kppF8/U754EXvr\n1IoV27RtxnGJgnVzDuEwGRpgxVLjC6qIWx8z5c7/Bz4vwyiqHe8Qi2N0yNjE\nS/4z\r\n=GjXz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGnWMCYYKXgjHgGK+lXfu+y7IxiEOxEi1fxv4IZO6Wa+AiB2dxV9h18XsRXeuoyLviK4HLf8h61NN08d3PjlNgDL7g=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.9.3_1588219765863_0.118144169450771"},"_hasShrinkwrap":false},"3.9.4":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.9.4","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"linebreak-style":["warn","unix"],"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"^0.4.0"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.2","@feathersjs/commons":"^4.5.2","@feathersjs/errors":"^4.5.2","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.0.5","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.2","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.2","@feathersjs/feathers":"^4.5.2","@feathersjs/rest-client":"^4.5.2","@feathersjs/socketio-client":"^4.5.2","@types/chai":"^4.2.10","@types/mocha":"^7.0.2","@typescript-eslint/eslint-plugin":"^2.23.0","@typescript-eslint/parser":"^2.23.0","@vue/composition-api":"^0.4.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.2","@vue/test-utils":"^1.0.0-beta.32","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.1.0","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","cross-env":"^7.0.2","date-fns":"^2.10.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-vue":"^6.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.2.1","jsdom-global":"^3.0.2","mocha":"^7.1.0","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.6.2","typescript":"^3.8.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.3.1","vuepress-theme-default-prefers-color-scheme":"^1.0.6","vuex":"^3.1.3"},"gitHead":"8e5af2d418fc4cb9957959669dc81be7efd0436d","_id":"feathers-vuex@3.9.4","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-aVdLTVEGKx1H2LVF+ZAKBOjGUNKFpihwn76wufT3OzwneqesUru6jbDLQ8wxoOZ4zdhjanviN7hoiFoHaRS19Q==","shasum":"086cb319a64857a6db31dcfc2d7a526cc8616ec4","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.9.4.tgz","fileCount":242,"unpackedSize":3380430,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqlX/CRA9TVsSAnZWagAAn08QAJBsjl6a82glec/w2lLG\n9PkkV57QCYaGCxyrxh02aCw6SP0FawX5zw3WpD+mGomAZ9K78q8OTi69doZL\nsHAU+7bVwRjZ9vSxR/rOqeVP8N8qBh6xZeBopeZ2F21qlDQFaOGXwJzRBB8U\nDuQehF0+aJbSSoFvkQKVC/BEoKEosjPBib/1Wox80qJiPwTPNzE98yy7481a\nh1/6WC2vj+Y5WaXyw18IFEdCeWKMX+wTLOgUe9f5SQlHvLshAKJYFM/DG13D\nT2R6kL0R73TUfOs6wq2SfwaNUQvmT+MkHl6CMzXaT9Mgmo+P7fZ5Vh46dvYR\nRVgufWgh2apfvkakDJRJNGk4MkzKzxmgO8WmYsb6r1JTFpsP/9hGiLyFImmV\nkDL31Fp9/V3135C+niiHMtyrQcf4G8RQxj7PH/SBkfC4w1JbwqAX97VYlla4\ngOKGgkbDDbhrUlTzEpeBqcLhtctm1u9fCvLno2hrFKIgYB2wEe9vzlYgrtuc\nkNcxCXfTrmVwqN5nzK5w8XaQ3me6bFd1umBa0Srp2h3KJakTBBdyhT6i+0fZ\n9JZuK4hgjkNlnxJpNJzEvMAHaJRFDx9GZeNWm0FO2bJdAjc+jmUYJXdHphL+\neiCohKzar5O+POI82PvTQperd4UOmmeim5yDci+fC8mGdt+SMmEEmSrfme0u\nm8R9\r\n=TiGC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGv6ofErWXq1dOJKi8tDaw2Qe2aSeQLt4nkJmTWJfRd/AiEAofj2FiTCpZYR7bpS9hSbtjh1sEgvNrHxpjDq9w46bZo="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.9.4_1588221438663_0.054643525844073615"},"_hasShrinkwrap":false},"3.10.0":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.10.0","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"linebreak-style":["warn","unix"],"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"^0.4.0"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.2","@feathersjs/commons":"^4.5.2","@feathersjs/errors":"^4.5.2","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.0.5","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.2","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.2","@feathersjs/feathers":"^4.5.2","@feathersjs/rest-client":"^4.5.2","@feathersjs/socketio-client":"^4.5.2","@types/chai":"^4.2.10","@types/mocha":"^7.0.2","@typescript-eslint/eslint-plugin":"^2.23.0","@typescript-eslint/parser":"^2.23.0","@vue/composition-api":"^0.4.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.2","@vue/test-utils":"^1.0.0-beta.32","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.1.0","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","cross-env":"^7.0.2","date-fns":"^2.10.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-vue":"^6.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.2.1","jsdom-global":"^3.0.2","mocha":"^7.1.0","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.6.2","typescript":"^3.8.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.3.1","vuepress-theme-default-prefers-color-scheme":"^1.0.6","vuex":"^3.1.3"},"gitHead":"3f91c470d0aace7ee9925f97869c0686ac688e74","_id":"feathers-vuex@3.10.0","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-XWPLk3Lq9RF763C8QtPy4cSf2WF4kOwiJ8FWg1ojlm1PTCoHXNqvXSp1d6nDjRfKSPiGos8D6YvBq7uB5f+qzg==","shasum":"b9f67d22503fd27cd866c2751d9a8f1ae2a609fc","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.10.0.tgz","fileCount":242,"unpackedSize":3381437,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeralMCRA9TVsSAnZWagAA7pgQAJgpY/GHBkkPWYXFbYMb\nAhta4GeSMhQCK14PcRINWBeRfDU0c3wZCc1F/yNWKFs8O19Whs0HMzbZCL1l\nz9AZCLB8eTGjPRVyix5aPME0UZM/AHfMb5sEBgLS10b9FT60/ArhEhqUcuGa\nyrATNtBQOlbMLcSTYrfzC1WgspEslAso38H691pbg8SgO9gxmUsQDGwXTSko\nOwSPmSpuu6uH6Qz5X2Fc4ax2Dsxz5JmDIUwBR6bvjR1TFA6T1UKrcGqp9D+A\nLbW4BmJqwlvP2rhoRdYe4S55gXoUr0WIK2mhNXJsImxnWwQSywCIHiFqN1MT\nX2HVwa8Gzh+H5Baosrt1I1rT4DMi9Pu3QALZ30Ukpek19l+qIv2W6PrBfajg\nw3X4gYJmokYVe0ZVvnkSLyPaxcrvqdH3B6fisARC48aUar0kpXYm022s8S/S\nKeLWEbrQRlH/ckfbLtl1F+H1AZDp3XeQvaN+D4t1pVpnp6xgJK4ajeDdStV7\nULZMCood0gQqxHGEyhtgNs4pyPUP4XryUwCEPokcteE/J/7E8VdFTCfUBZS1\nna2nwgUJByKx/2JlSRx6YFvQmJXVMbzR7h8GLWcdv/K3hk0K2C3FgYL4FziK\nauVaCvJtEl9wtLFxNGHJ7n1K6IWnSMcj88HA5OcQFJBjiBSlSqNjR1uEWWuK\nPxX9\r\n=C2SQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDf3IUY8XpIAnvCgzucceZz8tZvmCA7i0u94bxlCIml9gIgAz2NsfC+APP15dXDrzinUkb1AiWfqXKxnKp0+ECKrgM="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.10.0_1588439371991_0.03078890574372206"},"_hasShrinkwrap":false},"3.10.1":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.10.1","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"linebreak-style":["warn","unix"],"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"^0.4.0"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.2","@feathersjs/commons":"^4.5.2","@feathersjs/errors":"^4.5.2","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.149","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.0.5","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.2","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.2","@feathersjs/feathers":"^4.5.2","@feathersjs/rest-client":"^4.5.2","@feathersjs/socketio-client":"^4.5.2","@types/chai":"^4.2.10","@types/mocha":"^7.0.2","@typescript-eslint/eslint-plugin":"^2.23.0","@typescript-eslint/parser":"^2.23.0","@vue/composition-api":"^0.4.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.2","@vue/test-utils":"^1.0.0-beta.32","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.1.0","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","cross-env":"^7.0.2","date-fns":"^2.10.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-vue":"^6.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.2.1","jsdom-global":"^3.0.2","mocha":"^7.1.0","omit-deep-lodash":"^1.1.4","prettier":"^1.19.1","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.1","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.6.2","typescript":"^3.8.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.3.1","vuepress-theme-default-prefers-color-scheme":"^1.0.6","vuex":"^3.1.3"},"gitHead":"c7325e3cd339052844a5c0df0e4c7e0bf40a6f9a","_id":"feathers-vuex@3.10.1","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-jwDw3tpbZf+0x6vUS3D7SKBrlZREkoNjGfG53aF747CyR5Kzw4LetcKFwlbO5JfiVcwkUluGyBh3bJ1zEsVIdA==","shasum":"a4c8f4a486073f6f34d18321d44dddca34b1d477","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.10.1.tgz","fileCount":242,"unpackedSize":3381912,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJera/lCRA9TVsSAnZWagAAA/oQAKIOyMp3LrSlPUyUVT2f\nsYA5ck8ZRKtAAp+Dkv9yLvzFpLx+1c7HT+oAtiVxYuGhTcVQCB6DQaEbnuVx\nHliBSlSL2+B3uTDErrKbP0Ays2y2iotveByRtynzWfYOcIpzOiESTLh7kAyL\nbGc3w+S3r3vzbfe7LtfMM5qJwv4nRPjOS2F4klxkh0ORvqpd5TmTuDycZu0E\nhZFO0Jaq/Op8BWNB5P3iLq5GKXm2rlurxontw8cnNbqwGbe/4jeF7vQmMKxr\n8WJilNquMRksgHi/oWcbi9cmar+I2W3Yj6PegC5wD7zdcSYPorLOu2yTNh0C\nCD9Vx5iyAlhqhIhC9wu+e0o2XuRaQk5xtEzt3sUJUos0/rBj1oeFGTJT84zV\nNk4cbwRNE2j7/ZLRwh7YJXp6cpwLBh2wi9U+Ep/n9sUOEAH/PRj1zatL3+LC\ndphnmxE02+8hPX/d0FcyDUbE+KGDiitOYSo7Z1sD2tvt380tGlpwukmuCZpH\nFpv4JiEeEAJjZhzAi279+JC0vqJkVHRg2jbbKgakGuXNRaZiBLXlZR8FtoY8\nldUZrDOFbBAvhe6QAC0liC4lMWxuTwt1It3oULAKTFwlsP9IJ9qTVHpR8SIK\nN/ibB07N2s/NogkSccmLM9fZQAJo9HgYBiFa5HDreRmV4GJ38T9EHF9q0b+5\n8/jU\r\n=jQB3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFcUe5pf0+caW6fx4rwUcjVt3+A6s7omLx/BoaDVddg1AiEA0ffHm1ZnvtNABdNOaeN8a4r4zaNfqwt1enE4fF1Zh4A="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.10.1_1588441060490_0.9904941917652923"},"_hasShrinkwrap":false},"3.10.2":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.10.2","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"linebreak-style":["warn","unix"],"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"^0.5.0"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.2","@feathersjs/commons":"^4.5.3","@feathersjs/errors":"^4.5.3","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.150","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.0.5","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.4","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.4","@feathersjs/feathers":"^4.5.3","@feathersjs/rest-client":"^4.5.4","@feathersjs/socketio-client":"^4.5.4","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@typescript-eslint/eslint-plugin":"^2.31.0","@typescript-eslint/parser":"^2.31.0","@vue/composition-api":"^0.5.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.2","@vue/test-utils":"^1.0.2","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.1.0","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","cross-env":"^7.0.2","date-fns":"^2.13.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","eslint-plugin-vue":"^6.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.2.2","jsdom-global":"^3.0.2","mocha":"^7.1.2","omit-deep-lodash":"^1.1.4","prettier":"^2.0.5","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.3","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.10.1","typescript":"^3.8.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.4.1","vuepress-theme-default-prefers-color-scheme":"^1.0.7","vuex":"^3.3.0"},"gitHead":"d0814db50b7be023533699d78af965cb6ff349da","_id":"feathers-vuex@3.10.2","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-EIqR5Y8RE+onA+mK6U/7ds0Rm4oE431uRYJqESAtcC75BlNSbpLXezY63CJXdQ9s+bQrrKQEQ3btU9NKSl4B5A==","shasum":"80848ab866ad9cc66702fcba049be8a1e96ad564","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.10.2.tgz","fileCount":242,"unpackedSize":3384267,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJes9lzCRA9TVsSAnZWagAA574P/ibcD44yaq8tcoD1LJtx\nYIX5aosViW4i9GtZQvFWovaZJs6a9Vy2YCEX6pfeZRB2ckUKH3ZfCWE0+wTT\nQhtQAKpjnfm2AGDZRCnpyYobP6s4j35l2QspBBPTOAImzCHuyINlivQBUkrJ\nN3I8ySAuMDsCb58sp/R0rS0c42h+mW2JFhZZPraatO1M3/qkv+HxFFyA07fF\nR1paj2h3ZGEGxyrSPvRo3JRw7457NXCjAma3fKmzB+x+afB3WngaArTKvJ1v\nocHE6TvI3LEGT1Soob6Gu9+lhj92SyW6fYrZ+DjzMxhn+nys+1YMaTtgi1rQ\nG3Jgq1SGLMi/z6Fh02tB/3QALYZ0uuwG9wKsrbTUZftRrU4DE6ifWxMUtZcF\np1u8/AmFpZU41HvcArmgM9LzanF7G7mtOPwKblfZxEp3Qs2lDb7+1MYaUi1C\n8GgD/SpGAob/R330v1kTFN20onY2D7uWfP8cI6swg6qOyMOCYEcjUtHZeAC7\nisur0VovzlXwh+F7q1rXLlIo+Z6D1XEpGpz+bFHqiJugA8qgaAtLL73lmNYf\nTLOPk3hAzzojPOSVGCDb6fD+YqHU7n4Ulf61s/e7DXP1zMGf5oB88b02mBIA\nbBWQor1GNHBUN+ZvZVGUCD1mzgq+msD0PvcmKwwHgvJCo9e8qSLIHWJ1ST0p\niIrJ\r\n=e2Xl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDXE64Ld4Mme85PtHQokUFwg8Y8Vw15zoW+mrUqetL3dAIgZ4nsBdcCgPFH1NL3BIL6n70Zl/Wzij67lrJecdO1XgY="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.10.2_1588844915212_0.8719075905340588"},"_hasShrinkwrap":false},"3.10.3":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.10.3","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"linebreak-style":["warn","unix"],"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none","arrowParens":"avoid"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"^0.5.0"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.2","@feathersjs/commons":"^4.5.3","@feathersjs/errors":"^4.5.3","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.150","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.0.5","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.4","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.4","@feathersjs/feathers":"^4.5.3","@feathersjs/rest-client":"^4.5.4","@feathersjs/socketio-client":"^4.5.4","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@typescript-eslint/eslint-plugin":"^2.31.0","@typescript-eslint/parser":"^2.31.0","@vue/composition-api":"^0.5.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.2","@vue/test-utils":"^1.0.2","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.1.0","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","cross-env":"^7.0.2","date-fns":"^2.13.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","eslint-plugin-vue":"^6.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.2.2","jsdom-global":"^3.0.2","mocha":"^7.1.2","omit-deep-lodash":"^1.1.4","prettier":"^2.0.5","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.3","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.10.1","typescript":"^3.8.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.4.1","vuepress-theme-default-prefers-color-scheme":"^1.0.7","vuex":"^3.3.0"},"gitHead":"06a3e042b6f625e2846e322d7d4c181aa04dc134","_id":"feathers-vuex@3.10.3","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-xsY/C+YjJ0p+pqjw0tV2vEid9Qta40il4eFrkr7y+tGSieaCQVxLAqi6wvEmfP8UA+x0r/AHKXL3peQUz4a44w==","shasum":"7552b06caeed49a8f2bbcea713f0b40ad369cb4f","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.10.3.tgz","fileCount":242,"unpackedSize":3384301,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJes+9lCRA9TVsSAnZWagAABA8QAJqjuxN+dUGoYYOP4yYH\nW9fkpy8u0Jen4kaHHJ/adI1ipYQFYfhFrusVELMcQpsIddmPbwgH4D0l/X6U\nKAV+/CyicGrQBWV82wd0V8iHHSaI4O2GNJSsyBzfxsMezzpGXs/1epHS5IJ5\n9A4NZWVTlghA6duMRNlvfrsxdMjDWorPh6B+Nr9fEf0QWahHAJRYsHVdjcRI\niAbSoBMz4AzzelvYqCaIWonSXfLY80IoVXXbkjuyE+NNUgLpghnWIrxmSkUD\nk9SyagFoEKV0I2fftHiF6VKnZXsd0s4hPjIL6+8CYVAcfvIPVIlN8f+mbnaK\naZ5stYlJEmWQuqmtboxyiFXPm7pBwcSskn8cBUeb+wj/h7GSN8uw9gJFx6uF\nFPVAXodZWQoTr7mg97Ms/uG4pFh+WRgey73G2jRMjr+DIo7xhYXVeV/uroSQ\nJR3IZjKbAmiQ4LEWLFJVz1RR7dIR6M2nEFJTzqayj9RdJdBdCwMUH37akrKt\nDvcsHStYtcDCHP9t4zE5GcTBWly7X2QQaRr2UZo9n6AXV71G08cBSBZ7do5X\nSrVG1Qrli5cNNiEDK5PUGFU7DDag9+KfCYHOcExvIn7Eb5wmJrSJJ7WNu3na\nVmp9lo73YfbF0sJOfwNDIrnOJO+rlwarfb0xNdla8x+gEwj23qPv0rCaPnmW\nHJnb\r\n=zaYC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD5o/hLwUI9ZHT+WqoHGc9wDQP0NX/lvfW2MW+KSjNVJQIgR42tfDj5J3MXgnmjdjKZS0ZHTax6wbskB3I6v64U1pk="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.10.3_1588850533279_0.11033630070275935"},"_hasShrinkwrap":false},"3.10.4":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.10.4","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"linebreak-style":["warn","unix"],"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none","arrowParens":"avoid"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"^0.5.0"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.2","@feathersjs/commons":"^4.5.3","@feathersjs/errors":"^4.5.3","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.150","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.0.5","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.4","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.4","@feathersjs/feathers":"^4.5.3","@feathersjs/rest-client":"^4.5.4","@feathersjs/socketio-client":"^4.5.4","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@typescript-eslint/eslint-plugin":"^2.31.0","@typescript-eslint/parser":"^2.31.0","@vue/composition-api":"^0.5.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.2","@vue/test-utils":"^1.0.2","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.1.0","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","cross-env":"^7.0.2","date-fns":"^2.13.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","eslint-plugin-vue":"^6.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.2.2","jsdom-global":"^3.0.2","mocha":"^7.1.2","omit-deep-lodash":"^1.1.4","prettier":"^2.0.5","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.3","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.10.1","typescript":"^3.8.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.4.1","vuepress-theme-default-prefers-color-scheme":"^1.0.7","vuex":"^3.3.0"},"gitHead":"0af97a1caf4f7e50f130e2bbeddbdcc3f2de84fd","_id":"feathers-vuex@3.10.4","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-CBj+yYiYO6umzuTEverRo6mlsYmCQviKG8dUaFCbf7CRhDAqrAJw+nm8RWm7NdTpJ+zcQ9hHlBjm/tG6eMA5UA==","shasum":"54e5f3067887b88be5762801b462ebf80d22a6a9","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.10.4.tgz","fileCount":242,"unpackedSize":3384506,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJetGo1CRA9TVsSAnZWagAASCkP/2VDayHssQPMuSEQHti/\n/chtxSBMUhgQRCNo8lmjaqlz06DNyGjHvFxKIkEYWwSAr4L0mRT/zccnW6er\n53mGHcY/9ydClsLIHyYCfvi6FO+1olM3sZTFxVme6et5zo5yPoKwsXD4zflj\ncYPyO2YXXwelu/JnbDEUYC2i6XX+eHRCl++40r63SkVTF6L1dDu3/4ho9b5O\nurP5I991pRX5MIvfVj6PpKyf/jeSc0CoLxMF8SgEwo9lF1UPD/B7b0IgvkOB\n2i7WPlMXbuZzNhePg//M+Fo0rPqvC988ENb2Ej8ts0jDhgSmyA+aFz/bCxDK\nMXBwxxca9/BflNkT14xtLDtd8FpVStp4vQHRkRImLFdgb1u7uL3nbEahX87l\nVhEfdZD7y7wKT6uiIiJdm4+Iuwwo0CC6FH/rlrR5k7UtohFl61JVfBHjkt1t\np/D3z5772jhlSvECg3/VGA4S/uTG+pyPjvX/EF7OKKACgw9w7rzRtm3bPia/\n48WYm1ij8oN0Ft3XdO3lC4ls+HpJr+z+Hryk5Uxv6uknoTkRNVeoxRIabnhQ\n0WfbcMYTobjnDQ71ECABfVNilJPI0oDm2Xvz5Qb1DOrPhcYDnJRhwfLxy14f\nalFsR8z2v4PJeTKCC/CvQ29P7N74ahc/FN39VGh27e2V22dck4qZRqei3hFE\nNXtX\r\n=EWSJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDGrxeYXBk0seCifyWQ+LT72UkX0RSUTSpdNNeFdfcPuwIhALHaVVhCzM2XxGfJ2+ISYAmo/ssJWcz6F522sGcMvbXz"}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.10.4_1588881972723_0.597281066389105"},"_hasShrinkwrap":false},"3.10.5-0":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.10.5-0","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"linebreak-style":["warn","unix"],"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none","arrowParens":"avoid","printWidth":100}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"vue":"^3.0.0-beta.14"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.2","@feathersjs/commons":"^4.5.3","@feathersjs/errors":"^4.5.3","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.150","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.0.5","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.4","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.4","@feathersjs/feathers":"^4.5.3","@feathersjs/rest-client":"^4.5.4","@feathersjs/socketio-client":"^4.5.4","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@typescript-eslint/eslint-plugin":"^2.31.0","@typescript-eslint/parser":"^2.31.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.2","@vue/test-utils":"^2.0.0-alpha.6","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.1.0","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","cross-env":"^7.0.2","date-fns":"^2.13.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","eslint-plugin-vue":"^6.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.2.2","jsdom-global":"^3.0.2","mocha":"^7.1.2","omit-deep-lodash":"^1.1.4","prettier":"^2.0.5","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.3","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.10.1","typescript":"^3.8.3","vue":"^3.0.0-beta.14","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.4.1","vuepress-theme-default-prefers-color-scheme":"^1.0.7","vuex":"^4.0.0-beta.2"},"readme":"# Feathers-Vuex\n\n[![Build Status](https://travis-ci.org/feathersjs-ecosystem/feathers-vuex.png?branch=master)](https://travis-ci.org/feathersjs-ecosystem/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathersjs-ecosystem/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathersjs-ecosystem/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n[![Greenkeeper badge](https://badges.greenkeeper.io/feathersjs-ecosystem/feathers-vuex.svg)](https://greenkeeper.io/)\n\n`Feathers-Vuex` is a first class integration of FeathersJS and Vuex. It implements many Redux best practices under the hood, eliminates _a lot_ of boilerplate code with flexible data modeling, and still allows you to easily customize the Vuex store.\n\n![feathers-vuex service logo](./service-logo.png)\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://vuex.feathersjs.com](https://vuex.feathersjs.com) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n```bash\nyarn add feathers-vuex\n```\n\nIMPORTANT: Feathers-Vuex is (and requires to be) published in ES6 format for full compatibility with JS classes. If your project uses Babel, it must be configured properly. See the [Project Configuration](https://vuex.feathersjs.com/getting-started.html#project-configuration) section for more information.\n\n## Contributing\n\nThis repo is pre-configured to work with the Visual Studio Code debugger. After running `yarn install`, use the \"Mocha Tests\" debug script for a smooth debugging experience.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](https://github.com/feathersjs-ecosystem/feathers-vuex/blob/master/LICENSE).\n","readmeFilename":"README.md","gitHead":"00e8cbbc745a01640a20349b9fded77a1ca292a0","_id":"feathers-vuex@3.10.5-0","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-6N9jo9/pSg+lGfiRgtsD2x85cccWw+O19KuutufznQPVVleYiOgtt+dAHIEsd/20ZdxqyAwcTf6/a1wAF2IpeA==","shasum":"ff0e7ccff5d3337fc5431ad405fa418844a41ccf","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.10.5-0.tgz","fileCount":242,"unpackedSize":2843383,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe1yM6CRA9TVsSAnZWagAAz/IQAIXhDTNmQdTCyGrvSRdL\nccbvZxLAD+HaTRYQILBCM+D0BJfkinAcgmCI1wTVJz5FODvHZC8MBM5RvSJo\niHLr2uFs3X7LUZOFillNBBJRL2wcq9u6NsLtDfXepA10a9HXRZc0k2ikM4ZC\nkkot+R0iBJkp6NtBmXq4VnenJCdylr7jQsYuctG6ozMAEWptcg3wy8le6+T0\ngd8cKmKDX3gDDIVEH2S6Hd7+piI+v76btBSvRtTzyK7ECx5e+fRQN6/8j+UW\nIBZlDa/D7E8badzkWyx7amzEsqUaN+oytP1KQ6EDC0/+cZqHTuZ4jBFOuzNY\nZIquPcE8I65IDwyldFdSpx/AcgsRSnXJ7QNtatOqmgJfXrw8I9yYU9IscE0f\n6eQLDZ6P5Rw0fVFEyapHYgyh3CPONWQydJPNQix2eB9/59PF//v0KRwPuY8M\nwX01qgLyPDq4f9WmfVinCBgoROYyWQGzIUmASUJYR9y3xPz40LoEmXngeM3d\n+HYrjbtXsvO3KppdYV7SVQCvVJrytLZg7yZb+AY4xRQvCsjqQBqwzogSTuy+\nDxfltkW7fJVlqnmwVpIGYsP1qeX/SoG0otw+QUI31H5psm5hi/WIVQpR8ebl\nkYX3WOgV8UmXs40adTdczJUL8FebMWPY4SLoYHlxuo0XruxBtSbYrnunIIaX\nfvDw\r\n=MQOY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAfJFQXqydz/5zhcWd3jayDAoVQRpYs1trnVAhoFVar3AiEAvW8RumCEyys74ZYeM6KiWyVJS8yEw1tg1UHpuPOKuY0="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.10.5-0_1591157561794_0.6434751197112125"},"_hasShrinkwrap":false},"4.0.0-pre.1":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"4.0.0-pre.1","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"linebreak-style":["warn","unix"],"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none","arrowParens":"avoid","printWidth":100}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"vue":"^3.0.0-beta.14"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.2","@feathersjs/commons":"^4.5.3","@feathersjs/errors":"^4.5.3","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.150","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.0.5","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.4","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.4","@feathersjs/feathers":"^4.5.3","@feathersjs/rest-client":"^4.5.4","@feathersjs/socketio-client":"^4.5.4","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@typescript-eslint/eslint-plugin":"^2.31.0","@typescript-eslint/parser":"^2.31.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.2","@vue/test-utils":"^2.0.0-alpha.6","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.1.0","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","cross-env":"^7.0.2","date-fns":"^2.13.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","eslint-plugin-vue":"^6.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.2.2","jsdom-global":"^3.0.2","mocha":"^7.1.2","omit-deep-lodash":"^1.1.4","prettier":"^2.0.5","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.3","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.10.1","typescript":"^3.8.3","vue":"^3.0.0-beta.14","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.4.1","vuepress-theme-default-prefers-color-scheme":"^1.0.7","vuex":"^4.0.0-beta.2"},"readme":"# Feathers-Vuex\n\n[![Build Status](https://travis-ci.org/feathersjs-ecosystem/feathers-vuex.png?branch=master)](https://travis-ci.org/feathersjs-ecosystem/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathersjs-ecosystem/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathersjs-ecosystem/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n[![Greenkeeper badge](https://badges.greenkeeper.io/feathersjs-ecosystem/feathers-vuex.svg)](https://greenkeeper.io/)\n\n`Feathers-Vuex` is a first class integration of FeathersJS and Vuex. It implements many Redux best practices under the hood, eliminates _a lot_ of boilerplate code with flexible data modeling, and still allows you to easily customize the Vuex store.\n\n![feathers-vuex service logo](./service-logo.png)\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://vuex.feathersjs.com](https://vuex.feathersjs.com) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n```bash\nyarn add feathers-vuex\n```\n\nIMPORTANT: Feathers-Vuex is (and requires to be) published in ES6 format for full compatibility with JS classes. If your project uses Babel, it must be configured properly. See the [Project Configuration](https://vuex.feathersjs.com/getting-started.html#project-configuration) section for more information.\n\n## Contributing\n\nThis repo is pre-configured to work with the Visual Studio Code debugger. After running `yarn install`, use the \"Mocha Tests\" debug script for a smooth debugging experience.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](https://github.com/feathersjs-ecosystem/feathers-vuex/blob/master/LICENSE).\n","readmeFilename":"README.md","gitHead":"981573f2bc612f1adb643705964d17be157a1e6f","_id":"feathers-vuex@4.0.0-pre.1","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-OZul8gHVCinTnX65nCS4xbC0qcHc6Uj9w/rejHFP6OMsw9yIh6Gi8/c8y06zvJ4eGGZPm7/oQuNwldy6vkl+6g==","shasum":"3a14e11ee12729a4246387ef8a97e08586af909d","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-4.0.0-pre.1.tgz","fileCount":242,"unpackedSize":2843386,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe1yOgCRA9TVsSAnZWagAAmwoP/jVQkVJqS9jXDRudI48z\nwZDawh+ifSpOCxZzz1jgGtM0QDGFHZq2FzJiQjJ7j0m/p0z/dUGAGCtCTU3Z\nGSkSEz0C9sYQEQrAzrKOYjDS21dZ/Hv9dq8lamG4uPxquCg9T2wRcfjPrBPp\n2qkvcJvYfiQQ/4snzoM01Y3OKwj8iDxsLEWcZbufO3CwwPtZd44moqyBrMb+\n6gfZsCRJFyEqXQ816Gwm4FkeWZjbEn2OmKrN7A/9Drqd/ovWdoFmzSHqY7YT\nKe9wrbWmnu7VbwTxDIv7+GrOta/ZNrq4z8c9eZQD6fRC42JV34bWJ1BTgAm9\n5yX4Ie5GbhLOQOOqZBdzqx1nPPYLi4KBciR82NYVsIqvd2iAutXO1SMyZOeX\ncuN51QVOSFyOqJvWnoMap5ijbpn1mRCBDHhHPWq7pTXdx/vHpRyDFrSj3k5U\npAAZ1YyPeb4KUawWujk/LtQf9xy+Jx/0VPgRqYEp7ooVzPd+HcEISCQwZkGn\nMxVg+dbwA5klOWQ0koTBtqOPUn7DQX1p5jJd+BCg4+vUs34+GnpBPKdSZm7W\nPcK2fhQ59ZE4ZMKBEdyp2oChEAtP+6ZLalbYH+hB7rmja7Cadhp0UhjeR2V4\nlO5251qnnyLJ33NXrzfJTq23ZaTra6CDES8S3DdFdH4zdg4PoaP98esU5jcv\n4QbB\r\n=BMeC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDnESl3dvFEvHkARUnkF2Cdh6c6tUd8p63w2eYUmNhZ8wIgTMvTL+oCxDNmaJ5xtCdt+gP7G+E5A/hEmn9I1dQRlrg="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_4.0.0-pre.1_1591157663826_0.4692576066149554"},"_hasShrinkwrap":false},"4.0.0-pre.2":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"4.0.0-pre.2","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"linebreak-style":["warn","unix"],"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none","arrowParens":"avoid","printWidth":100}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"vue":"^3.0.0-beta.14"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.2","@feathersjs/commons":"^4.5.3","@feathersjs/errors":"^4.5.3","@marshallswain/events":"^3.1.1","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.150","@types/npm":"^2.0.31","@vue/compiler-dom":"^3.0.0-beta.12","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.0.5","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.4","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.4","@feathersjs/feathers":"^4.5.3","@feathersjs/rest-client":"^4.5.4","@feathersjs/socketio-client":"^4.5.4","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@typescript-eslint/eslint-plugin":"^2.31.0","@typescript-eslint/parser":"^2.31.0","@vue/compiler-sfc":"^3.0.0-beta.12","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.2","@vue/test-utils":"^2.0.0-alpha.6","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.1.0","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","cross-env":"^7.0.2","date-fns":"^2.13.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","eslint-plugin-vue":"^6.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.2.2","jsdom-global":"^3.0.2","mocha":"^7.1.2","omit-deep-lodash":"^1.1.4","prettier":"^2.0.5","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.3","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.10.1","typescript":"^3.8.3","vue":"^3.0.0-beta.14","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.4.1","vuepress-theme-default-prefers-color-scheme":"^1.0.7","vuex":"^4.0.0-beta.2"},"readme":"# Feathers-Vuex\n\n[![Build Status](https://travis-ci.org/feathersjs-ecosystem/feathers-vuex.png?branch=master)](https://travis-ci.org/feathersjs-ecosystem/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathersjs-ecosystem/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathersjs-ecosystem/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n[![Greenkeeper badge](https://badges.greenkeeper.io/feathersjs-ecosystem/feathers-vuex.svg)](https://greenkeeper.io/)\n\n`Feathers-Vuex` is a first class integration of FeathersJS and Vuex. It implements many Redux best practices under the hood, eliminates _a lot_ of boilerplate code with flexible data modeling, and still allows you to easily customize the Vuex store.\n\n![feathers-vuex service logo](./service-logo.png)\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://vuex.feathersjs.com](https://vuex.feathersjs.com) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n```bash\nyarn add feathers-vuex\n```\n\nIMPORTANT: Feathers-Vuex is (and requires to be) published in ES6 format for full compatibility with JS classes. If your project uses Babel, it must be configured properly. See the [Project Configuration](https://vuex.feathersjs.com/getting-started.html#project-configuration) section for more information.\n\n## Contributing\n\nThis repo is pre-configured to work with the Visual Studio Code debugger. After running `yarn install`, use the \"Mocha Tests\" debug script for a smooth debugging experience.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](https://github.com/feathersjs-ecosystem/feathers-vuex/blob/master/LICENSE).\n","readmeFilename":"README.md","gitHead":"3e60edb1ec98d7a8dde583ea1d89ba54f07951c6","_id":"feathers-vuex@4.0.0-pre.2","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-6uUF7U1KwEol1fm2tLfFgV4xhZ8GWxFJRO35oNUmENey9ZN7ZEd+3nBEw1eqlOeMltDichXrvKQymYekv03e5w==","shasum":"9a43e6750108b8b5eb31c80b584b24d075bf6e99","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-4.0.0-pre.2.tgz","fileCount":242,"unpackedSize":2843461,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe11aACRA9TVsSAnZWagAAxREP/A2ckolEbr+vBmqAayHg\n8wbrCxrU+AfuO/Jfl+sfgEBvhb60XJ2sSp7N9cBbppeeB+j2jRqZ+Y4n8Cxk\nyUsHbUksrfKeAZm1KgYCpbzhZAg3zJTuwx92W5igha+qpC77+h9mA/WSsflZ\n3SSfdvTmCKLG/VqkgwoXShxUfOOV6xaXomp3FCV7O2hFYyE6y6NpsLak3Dkp\nwWCFp227GPp2+JQZ212FrBof3OvY6npzorb5ej38L9dMt/CH7F/MEzU9l2db\n16yCBWxcwQSvYV0s0AcnkuWYYQuMB+mg0A6ctDOH/tI8/MEJ5TX2WE8eYfw5\numxfUdUjrKR+opSlHt6vf/ow8Dvi77mIke7YhdVOr7ZHxW+XR8k8N0oJw38F\nUhiWOBT0qyGAiKxOPJMYozFyB5y9y64F7lhVM/1oF1aRexBFfAuh1/nfmm2u\n9FIf+ilwanjy/5U+TI4eS+OhXoCoVik5EkYygIB+3t0WfYUiiF8kxL3ryBcj\nOFUUckOuTsc7nFK32x99l0KzJVZVo6rLzoUiU2Sufns2ibeI0W69Q6BR8vMO\nt2hV9Ztmi9Wqwa9DL1Ib4V0vwh/XHD30VaKsnoaWE/vhzf9GnPEj/unOJP6O\nfocFjtmkb9Z5QCB29vvyWP3laGREE+2wvBLnNXpdqsvuiw20iMbEA4ej/Mev\nE+uF\r\n=52mM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDhoRpUogCxkUOQUd7+59Bn8Jqhcyn1nidbnNJJ/Q7pTgIgWnuEentIm/WoHRLzoXThfdhxWxjwdCkWVFNWI2Amtfw="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_4.0.0-pre.2_1591170687591_0.3574106794450824"},"_hasShrinkwrap":false},"4.0.0-pre.3":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"4.0.0-pre.3","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"linebreak-style":["warn","unix"],"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none","arrowParens":"avoid","printWidth":100}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"vue":"^3.0.0-beta.14"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.2","@feathersjs/commons":"^4.5.3","@feathersjs/errors":"^4.5.3","@marshallswain/events":"^3.1.1","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.150","@types/npm":"^2.0.31","@vue/compiler-dom":"^3.0.0-beta.12","bson-objectid":"^1.3.0","debug":"^4.1.1","fast-copy":"^2.0.5","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.4","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.4","@feathersjs/feathers":"^4.5.3","@feathersjs/rest-client":"^4.5.4","@feathersjs/socketio-client":"^4.5.4","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@typescript-eslint/eslint-plugin":"^2.31.0","@typescript-eslint/parser":"^2.31.0","@vue/compiler-sfc":"^3.0.0-beta.12","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.2","@vue/test-utils":"^2.0.0-alpha.6","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.1.0","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","cross-env":"^7.0.2","date-fns":"^2.13.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","eslint-plugin-vue":"^6.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.2.2","jsdom-global":"^3.0.2","mocha":"^7.1.2","omit-deep-lodash":"^1.1.4","prettier":"^2.0.5","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.3","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.10.1","typescript":"^3.8.3","vue":"^3.0.0-beta.14","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.4.1","vuepress-theme-default-prefers-color-scheme":"^1.0.7","vuex":"^4.0.0-beta.2"},"readme":"# Feathers-Vuex\n\n[![Build Status](https://travis-ci.org/feathersjs-ecosystem/feathers-vuex.png?branch=master)](https://travis-ci.org/feathersjs-ecosystem/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathersjs-ecosystem/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathersjs-ecosystem/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n[![Greenkeeper badge](https://badges.greenkeeper.io/feathersjs-ecosystem/feathers-vuex.svg)](https://greenkeeper.io/)\n\n`Feathers-Vuex` is a first class integration of FeathersJS and Vuex. It implements many Redux best practices under the hood, eliminates _a lot_ of boilerplate code with flexible data modeling, and still allows you to easily customize the Vuex store.\n\n![feathers-vuex service logo](./service-logo.png)\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://vuex.feathersjs.com](https://vuex.feathersjs.com) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n```bash\nyarn add feathers-vuex\n```\n\nIMPORTANT: Feathers-Vuex is (and requires to be) published in ES6 format for full compatibility with JS classes. If your project uses Babel, it must be configured properly. See the [Project Configuration](https://vuex.feathersjs.com/getting-started.html#project-configuration) section for more information.\n\n## Contributing\n\nThis repo is pre-configured to work with the Visual Studio Code debugger. After running `yarn install`, use the \"Mocha Tests\" debug script for a smooth debugging experience.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](https://github.com/feathersjs-ecosystem/feathers-vuex/blob/master/LICENSE).\n","readmeFilename":"README.md","gitHead":"5f822b92d115fcf84ce67ef7cdbaaf2bff775be4","_id":"feathers-vuex@4.0.0-pre.3","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-pIjUhLOIiZZP2y2sze/eyRq2W/FScyz4E68nG+tIxg/T2wMX4pIwX5+lphsFCawkfNgPwOrx7ql1kT1VOssQNg==","shasum":"e197f71178f32c90c7662483cac9d9ddc397984f","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-4.0.0-pre.3.tgz","fileCount":242,"unpackedSize":2843437,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe11dxCRA9TVsSAnZWagAAgMsP/jl2JaZ0b7y0A98qkl5f\noyvaoVZAFvfaF3AbJFMOWWlP+8Yh/Zk1YxEaq43TPkx5xFl+FjSSC4rCZHpt\nshnIzCb97HerR23+c/OJxw3bPB0uK+jHy1y/qz1SSkSvJNgpz8LWAoqBXP8o\n7ByWdnprUyY+Iy2Ezs234+917Ttq4HfxcIQDJSOS5fiNo44y0rXVT3Xgbwhw\nRu6xWoj69Pr7WW8EPUhk1L/eLzEmMQ+P45qQmN5lJsCuia0Db1N3PNrrd3BF\nWFf2jRQVn+E5wYtZUzOmKrn8LWUdPOlDLVOBdcoyGKgxXMzrCYtX6LpPZeQ1\nEOX1t2ioEZBk34h1p2YHU96fuN1ijK44/vQ/s/pJD6Rlb5JycSKC5kq+znku\n5HqXqcpOnfnJsMaqdIdpdiBGsolp2Unm94kL+wkwTGOEtZYWz2TnvACRpTl9\nHWK/KpNHCCBglmo+OQLzP9RusUAE1Ty9sY9egsJzqZNRBOxPJYL1BI/CzIFF\n9cJqZhQ515nKYSi9Cf82ED0Py5QbTuoOpTKHc97QHzdi3oeW0ksp3xydC402\nVKHOj0vgslP4j7kDWPxzMrwV0bxZRyvM1tIx0c3j50vHoEmzW/2OpyaiVMeW\nP1zhQFPxM9iZvaYjUjOmxw5E8F5PQaQbiZ2Mf4wM40nOzHB/jGaI4dn64MfV\nXwTR\r\n=6myM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG7UAWP6AGr+JFaYroPS5xTURSYzvE9rIAyIJZ/zleJ9AiBaL03ILy+qfOlaN2hXinpDeb0veOtCzwgve8NNQjXpCw=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_4.0.0-pre.3_1591170929300_0.15626374481500438"},"_hasShrinkwrap":false},"3.11.0":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.11.0","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"linebreak-style":["warn","unix"],"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none","arrowParens":"avoid"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"^0.6.1"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.2","@feathersjs/commons":"^4.5.3","@feathersjs/errors":"^4.5.3","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.150","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.0.5","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.4","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.4","@feathersjs/feathers":"^4.5.3","@feathersjs/rest-client":"^4.5.4","@feathersjs/socketio-client":"^4.5.4","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@typescript-eslint/eslint-plugin":"^2.31.0","@typescript-eslint/parser":"^2.31.0","@vue/composition-api":"^0.6.1","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.2","@vue/test-utils":"^1.0.2","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.1.0","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","cross-env":"^7.0.2","date-fns":"^2.13.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","eslint-plugin-vue":"^6.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.2.2","jsdom-global":"^3.0.2","mocha":"^7.1.2","omit-deep-lodash":"^1.1.4","prettier":"^2.0.5","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.3","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.10.1","typescript":"^3.8.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.4.1","vuepress-theme-default-prefers-color-scheme":"^1.0.7","vuex":"^3.3.0"},"gitHead":"b7a5b0d551d6f5623a143a3cae2b7ad0a1ffb9fc","_id":"feathers-vuex@3.11.0","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-TcCA2039XyU7WfvsE3nb+Q9eKAkwFFj83/pkh+AyO0rKyOCSmij8Boyse0ke5FZ612+s+YBPJkeNLkX8gdTazw==","shasum":"4dc644f85c8819ffd78f3a021a267683e668b572","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.11.0.tgz","fileCount":241,"unpackedSize":2844374,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe3qLkCRA9TVsSAnZWagAAoH0P/3y3n23VVmUs8YrE5nEX\n2qWAI94zfamtNbBxp0yRN4GoDPJBVwYEy4E5E7ep8FmrlHGr91VvWSwSqttu\nCIrsEjH3LmS0I2fjqNLIZcayj14gABKLc+oFIJv/E+12yYzlmK2P2zIFa5XV\n/BXYiTT2h7qjehovoL1EZH5sLZfQ/KY8fYlWasVjwGNaOC3EYE38YhSFocRv\n86kvWXxZYcnFhPjxRTHBXY7aRdvoXliS2JCfeU33vRtj7OjU1J+vjJynif0y\npxxH6KBMbc96fnCfS2NbIaBBpEPF6S1CJ1MU94G9Az2LCG8Mr3QuAX1MVpqw\nJQWzFxmGkybM7zTbI1WbJMAudJA4iTFN9TgB0vld44ip0NoyDmv6/eN9XD3s\nzWPGTpCq4QRB163fE3cTmYOwSs/4QB+fdMvyI9ra5hBYLQnzVf8Hi+WPHsxW\nXHFdBby1XvPfYORYDmLlL3fLeYc/V9uI7wlgAacv+/yoAnZCiXjIvo3O5I9y\npD3LeX3/uR+Npu/hzLsbfMFEiXFAa+yPAHGCgOujkL9DuIZ0R4iq2ucKG0Sv\nvwv9/puqY9kqdAHFI0+vHhuhbM5txWF2Sh6wXMRGyEWcUF42XX6zaCfPbyab\nBfK93V+Hhh/NNRJraiXA91Hz6ORQYZgEQZmanfgMjSlAAtv+fzcmaZZx6NP5\nJGzB\r\n=RP//\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHrj7spLQr9D2LuoCTJoM7X2rzBJxY8J2g4DyCFvjxO7AiB0YlXHbZUFEwAXTxCUg3/FJiog36XbDJ3WcTxI843z2g=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.11.0_1591648995503_0.25736131225049674"},"_hasShrinkwrap":false},"3.11.1":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.11.1","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"linebreak-style":["warn","unix"],"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none","arrowParens":"avoid"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"^0.6.1"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.2","@feathersjs/commons":"^4.5.3","@feathersjs/errors":"^4.5.3","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.150","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.0.5","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.4","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.4","@feathersjs/feathers":"^4.5.3","@feathersjs/rest-client":"^4.5.4","@feathersjs/socketio-client":"^4.5.4","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@typescript-eslint/eslint-plugin":"^2.31.0","@typescript-eslint/parser":"^2.31.0","@vue/composition-api":"^0.6.1","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.2","@vue/test-utils":"^1.0.2","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.1.0","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","cross-env":"^7.0.2","date-fns":"^2.13.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","eslint-plugin-vue":"^6.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.2.2","jsdom-global":"^3.0.2","mocha":"^7.1.2","omit-deep-lodash":"^1.1.4","prettier":"^2.0.5","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.3","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.10.1","typescript":"^3.8.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.4.1","vuepress-theme-default-prefers-color-scheme":"^1.0.7","vuex":"^3.3.0"},"gitHead":"2cf2f5ca4c65e047b2ca5a730401550727d87ba7","_id":"feathers-vuex@3.11.1","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-A1udBVZR1mBSD15Uphjk0ztjKO39yGd3bZF82cnkc4WXuvYzCP2S54SRqXZnIiZXjOxoJLdmaCrWu/nefrmaRw==","shasum":"fa1f22baee42ac8984ab9789a8077b9fbc1f23b0","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.11.1.tgz","fileCount":241,"unpackedSize":2844717,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6U9UCRA9TVsSAnZWagAANYIP+gPN+oVOOV1Yab6b8SrI\n806uPvN1HhnZM10y+EUUp2RXF5jmACIjEDPV7rk3yun2b2E+7ZAT+RUq02XV\nJlWbtUPNrNNpOCZlFrfLTtXghMCxKIm5StdtytuEQkTORFkfd47XpVeTBc21\nfzEWLeUrOZEyQf6l9pgR8MzUMkzDgrJ6Qs1u7j9FTXXC2qhBCCdPrJQJ1D9J\nlQjQmI2HxOQMXrcIBgLe8TcKmOutd3M0D6HoJkkH9pnAdJQzpKwcdeOizGRS\n/2aY75tgQmu/SguGHplArT9Z4zbxUTC1nhDgw3jllbB67I+WgCJ0jqjtCq/m\na9v27IgJX1A0QXsrgqmlJr9QSc++TEA2+iKIgNF9P3iX9rT5lvr+BaQVjMDv\nzH4SVid2+8zcOM81OvexcmTSp8ehXyl7iJE3Jrdbcy2Q62+iRahKkGRheBRh\nHe+K5/w/2rTUgITfZaoB4VB3DrciepjXXlkd4iDQvod36kcZG/zOWkucleZe\nmLx0iv8s6NawsP4o6r8GdTuWAFJ7GdYDBgE0jOHxJGOLROG6WTiev8pENs7j\nH1bTUlblwy5gYpr9JB+oRgupivVl1ZmukVctqbPckjmQp1Pw4ZcBMdzT88/d\nrwI1Y5K8QeKi4J2tnsG7DfyK3R0VUJgYj3l7zE9c9QSR9vmA9NhT8W3+Fr/5\nYycw\r\n=cFwF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICmSLfacyC8nZRuHzdi4ogz48/HOgDVHlh5WkKGudBh7AiEA+ZBkRM/0+3iqnmhs/ApKY2OH+LlkaCzISbpOVfpO1Us="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.11.1_1592348500114_0.8292406327026214"},"_hasShrinkwrap":false},"3.11.2":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.11.2","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"linebreak-style":["warn","unix"],"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none","arrowParens":"avoid"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"^0.6.1"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.2","@feathersjs/commons":"^4.5.3","@feathersjs/errors":"^4.5.3","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.150","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.0.5","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.4","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.4","@feathersjs/feathers":"^4.5.3","@feathersjs/rest-client":"^4.5.4","@feathersjs/socketio-client":"^4.5.4","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@typescript-eslint/eslint-plugin":"^2.31.0","@typescript-eslint/parser":"^2.31.0","@vue/composition-api":"^0.6.1","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.2","@vue/test-utils":"^1.0.2","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.1.0","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","cross-env":"^7.0.2","date-fns":"^2.13.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","eslint-plugin-vue":"^6.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.2.2","jsdom-global":"^3.0.2","mocha":"^7.1.2","omit-deep-lodash":"^1.1.4","prettier":"^2.0.5","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.3","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.10.1","typescript":"^3.8.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.4.1","vuepress-theme-default-prefers-color-scheme":"^1.0.7","vuex":"^3.3.0"},"gitHead":"2da9f41d35923a21ba06f523205f97bd61563b00","_id":"feathers-vuex@3.11.2","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-8xd0NcKkuZN5cyXd2gCKZDwUEXiBripR17RagPEBaKXaYWU9Zzy5jbHowgnwcnBa9Ebjeza+TozSBZsM/4knFQ==","shasum":"da618e8d3c2947b761511245041f59d474b093ff","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.11.2.tgz","fileCount":241,"unpackedSize":2844889,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe7q3yCRA9TVsSAnZWagAAjiMP/icqbjo39z48F0vQJmmR\nNsR/xY1Yo1PO2LYpHxnq5j3QK0bYa+Td1ZQvvZ+cbd1vvxCBnQ8hvq81iRst\nprH+QcwPDwahBy83prIb0fPe955jr9mLpt7lw7830Wg101D0MA3LSDy8yVIk\nSAsUkQXkeGzA8URbXyTlC9FO6QkqzVMysarVGj3e1feJ8eAS+3OHnZM3pFOO\nEbrHu8KC3dzSoj6z4sumtc0QNxh75tzSHeKYfAnb0qbNhBYEt4EHpS3eDc5R\nlBe8uUey7f+8O/ZRU8WSUtrUeB2nwOovpw2MwnQbunhNSCXHrbHMyuTBjFHI\ny93vh6yXBaNi1UX4OfP84GBu6X+c9TIED/ErJHxwoUcUKe3y2dXV+lRy0RHC\nXf+ga0OluqbM1RhJN2lxZOK5zqSUqR5fm7mp3RO3umSl1qc8jKTinmTteckg\nM5X2PaEwSXps0l/cLU0UC/fbUbWprD0El39eKFvkAgyMiElTdAd/oX80IWgg\nbkhBucaWZPPCiUIdSf6G4ncPYpllTPV4X3NoF/eV0FUFUbK8x30QNQC4zJYK\nDSY10Fdz+AfASMqvnOwDWhAsb8r3fu5D4cEXn2WnsZSsVKKe72qQXs8lEGzj\n9NRdpNC/hz0HRx4fVTsrst0guZcsrw/RMHvcue35Y4JbQ+oh8+KgFHC5sLw+\nqzHw\r\n=Nhv1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHwXXgZ/ZPX86Euhq7XWJ5HIQ3pnMSzFNMVB20DQQzh4AiEAh9/QOgXRh6cwB8qDIZ5dHrxiUU3dOdjFuBrItiWvRks="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.11.2_1592700401964_0.8080672422687682"},"_hasShrinkwrap":false},"3.11.4":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.11.4","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"linebreak-style":["warn","unix"],"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none","arrowParens":"avoid"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"^0.6.1"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.2","@feathersjs/commons":"^4.5.3","@feathersjs/errors":"^4.5.3","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.150","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.1.0","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.4","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.4","@feathersjs/feathers":"^4.5.3","@feathersjs/rest-client":"^4.5.4","@feathersjs/socketio-client":"^4.5.4","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@typescript-eslint/eslint-plugin":"^2.31.0","@typescript-eslint/parser":"^2.31.0","@vue/composition-api":"^0.6.1","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.2","@vue/test-utils":"^1.0.2","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.1.0","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","cross-env":"^7.0.2","date-fns":"^2.13.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","eslint-plugin-vue":"^6.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.2.2","jsdom-global":"^3.0.2","mocha":"^7.1.2","omit-deep-lodash":"^1.1.4","prettier":"^2.0.5","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.3","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.10.1","typescript":"^3.8.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.4.1","vuepress-theme-default-prefers-color-scheme":"^1.0.7","vuex":"^3.3.0"},"gitHead":"c03c936bbc0e61e5e5cffbec07ed21762bbd7cb0","_id":"feathers-vuex@3.11.4","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-P1h6SB8xZUAOC4IjVcRdvZTBMg5Ih9LJ2Ml1pM9B3no5K5S3LeQs/NcWHWeS8ZiLKx+1y/C9qBDGS94o2XvweA==","shasum":"89689a9dc5ba007dbab6dea65d60c58eeb7d6f6d","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.11.4.tgz","fileCount":241,"unpackedSize":2844927,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe7q9LCRA9TVsSAnZWagAA/k4P/RH4xJGGDmthj9bdnLIE\nT1mRxEEcZGuxDbcC+dPox7KdmrKn5zTiYwIXcBDVw3WI89a2UxJTAqNVdSGd\nVLgwNeHawVqdAxfeiKqzXjrKfTHmdMYkEQJAvTGU4Wkc71P0Dw7U9gXHloHH\ncJdtIyoXAKQ/JLfW0s0BY3Et/Ye10BM3VikvLJ0JZPLq2hjLBcDR2q8PJ7uF\n/0LP0AA9xVbH5wRNPmBZ90Kiae2pAFf7io+HFPeszd3drb2AAXzDpj3jC7v7\nIsgMntTkGqFTWxLTqwqHgqxul0gW9SIKyxhP/UBi02NGIECzJ17bqMjgaHia\njuWOzD5iBU77s1FY25gnJpaj5Caly9ouPPt7GqN0u8/b/DNvLXOa3VmXUqQv\nNuXKV77N8q8MTXQTly84lRIdF9yI+JwVaoKgfZjEpyzOvx+Wm1GgM7DJXa80\nhwS0S3Socz6sRKbJacTr6BvcmWE3V99yQfAVpyFo2MNF0FWtEUI7GbWZJuLb\n/uLj+H33NQM68qxOPyWfs3woWD+x9wTbrZeub42fiCSEADAfoL/Izkf+qjan\n6yJuoXcFGOdfb2PidfdocxAAaaYwA7h3u9E6BVar52Hs6rz2SNqHW6MEPfoF\nuYUX44Eo+Ew7adyuG5ZLR9lAhnI6u0gqkUso9tyVlkzrBYcLEKrIMGL/mwDU\nux4s\r\n=iIXn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHkp1699ALn3wcTT7EybP15xY7LzyOCIZKskOf5yFGDRAiEA4dRzppVCFTDVJFIO4goT2WTdcyy+kpz0CT3egzJzVbk="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.11.4_1592700743900_0.5061913524373067"},"_hasShrinkwrap":false},"3.11.5":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.11.5","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"linebreak-style":["warn","unix"],"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none","arrowParens":"avoid"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"^0.6.1"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.2","@feathersjs/commons":"^4.5.3","@feathersjs/errors":"^4.5.3","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.150","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.1.0","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.4","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.4","@feathersjs/feathers":"^4.5.3","@feathersjs/rest-client":"^4.5.4","@feathersjs/socketio-client":"^4.5.4","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@typescript-eslint/eslint-plugin":"^2.31.0","@typescript-eslint/parser":"^2.31.0","@vue/composition-api":"^0.6.1","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.2","@vue/test-utils":"^1.0.2","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.1.0","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","cross-env":"^7.0.2","date-fns":"^2.13.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","eslint-plugin-vue":"^6.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.2.2","jsdom-global":"^3.0.2","mocha":"^7.1.2","omit-deep-lodash":"^1.1.4","prettier":"^2.0.5","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.3","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.10.1","typescript":"^3.8.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.4.1","vuepress-theme-default-prefers-color-scheme":"^1.0.7","vuex":"^3.3.0"},"gitHead":"9060174ce6e6a50ad79f8677e8b4dc11504decd0","_id":"feathers-vuex@3.11.5","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-W8/KoryIyePioNMqa3Of5byumOh8i6Dkipmqv2v/0YDm1xi1R82Ur9Sql5xIOiBk9Nwhg7cnWSu4wnuMt8GFtQ==","shasum":"060b5321e9be6bffdaf462df872d6cbb7b6d0c4d","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.11.5.tgz","fileCount":241,"unpackedSize":2845033,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe8CvFCRA9TVsSAnZWagAAP9IP/ipyGPL1ANwbsCUc47Pk\nEZye43eDXflmPaVC3AeeqlWXKX3czCIZ+nMVgzqC1DTvyMj0BJnPpNdgjJak\nkkCE/0tl6bijrSvahdmff31y8fwn/VAsjcRm0uMdtI0M38TuTjlKtm+VqC5b\ntoDOBFPSPIvKgWGdhyKF2DNqQ3x4HK1278+nDiG7FtLsbXA0wawy8L+qJQQB\nAGiXHr84Y4b+PUb+M3mBKw+kJmPqOOQ9AtlU6QqmTwgxyvL46S05ubQZkUZA\nIYQFoqhgAmbGjQ0J/JaPTnB8VJpc1n+NOhzofIYIBXTNy40Sj4FR/1l1xxMX\njPTxu7FoVuJ67mnS4RrU7P66kpEj14BOMwWmclRNX0chiI65qrx+UFU6x2bf\ninAkNxeZhXS7ziBjzklLvLMntzM64cRzpsKtxb6YGKXXe4oHa81V58VZFbZC\nU+EMtQf2J7utK5MuaiNzyhuufd5l2A/mns4J/DoarS4ZQPClqN3AOxXr0QKq\n/3eLfjACUdRz9rpJPZchu3qIuvHAr2qKF1sXz/KRyIN32qcBDibXKP7GuByz\nKsWBwmXtX8Vezjwe2zY5CxBVjEb3AA9lDLWa7z5EgQ5vRjYpzYqHf/mXRhKN\nA5ADnYpmOu55bxQQB4Mb5zUthIQi/fBeLnm0Qo2n3ZUIhnQgtLdVY/I2hQw/\n8Hj6\r\n=yqMi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICd9cGkeJ5HjZXPEkMF80wXPZ7cAB6gJ3Io1jq7amE0rAiEA8V8IJUtcvcbMTXRfgbx00cvC4Uuf/Q/UkEowpa4Svo8="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.11.5_1592798148686_0.7434977740257045"},"_hasShrinkwrap":false},"3.12.0":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.12.0","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"linebreak-style":["warn","unix"],"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none","arrowParens":"avoid"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"^0.6.1"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.2","@feathersjs/commons":"^4.5.3","@feathersjs/errors":"^4.5.3","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.150","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.1.0","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.4","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.4","@feathersjs/feathers":"^4.5.3","@feathersjs/rest-client":"^4.5.4","@feathersjs/socketio-client":"^4.5.4","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@typescript-eslint/eslint-plugin":"^2.31.0","@typescript-eslint/parser":"^2.31.0","@vue/composition-api":"^0.6.1","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.2","@vue/test-utils":"^1.0.2","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.1.0","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","cross-env":"^7.0.2","date-fns":"^2.13.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","eslint-plugin-vue":"^6.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.2.2","jsdom-global":"^3.0.2","mocha":"^7.1.2","omit-deep-lodash":"^1.1.4","prettier":"^2.0.5","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.3","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.10.1","typescript":"^3.8.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.4.1","vuepress-theme-default-prefers-color-scheme":"^1.0.7","vuex":"^3.3.0"},"gitHead":"fa63313d318ad7d635cd93e61ba60db5558af095","_id":"feathers-vuex@3.12.0","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-B1B8cftZBD3Zi/yd4lSyU/IkWsTlFky+8t6lIIfDT729eYZYhWwwJBo5b+ibSeeBydDywKIOvvZiyuvVMxCybA==","shasum":"49d1160b6bfc5224c86d57d9f8a67c887a91f37c","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.12.0.tgz","fileCount":244,"unpackedSize":2887911,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfT+vLCRA9TVsSAnZWagAAExwP/2WBwitrs8n0F6PKZe43\nqGlCkjmtrCNR85ANztOSl2ikFRXZfMkO40osluL4vT1jdUlKZzdJD0dZ//It\n4QIBaI+o0ATOzohqUZaFBwVd4ZULZ+JmIfbvRENiRHU4as6axrT5d4k6t2sB\nDaXnN9qJcLzWXqA5cAnz1XlrW5TSIaLxkWtcd/pfaRKme8x78pMJLlwM+skL\nWZC8zLRmKPgeluMihUMcM526xP3YeV3puLMc/QysgXv1/2TYBTASbL4b9xla\nLJw7s3CCs+k4p8NHQ41W7SFA6tAAf+NhW8wYA896stpkL9LwYBRy58RVFARu\nKujfsOMiDjq2DnSrP/FWaLyocx1QWoydyl2rmJDQgBCHtk0qkslopFCmpNri\nOAsN0Qd4c1pCtnWCQibvqMFP1TQT6L8ie2E36+J0+LvLklq4F3jdFfF1TO3R\nfhCTIUDyKEozfdVHtDHhEDyWdkmSua2vyYM7I1Fz9dZ0y8sNWcMfg5X4MCWg\nXdD3H4kVvUTUANZE9neW1+3eMDQQJQPYubfdpBZnEYIdxKvJuhOCqteWdgUg\nIG7tiUnUKJeElZIipTa8ev7+PezQIEh1uLwT7Cz6F5EvCelLFvB1Dwf7bDxY\ntkxi9tfi1Pg4WdS54h/3VEb15hBWp1KGkMIDPGJWpmKpQm6ly4VgeEpfaYiF\nhVzl\r\n=0eD2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDPSZ4nAYKJ9GuLdahsgKKGriBccASTfZ2RfXgL6+FCjAiEA05vJkq4stmq8GKnDWCcJPq69q3TilqUn2Qubann4bmg="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.12.0_1599073227355_0.838544843160687"},"_hasShrinkwrap":false},"3.12.1":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.12.1","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"linebreak-style":["warn","unix"],"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none","arrowParens":"avoid"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"^0.6.1"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.2","@feathersjs/commons":"^4.5.3","@feathersjs/errors":"^4.5.3","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.150","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.1.0","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.4","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.4","@feathersjs/feathers":"^4.5.3","@feathersjs/rest-client":"^4.5.4","@feathersjs/socketio-client":"^4.5.4","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@typescript-eslint/eslint-plugin":"^2.31.0","@typescript-eslint/parser":"^2.31.0","@vue/composition-api":"^0.6.1","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.2","@vue/test-utils":"^1.0.2","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.1.0","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","cross-env":"^7.0.2","date-fns":"^2.13.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","eslint-plugin-vue":"^6.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.2.2","jsdom-global":"^3.0.2","mocha":"^7.1.2","omit-deep-lodash":"^1.1.4","prettier":"^2.0.5","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.3","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.10.1","typescript":"^3.8.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.4.1","vuepress-theme-default-prefers-color-scheme":"^1.0.7","vuex":"^3.3.0"},"gitHead":"1a24b5d59e857907bc8fa503d3dbe6a84ffbc505","_id":"feathers-vuex@3.12.1","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-MLrjbA90ZhFdDootiqAt5855IYkbicZizva3S4YLZx3r6j/OWRsf3s54nN8rzSVZq8PC0MaMdQU0Lx2FMaEh9w==","shasum":"14abaf4d5ff20c9cab14420d300280dd08def57a","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.12.1.tgz","fileCount":244,"unpackedSize":2888206,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfT/usCRA9TVsSAnZWagAAmnEQAIO72/owOil4OanZAdps\nTzuaCbebQGgu31WALA0Ql6PFclD2IhV9CTXqVOmKEhGDmW/gQ6vq7Ml9qh5x\ncOF/EtIGCL7qTP5WvPqK3mqK2eEKN3B7lXM7rPQfJ0zW35/igwilivypp8oI\nQX8JppmarRrVMFHWruSc/DgIpJ2GieT4EZS0vRJf/MbV/MWp1/eVk7Q+XoGc\nKfrykCSJ/bgsHuG7/RquVGcb+Rbe++BfA5NYJN+0f5P2LzmePSKENJ2T0azG\nB6o1r5f9vY/xP3WUy+WmkkJEXn1pppl865S4jlXiKnxAbUwgFB86CqWgNeC3\nWSB0ctK4LbvrTkdCIEmUHb2quzdqKOYlrv/g1BbRyrkgR9Rk/jzCDg/zJ7Aw\n43eLdqzpEecGIvoDyXHglUpfl8qIbHu3pTy+MEVw9apZ+PWcI6OYJab0edqh\ntBzvW2gnyyLvlCShjsmz8YH6JbnBLHHhPYCfaZkkoc6j9No4Hh2XYoPXc5mI\n6KFOJkotQYhuFvUpP+1Ez8HqyE5zApEK9TqzG5mxN93D3t+22Qplt/IMzgdQ\nJ+MaW5Xa5nuUiiDIXxy07oB49krcvVRS3RpCMtcd/Upx7a7dgUmPG8/sir2u\nR3pxZQ/sBDT4EMJa+X50rbsDWYAnqygo2tTdjW9tRMFfjDySvfyPHeTDDHr4\npTlN\r\n=xLuL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFuce2EHmvg7vkegokRZQIJORLAIRXr75xQnBu3/DQk/AiBe6W6ufdDIt3u7gftrHp2qC6fPHBqlt9cDPym48maI6Q=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.12.1_1599077291493_0.006417851078525549"},"_hasShrinkwrap":false},"3.12.2":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.12.2","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"linebreak-style":["warn","unix"],"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none","arrowParens":"avoid"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"^0.6.1"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.2","@feathersjs/commons":"^4.5.3","@feathersjs/errors":"^4.5.3","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.150","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.1.0","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.4","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.4","@feathersjs/feathers":"^4.5.3","@feathersjs/rest-client":"^4.5.4","@feathersjs/socketio-client":"^4.5.4","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@typescript-eslint/eslint-plugin":"^2.31.0","@typescript-eslint/parser":"^2.31.0","@vue/composition-api":"^0.6.1","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.2","@vue/test-utils":"^1.0.2","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.1.0","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","cross-env":"^7.0.2","date-fns":"^2.13.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","eslint-plugin-vue":"^6.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.2.2","jsdom-global":"^3.0.2","mocha":"^7.1.2","omit-deep-lodash":"^1.1.4","prettier":"^2.0.5","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.3","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.10.1","typescript":"^3.8.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.4.1","vuepress-theme-default-prefers-color-scheme":"^1.0.7","vuex":"^3.3.0"},"gitHead":"2ab49efa6b99d383d575e4847fffaa0341366749","_id":"feathers-vuex@3.12.2","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-V1JbNe1WehivPHw0TGf7CbGXxq3vrfb8Fz9O4pvbeY53oFjqfWzJufoajcrCb8dzkpn1q4VeBdbRR/WLYrGriw==","shasum":"42a588cea8edaebd8d84cbc07f95694555f93c92","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.12.2.tgz","fileCount":244,"unpackedSize":2888391,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUA9tCRA9TVsSAnZWagAARsEP/0rbvBD7TOwxdins49TJ\nc1vZCqhB+QhBGTwx8BT4HsN8IgjPunvp+K6IYohfbyz2+ix6ZazmnS/0XHGl\nUtzaW1B4LEP99cga9cyzZLlz2F2iyM6UHTX/eHXSJQjEYv/2Q8+/ECEKi6xJ\n7naPizmGZs8Cws2Fz8EMYVWUxLjci8RLccMqtGqO8YJAMndK9gqm1eseLbwA\nWuSQJTc/WaRrYYJYa0NRhTULYhVPwbfx72zAShCctJq94rvFlNhxK40ZqQCF\nt7sW39P43IWWGdubSfvR4rMi469HXJQKXlKupeg4fJL5aW+SLMsDfErHR+4I\nTJ2mCrdgnN+v6Ga2t8aaiZB9sqwIArwZMSyDlTK2tqlmqcWA1IC6Cp5H1mXk\nb+28+bPed1RHuZU7aoAuBeDTswEwBpc4ena7F+FLRo4lfaiFg7+MY2B9KxbP\ndYnDawnDafSd0N5JYbIRvoVGZnpYQGAVcce83qL+H8MlUZRVAKJgybmNMfvS\n2oz9jBoYqCMHW1V4IWy+5+GmKS2ercjWItHszAPiWWQLvqsHD0lYx/+qboke\n6osFJTGbPmQ8qb083me7gqvi8FheiDLtDwh8xekyYHuRzMC+xTSCdUygJcwL\nf5D9BpQ00vxD5WziHLlxxxztS5N/kO+U+uVoOcy+SfCxeR9m7ioCZUzdR0aN\njc/A\r\n=4kCV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDFtuBNG4iWPuNjD0m2mUqSeBxTSA4K27IYkP/L1yC8iAiAtOnzBYGQ5qQGV7Bjis2mxP1QiptRvHaxs42225l6b3w=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.12.2_1599082348927_0.9145450014983594"},"_hasShrinkwrap":false},"3.12.3":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.12.3","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"linebreak-style":["warn","unix"],"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none","arrowParens":"avoid"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"*"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.2","@feathersjs/commons":"^4.5.3","@feathersjs/errors":"^4.5.3","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.150","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.1.0","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.4","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.4","@feathersjs/feathers":"^4.5.3","@feathersjs/rest-client":"^4.5.4","@feathersjs/socketio-client":"^4.5.4","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@typescript-eslint/eslint-plugin":"^2.31.0","@typescript-eslint/parser":"^2.31.0","@vue/composition-api":"^0.6.1","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.2","@vue/test-utils":"^1.0.2","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.1.0","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","cross-env":"^7.0.2","date-fns":"^2.13.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","eslint-plugin-vue":"^6.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.2.2","jsdom-global":"^3.0.2","mocha":"^7.1.2","omit-deep-lodash":"^1.1.4","prettier":"^2.0.5","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.3","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.10.1","typescript":"^3.8.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.4.1","vuepress-theme-default-prefers-color-scheme":"^1.0.7","vuex":"^3.3.0"},"gitHead":"3d21be7ff2ba7466a08e43b595ea06aa2b757c0e","_id":"feathers-vuex@3.12.3","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-8wkIARPnJUjfP+mQNUUXsqpia3ptk8t2cyNDMo29jVJup01BCOeSaZmQufVscveQrt6ENPWAzMj4Bec710tzjQ==","shasum":"dd55e8b74f39b44b3a0839d9c653ce4cf99c8542","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.12.3.tgz","fileCount":244,"unpackedSize":2888386,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUSQUCRA9TVsSAnZWagAA0QAP/2Iig/PxB8zYl4Vw/zS+\nyyPwDHDkEPmNWblRl4PHhRnaSd9Hzrc0t41youQv4Q/Xt9U2/yMvRs/sYCxb\nX3YouLrOvAxlttAIY66TsWZ/gCGSJzKwMfC6XqxOiNacNuwpNfoc3ufpIg6B\n9WSwXYJua7JavKkFkrCSGRNMjiJXKuc7fICRIHBlfbagc1SNp52cgJXQ1luO\n7ZRsFEfDZO/qKUt55ZnzBRvToDuMEpJTtLpoiJYR8j9sJFHHHmqVS2bXxXoP\n+/dbKNuHRoHrcrpGkei+zDEv881PiUQR5Maoe7HnCatiZKwLn6gu8H57P9xE\nFr/ljXSML5s6a2pNBbRoKQEff9xgLAYVsfb9RibOp2smLauxXLPH8Kpaur0V\nXN0Dy7Ki6IMTTT/4grZL6OR4ZsjRKOta4mibhi/a45JPYVEfN/lykmRNaPzo\ntUPJuQk7omj7Cb8WTOBYuJPxEYyy5vDmnZnoTZnmFK5c8yCLrModL6Q8rAMk\ncxFTbebEgG77+/uysYDrBzZFPSiU9TPsOSbXcUwSZamRA9EW4G6pdQ8hXdBU\nvlHfjOcOyBPU42ykhfQs9rSF1m5Sh0cmlMuoFqxTWR242R5XZ1FCZqckGAcx\neQWgnv2mC9sgdKmr17s35xa9GKGG17UAOS8xNmQV/Nehu9PsR0V4vH9bOr0U\nOiJ6\r\n=coGN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCgP5oMXO+xPwuuQTadg1f5hK4rYuNMSB0/5zRMYM3vmAIgC9CFQnE7TmQjWjjhGhTBLFKSJCYjJjnZWUrpAeyyHic="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.de"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.12.3_1599153171573_0.3034540880373129"},"_hasShrinkwrap":false},"3.13.0":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.13.0","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"linebreak-style":["warn","unix"],"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none","arrowParens":"avoid"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"*"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.2","@feathersjs/commons":"^4.5.3","@feathersjs/errors":"^4.5.3","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.150","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.1.0","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.4","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.4","@feathersjs/feathers":"^4.5.3","@feathersjs/rest-client":"^4.5.4","@feathersjs/socketio-client":"^4.5.4","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@typescript-eslint/eslint-plugin":"^2.31.0","@typescript-eslint/parser":"^2.31.0","@vue/composition-api":"^0.6.1","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.2","@vue/test-utils":"^1.0.2","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.1.0","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","cross-env":"^7.0.2","date-fns":"^2.13.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","eslint-plugin-vue":"^6.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.2.2","jsdom-global":"^3.0.2","mocha":"^7.1.2","omit-deep-lodash":"^1.1.4","prettier":"^2.0.5","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.3","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.10.1","typescript":"^3.8.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.4.1","vuepress-theme-default-prefers-color-scheme":"^1.0.7","vuex":"^3.3.0"},"gitHead":"c75b3e457851f434697676a3000b1a0c870d7773","_id":"feathers-vuex@3.13.0","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-1GxTrFpfQ/FtN6q1t7Xtf0pVGkpEU7BLNOrRmFsbRvVEkC6tbJHpfgkrI3EUpjDHcC50199X5tpGA8JnUyNmwA==","shasum":"f7d991ecd411320ec90527253b45d2a5a6e1f9cf","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.13.0.tgz","fileCount":244,"unpackedSize":2909419,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfezE9CRA9TVsSAnZWagAA+jsP/3aqvYizgB71LJUDvROs\nz+4g8dnn1mDHoWYRRsHGLPF1GXnwb1ce99j5kUYYRBl5mq45RgMRt9r9FejA\nIR4qKgpvGlcpz0KBLXUC0jJ124GVNStjutLzbzKPaxd+m2Isl69ce7RHScpC\noTk8gGUHOEXF4RctXwNZvZeoe1cGwxX+po34UqnemOqjEEI58oMz5SZlU6Rl\ndCrS6MzEM8+olS6Df4zEN176xkBojbPRy/hb9psJlB+x5D6NhgcDZ4WtxYmq\nAbwLOICqcnBL3f7kIpvIFIbIu3ECLjB79t71N9e93/RBj+l63tW6tdLOk8zs\n0VJV0djDyJqOh53MOQwzMcF1S4gqM1HJXl4h/uiAckmBrwS+rQKQ2A+2LCcq\nWY3IcnVgYE1qKEExkAeGGN6Kwpv1OLhSc9ZJxMsJdP4+riv2evKmmmpv/tS6\n+WvipWR3Dl/YkGhtKd4doS6HCgDUCTqDjdNsgtHTM5JZTGGmyH3tUgUlrRDb\n35Ooh+gn3kFTbW3PBb97Qe4dGVWckod4ZaE2CHU7KJ5B3cAPQHR+lLvuHeMB\nxbmiXi5MN4cs/TGekIeSudtiX++LM3tIAGSMjDt6naaTLaIVlKemn9InrW6X\n14yVVPAEycQTjLqn8ndvDqpWnNFkDILmvFTVBOnyPFBiEiULkrIcxhUdm4Ga\n694f\r\n=bY7B\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHJAUJKqPGRJ5xIMbccaA+rVwj5onsQDkFsdjjqNnchuAiBqQtmA0DfeNVdD1YTXDiiNkMyHO+X9nm53rPT6AUwsKA=="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.com"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.13.0_1601909052500_0.011442295394936908"},"_hasShrinkwrap":false},"3.14.0":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.14.0","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"linebreak-style":["warn","unix"],"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none","arrowParens":"avoid"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"*"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.2","@feathersjs/commons":"^4.5.3","@feathersjs/errors":"^4.5.3","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.150","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.1.0","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.4","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.4","@feathersjs/feathers":"^4.5.3","@feathersjs/rest-client":"^4.5.4","@feathersjs/socketio-client":"^4.5.4","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@typescript-eslint/eslint-plugin":"^2.31.0","@typescript-eslint/parser":"^2.31.0","@vue/composition-api":"^0.6.1","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.2","@vue/test-utils":"^1.0.2","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.1.0","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","cross-env":"^7.0.2","date-fns":"^2.13.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","eslint-plugin-vue":"^6.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.2.2","jsdom-global":"^3.0.2","mocha":"^7.1.2","omit-deep-lodash":"^1.1.4","prettier":"^2.0.5","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.3","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.10.1","typescript":"^3.8.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.4.1","vuepress-theme-default-prefers-color-scheme":"^1.0.7","vuex":"^3.3.0"},"gitHead":"528e04e77f44a40a93b40062d7741a2d6662e836","_id":"feathers-vuex@3.14.0","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-YS0+sXi+akvfU9oHUqrsY3ubzNDwXbDV9Td0zrG+qMqCn9smWMxuZWsOwKmH/MCQWoKuVyHeXZXiXBLA0peqiw==","shasum":"abea84fc07c20d7675784d9fd581273803daae4c","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.14.0.tgz","fileCount":247,"unpackedSize":2918438,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfm04RCRA9TVsSAnZWagAAJboQAIZSpb59jURpfJkojuD/\nUwievC/1L2w1biQrSiAHfvNQFRi/qQ36iqMpzBrdJtCOe5SpukG9x86ADoTj\n5tldIsQjdcRCY2gs7cUXPnXn7hfCzN5bHiaPgeh+TyLyzOmWcbhKIhVEoh8i\ngJwf0NuyUU14P7mDsdE8P+MGZgbbS/DJuQxI2nmgMYLODDlHZQz0G8E5n2xP\nMzIqqW+9gDwQpZjxpidn+3kb4tQoXZJlUZET7dL3vqrngRLC49WHHCUlZth/\nhBk1ApWYwAwuB2Px+6QdeBfOpKzWvcU9FzwEemtGo/KaK/oS9yiEGLfzRfQC\nXNKt/U7tT3Wp91C9Np4MG352XGzDqSn31g4YdGenKEjSJmqukYgWR+cwkg33\nN6mFxRJ81CyugGFEtURiVuzZ1kA+ikZuvBtK+XqpwDmF9qGeCeFCU4WJ+YRs\n6bYMUesGPvOVmLLyDvMriioziHEii4EnQ7HwX0zmuh+6dTSQatEHsdwZTR2c\nWmBc95rmBjzBgyiwIdiBx5OFL2l5489hUlVVEjQ1sTvhT+fMcYpDu+fQZvJW\n50Ab6EQJWMDeOTmDFBrEsJpF+7+8e395ZBlyULvC1adn/qPGGNEZwDcYPfGS\nBImRBZ3Kodv9jCWXvosCDUWxIlw8bIwcu2g3Oq0EzuPIA2AgMs+mIrabc5qE\nIB7N\r\n=jW49\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFuX+rnQv/9akPJl/Pra5oll34rtu2TjHEmwuENTfmRoAiEAgHr4QF2F2KJISimx4PhWMJBSbAFvPF4JBmxXGPp8IAY="}]},"maintainers":[{"name":"daffl","email":"daff@neyeon.com"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.14.0_1604013584378_0.6198740171341226"},"_hasShrinkwrap":false},"3.15.0":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.15.0","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"linebreak-style":["warn","unix"],"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none","arrowParens":"avoid"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"*"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.2","@feathersjs/commons":"^4.5.3","@feathersjs/errors":"^4.5.3","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.150","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.1.0","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.4","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.4","@feathersjs/feathers":"^4.5.3","@feathersjs/rest-client":"^4.5.4","@feathersjs/socketio-client":"^4.5.4","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@typescript-eslint/eslint-plugin":"^2.31.0","@typescript-eslint/parser":"^2.31.0","@vue/composition-api":"^0.6.1","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.2","@vue/test-utils":"^1.0.2","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.1.0","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","cross-env":"^7.0.2","date-fns":"^2.13.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","eslint-plugin-vue":"^6.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.2.2","jsdom-global":"^3.0.2","mocha":"^7.1.2","omit-deep-lodash":"^1.1.4","prettier":"^2.0.5","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.3","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.10.1","typescript":"^3.8.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.4.1","vuepress-theme-default-prefers-color-scheme":"^1.0.7","vuex":"^3.3.0"},"gitHead":"9a83f0e2d068c8c0a55e8ac40e7b204360d1c7de","_id":"feathers-vuex@3.15.0","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-sT/bMjvaU1gvnGB6FTerzJVolG5emUbzWSU/guCkOY4jCyMQnxLtWtrXVFHitvSLuYkpHgT6eZYDDBYHQ3HLXg==","shasum":"8588d2d5242b57aa4f734ae37d9da35ba6c3e562","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.15.0.tgz","fileCount":124,"unpackedSize":748345,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfyXw8CRA9TVsSAnZWagAAl08P/2B690t/i3H+HT+zRYIT\nt00H9JW2rG6O9H5WAypxbx0UscmskwAwnx2QwmsXQhosljDJsk3RDITbMDeU\n2lovVXi6E9Z95X3rhM/9DTUg5X7g5KuKxse3g3SHdAh7MwN+pWkgec4ZVlsw\nV/smMj22SGRJ16PBneeCJbceSIDPLbXyqMBBRgjG90t0AiLiqViZiFe4ZNYt\neP8q1+uVr8kXaV47RyTXmXI8nR+RPAzAc5p1w4Lnq1G7FPfXdDKBer9Sfzsz\nKfp/0o+fzTAytH4YBRky2cOka5Nga257X4zjp5pwuUwqrEu4gk8BX2S3vMPJ\nmhigGZaRl97AsK4SU4XSrrNpej9NGuC9J+Z8tCCg+IB+GGmpYPZKk+XbJjNL\nRpYiV1PK26flkssGPJPBabRkWEJE6QqpQwqwE0iJvQMBd30jTob4rLRWA0WZ\n+M1jv2fe1i1vfUZ0Md0vc4SEOwwRGn5niPMnP3qcMhpnOGAE0iWwK/2L9VnZ\nzMZzfKlPY3ZV3iaoqUOmt3dX7eiJPpHMv4P1dhf6UT5jdspOB0zNnB5OKXDi\nkk0LrI6AzkF0DslSJJUkn80xDDORI6Pv5UjLbehiJCHh8LnTdNOLEskAzgSY\nTY1zk13wHERD0v7qhSXQ/KD0BBbuj8YC86y5l9jWNcclsR7O13EhEVyu3nZ0\nfpx1\r\n=laAa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDxzCSELclBUU5yAcINStkJSVsmPB9OH88yIIpjN/blsQIgM3vVplVTpo83NIWyGKcKkAb39JJrmMijA56ERlOjTN8="}]},"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"maintainers":[{"name":"daffl","email":"daff@neyeon.com"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.15.0_1607040060066_0.4961062419923363"},"_hasShrinkwrap":false},"3.16.0-pre.1":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.16.0-pre.1","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"linebreak-style":["warn","unix"],"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none","arrowParens":"avoid"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"^1.0.0-beta.1","vue":"^2.0.0 || >=3.0.3"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.2","@feathersjs/commons":"^4.5.3","@feathersjs/errors":"^4.5.3","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.150","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.1.0","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4","vue-demi":"latest"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.4","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.4","@feathersjs/feathers":"^4.5.3","@feathersjs/rest-client":"^4.5.4","@feathersjs/socketio-client":"^4.5.4","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@typescript-eslint/eslint-plugin":"^2.31.0","@typescript-eslint/parser":"^2.31.0","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.2","@vue/test-utils":"^1.0.2","axios":"^0.19.2","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.1.0","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","cross-env":"^7.0.2","date-fns":"^2.13.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","eslint-plugin-vue":"^6.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.2.2","jsdom-global":"^3.0.2","mocha":"^7.1.2","omit-deep-lodash":"^1.1.4","prettier":"^2.0.5","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.3","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.10.1","typescript":"^3.8.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.4.1","vuepress-theme-default-prefers-color-scheme":"^1.0.7","vuex":"^3.3.0"},"readme":"# Feathers-Vuex\n\n[![Build Status](https://travis-ci.org/feathersjs-ecosystem/feathers-vuex.png?branch=master)](https://travis-ci.org/feathersjs-ecosystem/feathers-vuex)\n[![Dependency Status](https://img.shields.io/david/feathersjs-ecosystem/feathers-vuex.svg?style=flat-square)](https://david-dm.org/feathersjs-ecosystem/feathers-vuex)\n[![Download Status](https://img.shields.io/npm/dm/feathers-vuex.svg?style=flat-square)](https://www.npmjs.com/package/feathers-vuex)\n[![Greenkeeper badge](https://badges.greenkeeper.io/feathersjs-ecosystem/feathers-vuex.svg)](https://greenkeeper.io/)\n\n`Feathers-Vuex` is a first class integration of FeathersJS and Vuex. It implements many Redux best practices under the hood, eliminates _a lot_ of boilerplate code with flexible data modeling, and still allows you to easily customize the Vuex store.\n\n![feathers-vuex service logo](./service-logo.png)\n\n## Demo & Documentation\n\n[Demo](https://codesandbox.io/s/xk52mqm7o)\n\nSee [https://vuex.feathersjs.com](https://vuex.feathersjs.com) for full documentation.\n\n## Installation\n\n```bash\nnpm install feathers-vuex --save\n```\n\n```bash\nyarn add feathers-vuex\n```\n\nIMPORTANT: Feathers-Vuex is (and requires to be) published in ES6 format for full compatibility with JS classes. If your project uses Babel, it must be configured properly. See the [Project Configuration](https://vuex.feathersjs.com/getting-started.html#project-configuration) section for more information.\n\n## Contributing\n\nThis repo is pre-configured to work with the Visual Studio Code debugger. After running `yarn install`, use the \"Mocha Tests\" debug script for a smooth debugging experience.\n\n## License\n\nCopyright (c) Forever and Ever, or at least the current year.\n\nLicensed under the [MIT license](https://github.com/feathersjs-ecosystem/feathers-vuex/blob/master/LICENSE).\n","readmeFilename":"README.md","gitHead":"717a95fdce315cf31df0bd0fde9510ed533a96d2","_id":"feathers-vuex@3.16.0-pre.1","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-MM6RE38teHuIzPgUqu/z18k9Aw1v8h3NNKouvHDwHl/Y182SmqZ/wuimQgYw5VcpWA+9vAK/PxL1JW2VbPe05Q==","shasum":"72ba787443439c2264c223a92363e3eeedaf01a8","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.16.0-pre.1.tgz","fileCount":124,"unpackedSize":747419,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfyYEmCRA9TVsSAnZWagAAI0sQAIPFx+5mXmkmNUt1AvEX\nOYZpq3jjSlGpFJ1/X/D0sWvKHjfgJrI5vealwHHfPuBk8lnSae+7jU8/UnTG\nns/I5S5xKa7AUyWlQ8rHeRYkcjJHPyWPdpdD0DXlQPe/RyoLie3TVm59HGQ/\nFCNaIEOhVbPQcAwTkMfg4uxTTNLUNeAhu7q/IQTf736VXffBh0mob/cU/xaw\n8sibmv7/n1g9bFoqh+Mlr7LlBFQsxn2Arivbkw6wd4mm2ipapobtZVBZyjoU\nGlgiZzlXIL6JuO73ksjhIc7kRSCgwYxyoaQ0V2FSVH5mpVprPm9mFoDe4poF\nFkKpBkaHQXVeYT13uxfmKvKu+BCsJ1CL/diarnspROnkQOrHEPQux6zdvryN\niKOjMRua7oXvCuWF9ik7PhufLZQMvzlijJawGJdOBEjI3vDLG1bMgLWjaKr+\nGlPy9+6wIMHQ6045qWTvweGBosNaGmga0Kt5ZcEH7kxQl5mg5zYw7fN3d6P4\nF3BfpTnoH8lFVXua5INhMovZ5extu3NMZ7D657arTTRtIdAsy/K/ZTctYoVr\nMWI2cc6PaaPdkzL1gcpxku/qP7MkXNqTW55NejznL6a7kOI4iSK0HHkUhVkz\njWGe3SbwuhZluWYCPYp1BAVioccuzkGVtzqdy2mhk2dCpfb4X4RZYC960AqP\nv2B0\r\n=3XvC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDFB2C5zkiE9tCFceE7EgMx8uSlZtJ5L9ldYyTIujQNvAiBkYqciK2qabGQ6Y0xlnKL/OXkzxGJFXF1m22eCkZ9Odg=="}]},"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"maintainers":[{"name":"daffl","email":"daff@neyeon.com"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.16.0-pre.1_1607041318423_0.7020238197198669"},"_hasShrinkwrap":false},"4.0.1-pre.3":{"name":"feathers-vuex","description":"FeathersJS, Vue 2, and Nuxt for the artisan developer","version":"4.0.1-pre.3","homepage":"https:vuex.feathersjs.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"scripts":{"release:pre":"npm version prerelease && npm publish --access public --tag next","prepublish":"npm run compile","compile":"shx rm -rf dist/ && tsc","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"dependencies":{"@feathersjs/vuex-commons":"^0.0.2-pre.4","@types/feathersjs__feathers":"^3.1.5","fast-copy":"^2.1.0","serialize-error":"^7.0.1"},"peerDependencies":{"@vue/composition-api":"^1.0.0-beta.1","vue":"^2.0.0"},"devDependencies":{"shx":"^0.3.2"},"readme":"ERROR: No README data found!","_id":"feathers-vuex@4.0.1-pre.3","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-IIYsbzIGa2cJbBatx2TlYiDEKgwkgaIJuXZz5OS+6l8//TAava14iHbCPUuWD9YpiAN43GiuqiESLfRMDXpN+w==","shasum":"6577c865da633f8e18b02a57f3f68fa953078575","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-4.0.1-pre.3.tgz","fileCount":17,"unpackedSize":64113,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfyuRwCRA9TVsSAnZWagAA9WQP/jJcGTqGpceqBk5N7cKg\nG/0a4IRcjIYSCvIz3wZxIXBZi2A4ckMNoNigskOBg+BVy+NRxg2n8jsqlCR0\nV6N12ErgmzNwX+OIHQzQPSgkgmzKiQcftcC5G/t7I37npJcYOBq+celtTpqL\niYAljThz91fWAt3Z13uCH1g7A5hlhjhYPvXt1BmGMx0FODth+eH7VrPllgzQ\nC7uQ7qySOS0JjoeceUCmw0mD5Ch7NAyg3flmgGivtpWL0ZMUroVHRO//yOdf\n+J1jDUCpFpHdymnD2qMwRtzSxMdc50T/3loLZwAjuANncuij6zHRa2oRLlSG\n8RgoBDCpu8D75z6QTLdQMXjsZN9PMspfKpoMqBC0pI58FLxYLndXISn+SHNZ\nxHgrEEddGbrlrBiRAIBfO1anxWyGp2I5sJcF79mFriL1Bsahx+F+9CUVQYeG\nnG8cJhZOb6LgSoYxSYl93hnGusvtNYx8VIiM46IOQNN1vtYJZgs3hB+ZFNJt\nGjuLMnJwz/JQvyanoMUbf4pzeTw3B/PAz1ffsmj28jCxRyepBopj6iLGUpBx\nWwwEAkd33tkZehW0CdsntlOm8rpy9WBz/cHPTlJIw6If8wJ7a9oUvFBspt/E\n0iGuMdAYAy5jT1bWMInsmw0uA8lMHeY6citrzMSck2ixr70QPz2KUeeWFWmc\nXKYR\r\n=dIIL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDyeoNQ1nIhgIXXedOpnKe36zuMf9zGrUpArCSneSEWvwIhAMRXkED6OoJRgMGAowoFPJHJUvhVXexvVvG/+UPCdSIW"}]},"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"directories":{},"maintainers":[{"name":"daffl","email":"daff@neyeon.com"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_4.0.1-pre.3_1607132271620_0.426604245261166"},"_hasShrinkwrap":false},"4.0.1-pre.4":{"name":"feathers-vuex","description":"FeathersJS, Vue 2, and Nuxt for the artisan developer","version":"4.0.1-pre.4","homepage":"https:vuex.feathersjs.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"scripts":{"release:pre":"npm version prerelease && npm publish --access public --tag next","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","compile":"shx rm -rf dist/ && tsc","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"dependencies":{"@feathersjs/vuex-commons":"^0.0.2-pre.4","@types/feathersjs__feathers":"^3.1.5","fast-copy":"^2.1.0","serialize-error":"^7.0.1"},"peerDependencies":{"@vue/composition-api":"^1.0.0-beta.1","vue":"^2.0.0"},"devDependencies":{"shx":"^0.3.2"},"readme":"ERROR: No README data found!","_id":"feathers-vuex@4.0.1-pre.4","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-HmsreBlo+LVaoar6KNCBZnRxbDJfww++DIZyjxDw/TqskwCBd3E7ae9BqhpbPvhciARiaZ6rmG0f+tNNnwDDVw==","shasum":"8035b6e8908ebef96adb630db2c58bb905d4bc64","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-4.0.1-pre.4.tgz","fileCount":17,"unpackedSize":64173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfyvX5CRA9TVsSAnZWagAAyasP/iSioksZhelNWH/3UtRo\nO9dauDjSyVSrfUwVvUwXMbbJbXzU3p9fmd02xx/ZZF18791SarBz+/SQab32\njx9fEtX14eyTD0Sz43Z8gic5lixEHcanwRKnAJUGGqDMCtNicFb4qYpHX/Pc\n0O+fXOQolJAsfaGlO/A8HDse0kCXnrBWwwAOIAdP0iOOMfBFes936FHrGiDh\nWCa+5nQ6P0ckO6tLgWXANvAUXjfgIuAB5pDcq8wYOhAq6Fzv69NLZZ2PTZTF\nft/eOnq/Wg8OBV2meD9gDfUPiq2J2sekdDudZtgfeHSHU3ufazzwnLf25KTe\nQXLCLCYqt5FudiTYImC8H/6+1/uAVxIq0Ry+4osIB2Usf3xsMvcKjACcvD5z\n65Dcrp8dnml2kSpwNpogAqVZA4174XhgpziXTRpngApaktX9utWnhfxIN4+L\n6WCQ9yMg76nTPDZTAvHhFdaoa6T08GalzZtp8uMdbh20TKpW73pYlPmqhFxk\n+bPE58a4EZGgn4QFBmqUJ+t4xziVroyGvrx8/J9i6hwJgZaFBISIri54ltdF\nelDQmlpyuTUYsWTOLvVESTtqVU1p7MdAKalLinZiJKSMibSTubCSBAQyjCC8\n/wzbHU167MimBd60dUkHXB53FxwLzoXYo3PKM+XXjNNWEwZc+rRNx5k2huPb\n/Kyd\r\n=Ynl/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDW+eGxj+1UmrmzTf5fTL7d13rupneORAXGNSt70jTq8AiBocZF8sRGxtvAvks3t8nMEbHt5ir0+IOZ2uYgioG+JAw=="}]},"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"directories":{},"maintainers":[{"name":"daffl","email":"daff@neyeon.com"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_4.0.1-pre.4_1607136760879_0.5336956416024055"},"_hasShrinkwrap":false},"4.0.1-pre.6":{"name":"feathers-vuex","description":"FeathersJS, Vue 2, and Nuxt for the artisan developer","version":"4.0.1-pre.6","homepage":"https:vuex.feathersjs.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"scripts":{"release:pre":"npm version prerelease && npm publish --access public --tag next","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","compile":"shx rm -rf dist/ && tsc","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"dependencies":{"@feathersjs/vuex-commons":"^0.0.2-pre.7","@types/feathersjs__feathers":"^3.1.7","fast-copy":"^2.1.0","serialize-error":"^7.0.1"},"peerDependencies":{"@vue/composition-api":"^1.0.0-beta.20","vue":"^2.6.12"},"devDependencies":{"shx":"^0.3.3"},"gitHead":"dd042a9f2c54a5bd931b234b67a403dbcaac5957","readme":"ERROR: No README data found!","_id":"feathers-vuex@4.0.1-pre.6","_nodeVersion":"14.15.0","_npmVersion":"lerna/3.22.1/node@v14.15.0+x64 (darwin)","dist":{"integrity":"sha512-K85ykp6g+YQ9JHzb+5JXxtXUM11yzweZYipndhl8muHw1TiU9g/PdqGAx1WrrpWGReZEmx1ibiHRNkcMwQVL4w==","shasum":"3b166b9ca28bed6c10c34a21645499e5187c248b","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-4.0.1-pre.6.tgz","fileCount":17,"unpackedSize":64750,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfywIQCRA9TVsSAnZWagAAaNwP/Ryw80grArf6WBoP6SNJ\nbID9ng3vjCFuwxNs/IUe8iKxWoQohOqiYilejifqbkKPLGwPLv5/UKzS0mF7\nQFVoXLXyGg6HbMBCPLFMPbqXhVEj8MVBAlIEx4mKWQepHFqfw6XwV/6Wpvxp\nodebic6q4L5TD+pW1uTeDIDl94uZtTEP6pNV3YdFjpIRTZ1enG7hUYRN1u6D\ng4WZaSsVdpXXy/DGxdRYw1QqHMs4G1OxHsG0DlLPSdnwrWR4SXs9h90a+x5s\n/YIyi6K0O7vpFOmlXkPKkRw5d0Ac1/5ZmEIYCzrsrNJubXKxPNue561p2avY\n1Ar16GzQ2KFXqAaymfPaKqlQINB3lR/I6BwZjVGJ25sLd4I3PlEHDnXyAvzI\nWKMxNQ4aCsRkEh9zoTdzuGObmALMYvOkX+tyUFVjrGCpgMb41yTyhpzQczVG\nU4wfZ210gxBlhI20uyqFQHD+VRWPjccDC35lHt1YS1bVNhBViueQ/LaMmFYC\nUh+lWtPVrB/gz5qNOHy97YrHMm8AnrCukf0rcP31eXdLlSa8LabaLe7FUT83\n/ym7BBaXcvEtXdwMdKocZNqMpIZKr254g2NXHK/YaSVQwXD1EbZSYmvO192V\nX709aZHRkjNLX7GhXz7UicSF/B7Cm3BWPrbTYFd21RuP11NfXinz+bOq4dvl\njo6E\r\n=53IM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFzJoJRcA34CGg1Lb4rspzZ5NYmgYfWF5lAIKACEp8/zAiB+VV4VasHFDLAzdQ8KgsNekaTP5uWndRGAEoTOXilXFQ=="}]},"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"directories":{},"maintainers":[{"name":"daffl","email":"daff@neyeon.com"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_4.0.1-pre.6_1607139855752_0.7909281887621251"},"_hasShrinkwrap":false},"4.0.1-pre.7":{"name":"feathers-vuex","description":"FeathersJS, Vue 2, and Nuxt for the artisan developer","version":"4.0.1-pre.7","homepage":"https:vuex.feathersjs.com","main":"dist/","module":"dist/","types":"dist/","publishConfig":{"access":"public"},"keywords":["vue","vuex","feathers-vuex","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"scripts":{"release:pre":"npm version prerelease && npm publish --access public --tag next","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","compile":"shx rm -rf dist/ && tsc","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"dependencies":{"@feathersjs/vuex-commons":"^0.0.2-pre.8","@types/feathersjs__feathers":"^3.1.7","fast-copy":"^2.1.0","serialize-error":"^7.0.1"},"peerDependencies":{"@vue/composition-api":"^1.0.0-beta.20","vue":"^2.6.12"},"devDependencies":{"shx":"^0.3.3"},"gitHead":"5134c417d6658b763e0655cc48c344d86aaf2862","readme":"ERROR: No README data found!","_id":"feathers-vuex@4.0.1-pre.7","_nodeVersion":"14.15.0","_npmVersion":"lerna/3.22.1/node@v14.15.0+x64 (darwin)","dist":{"integrity":"sha512-fdTfSiXbkSw/Hi099kNbs6hu5mTAOkQyFLML177vy9p7r3fqoLNgpEEm8W1CWje+UgHBxnwgHuYSpuvcq8RgtA==","shasum":"35c2ab9292454488567ece897f2221aea87efda2","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-4.0.1-pre.7.tgz","fileCount":17,"unpackedSize":64832,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfywPkCRA9TVsSAnZWagAA53IQAINA4w63R47FhiqhLeAD\nID6YDffIO25wF97O46CvobeZCaV08qCFIvwwY6QnsownWGIIE+6t8CksatRn\ng1hZ9ELM8CDsFD1Fzl343FKwW3e2qOc/viS58b5zFsvgay09jZRU30qXwxWW\nPNMniMHZkmzhFWaMVAPVPkVIduDyKQEYo4bxlhZ8a8PhH5obwiyqDh5JLgBy\nH6KrK4Ne4BQYSJfsAcHebm7HWwZN6UDELnEA3Cg5FZP0BcCfVeF9nZH4kNmI\n2rySO/XRL1MR1GssWe/kXJq4RbpsTou/zvfcE1/GZnIvTEm/6kwNrJYELSUz\nTGDqrl7Zwt0/piSRqKEbOi72x6RtQyqxCsnW04bJJF5hoyppz52cAw0vpQhc\nQ9nOJ0dEYNbYcd4CqcrLLlckvx+6k29rfaYhqKuo5rBN7dewoIiZr3O+ozRc\nzj+eLDHVQp9wuQYENdPz5M7PfIbLPCYwHrnWFPz3g1La4SgJlI/u+oMzEUn0\nbUxNnnIzXt6jCzqM0ceVYR5HJHt3esvTqptGM8yPdZVTgVomOiO0F16Yfppx\n1lrTB107x6Lsv+G2zjkfRWfOU0sYnFob3UozGLaq9bF8CmC9TBJ0Xt8HNWZJ\n+Zdqz7QfqOpTefMQfot5kEn/egj+CMrpXegcP2C5YOelIw7Pb8J61TwGzcqh\nEK90\r\n=tQ3X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDWlFZsijdDOf5PBGIfOFWHcOtH5hlrTONJkvv7Q4Xy5AiBipZVgIZoJs1A6rQ1sOrk8ftOcgAi5nhrZtXxpqRZxLQ=="}]},"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"directories":{},"maintainers":[{"name":"daffl","email":"daff@neyeon.com"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_4.0.1-pre.7_1607140323542_0.7782883664138756"},"_hasShrinkwrap":false},"4.0.1-pre.8":{"name":"feathers-vuex","description":"FeathersJS, Vue 2, and Nuxt for the artisan developer","version":"4.0.1-pre.8","homepage":"https:vuex.feathersjs.com","main":"dist/","module":"dist/","types":"dist/","publishConfig":{"access":"public"},"keywords":["vue","vuex","feathers-vuex","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"scripts":{"release:pre":"npm version prerelease && npm publish --access public --tag next","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","compile":"shx rm -rf dist/ && tsc","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"dependencies":{"@feathersjs/vuex-commons":"^0.0.2-pre.9","@types/feathersjs__feathers":"^3.1.7","fast-copy":"^2.1.0","serialize-error":"^7.0.1"},"peerDependencies":{"@vue/composition-api":"^1.0.0-beta.20","vue":"^2.6.12"},"devDependencies":{"shx":"^0.3.3"},"gitHead":"55309142772b3d08b326f897f07145f245d92e2e","readme":"ERROR: No README data found!","_id":"feathers-vuex@4.0.1-pre.8","_nodeVersion":"14.15.0","_npmVersion":"lerna/3.22.1/node@v14.15.0+x64 (darwin)","dist":{"integrity":"sha512-ekRcPlwQbePvUKGyPr2sQsHMH1ibvljoKBhhgsG3AvyilxQnqHrNjEud9pyKCD5iB0AtJyQP5p3ewlc761wsMQ==","shasum":"4becfe0aab9e625b458c99b57ed7aa4c11ba5f3f","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-4.0.1-pre.8.tgz","fileCount":17,"unpackedSize":65240,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfywWLCRA9TVsSAnZWagAAvf4QAJhdT13dd/M2pETauXz/\nwAU9TBgu7Vobemy7uvYB56pPFpwyx3B3aKSMbBYN+NL4l1AaTkVeGZaUGyy4\nYEVYl649CNVE2so8Scx/R1PYDDpVWYYkf9RFTi5Itpjeah/5SWCdFRv8jLWK\naV4n7PEShPqAKHnSU1DfMwoizYASlI3SPAUbNXtsEAp70SB0/GuRoXVVwpNU\nHlsezjnNTrTpP4LaHRU6h0cvIJMTJKqWwn69eI+HmzCyT/TvOFRciOCFRbN1\n9QxygXG98e8t1sCUxt8k8PHxzF9V8atg4V33XqeOdKnyhmDe7B/J1tioOS6a\nOZO5iXKpJwlnK4HLXp/YSq8WnhTr6llBi23B12S0Xyl0x4d1QVFOSN0gN7sH\nnu8vk96EzaEGWdZBdV7rLHLRvEi9Vwsw+jE3skzT9YcfmiZpVjd86Hg/uUa+\nrfF9pPfutBIwmxzqc3Z7lleb8aTQBZbwwFXg4NUkD0QOvX/j+oFXcDZXs/Z0\noxkEz9Aqx9OI+Htwt9FNVPcLn+Axl7Gn44upwDklskKAwPeyzFp/l6LP3h20\nF729/160OhJPslB0Ns/H5K958Z1t4haFyWVfCzzDaGw4VnMNgf866GVfrGtS\nKQoDIcJgQBs19n5B2WBq38TLNpoXf1E+f3tqB/BJ18NFS2fXxPtGkHkyCjD5\nnsF2\r\n=0WKG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHm+2554uAZSVLQFsBgCuAfDpiG8WPind1qBmgfo7k/CAiEA7TacGNpn9/H40QhEXNvGuOGzyWmUcjxMBn68S68qZ3Q="}]},"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"directories":{},"maintainers":[{"name":"daffl","email":"daff@neyeon.com"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_4.0.1-pre.8_1607140747053_0.6078797039544235"},"_hasShrinkwrap":false},"4.0.1-pre.9":{"name":"feathers-vuex","description":"FeathersJS, Vue 2, and Nuxt for the artisan developer","version":"4.0.1-pre.9","homepage":"https:vuex.feathersjs.com","main":"dist/","module":"dist/","types":"dist/","publishConfig":{"access":"public"},"keywords":["vue","vuex","feathers-vuex","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"scripts":{"release:pre":"npm version prerelease && npm publish --access public --tag next","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","compile":"shx rm -rf dist/ && tsc","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"dependencies":{"@feathersjs/vuex-commons":"^0.0.2-pre.9","@types/feathersjs__feathers":"^3.1.7","fast-copy":"^2.1.0","serialize-error":"^7.0.1"},"peerDependencies":{"@vue/composition-api":"^1.0.0-beta.20","vue":"^2.6.12"},"devDependencies":{"shx":"^0.3.3"},"gitHead":"1a8cc4c3c677a1d8d0761a46b016f5162d9cfbf5","readme":"ERROR: No README data found!","_id":"feathers-vuex@4.0.1-pre.9","_nodeVersion":"14.15.0","_npmVersion":"lerna/3.22.1/node@v14.15.0+x64 (darwin)","dist":{"integrity":"sha512-275QRw7sgz67Vk002PP1vmMoX92bMJdK9b6x4JEeHTxvU8XeerzyMUuHydWjmHvmeTM5iM5UPOq7QrhWWU22yA==","shasum":"96c16d729d2ed6d463b73962e7848ddd3094c661","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-4.0.1-pre.9.tgz","fileCount":17,"unpackedSize":65350,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfywnmCRA9TVsSAnZWagAAFhIP/3F+wTpj+/7Yuo69pmph\n4VkFeAFpuoDKySimtFf7oIgMAhbt07a58c/FU5RYIRw51uLHS8m853SKiX05\nolOXxO7Kuuelsj4C24qbWE3XyPKsC5UqKjNVvjI6acTGzS9nGZe5e9ZZsMGP\nwwAiCg50ie9gr0uyA2PoIlv7ZWeSWaJ9sgHxQoMW5K589AvNG6RdXPnPFR/F\nGcF12nIaWiNfUf3kJHgdqFv+bDvKJOBTQ2xiUKK/Vw9A2JlQNHsPWC8bG+LB\nQO/B+gmCDw2idAcl0+zfL0o+N6ABZU12vnqq0Q2WZm2KYV/J/RBHQriYc3Z7\n0w0BCZw+T9Aga9CdYKOmpfuEspBXW1kPkrgFh29CKQZYSgeST1E5QdQoKBX9\njFHD6tSLQWoiQh2KFpkbACKeI3d+XVx6KAjv3p/ESK0XY7d12Hh1gHlx7tNB\nHL/7UAQsYsgp/BVMd3rZ5V37fqr3rJQ3BZ955qEPyw90auo08YDnqHpVBBGR\nX8qZtZUoZfU66qrlG5TXBPLAMXZsIF5A+18sDi9wetba8IkMvnOyhvHBttUm\nN597EBqKlD7Gv7bqVdTs0EUi0x6p7/pfM0NDJpx6KTuLBCGou1SSgsZIXQGw\np49KKwBRMIjz9XgL3N2/a4G7CMN8hHk47kuHlTaD/MQMqDSuPCWdxgg+Tr0w\nucNw\r\n=7LQs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCO8hk2b5mfQ6yzuEhTes0dxBipvNV5kZFP30W0iGiNtgIgLYahi/a97rWXH5XIl13KS5N9ttWMS6lqOx43wV7Cbrs="}]},"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"directories":{},"maintainers":[{"name":"daffl","email":"daff@neyeon.com"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_4.0.1-pre.9_1607141862225_0.16926875242003736"},"_hasShrinkwrap":false},"4.0.1-pre.10":{"name":"feathers-vuex","description":"FeathersJS, Vue 2, and Nuxt for the artisan developer","version":"4.0.1-pre.10","homepage":"https:vuex.feathersjs.com","main":"dist/","module":"dist/","types":"dist/","publishConfig":{"access":"public"},"keywords":["vue","vuex","feathers-vuex","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"scripts":{"release:pre":"npm version prerelease && npm publish --access public --tag next","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","compile":"shx rm -rf dist/ && tsc","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"dependencies":{"@feathersjs/vuex-commons":"^0.0.2-pre.10","@types/feathersjs__feathers":"^3.1.7","fast-copy":"^2.1.0","serialize-error":"^7.0.1"},"peerDependencies":{"@vue/composition-api":"^1.0.0-beta.20","vue":"^2.6.12"},"devDependencies":{"shx":"^0.3.3"},"gitHead":"d1a8e46d5e526032539ba4118029e4b523460dfd","readme":"ERROR: No README data found!","_id":"feathers-vuex@4.0.1-pre.10","_nodeVersion":"14.15.0","_npmVersion":"lerna/3.22.1/node@v14.15.0+x64 (darwin)","dist":{"integrity":"sha512-QgOr/0zxIuW9TG6rpKkKtatb95vmJIRk/9hDMlIV+wmrb/TNt3kJzsU8nl6oxiJwumBRgbzC0yr9wEDhIm6AsA==","shasum":"7d39002fd3c24908ced417729368270f8af76a75","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-4.0.1-pre.10.tgz","fileCount":17,"unpackedSize":65352,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfyzMDCRA9TVsSAnZWagAAQxUP/jUbUwElmr9swqmusjro\n7rn97/SLQKX5daGnMemcOrTbDlGXsd9rZ0tGliMyEqW7ZQC2T4wIla3+iOH7\ngsmV2ZCXtWE2DJPC02YxTqbJXE2WJOS1uAPFZNeQ1NFeM0Po1pSfAHnoJAxV\nIQGVxFIJ9FuFUc38uIlYXAUhUqnN6zwWk49WCuUCIBBE6PDs4FbwEbpIdt0r\nVsrxAVWyeEG44Lmu9Kd2jLtaaYUR27k8hktT0ej4Pu8lFguFUKaMsh4QrynP\ni1FdMLKjOvz3eahN3okFav28EYkVeSXRbfdRET9wD55ik/a5UU6Rw7swwq2l\n3q4OUHS7fNdeLjb2H57X73YXpSX+Hfc6cp3N76rKoLQ4/PM9w1fnV2lB8Qv3\nf9+73vdRwrJvswwCCp/GK0hF5OyBQmsHHRw4ziWqd/yG9tb15chmiKYqSAOM\nwBLXmFKzGt8Sks4TYyqoSyVQqOn9TrY86yWpdyp7L7JxYUpp9TpVU7GZLAyH\niK42XkFrjSRraiXGS581dShdgpthWiqXcPU0hluManZ/i9sdSGQZdkMJ2JLM\nxJbmZ+z7cB/acfwtprSlLJTgUlbd/Exs48rJZOFKu77twtOFsfdLdR6yi+A+\nUKFt6IPTww9NH0GPeEZB80tlhIHlv/umtgS7LLk+A/qiBNmLCN1f3xmqGSf4\n/H04\r\n=TSrI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAhlspPeM8WCRr3wBu/lSdcf0Q4ZE5wu1pZ5QD1TkuBDAiEAiqL5lHAkiSOxYWkBDqeJCRiDfnKA/za9QXs1RthUXU8="}]},"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"directories":{},"maintainers":[{"name":"daffl","email":"daff@neyeon.com"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_4.0.1-pre.10_1607152387329_0.9534722266565598"},"_hasShrinkwrap":false},"4.0.1-pre.11":{"name":"feathers-vuex","description":"FeathersJS, Vue 2, and Nuxt for the artisan developer","version":"4.0.1-pre.11","homepage":"https:vuex.feathersjs.com","main":"dist/","module":"dist/","types":"dist/","publishConfig":{"access":"public"},"keywords":["vue","vuex","feathers-vuex","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"scripts":{"release:pre":"npm version prerelease && npm publish --access public --tag next","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","compile":"shx rm -rf dist/ && tsc","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"dependencies":{"@feathersjs/vuex-commons":"^0.0.2-pre.11","@types/feathersjs__feathers":"^3.1.7","fast-copy":"^2.1.0","serialize-error":"^7.0.1"},"peerDependencies":{"@vue/composition-api":"^1.0.0-beta.20","vue":"^2.6.12"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.11","@feathersjs/client":"^4.5.11","@feathersjs/feathers":"^4.5.11","@feathersjs/rest-client":"^4.5.11","@feathersjs/socketio-client":"^4.5.11","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@vue/composition-api":"^1.0.0-beta.20","axios":"^0.21.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","cross-env":"^7.0.3","deep-object-diff":"^1.1.0","feathers-memory":"^4.1.0","jsdom":"^16.2.2","jsdom-global":"^3.0.2","mocha":"^8.2.1","shx":"^0.3.3","socket.io-client":"2.3.0","vue":"^2.6.12","vuex":"^3.6.0"},"gitHead":"1ce8fe4343275795491237adddbbdb695e540b18","readme":"ERROR: No README data found!","_id":"feathers-vuex@4.0.1-pre.11","_nodeVersion":"14.15.0","_npmVersion":"lerna/3.22.1/node@v14.15.0+x64 (darwin)","dist":{"integrity":"sha512-ja4dOYSRWQjEzFn/d/skP2CSymaLdRRg119CQYzVV8kDycskqCEd1acVcA1y0Hd/3E2CBUALKjHiBXuSWrpKYw==","shasum":"2d1df9f5dc852103bb2f2e693a8f27641d4af716","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-4.0.1-pre.11.tgz","fileCount":49,"unpackedSize":397589,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8209CRA9TVsSAnZWagAACBoP/RTFHfXAwQPm8AzRc2Cf\n+rJ0fWawICuY3frwefAMdO6xAytGdJRpp5egTelDBXCdLkyEWIkGrd/++bL5\nEe1RYD2EJ2fAmdxjkQq5h4Q6D4dNTbP7gqE9D6ZcORfERouJPzOelWbj8QBP\n0S6yThia4hnoQWqsszjJ3UrwNmvax4s4zNSB9LsqFbg5yAfoauBvUGtgQGr7\netkSdN6eSTYuq2B1p0oG+zzelsC8E9v006FvSxvxDVfGtowuLRnggEh2eafv\nI5C1UfGwNXhsNWYvBW02vr0uewjGcSIHOToNbcuqFirPjWgiAj1hq3VE6xLn\nHe5BuYdy6LPanzss0KEImdFYbxQ86qRhECwS9Ah0pHUcLhT3hMib+WC580Z2\nc/txyDyumvfkE8PKPRZ5W2u5TpfgEippk4xdEPaxz8F83l5F/D2v9I5MBYht\nG+Csef6WGocXyuJih9oPNZHZA+RTebiJ8auFRVz+bPkf/eCw1FUNNE8SorwT\nJDMUYa4vlFZ71Wm2srY4LPFx5sMFhMzRd7QnnIv7FuOicp9uTNWqrdcaeNcw\n1rC7XUj1UHylIiv7pq1/xs5Ce0khgt/66rggXOxPRbt1RimDSrWIhLJkH5XR\n90ppogcKrNVKiuXv1zECEoKLubM6K25wdXm7g31tOxI2eC0svtKsgBfY13/l\nCpdI\r\n=0y8N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDOnzwxQOmd8jlEsvOaMPDL+gUWziXEsT17hlI8Od/qXAiBg3HGufiFnIDSkH9Igw44tEu/a9p5SK+jff2ZkdXbNQw=="}]},"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"directories":{},"maintainers":[{"name":"daffl","email":"daff@neyeon.com"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_4.0.1-pre.11_1609788733333_0.42143612644184225"},"_hasShrinkwrap":false},"3.16.0":{"name":"feathers-vuex","description":"FeathersJS, Vue, and Nuxt for the artisan developer","version":"3.16.0","homepage":"https:feathers-vuex.feathersjs-ecosystem.com","main":"dist/","module":"dist/","types":"dist/","keywords":["vue","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"engines":{"node":">= 4.6.0"},"scripts":{"prepublish":"npm run compile","publish":"git push origin --tags && git push origin","release:pre":"npm version prerelease && npm publish --tag pre","release:patch":"npm version patch && npm publish","release:minor":"npm version minor && npm publish","release:major":"npm version major && npm publish","changelog":"github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"","compile":"shx rm -rf lib/ && tsc && npm run lint-dist","lint-dist":"prettier --write \"dist/**/*.js\"","watch":"shx rm -rf lib/ && babel --watch -d lib/ src/","lint":"standard --fix","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","testee":"testee test/index.html --browsers firefox","start":"npm run compile && node example/app","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"prettier":{"singleQuote":true,"semi":false,"trailingComma":"none","tabWidth":2},"eslintConfig":{"root":true,"env":{"node":true,"mocha":true},"extends":["plugin:@typescript-eslint/recommended","prettier/@typescript-eslint","plugin:prettier/recommended"],"rules":{"linebreak-style":["warn","unix"],"prettier/prettier":["warn",{"fix":true,"singleQuote":true,"semi":false,"trailingComma":"none","arrowParens":"avoid"}]},"parserOptions":{"parser":"@typescript-eslint/parser","ecmaVersion":2018,"sourceType":"module"}},"steal":{"map":{"assert":"chai/chai"},"meta":{"chai/chai":{"format":"global","exports":"chai.assert"}},"plugins":["chai"]},"directories":{"lib":"lib"},"peerDependencies":{"@vue/composition-api":"*"},"dependencies":{"@feathersjs/adapter-commons":"^4.5.2","@feathersjs/commons":"^4.5.3","@feathersjs/errors":"^4.5.3","@types/feathersjs__feathers":"^3.1.5","@types/inflection":"^1.5.28","@types/lodash":"^4.14.150","@types/npm":"^2.0.31","bson-objectid":"^1.3.0","debug":"^4.1.1","events":"^3.1.0","fast-copy":"^2.1.0","fast-json-stable-stringify":"^2.1.0","inflection":"^1.12.0","jwt-decode":"^2.2.0","lodash":"^4.17.15","lodash.isobject":"^3.0.2","lodash.isplainobject":"^4.0.6","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^4.4.0","lodash.trim":"^4.5.1","serialize-error":"^5.0.0","sift":"^9.0.4"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.4","@feathersjs/authentication-jwt":"^2.0.10","@feathersjs/client":"^4.5.4","@feathersjs/feathers":"^4.5.3","@feathersjs/rest-client":"^4.5.4","@feathersjs/socketio-client":"^4.5.4","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@typescript-eslint/eslint-plugin":"^2.31.0","@typescript-eslint/parser":"^2.31.0","@vue/composition-api":"^0.6.1","@vue/eslint-config-prettier":"^6.0.0","@vue/eslint-config-typescript":"^5.0.2","@vue/test-utils":"^1.0.2","axios":"^0.21.1","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^10.1.0","babel-plugin-add-module-exports":"^1.0.2","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","body-parser":"^1.19.0","can-fixture-socket":"^2.0.3","chai":"^4.2.0","cross-env":"^7.0.2","date-fns":"^2.13.0","deep-object-diff":"^1.1.0","eslint":"^6.8.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","eslint-plugin-vue":"^6.2.2","feathers-memory":"^4.1.0","istanbul":"^1.1.0-alpha.1","jsdom":"^16.2.2","jsdom-global":"^3.0.2","mocha":"^7.1.2","omit-deep-lodash":"^1.1.4","prettier":"^2.0.5","shx":"^0.3.2","socket.io-client":"^2.3.0","standard":"^14.3.3","steal":"^2.2.4","steal-mocha":"^2.0.1","steal-typescript":"^0.5.0","testee":"^0.9.1","ts-node":"^8.10.1","typescript":"^3.8.3","vue":"^2.6.11","vue-server-renderer":"^2.6.11","vue-template-compiler":"^2.6.11","vuepress":"^1.4.1","vuepress-theme-default-prefers-color-scheme":"^1.0.7","vuex":"^3.3.0"},"gitHead":"2813d86ab46f4800cd47374cb25fcba9c41d07b7","_id":"feathers-vuex@3.16.0","_nodeVersion":"15.8.0","_npmVersion":"7.5.2","dist":{"integrity":"sha512-o4fmUAWBrHVG/mQYgwbjZ4+nJvaF3WuqGtvdlSBevrzEoJzUfoNERLyXS+hanOAnc86AFwrKTRdpG5ZeEQxhsQ==","shasum":"a8eb45fc60ddef9aede718067c0db093ded88f7c","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-3.16.0.tgz","fileCount":124,"unpackedSize":748705,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSBRuCRA9TVsSAnZWagAAMVQP/R5WMbBl4/gIPPCzNIKT\n3EoCldu0cMViwbAtMiiSrn4WWpJCph6FHRrtl98KLmagSqB5I2aRnGo5HXpo\nGcB/jwmVHiQxdRD4eBNu0UjsKs6AFTvO+6qzEUDwF26Sx525BD396dD9kUeA\nElTmLsK5hJxUMM71yxDtR/66xHqpbxWbuUwgo53q5oJhuCZoCifRkBbewEDq\niNP5HHjpYFupsDgFGPaw3Nmw4VTKHZVvZ54qn3/+5WqRf9z9GZBFK1LPNMmm\n6HLDyx1skk5KN/MksR+C1tKexeXgXFKfB5XMzI/vMyTSZcl/tiJIHO8eCXXT\nwZRxSXG9g80uEZNruoUxJbYlyRs2/Q2TlXskFvkPI9g3cv5OY0qTrO6b8Lub\nMHUqVRQ9NCFyByK42KINha4CvkAK462KoOtELMAgBf3X+3c4E6pUdFfHdUzI\n2KhogUuaIVzymHA1AKBU8mh5rE+IFVIe4HaXOYCNfEORPOPtBmfuTVLxjNKA\nF4cPlt6PHOBcm5++O2g4w9HCzoD3HHHcLCezaHTVvLqYv842okP9sEzsUeTx\nPZ0GboIcJNT8OR3vepWCK6LN8CDgJcJTIJYYPPK9suclqrutTrENZxyvdQDl\n8uUc2sCNTvqVrAyRPVg3A67tKdz+VxpoxEZjApILHOiMyHZt/66DjN6P7fga\nGgiN\r\n=28Qq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCsijs/AViEat36PHAaQGsHK3cgTOACzsl8r+XRepLDkwIhAIQaFbWp7rxyZWlrvl8tK6vCY+tlWGaTrzB1D5QzHKAD"}]},"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"maintainers":[{"name":"daffl","email":"daff@neyeon.com"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_3.16.0_1615336558169_0.32367624057107114"},"_hasShrinkwrap":false},"4.0.1-pre.12":{"name":"feathers-vuex","description":"FeathersJS, Vue 2, and Nuxt for the artisan developer","version":"4.0.1-pre.12","homepage":"https:vuex.feathersjs.com","main":"dist/","module":"dist/","types":"dist/","publishConfig":{"access":"public"},"keywords":["vue","vuex","feathers-vuex","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"scripts":{"release:pre":"npm version prerelease && npm publish --access public --tag next","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","compile":"shx rm -rf dist/ && tsc","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"dependencies":{"@feathersjs/vuex-commons":"^0.0.2-pre.11","@types/feathersjs__feathers":"^3.1.7","fast-copy":"^2.1.0","serialize-error":"^7.0.1","vue-demi":"latest"},"peerDependencies":{"@vue/composition-api":"^1.0.0-beta.20","vue":"^2.6.12"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.11","@feathersjs/client":"^4.5.11","@feathersjs/feathers":"^4.5.11","@feathersjs/rest-client":"^4.5.11","@feathersjs/socketio-client":"^4.5.11","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@vue/composition-api":"^1.0.0-beta.20","axios":"^0.21.0","bson-objectid":"^1.3.1","can-fixture-socket":"^2.0.3","chai":"^4.2.0","cross-env":"^7.0.3","deep-object-diff":"^1.1.0","feathers-memory":"^4.1.0","jsdom":"^16.2.2","jsdom-global":"^3.0.2","mocha":"^8.3.1","shx":"^0.3.3","socket.io-client":"2.3.0","vue":"^2.6.12","vuex":"^3.6.0"},"readme":"ERROR: No README data found!","_id":"feathers-vuex@4.0.1-pre.12","_nodeVersion":"15.8.0","_npmVersion":"7.5.2","dist":{"integrity":"sha512-moSkUw7LkSTgNTdbMwHBm4dn+e4wr3jJssNCkfGvvbNtA8tfpYQ09+1AUol5IWmMfMbzDZMOJY2ou6CgAy2YEQ==","shasum":"55db9f814e9deeba9e5727e920d13ab248d77e25","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-4.0.1-pre.12.tgz","fileCount":48,"unpackedSize":387916,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSBlmCRA9TVsSAnZWagAA1HAP/0B03k40MFcnLnPsPtUn\na9XVpOPtHVThfGCJXulY8EO9Lz+8DGh2ue5Ug/WN0lYorzWi8kBmpEhEpBE/\nvQ58Q1kUes3JHG3z8QDnzR2qZr5KR+tfP4R0oeyfe6eif/6IYzHrQruLdVHy\nk3IreFdirya3ZApGB2phRllgkKg33YidX0QfYCMufHok56tSftBX2/ZY67Z2\nnrttIOZwaBd6WfOrBt/zhKSKHRZ4XJYh+YbjDHihojIfP69LDz5nnNC8Hhr+\ngjXz8yLVL0fKvzSC6pnOvsxHGoqUCCkY9lzEpgPrUG2rGurJAqXAB2QAZgUz\nUllYoMfVwE2NQlwU+KWNxC33bIxkv7ciPl9L65+gMDlYepH6LIwIJV/fRkJ8\nFLOzfS6BKX/WoXv3Ebj1xm2AJ6l1Zhle/6dGekfIhqvzRiKO4aBcTS+wNj72\nvmVo1bfsepeHA/r0Xwtr5ruQiDLgSprXZPkG19q/thTQPscpYkQIzk+JlMQc\nJiRs6gS0tV8v3igyWCxSO8iiOqDADlPpSdR3t7O6mFf/0KQondJxdlHJ9+dm\nPgxzKSf5Ek37mhkJGkerpJ93jQpeuXpbweO/AxHvXD+zrlOu7N/0tnl4lfN6\nyhjYWiFDCwGMIXJ05A7r/qBUcwV9LlF/gGaFX80Eaom/qVaa8IZx1M4t3gcV\nIYm0\r\n=bc2D\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICDqlfoFlxnBCriv1fotZ583MaY4In3OONtiumYTW8aJAiArTVzaucSZ39RjBOMl+RPlILNgy08sSEeQTHH4fYm4/w=="}]},"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"directories":{},"maintainers":[{"name":"daffl","email":"daff@neyeon.com"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_4.0.1-pre.12_1615337829715_0.9981109831939654"},"_hasShrinkwrap":false},"4.0.1-pre.14":{"name":"feathers-vuex","description":"FeathersJS, Vue 2, and Nuxt for the artisan developer","version":"4.0.1-pre.14","homepage":"https:vuex.feathersjs.com","main":"dist/","module":"dist/","types":"dist/","publishConfig":{"access":"public"},"keywords":["vue","vuex","feathers-vuex","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"scripts":{"release:pre":"npm version prerelease && npm publish --access public --tag next","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","compile":"shx rm -rf dist/ && tsc","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"dependencies":{"@feathersjs/vuex-commons":"^0.0.2-pre.14","@types/feathersjs__feathers":"^3.1.7","fast-copy":"^2.1.0","serialize-error":"^7.0.1","vue-demi":"latest"},"peerDependencies":{"@vue/composition-api":"^1.0.0-beta.20","vue":"^2.6.12"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.11","@feathersjs/client":"^4.5.11","@feathersjs/feathers":"^4.5.11","@feathersjs/rest-client":"^4.5.11","@feathersjs/socketio-client":"^4.5.11","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@vue/composition-api":"^1.0.0-beta.20","axios":"^0.21.0","bson-objectid":"^1.3.1","can-fixture-socket":"^2.0.3","chai":"^4.2.0","cross-env":"^7.0.3","deep-object-diff":"^1.1.0","feathers-memory":"^4.1.0","jsdom":"^16.2.2","jsdom-global":"^3.0.2","mocha":"^8.3.1","shx":"^0.3.3","socket.io-client":"2.3.0","vue":"^2.6.12","vuex":"^3.6.0"},"gitHead":"a233cede20fb4fdaa0168b7c42bd8a6fd65b7a63","readme":"ERROR: No README data found!","_id":"feathers-vuex@4.0.1-pre.14","_nodeVersion":"15.8.0","_npmVersion":"lerna/3.22.1/node@v15.8.0+arm64 (darwin)","dist":{"integrity":"sha512-WnQO8TD/qux6s2/cwUEa8h8VL0Bk9QLeWb+UdKZMZoEjUnXpAeQh7hjJ838ExMdvJNv+7UDs0G9d36ZDm0eI+g==","shasum":"3f3d57bcb15a562d4f22581f7f3fa00e155a7760","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-4.0.1-pre.14.tgz","fileCount":48,"unpackedSize":387973,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSBn/CRA9TVsSAnZWagAAxv0P+wYKwZyXuXdJ5IQX0KwS\ngPV9bQbIjL64WND9tuuQdfL9a5LvBHFhEqYTiejOj+R95RRvHvkIvzxdd+QF\nZGnFDMeF/3bGlxV+359Nreof5BRtBEoHZXAJ3uqOHHmEDbmA9IUW2rzWB0oW\nE6vlwqyxn1DlVQK69X6DN1OoGc9gTznrM9x8xFZ4CsuR20+60p7J0vTUZuJE\n15yliTD93cPn4TmdFhQ3sXmoJuo/GkudRl2L0xJX30i+Eo/xtFKtSn31vyAs\nrVGrOXTOXVOazLgNo3ySmB9CIEzY9OECaABGI7n1DV6/ean7Yt3UmyZMcYYc\nLWAOTyAR4CcwiTdNsylBusvQ8vtk1w1E6NDGMX8Kw3biSUuMmiDg43CETUaH\nw1ZDJ7KB1hEVpRm6IR5iVE7/Eqgdu1u0vaZOw9zloougUBH/30tfkV0PPxfi\n0caVWoPWVQsryGK2irqS9NvlnCigj9Fas7GsHiihB9DOOyk5SK4xGBR5Po/X\nnxAzcPvPxJdTjcaPTRi/4xm000UwjZAtB0m7y3eoXZrEmniSq4lYM57SXKHT\nmgIjGTrafj76SrCgdR0q8O1YSTYhVFmlJzpE60tN10wMpR0LLv2H18243Ctt\nW2JjwXVOrliRswbK6TTFsxxW+7dcvza6uh9yAz257kRHfhg8rPnhkuq7tC55\n6uAr\r\n=1eWm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICbjMsxD3M/PHG9SxHld+rQR7p/Wlc8+2jTDgVC9H+/hAiEAwssOxQQCmsHv7E8qcegcj5yXbeyx/YK75NkQ76vmCXA="}]},"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"directories":{},"maintainers":[{"name":"daffl","email":"daff@neyeon.com"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_4.0.1-pre.14_1615337983135_0.009674917712500175"},"_hasShrinkwrap":false},"4.0.1-pre.15":{"name":"feathers-vuex","description":"FeathersJS, Vue 2, and Nuxt for the artisan developer","version":"4.0.1-pre.15","homepage":"https:vuex.feathersjs.com","main":"dist/","module":"dist/","types":"dist/","publishConfig":{"access":"public"},"keywords":["vue","vuex","feathers-vuex","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"scripts":{"release:pre":"npm version prerelease && npm publish --access public --tag next","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","compile":"shx rm -rf dist/ && tsc","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"dependencies":{"@feathersjs/vuex-commons":"^0.0.2-pre.15","@types/feathersjs__feathers":"^3.1.7","fast-copy":"^2.1.0","serialize-error":"^7.0.1","vue-demi":"latest"},"peerDependencies":{"@vue/composition-api":"^1.0.0-beta.20","vue":"^2.6.12"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.11","@feathersjs/client":"^4.5.11","@feathersjs/feathers":"^4.5.11","@feathersjs/rest-client":"^4.5.11","@feathersjs/socketio-client":"^4.5.11","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@vue/composition-api":"^1.0.0-beta.20","axios":"^0.21.0","bson-objectid":"^1.3.1","can-fixture-socket":"^2.0.3","chai":"^4.2.0","cross-env":"^7.0.3","deep-object-diff":"^1.1.0","feathers-memory":"^4.1.0","jsdom":"^16.2.2","jsdom-global":"^3.0.2","mocha":"^8.3.1","shx":"^0.3.3","socket.io-client":"2.3.0","vue":"^2.6.12","vuex":"^3.6.0"},"gitHead":"a35e59c239fdebb384a5ad240721dd25f4b2456b","readme":"ERROR: No README data found!","_id":"feathers-vuex@4.0.1-pre.15","_nodeVersion":"15.8.0","_npmVersion":"lerna/3.22.1/node@v15.8.0+arm64 (darwin)","dist":{"integrity":"sha512-Wj9B7vyoT8if3A9H7u/Mrn7Dt8g1p+FnyO8EkUDUb5n9/HDGvkdmVNlkNLg6EgYGTImANxvXAWLFN8dwp7oLog==","shasum":"ca4bc6cf609935c1ee5b073c6714c6a57fc130a6","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-4.0.1-pre.15.tgz","fileCount":48,"unpackedSize":387973,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSBvjCRA9TVsSAnZWagAAQW8P/iDRDtF8WxqtTtb6M1p2\nKjDdJkOH85iWja9C1S6z6wXo1EhwmImaZYiG14CYxX0ZVIty8s4RcqdDGvFd\n2wcCcWYQAbiqfWOLbTKn6p9ogLbhl+3jdAYmDB45v/vaBdgkn8rn+PpPTqSN\n9DdBeD5jupNmS0u0+LoACDsUO448CKRWNWpxRDXfhlQG76XS6Kjn8Yij4Q05\nUW4PV2lkmP5mX6I6DUNWBODMvXEqS3eeAuQ+s3ns4UM8etIPdoUih7PsH8Zz\nn4p+UXs/GNabpEq4++n5/l5PWpiVF+Pb5/RwY0+7i0538XgHRDhmDeX2aFjA\ncmRtpUgW3mrKu5t0c3xJabsJoTfjYXHIJl3tFqTBjuUs4k5Lu2bS1TKk1px7\n0uB1EiLtBTUruAPxz3WRhq3Yt4Cfz5cdYwegIC/7qUS65R85XNCqsEU6tuvu\n6Wa+McbaZSJXG07vgf7d/FHnAX1EiNGQRA4DQykrUKn2sm33rAE45Wvr2HRH\nWSP7GUwrWDrsJItZTJtm73jiDpoKIPJwiPGUUI+6GvpgaG4AUnSgpyCivO9w\nx+46+SdFab2wS2ShuDb16uIncYNbW2JWGODsDYCLnH4cuLGmWC1KC9LD/Tyo\nW7QB83YjHuTX72lNegfLOaPyFbFN2R77SVYibkrRNUSHIMkxVVWwFZ4pJNLA\nufSH\r\n=RUiI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIENd5jcnnZnPTEIKtssTcYJQ46gvAKTV88VaHI52DbHMAiBLFMIq+11YpvUvBWUQVqHKfgH8qz9HvtGaXzkxcJ2KOA=="}]},"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"directories":{},"maintainers":[{"name":"daffl","email":"daff@neyeon.com"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_4.0.1-pre.15_1615338466796_0.7354904665586104"},"_hasShrinkwrap":false},"4.0.1-pre.16":{"name":"feathers-vuex","description":"FeathersJS, Vue 2, and Nuxt for the artisan developer","version":"4.0.1-pre.16","homepage":"https:vuex.feathersjs.com","main":"dist/","module":"dist/","types":"dist/","publishConfig":{"access":"public"},"keywords":["vue","vuex","feathers-vuex","feathers","feathers-plugin"],"license":"MIT","repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"funding":{"type":"Github sponsor","url":"https://github.com/sponsors/marshallswain"},"contributors":[],"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"scripts":{"release:pre":"npm version prerelease && npm publish --access public --tag next","prepublish":"npm run compile","publish":"git push origin --tags && git push origin","compile":"shx rm -rf dist/ && tsc","coverage":"istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts","test":"cross-env TS_NODE_PROJECT='tsconfig.test.json' mocha --require ts-node/register 'test/**/*.test.ts'","docs":"vuepress dev docs","docs:build":"vuepress build docs"},"dependencies":{"@feathersjs/vuex-commons":"^0.0.2-pre.16","@types/feathersjs__feathers":"^3.1.7","fast-copy":"^2.1.0","serialize-error":"^7.0.1","vue-demi":"latest"},"peerDependencies":{"@vue/composition-api":"^1.0.0-beta.20","vue":"^2.6.12"},"devDependencies":{"@feathersjs/authentication-client":"^4.5.11","@feathersjs/client":"^4.5.11","@feathersjs/feathers":"^4.5.11","@feathersjs/rest-client":"^4.5.11","@feathersjs/socketio-client":"^4.5.11","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@vue/composition-api":"^1.0.0-beta.20","axios":"^0.21.0","bson-objectid":"^1.3.1","can-fixture-socket":"^2.0.3","chai":"^4.2.0","cross-env":"^7.0.3","deep-object-diff":"^1.1.0","feathers-memory":"^4.1.0","jsdom":"^16.2.2","jsdom-global":"^3.0.2","mocha":"^8.3.1","shx":"^0.3.3","socket.io-client":"2.3.0","vue":"^2.6.12","vuex":"^3.6.0"},"gitHead":"50849687bd6034144a1b3b4a7989f3ccd59c1259","readme":"ERROR: No README data found!","_id":"feathers-vuex@4.0.1-pre.16","_nodeVersion":"15.8.0","_npmVersion":"lerna/3.22.1/node@v15.8.0+arm64 (darwin)","dist":{"integrity":"sha512-pBklwNnUVCP1KMCcdnaZe/3jGLBqoNHJPf4+1QgH+0JIsz7XVQGJzDTqKNVB0tnj8oJclgzO0N0QvIFrPbvI/w==","shasum":"41575374eebb26074ec91138875c54f4e5441858","tarball":"https://registry.npmjs.org/feathers-vuex/-/feathers-vuex-4.0.1-pre.16.tgz","fileCount":48,"unpackedSize":387973,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSXv3CRA9TVsSAnZWagAAvfgP+wUEG06uENAQ6muMIP94\n/EQfTgXlD93HwDRpFWK0pP07oeg6EbabzlZW6c8VEEcKyk/o4Z6hQaf4vOcE\nb/sOPzGBe76InvEZkMk9ZRTO/aohhcILTjiwT2UzPfBFfIWHYoe0IZXJJiOS\na12IHyncpA97VOUATXQJdd3yPZwA/+UF9HbE+XmiVOA9DA8nV1I7OiUNtYIh\n3P9fF++b3MmeZJq4sW97M+aLzr1ZYBYJlv1R9uvk8oA3x1EEnh+8w5iI/w5a\nlWBE93HQ8lS6rP3y5jNct/wcXf6jcIL3U0ktVMSai4reJEDk5SNy2FObRW6A\nRI4J02cm7i6lSX0MaeO1CFpdI2Ghjeb9+IA1T0lr+3XYDL8iJSNq0IBc9bGy\noSqKQ8SLnYwwQsEel/HvICaprXVGTCYWXOTaTl7LAs/2i1y98BXZAcKFLd2Z\nJidLT97oDC+3JvDdjM2h4krjFedBu+icUsB0ff2TyukNo9Xbse341dXR850D\n7pWJp65fPtwu2fIRwrOBMg6NhSqffRMq98yB4EH9oqECQOxVS/pzi9FMvi2K\nhXvZjFKPyHozJHaeapM+NMZ+IyXQLexX4U3/oWbospFVTwAitRxcoyaRNvZQ\nY+jVWbtnr9DJnYQbLCcvcff0MK2WvtTjEfYn0waaYWcbRSYS2m0aObGK7zXK\nzNcY\r\n=/4+Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDWPzCbuMjTucxYh5cdpRRJp7vRb7rFpdLMh1xv264REAIgHhMcZH8A1L6ddvKgnQ0gNN/9MAubT97LcZJQUrDgErU="}]},"_npmUser":{"name":"marshallswain","email":"marshall@creativeideal.net"},"directories":{},"maintainers":[{"name":"daffl","email":"daff@neyeon.com"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/feathers-vuex_4.0.1-pre.16_1615428599035_0.6732427626121034"},"_hasShrinkwrap":false}},"readme":"","maintainers":[{"name":"daffl","email":"daff@neyeon.com"},{"name":"marshallswain","email":"marshall@creativeideal.net"}],"time":{"modified":"2022-06-18T00:00:34.103Z","created":"2017-03-15T06:36:26.025Z","0.0.1":"2017-03-15T06:36:26.025Z","0.0.2":"2017-03-15T07:03:22.395Z","0.0.3":"2017-03-15T13:59:44.990Z","0.0.4":"2017-04-12T16:15:01.590Z","0.0.5":"2017-04-15T13:12:34.185Z","0.1.0":"2017-04-18T04:52:57.191Z","0.1.1":"2017-04-18T04:58:22.557Z","0.2.0":"2017-04-18T13:37:29.324Z","0.2.1":"2017-04-18T19:08:34.957Z","0.2.2":"2017-04-28T18:16:01.149Z","0.3.0":"2017-05-01T06:19:32.385Z","0.3.1":"2017-05-01T06:34:38.855Z","0.4.0":"2017-05-01T06:41:33.480Z","0.4.1":"2017-05-26T03:19:12.076Z","0.4.2":"2017-06-07T13:02:10.411Z","0.5.0":"2017-06-27T05:46:11.972Z","0.6.0":"2017-06-27T06:43:22.005Z","0.7.0":"2017-06-27T13:01:22.458Z","0.7.1":"2017-07-08T05:51:01.831Z","0.7.2":"2017-08-04T05:49:56.219Z","0.8.0":"2017-08-18T01:05:04.645Z","1.0.0-pre.0":"2017-08-22T03:23:14.717Z","1.0.0-pre.1":"2017-08-22T13:22:38.309Z","1.0.0-pre.2":"2017-08-24T05:06:22.022Z","1.0.0-pre.3":"2017-08-26T14:51:30.711Z","1.0.0":"2017-10-10T14:23:07.209Z","1.0.1":"2017-10-10T14:24:13.664Z","1.0.2":"2017-10-10T14:30:06.448Z","1.0.3":"2017-10-10T14:35:12.258Z","1.0.4":"2017-10-13T04:15:34.052Z","1.1.0":"2017-12-15T14:01:19.478Z","1.1.1":"2017-12-15T14:05:37.343Z","1.1.2":"2018-01-13T17:57:54.113Z","1.1.3":"2018-01-19T14:46:07.018Z","1.1.4":"2018-02-07T16:51:22.517Z","1.2.0-pre.0":"2018-02-21T17:30:05.162Z","1.2.0-pre.1":"2018-02-22T04:36:54.103Z","1.2.0-pre.2":"2018-03-09T20:36:44.512Z","1.2.0-pre.3":"2018-03-10T05:19:02.756Z","1.2.0-pre.4":"2018-03-10T13:51:30.575Z","1.2.0-pre.5":"2018-03-10T13:57:39.678Z","1.2.0-pre.6":"2018-03-10T14:16:20.122Z","1.2.0-pre.7":"2018-03-10T14:20:26.633Z","1.2.0-pre.8":"2018-03-10T14:26:23.960Z","1.2.0-pre.9":"2018-03-16T04:45:49.602Z","1.2.0-pre.10":"2018-03-18T23:51:10.305Z","1.2.0-pre.11":"2018-03-18T23:54:45.534Z","1.2.0-pre.12":"2018-03-27T00:08:17.436Z","1.2.0-pre.13":"2018-04-01T23:47:39.310Z","1.2.0-pre.14":"2018-04-01T23:56:00.648Z","1.2.0-pre.15":"2018-04-01T23:58:23.902Z","1.2.0-pre.16":"2018-04-02T01:13:06.762Z","1.2.0-pre.17":"2018-04-02T16:59:39.220Z","1.2.0-pre.18":"2018-04-11T02:56:17.280Z","1.2.0-pre.19":"2018-04-11T04:30:57.584Z","1.2.0-pre.20":"2018-04-16T02:34:17.064Z","1.2.0-pre.21":"2018-04-21T23:33:09.833Z","1.2.0-pre.22":"2018-04-24T01:42:44.262Z","1.2.0-pre.23":"2018-04-26T12:39:28.355Z","1.2.0":"2018-05-01T17:05:19.211Z","1.2.1":"2018-05-01T17:34:58.157Z","1.3.0":"2018-05-09T16:12:12.323Z","1.3.1":"2018-05-16T00:15:39.756Z","1.4.0":"2018-05-18T20:11:42.585Z","1.4.1":"2018-05-24T14:08:01.797Z","1.4.2":"2018-05-27T14:02:13.446Z","1.4.3":"2018-06-08T04:59:52.095Z","1.4.4":"2018-06-30T15:47:40.349Z","1.4.5":"2018-07-02T20:03:29.497Z","1.4.6":"2018-07-02T20:50:16.992Z","1.4.7":"2018-07-16T21:54:31.787Z","1.4.8":"2018-07-23T03:35:35.407Z","1.5.0":"2018-09-17T17:43:15.990Z","1.5.1":"2018-09-22T22:27:32.139Z","1.6.0-pre.0":"2018-09-30T18:54:04.568Z","1.6.0":"2018-09-30T20:10:54.415Z","1.7.0-pre.0":"2018-09-30T20:56:21.363Z","1.7.0-pre.1":"2018-10-01T05:01:31.156Z","1.7.0-pre.2":"2018-10-01T05:03:47.277Z","1.6.1":"2018-10-01T22:37:49.765Z","1.7.0-pre.3":"2018-10-01T22:39:46.813Z","1.7.0-pre.4":"2018-10-02T20:38:16.755Z","1.7.0-pre.5":"2018-10-03T00:05:31.311Z","1.7.0-pre.6":"2018-10-03T18:11:34.796Z","1.6.2":"2018-10-03T19:29:11.723Z","1.7.0-pre.7":"2018-10-03T21:39:03.916Z","1.7.0-pre.8":"2018-10-10T21:09:56.348Z","1.7.0-pre.9":"2018-10-10T21:14:25.909Z","1.7.0-pre.10":"2018-10-10T21:35:09.051Z","1.7.0-pre.11":"2018-10-10T21:47:34.513Z","1.7.0-pre.12":"2018-10-11T11:49:55.384Z","1.7.0-pre.13":"2018-10-13T23:48:05.073Z","1.7.0-pre.14":"2018-10-14T00:01:28.650Z","1.7.0-pre.15":"2018-10-14T22:14:28.634Z","1.7.0-pre.16":"2018-10-15T04:49:03.417Z","1.7.0-pre.17":"2018-10-15T14:11:23.677Z","1.7.0-pre.18":"2018-10-16T09:17:55.422Z","1.7.0-pre.19":"2018-10-16T18:37:37.491Z","1.7.0-pre.20":"2018-10-16T18:43:57.135Z","1.7.0-pre.21":"2018-10-16T19:38:49.884Z","1.7.0-pre.22":"2018-10-16T19:42:09.975Z","1.7.0-pre.23":"2018-10-16T20:28:24.651Z","1.7.0-pre.24":"2018-10-16T21:54:03.058Z","1.7.0-pre.25":"2018-10-22T05:31:13.246Z","1.7.0-pre.26":"2018-11-10T22:09:30.698Z","1.7.0-pre.27":"2018-11-11T18:42:52.499Z","1.7.0-pre.28":"2018-11-11T20:32:12.732Z","1.7.0-pre.29":"2018-11-17T06:14:23.884Z","1.7.0-pre.30":"2018-11-17T10:44:34.466Z","1.7.0-pre.31":"2018-11-27T03:29:34.897Z","1.7.0-pre.32":"2018-11-27T03:31:30.610Z","1.7.0-pre.33":"2018-11-29T01:32:15.645Z","1.7.0-pre.34":"2018-11-29T01:42:07.458Z","1.7.0-pre.35":"2018-11-29T02:04:05.504Z","1.7.0-pre.36":"2018-11-29T02:08:15.534Z","1.7.0-pre.37":"2018-11-29T02:41:34.163Z","1.7.0-pre.38":"2019-01-14T23:33:30.738Z","1.7.0-pre.40":"2019-01-15T05:25:31.700Z","1.7.0-pre.41":"2019-01-15T05:45:29.955Z","1.7.0-pre.42":"2019-01-15T05:56:29.386Z","1.7.0-pre.44":"2019-01-15T17:20:29.291Z","1.7.0-pre.46":"2019-01-15T23:55:10.987Z","1.7.0-pre.47":"2019-01-17T06:18:08.211Z","1.7.0-pre.48":"2019-01-22T17:37:32.034Z","1.7.0-pre.49":"2019-01-22T22:47:32.923Z","1.7.0-pre.50":"2019-01-25T00:52:46.476Z","1.7.0-pre.51":"2019-01-25T01:53:25.251Z","1.7.0-pre.52":"2019-01-25T17:40:09.093Z","1.7.0-pre.53":"2019-01-29T21:45:52.135Z","1.7.0-pre.54":"2019-02-13T23:52:09.283Z","1.7.0-pre.56":"2019-02-15T18:52:34.585Z","1.7.0":"2019-02-19T04:51:59.766Z","2.0.0-pre.0":"2019-04-01T00:13:34.885Z","2.0.0-pre.1":"2019-04-01T01:34:20.831Z","2.0.0-pre.2":"2019-04-01T02:34:01.436Z","2.0.0-pre.3":"2019-04-01T02:49:50.922Z","2.0.0-pre.5":"2019-04-01T05:55:32.731Z","2.0.0":"2019-04-02T16:34:54.443Z","2.0.0-pre.7":"2019-04-03T00:44:51.020Z","2.0.0-pre.8":"2019-04-03T03:38:38.720Z","2.0.0-pre.9":"2019-04-15T00:39:55.805Z","2.0.0-pre.10":"2019-04-15T05:58:27.671Z","2.0.0-pre.11":"2019-04-15T06:12:30.657Z","2.0.0-pre.12":"2019-04-15T13:53:48.797Z","2.0.0-pre.13":"2019-04-15T14:37:22.573Z","2.0.0-pre.14":"2019-04-15T14:47:13.613Z","2.0.0-pre.15":"2019-04-15T21:45:44.153Z","2.0.0-pre.16":"2019-04-17T06:06:38.765Z","2.0.0-pre.17":"2019-04-17T06:46:03.611Z","2.0.0-pre.18":"2019-04-17T16:20:02.105Z","2.0.0-pre.19":"2019-04-18T00:02:09.466Z","2.0.0-pre.20":"2019-04-19T06:25:51.606Z","2.0.0-pre.21":"2019-04-19T06:48:25.018Z","2.0.0-pre.22":"2019-04-19T18:37:11.863Z","2.0.0-pre.23":"2019-04-21T08:42:48.148Z","2.0.0-pre.24":"2019-04-24T04:33:24.760Z","2.0.0-pre.25":"2019-05-08T12:07:29.927Z","2.0.0-pre.26":"2019-05-08T12:59:22.808Z","2.0.0-pre.27":"2019-05-08T13:54:19.052Z","2.0.0-pre.28":"2019-06-05T21:33:05.727Z","2.0.0-pre.32":"2019-06-06T18:40:50.604Z","2.0.0-pre.33":"2019-06-06T22:40:17.098Z","2.0.0-pre.34":"2019-06-07T01:58:41.278Z","2.0.0-pre.35":"2019-06-07T04:10:54.672Z","2.0.0-pre.36":"2019-06-07T05:01:02.557Z","2.0.0-pre.37":"2019-06-07T05:04:43.903Z","2.0.0-pre.38":"2019-06-07T05:12:55.817Z","2.0.0-pre.39":"2019-06-14T15:25:06.005Z","2.0.0-pre.40":"2019-06-18T05:22:17.788Z","2.0.0-pre.42":"2019-06-19T06:33:20.298Z","2.0.0-pre.43":"2019-06-19T16:43:51.028Z","2.0.0-pre.44":"2019-06-19T16:54:31.768Z","2.0.0-pre.45":"2019-06-27T17:44:03.829Z","2.0.0-pre.46":"2019-07-02T05:17:12.669Z","2.0.0-pre.47":"2019-07-02T06:02:52.488Z","2.0.0-pre.48":"2019-07-02T12:43:40.490Z","2.0.0-pre.49":"2019-07-02T12:49:50.279Z","2.0.0-pre.50":"2019-07-02T12:53:51.931Z","2.0.0-pre.51":"2019-07-02T13:42:38.333Z","2.0.0-pre.52":"2019-07-07T22:52:34.850Z","2.0.0-pre.53":"2019-07-08T00:44:58.180Z","2.0.0-pre.54":"2019-07-08T08:36:38.550Z","2.0.0-pre.55":"2019-07-09T05:20:15.569Z","2.0.0-pre.56":"2019-07-10T01:40:15.203Z","2.0.1-0":"2019-07-10T04:14:26.641Z","2.0.0-pre.57":"2019-07-10T04:16:41.211Z","2.0.0-pre.58":"2019-07-10T07:28:19.399Z","2.0.0-pre.59":"2019-07-10T16:22:11.144Z","2.0.0-pre.60":"2019-07-10T16:26:51.508Z","2.0.0-pre.61":"2019-07-13T14:46:22.438Z","2.0.0-pre.62":"2019-07-15T20:07:03.718Z","2.0.0-pre.63":"2019-07-19T08:15:47.701Z","2.0.0-pre.64":"2019-07-20T22:09:23.960Z","2.0.0-pre.65":"2019-07-21T07:36:54.653Z","2.0.0-pre.66":"2019-07-24T04:36:09.027Z","2.0.0-pre.67":"2019-07-26T16:17:00.904Z","2.0.0-pre.68":"2019-07-28T01:22:58.634Z","2.0.0-pre.69":"2019-08-02T13:26:35.238Z","2.0.0-pre.70":"2019-08-08T21:00:36.939Z","2.0.0-pre.71":"2019-08-15T04:21:12.774Z","2.0.0-pre.72":"2019-08-22T17:09:06.396Z","2.0.0-pre.73":"2019-08-23T02:31:59.300Z","2.0.0-pre.74":"2019-08-23T03:42:14.530Z","2.0.0-pre.75":"2019-08-29T15:36:44.708Z","2.0.0-pre.76":"2019-09-05T17:57:28.407Z","2.0.0-pre.77":"2019-09-10T21:07:26.327Z","2.0.0-pre.78":"2019-09-24T18:48:19.702Z","1.7.1":"2019-09-24T19:02:51.794Z","1.7.2":"2019-09-24T20:08:23.914Z","2.0.1":"2019-10-21T14:28:36.048Z","2.0.2":"2019-10-23T10:36:48.551Z","2.0.3":"2019-10-23T11:50:20.629Z","2.0.4":"2019-10-23T20:47:46.996Z","2.0.5":"2019-11-02T00:15:16.544Z","2.0.6":"2019-11-09T19:40:37.690Z","2.0.7":"2019-11-10T02:50:55.075Z","2.2.0":"2019-11-11T07:10:49.179Z","2.2.1":"2019-11-11T08:04:08.628Z","2.2.2":"2019-11-11T08:13:16.021Z","2.2.3":"2019-11-11T08:32:34.771Z","2.2.4":"2019-11-11T21:36:11.992Z","2.2.5":"2019-11-16T19:37:35.052Z","2.2.6":"2019-12-01T01:03:37.234Z","2.2.7":"2019-12-01T03:55:33.331Z","2.3.0":"2019-12-01T23:49:06.984Z","3.0.0-pre.0":"2019-12-04T21:55:52.949Z","3.0.0-pre.1":"2019-12-04T21:57:39.206Z","3.0.0-pre.2":"2019-12-04T22:46:31.394Z","2.3.1":"2019-12-06T18:21:48.889Z","3.0.0-pre.4":"2019-12-06T19:29:03.644Z","3.0.0-pre.5":"2019-12-18T08:59:43.847Z","3.0.0-pre.6":"2019-12-18T09:01:53.310Z","3.0.0-pre.7":"2019-12-18T09:14:05.907Z","3.0.0-pre.8":"2019-12-18T09:17:24.014Z","3.0.0-pre.9":"2019-12-18T09:25:07.803Z","3.0.0":"2019-12-20T03:36:29.581Z","3.0.1":"2019-12-20T18:11:10.769Z","3.1.0":"2019-12-21T01:11:32.497Z","3.1.1":"2019-12-22T01:39:34.424Z","3.2.0":"2019-12-22T06:17:46.684Z","3.2.1":"2019-12-22T18:46:46.888Z","3.3.0":"2020-01-08T00:45:07.583Z","3.4.0":"2020-01-14T02:55:07.278Z","3.4.1":"2020-01-30T15:25:25.671Z","3.5.0":"2020-01-31T20:55:04.270Z","3.5.1":"2020-01-31T21:40:48.925Z","3.5.2":"2020-01-31T21:45:24.568Z","3.5.3":"2020-01-31T21:49:35.896Z","3.5.4":"2020-01-31T21:54:02.159Z","3.5.5":"2020-01-31T23:09:17.645Z","3.6.0":"2020-02-12T04:48:21.165Z","3.6.1":"2020-02-12T09:09:40.515Z","3.6.2":"2020-03-10T03:26:16.903Z","3.6.3":"2020-03-12T20:17:26.605Z","3.7.0":"2020-03-12T20:18:11.136Z","3.8.0":"2020-03-14T05:06:18.000Z","3.8.1":"2020-03-14T06:23:14.456Z","3.8.2":"2020-03-15T12:10:26.295Z","3.9.0":"2020-03-19T20:18:15.281Z","3.9.1":"2020-03-31T16:18:40.704Z","3.9.2":"2020-04-29T19:10:20.431Z","3.9.3":"2020-04-30T04:09:26.110Z","3.9.4":"2020-04-30T04:37:18.887Z","3.10.0":"2020-05-02T17:09:32.196Z","3.10.1":"2020-05-02T17:37:40.665Z","3.10.2":"2020-05-07T09:48:35.520Z","3.10.3":"2020-05-07T11:22:13.474Z","3.10.4":"2020-05-07T20:06:12.920Z","3.10.5-0":"2020-06-03T04:12:42.087Z","4.0.0-pre.1":"2020-06-03T04:14:24.083Z","4.0.0-pre.2":"2020-06-03T07:51:27.918Z","4.0.0-pre.3":"2020-06-03T07:55:29.518Z","3.11.0":"2020-06-08T20:43:15.742Z","3.11.1":"2020-06-16T23:01:40.379Z","3.11.2":"2020-06-21T00:46:42.226Z","3.11.4":"2020-06-21T00:52:24.066Z","3.11.5":"2020-06-22T03:55:48.832Z","3.12.0":"2020-09-02T19:00:27.520Z","3.12.1":"2020-09-02T20:08:11.877Z","3.12.2":"2020-09-02T21:32:29.172Z","3.12.3":"2020-09-03T17:12:51.873Z","3.13.0":"2020-10-05T14:44:12.744Z","3.14.0":"2020-10-29T23:19:44.580Z","3.15.0":"2020-12-04T00:01:00.280Z","3.16.0-pre.1":"2020-12-04T00:21:58.693Z","4.0.1-pre.3":"2020-12-05T01:37:51.863Z","4.0.1-pre.4":"2020-12-05T02:52:40.981Z","4.0.1-pre.6":"2020-12-05T03:44:15.908Z","4.0.1-pre.7":"2020-12-05T03:52:03.742Z","4.0.1-pre.8":"2020-12-05T03:59:07.250Z","4.0.1-pre.9":"2020-12-05T04:17:42.409Z","4.0.1-pre.10":"2020-12-05T07:13:07.511Z","4.0.1-pre.11":"2021-01-04T19:32:13.462Z","3.16.0":"2021-03-10T00:35:58.363Z","4.0.1-pre.12":"2021-03-10T00:57:09.887Z","4.0.1-pre.14":"2021-03-10T00:59:43.329Z","4.0.1-pre.15":"2021-03-10T01:07:46.988Z","4.0.1-pre.16":"2021-03-11T02:09:59.272Z"},"homepage":"https:feathers-vuex.feathersjs-ecosystem.com","keywords":["vue","feathers","feathers-plugin"],"repository":{"type":"git","url":"git://github.com/feathersjs-ecosystem/feathers-vuex.git"},"contributors":[],"author":{"name":"Marshall Thompson","email":"marshall@creativeideal.net","url":"https://github.com/marshallswain"},"bugs":{"url":"https://github.com/feathersjs-ecosystem/feathers-vuex/issues"},"license":"MIT","readmeFilename":"","users":{"trixden":true}}