Comparing version 4.0.0-rc.1 to 4.0.0-rc.2
@@ -0,1 +1,12 @@ | ||
# [4.0.0-rc.2](https://github.com/vuejs/vuex/compare/v4.0.0-rc.1...v4.0.0-rc.2) (2020-11-25) | ||
### Bug Fixes | ||
* fix getters stop working when component is destroyed ([#1884](https://github.com/vuejs/vuex/issues/1884)) ([c3a695e](https://github.com/vuejs/vuex/commit/c3a695e10682ab1b7288e72669861c9ca959df76)) | ||
* stop throwing an error on `hasModule` when parent does not exists ([#1850](https://github.com/vuejs/vuex/issues/1850)) ([f76d72d](https://github.com/vuejs/vuex/commit/f76d72d6c1f7cd30de9d459e23c371890c56f463)) | ||
### Features | ||
* **build:** enable named esm module import on node.js >= 14 ([4f4a909](https://github.com/vuejs/vuex/commit/4f4a9096b46aa61580c32371adb19445157ba80c)) | ||
# [4.0.0-rc.1](https://github.com/vuejs/vuex/compare/v4.0.0-beta.4...v4.0.0-rc.1) (2020-10-30) | ||
@@ -2,0 +13,0 @@ |
/*! | ||
* vuex v4.0.0-rc.1 | ||
* vuex v4.0.0-rc.2 | ||
* (c) 2020 Evan You | ||
@@ -265,3 +265,7 @@ * @license MIT | ||
return parent.hasChild(key) | ||
if (parent) { | ||
return parent.hasChild(key) | ||
} | ||
return false | ||
}; | ||
@@ -636,11 +640,11 @@ | ||
var computedObj = {}; | ||
var computedCache = {}; | ||
forEachValue(wrappedGetters, function (fn, key) { | ||
// use computed to leverage its lazy-caching mechanism | ||
// direct inline function use will lead to closure preserving oldVm. | ||
// direct inline function use will lead to closure preserving oldState. | ||
// using partial to return function with only arguments preserved in closure environment. | ||
computedObj[key] = partial(fn, store); | ||
computedCache[key] = vue.computed(function () { return computedObj[key](); }); | ||
Object.defineProperty(store.getters, key, { | ||
get: function () { return computedCache[key].value; }, | ||
// TODO: use `computed` when it's possible. at the moment we can't due to | ||
// https://github.com/vuejs/vuex/pull/1883 | ||
get: function () { return computedObj[key](); }, | ||
enumerable: true // for local getters | ||
@@ -1182,3 +1186,3 @@ }); | ||
var index_cjs = { | ||
version: '4.0.0-rc.1', | ||
version: '4.0.0-rc.2', | ||
createStore: createStore, | ||
@@ -1185,0 +1189,0 @@ Store: Store, |
/*! | ||
* vuex v4.0.0-rc.1 | ||
* vuex v4.0.0-rc.2 | ||
* (c) 2020 Evan You | ||
* @license MIT | ||
*/ | ||
import { inject, watch, reactive, computed } from 'vue'; | ||
import { inject, watch, reactive } from 'vue'; | ||
@@ -263,3 +263,7 @@ var storeKey = 'store'; | ||
return parent.hasChild(key) | ||
if (parent) { | ||
return parent.hasChild(key) | ||
} | ||
return false | ||
}; | ||
@@ -634,11 +638,11 @@ | ||
var computedObj = {}; | ||
var computedCache = {}; | ||
forEachValue(wrappedGetters, function (fn, key) { | ||
// use computed to leverage its lazy-caching mechanism | ||
// direct inline function use will lead to closure preserving oldVm. | ||
// direct inline function use will lead to closure preserving oldState. | ||
// using partial to return function with only arguments preserved in closure environment. | ||
computedObj[key] = partial(fn, store); | ||
computedCache[key] = computed(function () { return computedObj[key](); }); | ||
Object.defineProperty(store.getters, key, { | ||
get: function () { return computedCache[key].value; }, | ||
// TODO: use `computed` when it's possible. at the moment we can't due to | ||
// https://github.com/vuejs/vuex/pull/1883 | ||
get: function () { return computedObj[key](); }, | ||
enumerable: true // for local getters | ||
@@ -1180,3 +1184,3 @@ }); | ||
var index = { | ||
version: '4.0.0-rc.1', | ||
version: '4.0.0-rc.2', | ||
createStore: createStore, | ||
@@ -1183,0 +1187,0 @@ Store: Store, |
/*! | ||
* vuex v4.0.0-rc.1 | ||
* vuex v4.0.0-rc.2 | ||
* (c) 2020 Evan You | ||
* @license MIT | ||
*/ | ||
import { inject, watch, reactive, computed } from 'vue'; | ||
import { inject, watch, reactive } from 'vue'; | ||
@@ -249,3 +249,7 @@ var storeKey = 'store'; | ||
return parent.hasChild(key) | ||
if (parent) { | ||
return parent.hasChild(key) | ||
} | ||
return false | ||
}; | ||
@@ -516,11 +520,11 @@ | ||
var computedObj = {}; | ||
var computedCache = {}; | ||
forEachValue(wrappedGetters, function (fn, key) { | ||
// use computed to leverage its lazy-caching mechanism | ||
// direct inline function use will lead to closure preserving oldVm. | ||
// direct inline function use will lead to closure preserving oldState. | ||
// using partial to return function with only arguments preserved in closure environment. | ||
computedObj[key] = partial(fn, store); | ||
computedCache[key] = computed(function () { return computedObj[key](); }); | ||
Object.defineProperty(store.getters, key, { | ||
get: function () { return computedCache[key].value; }, | ||
// TODO: use `computed` when it's possible. at the moment we can't due to | ||
// https://github.com/vuejs/vuex/pull/1883 | ||
get: function () { return computedObj[key](); }, | ||
enumerable: true // for local getters | ||
@@ -1018,3 +1022,3 @@ }); | ||
var index = { | ||
version: '4.0.0-rc.1', | ||
version: '4.0.0-rc.2', | ||
createStore: createStore, | ||
@@ -1021,0 +1025,0 @@ Store: Store, |
/*! | ||
* vuex v4.0.0-rc.1 | ||
* vuex v4.0.0-rc.2 | ||
* (c) 2020 Evan You | ||
* @license MIT | ||
*/ | ||
import { inject, watch, reactive, computed } from 'vue'; | ||
import { inject, watch, reactive } from 'vue'; | ||
@@ -263,3 +263,7 @@ var storeKey = 'store'; | ||
return parent.hasChild(key) | ||
if (parent) { | ||
return parent.hasChild(key) | ||
} | ||
return false | ||
}; | ||
@@ -634,11 +638,11 @@ | ||
var computedObj = {}; | ||
var computedCache = {}; | ||
forEachValue(wrappedGetters, function (fn, key) { | ||
// use computed to leverage its lazy-caching mechanism | ||
// direct inline function use will lead to closure preserving oldVm. | ||
// direct inline function use will lead to closure preserving oldState. | ||
// using partial to return function with only arguments preserved in closure environment. | ||
computedObj[key] = partial(fn, store); | ||
computedCache[key] = computed(function () { return computedObj[key](); }); | ||
Object.defineProperty(store.getters, key, { | ||
get: function () { return computedCache[key].value; }, | ||
// TODO: use `computed` when it's possible. at the moment we can't due to | ||
// https://github.com/vuejs/vuex/pull/1883 | ||
get: function () { return computedObj[key](); }, | ||
enumerable: true // for local getters | ||
@@ -1180,3 +1184,3 @@ }); | ||
var index = { | ||
version: '4.0.0-rc.1', | ||
version: '4.0.0-rc.2', | ||
createStore: createStore, | ||
@@ -1183,0 +1187,0 @@ Store: Store, |
/*! | ||
* vuex v4.0.0-rc.1 | ||
* vuex v4.0.0-rc.2 | ||
* (c) 2020 Evan You | ||
@@ -264,3 +264,7 @@ * @license MIT | ||
return parent.hasChild(key) | ||
if (parent) { | ||
return parent.hasChild(key) | ||
} | ||
return false | ||
}; | ||
@@ -635,11 +639,11 @@ | ||
var computedObj = {}; | ||
var computedCache = {}; | ||
forEachValue(wrappedGetters, function (fn, key) { | ||
// use computed to leverage its lazy-caching mechanism | ||
// direct inline function use will lead to closure preserving oldVm. | ||
// direct inline function use will lead to closure preserving oldState. | ||
// using partial to return function with only arguments preserved in closure environment. | ||
computedObj[key] = partial(fn, store); | ||
computedCache[key] = vue.computed(function () { return computedObj[key](); }); | ||
Object.defineProperty(store.getters, key, { | ||
get: function () { return computedCache[key].value; }, | ||
// TODO: use `computed` when it's possible. at the moment we can't due to | ||
// https://github.com/vuejs/vuex/pull/1883 | ||
get: function () { return computedObj[key](); }, | ||
enumerable: true // for local getters | ||
@@ -1181,3 +1185,3 @@ }); | ||
var index_cjs = { | ||
version: '4.0.0-rc.1', | ||
version: '4.0.0-rc.2', | ||
createStore: createStore, | ||
@@ -1184,0 +1188,0 @@ Store: Store, |
/*! | ||
* vuex v4.0.0-rc.1 | ||
* vuex v4.0.0-rc.2 | ||
* (c) 2020 Evan You | ||
* @license MIT | ||
*/ | ||
var Vuex=function(t){"use strict";var e=("undefined"!=typeof window?window:"undefined"!=typeof global?global:{}).__VUE_DEVTOOLS_GLOBAL_HOOK__;function n(t,e){if(void 0===e&&(e=[]),null===t||"object"!=typeof t)return t;var r,o=(r=function(e){return e.original===t},e.filter(r)[0]);if(o)return o.copy;var i=Array.isArray(t)?[]:{};return e.push({original:t,copy:i}),Object.keys(t).forEach((function(r){i[r]=n(t[r],e)})),i}function r(t,e){Object.keys(t).forEach((function(n){return e(t[n],n)}))}function o(t){return null!==t&&"object"==typeof t}var i=function(t,e){this.runtime=e,this._children=Object.create(null),this._rawModule=t;var n=t.state;this.state=("function"==typeof n?n():n)||{}},c={namespaced:{configurable:!0}};c.namespaced.get=function(){return!!this._rawModule.namespaced},i.prototype.addChild=function(t,e){this._children[t]=e},i.prototype.removeChild=function(t){delete this._children[t]},i.prototype.getChild=function(t){return this._children[t]},i.prototype.hasChild=function(t){return t in this._children},i.prototype.update=function(t){this._rawModule.namespaced=t.namespaced,t.actions&&(this._rawModule.actions=t.actions),t.mutations&&(this._rawModule.mutations=t.mutations),t.getters&&(this._rawModule.getters=t.getters)},i.prototype.forEachChild=function(t){r(this._children,t)},i.prototype.forEachGetter=function(t){this._rawModule.getters&&r(this._rawModule.getters,t)},i.prototype.forEachAction=function(t){this._rawModule.actions&&r(this._rawModule.actions,t)},i.prototype.forEachMutation=function(t){this._rawModule.mutations&&r(this._rawModule.mutations,t)},Object.defineProperties(i.prototype,c);var a=function(t){this.register([],t,!1)};a.prototype.get=function(t){return t.reduce((function(t,e){return t.getChild(e)}),this.root)},a.prototype.getNamespace=function(t){var e=this.root;return t.reduce((function(t,n){return t+((e=e.getChild(n)).namespaced?n+"/":"")}),"")},a.prototype.update=function(t){!function t(e,n,r){if(n.update(r),r.modules)for(var o in r.modules){if(!n.getChild(o))return;t(e.concat(o),n.getChild(o),r.modules[o])}}([],this.root,t)},a.prototype.register=function(t,e,n){var o=this;void 0===n&&(n=!0);var c=new i(e,n);0===t.length?this.root=c:this.get(t.slice(0,-1)).addChild(t[t.length-1],c);e.modules&&r(e.modules,(function(e,r){o.register(t.concat(r),e,n)}))},a.prototype.unregister=function(t){var e=this.get(t.slice(0,-1)),n=t[t.length-1],r=e.getChild(n);r&&r.runtime&&e.removeChild(n)},a.prototype.isRegistered=function(t){var e=this.get(t.slice(0,-1)),n=t[t.length-1];return e.hasChild(n)};var s=function(t){var n=this;void 0===t&&(t={});var r=t.plugins;void 0===r&&(r=[]);var o=t.strict;void 0===o&&(o=!1),this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new a(t),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._makeLocalGettersCache=Object.create(null);var i=this,c=this.dispatch,s=this.commit;this.dispatch=function(t,e){return c.call(i,t,e)},this.commit=function(t,e,n){return s.call(i,t,e,n)},this.strict=o;var u=this._modules.root.state;p(this,u,[],this._modules.root),h(this,u),r.forEach((function(t){return t(n)})),(void 0===t.devtools||t.devtools)&&function(t){e&&(t._devtoolHook=e,e.emit("vuex:init",t),e.on("vuex:travel-to-state",(function(e){t.replaceState(e)})),t.subscribe((function(t,n){e.emit("vuex:mutation",t,n)}),{prepend:!0}),t.subscribeAction((function(t,n){e.emit("vuex:action",t,n)}),{prepend:!0}))}(this)},u={state:{configurable:!0}};function f(t,e,n){return e.indexOf(t)<0&&(n&&n.prepend?e.unshift(t):e.push(t)),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}function l(t,e){t._actions=Object.create(null),t._mutations=Object.create(null),t._wrappedGetters=Object.create(null),t._modulesNamespaceMap=Object.create(null);var n=t.state;p(t,n,[],t._modules.root,!0),h(t,n,e)}function h(e,n,o){var i=e._state;e.getters={},e._makeLocalGettersCache=Object.create(null);var c=e._wrappedGetters,a={},s={};r(c,(function(n,r){a[r]=function(t,e){return function(){return t(e)}}(n,e),s[r]=t.computed((function(){return a[r]()})),Object.defineProperty(e.getters,r,{get:function(){return s[r].value},enumerable:!0})})),e._state=t.reactive({data:n}),e.strict&&function(e){t.watch((function(){return e._state.data}),(function(){}),{deep:!0,flush:"sync"})}(e),i&&o&&e._withCommit((function(){i.data=null}))}function p(t,e,n,r,o){var i=!n.length,c=t._modules.getNamespace(n);if(r.namespaced&&(t._modulesNamespaceMap[c],t._modulesNamespaceMap[c]=r),!i&&!o){var a=d(e,n.slice(0,-1)),s=n[n.length-1];t._withCommit((function(){a[s]=r.state}))}var u=r.context=function(t,e,n){var r=""===e,o={dispatch:r?t.dispatch:function(n,r,o){var i=m(n,r,o),c=i.payload,a=i.options,s=i.type;return a&&a.root||(s=e+s),t.dispatch(s,c)},commit:r?t.commit:function(n,r,o){var i=m(n,r,o),c=i.payload,a=i.options,s=i.type;a&&a.root||(s=e+s),t.commit(s,c,a)}};return Object.defineProperties(o,{getters:{get:r?function(){return t.getters}:function(){return function(t,e){if(!t._makeLocalGettersCache[e]){var n={},r=e.length;Object.keys(t.getters).forEach((function(o){if(o.slice(0,r)===e){var i=o.slice(r);Object.defineProperty(n,i,{get:function(){return t.getters[o]},enumerable:!0})}})),t._makeLocalGettersCache[e]=n}return t._makeLocalGettersCache[e]}(t,e)}},state:{get:function(){return d(t.state,n)}}}),o}(t,c,n);r.forEachMutation((function(e,n){!function(t,e,n,r){(t._mutations[e]||(t._mutations[e]=[])).push((function(e){n.call(t,r.state,e)}))}(t,c+n,e,u)})),r.forEachAction((function(e,n){var r=e.root?n:c+n,o=e.handler||e;!function(t,e,n,r){(t._actions[e]||(t._actions[e]=[])).push((function(e){var o,i=n.call(t,{dispatch:r.dispatch,commit:r.commit,getters:r.getters,state:r.state,rootGetters:t.getters,rootState:t.state},e);return(o=i)&&"function"==typeof o.then||(i=Promise.resolve(i)),t._devtoolHook?i.catch((function(e){throw t._devtoolHook.emit("vuex:error",e),e})):i}))}(t,r,o,u)})),r.forEachGetter((function(e,n){!function(t,e,n,r){if(t._wrappedGetters[e])return;t._wrappedGetters[e]=function(t){return n(r.state,r.getters,t.state,t.getters)}}(t,c+n,e,u)})),r.forEachChild((function(r,i){p(t,e,n.concat(i),r,o)}))}function d(t,e){return e.reduce((function(t,e){return t[e]}),t)}function m(t,e,n){return o(t)&&t.type&&(n=e,e=t,t=t.type),{type:t,payload:e,options:n}}s.prototype.install=function(t,e){t.provide(e||"store",this),t.config.globalProperties.$store=this},u.state.get=function(){return this._state.data},u.state.set=function(t){},s.prototype.commit=function(t,e,n){var r=this,o=m(t,e,n),i=o.type,c=o.payload,a={type:i,payload:c},s=this._mutations[i];s&&(this._withCommit((function(){s.forEach((function(t){t(c)}))})),this._subscribers.slice().forEach((function(t){return t(a,r.state)})))},s.prototype.dispatch=function(t,e){var n=this,r=m(t,e),o=r.type,i=r.payload,c={type:o,payload:i},a=this._actions[o];if(a){try{this._actionSubscribers.slice().filter((function(t){return t.before})).forEach((function(t){return t.before(c,n.state)}))}catch(t){}var s=a.length>1?Promise.all(a.map((function(t){return t(i)}))):a[0](i);return new Promise((function(t,e){s.then((function(e){try{n._actionSubscribers.filter((function(t){return t.after})).forEach((function(t){return t.after(c,n.state)}))}catch(t){}t(e)}),(function(t){try{n._actionSubscribers.filter((function(t){return t.error})).forEach((function(e){return e.error(c,n.state,t)}))}catch(t){}e(t)}))}))}},s.prototype.subscribe=function(t,e){return f(t,this._subscribers,e)},s.prototype.subscribeAction=function(t,e){return f("function"==typeof t?{before:t}:t,this._actionSubscribers,e)},s.prototype.watch=function(e,n,r){var o=this;return t.watch((function(){return e(o.state,o.getters)}),n,Object.assign({},r))},s.prototype.replaceState=function(t){var e=this;this._withCommit((function(){e._state.data=t}))},s.prototype.registerModule=function(t,e,n){void 0===n&&(n={}),"string"==typeof t&&(t=[t]),this._modules.register(t,e),p(this,this.state,t,this._modules.get(t),n.preserveState),h(this,this.state)},s.prototype.unregisterModule=function(t){var e=this;"string"==typeof t&&(t=[t]),this._modules.unregister(t),this._withCommit((function(){delete d(e.state,t.slice(0,-1))[t[t.length-1]]})),l(this)},s.prototype.hasModule=function(t){return"string"==typeof t&&(t=[t]),this._modules.isRegistered(t)},s.prototype.hotUpdate=function(t){this._modules.update(t),l(this,!0)},s.prototype._withCommit=function(t){var e=this._committing;this._committing=!0,t(),this._committing=e},Object.defineProperties(s.prototype,u);var v=w((function(t,e){var n={};return b(e).forEach((function(e){var r=e.key,o=e.val;n[r]=function(){var e=this.$store.state,n=this.$store.getters;if(t){var r=M(this.$store,"mapState",t);if(!r)return;e=r.context.state,n=r.context.getters}return"function"==typeof o?o.call(this,e,n):e[o]},n[r].vuex=!0})),n})),g=w((function(t,e){var n={};return b(e).forEach((function(e){var r=e.key,o=e.val;n[r]=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var r=this.$store.commit;if(t){var i=M(this.$store,"mapMutations",t);if(!i)return;r=i.context.commit}return"function"==typeof o?o.apply(this,[r].concat(e)):r.apply(this.$store,[o].concat(e))}})),n})),y=w((function(t,e){var n={};return b(e).forEach((function(e){var r=e.key,o=e.val;o=t+o,n[r]=function(){if(!t||M(this.$store,"mapGetters",t))return this.$store.getters[o]},n[r].vuex=!0})),n})),_=w((function(t,e){var n={};return b(e).forEach((function(e){var r=e.key,o=e.val;n[r]=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var r=this.$store.dispatch;if(t){var i=M(this.$store,"mapActions",t);if(!i)return;r=i.context.dispatch}return"function"==typeof o?o.apply(this,[r].concat(e)):r.apply(this.$store,[o].concat(e))}})),n}));function b(t){return function(t){return Array.isArray(t)||o(t)}(t)?Array.isArray(t)?t.map((function(t){return{key:t,val:t}})):Object.keys(t).map((function(e){return{key:e,val:t[e]}})):[]}function w(t){return function(e,n){return"string"!=typeof e?(n=e,e=""):"/"!==e.charAt(e.length-1)&&(e+="/"),t(e,n)}}function M(t,e,n){return t._modulesNamespaceMap[n]}function O(t,e,n){var r=n?t.groupCollapsed:t.group;try{r.call(t,e)}catch(n){t.log(e)}}function C(t){try{t.groupEnd()}catch(e){t.log("—— log end ——")}}function E(){var t=new Date;return" @ "+j(t.getHours(),2)+":"+j(t.getMinutes(),2)+":"+j(t.getSeconds(),2)+"."+j(t.getMilliseconds(),3)}function j(t,e){return n="0",r=e-t.toString().length,new Array(r+1).join(n)+t;var n,r}return{version:"4.0.0-rc.1",createStore:function(t){return new s(t)},Store:s,useStore:function(e){return void 0===e&&(e=null),t.inject(null!==e?e:"store")},mapState:v,mapMutations:g,mapGetters:y,mapActions:_,createNamespacedHelpers:function(t){return{mapState:v.bind(null,t),mapGetters:y.bind(null,t),mapMutations:g.bind(null,t),mapActions:_.bind(null,t)}},createLogger:function(t){void 0===t&&(t={});var e=t.collapsed;void 0===e&&(e=!0);var r=t.filter;void 0===r&&(r=function(t,e,n){return!0});var o=t.transformer;void 0===o&&(o=function(t){return t});var i=t.mutationTransformer;void 0===i&&(i=function(t){return t});var c=t.actionFilter;void 0===c&&(c=function(t,e){return!0});var a=t.actionTransformer;void 0===a&&(a=function(t){return t});var s=t.logMutations;void 0===s&&(s=!0);var u=t.logActions;void 0===u&&(u=!0);var f=t.logger;return void 0===f&&(f=console),function(t){var l=n(t.state);void 0!==f&&(s&&t.subscribe((function(t,c){var a=n(c);if(r(t,l,a)){var s=E(),u=i(t),h="mutation "+t.type+s;O(f,h,e),f.log("%c prev state","color: #9E9E9E; font-weight: bold",o(l)),f.log("%c mutation","color: #03A9F4; font-weight: bold",u),f.log("%c next state","color: #4CAF50; font-weight: bold",o(a)),C(f)}l=a})),u&&t.subscribeAction((function(t,n){if(c(t,n)){var r=E(),o=a(t),i="action "+t.type+r;O(f,i,e),f.log("%c action","color: #03A9F4; font-weight: bold",o),C(f)}})))}}}}(Vue); | ||
var Vuex=function(t){"use strict";var e="store";var n=("undefined"!=typeof window?window:"undefined"!=typeof global?global:{}).__VUE_DEVTOOLS_GLOBAL_HOOK__;function r(t,e){if(void 0===e&&(e=[]),null===t||"object"!=typeof t)return t;var n,o=(n=function(e){return e.original===t},e.filter(n)[0]);if(o)return o.copy;var i=Array.isArray(t)?[]:{};return e.push({original:t,copy:i}),Object.keys(t).forEach((function(n){i[n]=r(t[n],e)})),i}function o(t,e){Object.keys(t).forEach((function(n){return e(t[n],n)}))}function i(t){return null!==t&&"object"==typeof t}var a=function(t,e){this.runtime=e,this._children=Object.create(null),this._rawModule=t;var n=t.state;this.state=("function"==typeof n?n():n)||{}},c={namespaced:{configurable:!0}};c.namespaced.get=function(){return!!this._rawModule.namespaced},a.prototype.addChild=function(t,e){this._children[t]=e},a.prototype.removeChild=function(t){delete this._children[t]},a.prototype.getChild=function(t){return this._children[t]},a.prototype.hasChild=function(t){return t in this._children},a.prototype.update=function(t){this._rawModule.namespaced=t.namespaced,t.actions&&(this._rawModule.actions=t.actions),t.mutations&&(this._rawModule.mutations=t.mutations),t.getters&&(this._rawModule.getters=t.getters)},a.prototype.forEachChild=function(t){o(this._children,t)},a.prototype.forEachGetter=function(t){this._rawModule.getters&&o(this._rawModule.getters,t)},a.prototype.forEachAction=function(t){this._rawModule.actions&&o(this._rawModule.actions,t)},a.prototype.forEachMutation=function(t){this._rawModule.mutations&&o(this._rawModule.mutations,t)},Object.defineProperties(a.prototype,c);var s=function(t){this.register([],t,!1)};function u(t,e,n){if(e.update(n),n.modules)for(var r in n.modules){if(!e.getChild(r))return;u(t.concat(r),e.getChild(r),n.modules[r])}}s.prototype.get=function(t){return t.reduce((function(t,e){return t.getChild(e)}),this.root)},s.prototype.getNamespace=function(t){var e=this.root;return t.reduce((function(t,n){return t+((e=e.getChild(n)).namespaced?n+"/":"")}),"")},s.prototype.update=function(t){u([],this.root,t)},s.prototype.register=function(t,e,n){var r=this;void 0===n&&(n=!0);var i=new a(e,n);0===t.length?this.root=i:this.get(t.slice(0,-1)).addChild(t[t.length-1],i);e.modules&&o(e.modules,(function(e,o){r.register(t.concat(o),e,n)}))},s.prototype.unregister=function(t){var e=this.get(t.slice(0,-1)),n=t[t.length-1],r=e.getChild(n);r&&r.runtime&&e.removeChild(n)},s.prototype.isRegistered=function(t){var e=this.get(t.slice(0,-1)),n=t[t.length-1];return!!e&&e.hasChild(n)};var f=function(t){var e=this;void 0===t&&(t={});var r=t.plugins;void 0===r&&(r=[]);var o=t.strict;void 0===o&&(o=!1),this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new s(t),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._makeLocalGettersCache=Object.create(null);var i=this,a=this.dispatch,c=this.commit;this.dispatch=function(t,e){return a.call(i,t,e)},this.commit=function(t,e,n){return c.call(i,t,e,n)},this.strict=o;var u=this._modules.root.state;m(this,u,[],this._modules.root),d(this,u),r.forEach((function(t){return t(e)})),(void 0===t.devtools||t.devtools)&&function(t){n&&(t._devtoolHook=n,n.emit("vuex:init",t),n.on("vuex:travel-to-state",(function(e){t.replaceState(e)})),t.subscribe((function(t,e){n.emit("vuex:mutation",t,e)}),{prepend:!0}),t.subscribeAction((function(t,e){n.emit("vuex:action",t,e)}),{prepend:!0}))}(this)},l={state:{configurable:!0}};function h(t,e,n){return e.indexOf(t)<0&&(n&&n.prepend?e.unshift(t):e.push(t)),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}function p(t,e){t._actions=Object.create(null),t._mutations=Object.create(null),t._wrappedGetters=Object.create(null),t._modulesNamespaceMap=Object.create(null);var n=t.state;m(t,n,[],t._modules.root,!0),d(t,n,e)}function d(e,n,r){var i=e._state;e.getters={},e._makeLocalGettersCache=Object.create(null);var a=e._wrappedGetters,c={};o(a,(function(t,n){c[n]=function(t,e){return function(){return t(e)}}(t,e),Object.defineProperty(e.getters,n,{get:function(){return c[n]()},enumerable:!0})})),e._state=t.reactive({data:n}),e.strict&&function(e){t.watch((function(){return e._state.data}),(function(){}),{deep:!0,flush:"sync"})}(e),i&&r&&e._withCommit((function(){i.data=null}))}function m(t,e,n,r,o){var i=!n.length,a=t._modules.getNamespace(n);if(r.namespaced&&(t._modulesNamespaceMap[a],t._modulesNamespaceMap[a]=r),!i&&!o){var c=v(e,n.slice(0,-1)),s=n[n.length-1];t._withCommit((function(){c[s]=r.state}))}var u=r.context=function(t,e,n){var r=""===e,o={dispatch:r?t.dispatch:function(n,r,o){var i=g(n,r,o),a=i.payload,c=i.options,s=i.type;return c&&c.root||(s=e+s),t.dispatch(s,a)},commit:r?t.commit:function(n,r,o){var i=g(n,r,o),a=i.payload,c=i.options,s=i.type;c&&c.root||(s=e+s),t.commit(s,a,c)}};return Object.defineProperties(o,{getters:{get:r?function(){return t.getters}:function(){return function(t,e){if(!t._makeLocalGettersCache[e]){var n={},r=e.length;Object.keys(t.getters).forEach((function(o){if(o.slice(0,r)===e){var i=o.slice(r);Object.defineProperty(n,i,{get:function(){return t.getters[o]},enumerable:!0})}})),t._makeLocalGettersCache[e]=n}return t._makeLocalGettersCache[e]}(t,e)}},state:{get:function(){return v(t.state,n)}}}),o}(t,a,n);r.forEachMutation((function(e,n){!function(t,e,n,r){(t._mutations[e]||(t._mutations[e]=[])).push((function(e){n.call(t,r.state,e)}))}(t,a+n,e,u)})),r.forEachAction((function(e,n){var r=e.root?n:a+n,o=e.handler||e;!function(t,e,n,r){(t._actions[e]||(t._actions[e]=[])).push((function(e){var o,i=n.call(t,{dispatch:r.dispatch,commit:r.commit,getters:r.getters,state:r.state,rootGetters:t.getters,rootState:t.state},e);return(o=i)&&"function"==typeof o.then||(i=Promise.resolve(i)),t._devtoolHook?i.catch((function(e){throw t._devtoolHook.emit("vuex:error",e),e})):i}))}(t,r,o,u)})),r.forEachGetter((function(e,n){!function(t,e,n,r){if(t._wrappedGetters[e])return;t._wrappedGetters[e]=function(t){return n(r.state,r.getters,t.state,t.getters)}}(t,a+n,e,u)})),r.forEachChild((function(r,i){m(t,e,n.concat(i),r,o)}))}function v(t,e){return e.reduce((function(t,e){return t[e]}),t)}function g(t,e,n){return i(t)&&t.type&&(n=e,e=t,t=t.type),{type:t,payload:e,options:n}}f.prototype.install=function(t,n){t.provide(n||e,this),t.config.globalProperties.$store=this},l.state.get=function(){return this._state.data},l.state.set=function(t){},f.prototype.commit=function(t,e,n){var r=this,o=g(t,e,n),i=o.type,a=o.payload,c={type:i,payload:a},s=this._mutations[i];s&&(this._withCommit((function(){s.forEach((function(t){t(a)}))})),this._subscribers.slice().forEach((function(t){return t(c,r.state)})))},f.prototype.dispatch=function(t,e){var n=this,r=g(t,e),o=r.type,i=r.payload,a={type:o,payload:i},c=this._actions[o];if(c){try{this._actionSubscribers.slice().filter((function(t){return t.before})).forEach((function(t){return t.before(a,n.state)}))}catch(t){}var s=c.length>1?Promise.all(c.map((function(t){return t(i)}))):c[0](i);return new Promise((function(t,e){s.then((function(e){try{n._actionSubscribers.filter((function(t){return t.after})).forEach((function(t){return t.after(a,n.state)}))}catch(t){}t(e)}),(function(t){try{n._actionSubscribers.filter((function(t){return t.error})).forEach((function(e){return e.error(a,n.state,t)}))}catch(t){}e(t)}))}))}},f.prototype.subscribe=function(t,e){return h(t,this._subscribers,e)},f.prototype.subscribeAction=function(t,e){return h("function"==typeof t?{before:t}:t,this._actionSubscribers,e)},f.prototype.watch=function(e,n,r){var o=this;return t.watch((function(){return e(o.state,o.getters)}),n,Object.assign({},r))},f.prototype.replaceState=function(t){var e=this;this._withCommit((function(){e._state.data=t}))},f.prototype.registerModule=function(t,e,n){void 0===n&&(n={}),"string"==typeof t&&(t=[t]),this._modules.register(t,e),m(this,this.state,t,this._modules.get(t),n.preserveState),d(this,this.state)},f.prototype.unregisterModule=function(t){var e=this;"string"==typeof t&&(t=[t]),this._modules.unregister(t),this._withCommit((function(){delete v(e.state,t.slice(0,-1))[t[t.length-1]]})),p(this)},f.prototype.hasModule=function(t){return"string"==typeof t&&(t=[t]),this._modules.isRegistered(t)},f.prototype.hotUpdate=function(t){this._modules.update(t),p(this,!0)},f.prototype._withCommit=function(t){var e=this._committing;this._committing=!0,t(),this._committing=e},Object.defineProperties(f.prototype,l);var y=O((function(t,e){var n={};return M(e).forEach((function(e){var r=e.key,o=e.val;n[r]=function(){var e=this.$store.state,n=this.$store.getters;if(t){var r=C(this.$store,"mapState",t);if(!r)return;e=r.context.state,n=r.context.getters}return"function"==typeof o?o.call(this,e,n):e[o]},n[r].vuex=!0})),n})),_=O((function(t,e){var n={};return M(e).forEach((function(e){var r=e.key,o=e.val;n[r]=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var r=this.$store.commit;if(t){var i=C(this.$store,"mapMutations",t);if(!i)return;r=i.context.commit}return"function"==typeof o?o.apply(this,[r].concat(e)):r.apply(this.$store,[o].concat(e))}})),n})),b=O((function(t,e){var n={};return M(e).forEach((function(e){var r=e.key,o=e.val;o=t+o,n[r]=function(){if(!t||C(this.$store,"mapGetters",t))return this.$store.getters[o]},n[r].vuex=!0})),n})),w=O((function(t,e){var n={};return M(e).forEach((function(e){var r=e.key,o=e.val;n[r]=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var r=this.$store.dispatch;if(t){var i=C(this.$store,"mapActions",t);if(!i)return;r=i.context.dispatch}return"function"==typeof o?o.apply(this,[r].concat(e)):r.apply(this.$store,[o].concat(e))}})),n}));function M(t){return function(t){return Array.isArray(t)||i(t)}(t)?Array.isArray(t)?t.map((function(t){return{key:t,val:t}})):Object.keys(t).map((function(e){return{key:e,val:t[e]}})):[]}function O(t){return function(e,n){return"string"!=typeof e?(n=e,e=""):"/"!==e.charAt(e.length-1)&&(e+="/"),t(e,n)}}function C(t,e,n){return t._modulesNamespaceMap[n]}function E(t,e,n){var r=n?t.groupCollapsed:t.group;try{r.call(t,e)}catch(n){t.log(e)}}function j(t){try{t.groupEnd()}catch(e){t.log("—— log end ——")}}function A(){var t=new Date;return" @ "+k(t.getHours(),2)+":"+k(t.getMinutes(),2)+":"+k(t.getSeconds(),2)+"."+k(t.getMilliseconds(),3)}function k(t,e){return n="0",r=e-t.toString().length,new Array(r+1).join(n)+t;var n,r}return{version:"4.0.0-rc.2",createStore:function(t){return new f(t)},Store:f,useStore:function(n){return void 0===n&&(n=null),t.inject(null!==n?n:e)},mapState:y,mapMutations:_,mapGetters:b,mapActions:w,createNamespacedHelpers:function(t){return{mapState:y.bind(null,t),mapGetters:b.bind(null,t),mapMutations:_.bind(null,t),mapActions:w.bind(null,t)}},createLogger:function(t){void 0===t&&(t={});var e=t.collapsed;void 0===e&&(e=!0);var n=t.filter;void 0===n&&(n=function(t,e,n){return!0});var o=t.transformer;void 0===o&&(o=function(t){return t});var i=t.mutationTransformer;void 0===i&&(i=function(t){return t});var a=t.actionFilter;void 0===a&&(a=function(t,e){return!0});var c=t.actionTransformer;void 0===c&&(c=function(t){return t});var s=t.logMutations;void 0===s&&(s=!0);var u=t.logActions;void 0===u&&(u=!0);var f=t.logger;return void 0===f&&(f=console),function(t){var l=r(t.state);void 0!==f&&(s&&t.subscribe((function(t,a){var c=r(a);if(n(t,l,c)){var s=A(),u=i(t),h="mutation "+t.type+s;E(f,h,e),f.log("%c prev state","color: #9E9E9E; font-weight: bold",o(l)),f.log("%c mutation","color: #03A9F4; font-weight: bold",u),f.log("%c next state","color: #4CAF50; font-weight: bold",o(c)),j(f)}l=c})),u&&t.subscribeAction((function(t,n){if(a(t,n)){var r=A(),o=c(t),i="action "+t.type+r;E(f,i,e),f.log("%c action","color: #03A9F4; font-weight: bold",o),j(f)}})))}}}}(Vue); |
{ | ||
"name": "vuex", | ||
"version": "4.0.0-rc.1", | ||
"version": "4.0.0-rc.2", | ||
"description": "state management for Vue.js", | ||
"main": "dist/vuex.cjs.js", | ||
"exports": { | ||
".": { | ||
"require": "./dist/vuex.cjs.js", | ||
"import": "./dist/vuex.mjs" | ||
}, | ||
"./": "./" | ||
}, | ||
"module": "dist/vuex.esm-bundler.js", | ||
@@ -23,3 +30,3 @@ "browser": "dist/vuex.esm-browser.js", | ||
"lint": "eslint src test", | ||
"test": "npm run lint && npm run test:types && npm run test:unit && npm run test:ssr && npm run test:e2e", | ||
"test": "npm run lint && npm run build && npm run test:types && npm run test:unit && npm run test:ssr && npm run test:e2e && npm run test:esm", | ||
"test:unit": "jest --testPathIgnorePatterns test/e2e", | ||
@@ -29,7 +36,9 @@ "test:e2e": "start-server-and-test dev http://localhost:8080 'jest --testPathIgnorePatterns test/unit'", | ||
"test:types": "tsc -p types/test", | ||
"test:esm": "node test/esm/esm-test.js", | ||
"coverage": "jest --testPathIgnorePatterns test/e2e --coverage", | ||
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s", | ||
"release": "node scripts/release.js", | ||
"docs": "vuepress dev docs", | ||
"docs:build": "vuepress build docs" | ||
"docs": "vitepress dev docs", | ||
"docs:build": "vitepress build docs", | ||
"docs:serve": "yarn docs:build && vitepress serve docs" | ||
}, | ||
@@ -47,3 +56,3 @@ "repository": { | ||
"peerDependencies": { | ||
"vue": "^3.0.0-beta.10" | ||
"vue": "^3.0.2" | ||
}, | ||
@@ -54,7 +63,7 @@ "devDependencies": { | ||
"@rollup/plugin-buble": "^0.21.3", | ||
"@rollup/plugin-commonjs": "^11.1.0", | ||
"@rollup/plugin-node-resolve": "^7.1.3", | ||
"@rollup/plugin-commonjs": "^16.0.0", | ||
"@rollup/plugin-node-resolve": "^10.0.0", | ||
"@rollup/plugin-replace": "^2.3.2", | ||
"@types/node": "^13.13.5", | ||
"@vue/compiler-sfc": "^3.0.0-beta.10", | ||
"@types/node": "^14.14.6", | ||
"@vue/compiler-sfc": "^3.0.2", | ||
"babel-jest": "^26.0.1", | ||
@@ -65,3 +74,3 @@ "babel-loader": "^8.1.0", | ||
"conventional-changelog-cli": "^2.0.31", | ||
"cross-env": "^5.2.0", | ||
"cross-env": "^7.0.2", | ||
"css-loader": "^2.1.0", | ||
@@ -75,11 +84,12 @@ "enquirer": "^2.3.5", | ||
"jest": "^26.0.1", | ||
"puppeteer": "^4.0.0", | ||
"puppeteer": "^5.4.1", | ||
"regenerator-runtime": "^0.13.5", | ||
"rollup": "^2.8.2", | ||
"rollup-plugin-terser": "^5.3.0", | ||
"rollup": "^2.33.0", | ||
"rollup-plugin-terser": "^7.0.2", | ||
"semver": "^7.3.2", | ||
"start-server-and-test": "^1.11.0", | ||
"todomvc-app-css": "2.1.0", | ||
"typescript": "^3.8.3", | ||
"vue": "^3.0.0-beta.10", | ||
"typescript": "^4.0.5", | ||
"vitepress": "^0.9.0", | ||
"vue": "^3.0.2", | ||
"vue-loader": "^16.0.0-beta.1", | ||
@@ -86,0 +96,0 @@ "vue-style-loader": "^4.1.2", |
101
README.md
@@ -1,98 +0,55 @@ | ||
# Vuex 4 | ||
# Vuex | ||
This is the Vue 3 compatible version of Vuex. The focus is compatibility, and it provides the exact same API as Vuex 3, so users can reuse their existing Vuex code with Vue 3. | ||
[![npm](https://img.shields.io/npm/v/vuex/next.svg)](https://npmjs.com/package/vuex) | ||
[![ci status](https://circleci.com/gh/vuejs/vuex/tree/dev.png?style=shield)](https://circleci.com/gh/vuejs/vuex) | ||
## Status: RC | ||
--- | ||
All Vuex 3 features work. There are a few breaking changes described in a later section, so please check them out. You can find basic usage with both option and Composition API in the `example` directory. | ||
:fire: **HEADS UP!** You're currently looking at Vuex 4 branch. If you're looking for Vuex 3, [please check out `dev` branch](https://github.com/vuejs/vuex). | ||
Feedback is welcome should you discover any issues. You may use [vue-next-webpack-preview](https://github.com/vuejs/vue-next-webpack-preview) to test out Vue 3 with Vuex 4. | ||
--- | ||
## Breaking changes | ||
Vuex is a state management pattern + library for Vue.js applications. It serves as a centralized store for all the components in an application, with rules ensuring that the state can only be mutated in a predictable fashion. It also integrates with Vue's official [devtools extension](https://github.com/vuejs/vue-devtools) to provide advanced features such as zero-config time-travel debugging and state snapshot export / import. | ||
### Installation process has changed | ||
Learn more about Vuex at "[What is Vuex?](https://next.vuex.vuejs.org/)", or get started by looking into [full documentation](http://next.vuex.vuejs.org/). | ||
To align with the new Vue 3 initialization process, the installation process of Vuex has changed. | ||
## Documentation | ||
To create a new store instance, users are now encouraged to use the newly introduced `createStore` function. | ||
To check out docs, visit [vuex.vuejs.org](https://next.vuex.vuejs.org/). | ||
```js | ||
import { createStore } from 'vuex' | ||
## Examples | ||
export const store = createStore({ | ||
state () { | ||
return { | ||
count: 1 | ||
} | ||
} | ||
}) | ||
``` | ||
You may find example applications built with Vuex under the `examples` directory. | ||
> Whilst this is not technically a breaking change, you may still use the `new Store(...)` syntax, we recommend this approach to align with Vue 3 and Vue Router Next. | ||
Running the examples: | ||
To install Vuex to a Vue instance, pass the store instance instead of Vuex. | ||
```js | ||
import { createApp } from 'vue' | ||
import { store } from './store' | ||
import App from './App.vue' | ||
const app = createApp(App) | ||
app.use(store) | ||
app.mount('#app') | ||
```bash | ||
$ npm install | ||
$ npm run dev # serve examples at localhost:8080 | ||
``` | ||
### Bundles are now aligned with Vue 3 | ||
## Questions | ||
The following bundles are generated to align with Vue 3 bundles: | ||
For questions and support please use the [Discord chat server](https://chat.vuejs.org) or [the official forum](http://forum.vuejs.org). The issue list of this repo is **exclusively** for bug reports and feature requests. | ||
- `vuex.global(.prod).js` | ||
- For direct use with `<script src="...">` in the browser. Exposes the Vuex global. | ||
- Global build is built as IIFE, and not UMD, and is only meant for direct use with `<script src="...">`. | ||
- Contains hard-coded prod/dev branches and the prod build is pre-minified. Use the `.prod.js` files for production. | ||
- `vuex.esm-browser(.prod).js` | ||
- For use with native ES module imports (including module supporting browsers via `<script type="module">`. | ||
- `vuex.esm-bundler.js` | ||
- For use with bundlers such as `webpack`, `rollup` and `parcel`. | ||
- Leaves prod/dev branches with `process.env.NODE_ENV` guards (must be replaced by bundler). | ||
- Does not ship minified builds (to be done together with the rest of the code after bundling). | ||
- `vuex.cjs.js` | ||
- For use in Node.js server-side rendering with `require()`. | ||
## Issues | ||
### Typings for `ComponentCustomProperties` | ||
Please make sure to read the [Issue Reporting Checklist](https://github.com/vuejs/vuex/blob/dev/.github/contributing.md#issue-reporting-guidelines) before opening an issue. Issues not conforming to the guidelines may be closed immediately. | ||
Vuex 4 removes its global typings for `this.$store` within Vue Component to solve [issue #994](https://github.com/vuejs/vuex/issues/994). When used with TypeScript, you must declare your own module augmentation. | ||
## Changelog | ||
Place the following code in your project to allow `this.$store` to be typed correctly: | ||
Detailed changes for each release are documented in the [release notes](https://github.com/vuejs/vuex/releases). | ||
```ts | ||
// vuex-shim.d.ts | ||
## Stay In Touch | ||
import { ComponentCustomProperties } from 'vue' | ||
import { Store } from 'vuex' | ||
For latest releases and announcements, follow on Twitter: [@vuejs](https://twitter.com/vuejs). | ||
declare module '@vue/runtime-core' { | ||
// Declare your own store states. | ||
interface State { | ||
count: number | ||
} | ||
## Contribution | ||
interface ComponentCustomProperties { | ||
$store: Store<State> | ||
} | ||
} | ||
``` | ||
Please make sure to read the [Contributing Guide](https://github.com/vuejs/vuex/blob/dev/.github/contributing.md) before making a pull request. | ||
### `createLogger` function is exported from the core module | ||
## License | ||
In Vuex 3, `createLogger` function was exported from `vuex/dist/logger` but it's now included in the core package. You should import the function directly from `vuex` package. | ||
[MIT](http://opensource.org/licenses/MIT) | ||
```js | ||
import { createLogger } from 'vuex' | ||
``` | ||
## TODOs as of 4.0.0-rc.1 | ||
- Update docs | ||
Copyright (c) 2015-present Evan You |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
219930
15
5247
0
37
56