UNPKG

@uni-store/core

Version:
7 lines (6 loc) 15.1 kB
/*! * @uni-store/core v0.3.5 * (c) 2022 dolymood (dolymood@gmail.com) * @license MIT */ var UniStore=function(t){"use strict";function e(t,e){const n=Object.create(null),s=t.split(",");for(let t=0;t<s.length;t++)n[s[t]]=!0;return e?t=>!!n[t.toLowerCase()]:t=>!!n[t]}const n={},s=()=>{},r=Object.assign,i=Object.prototype.hasOwnProperty,o=(t,e)=>i.call(t,e),c=Array.isArray,u=t=>"[object Map]"===p(t),l=t=>"function"==typeof t,f=t=>"symbol"==typeof t,a=t=>null!==t&&"object"==typeof t,h=Object.prototype.toString,p=t=>h.call(t),d=t=>"string"==typeof t&&"NaN"!==t&&"-"!==t[0]&&""+parseInt(t,10)===t,_=(t,e)=>!Object.is(t,e);let v;class g{constructor(t=!1){this.active=!0,this.effects=[],this.cleanups=[],!t&&v&&(this.parent=v,this.index=(v.scopes||(v.scopes=[])).push(this)-1)}run(t){if(this.active)try{return v=this,t()}finally{v=this.parent}}on(){v=this}off(){v=this.parent}stop(t){if(this.active){let e,n;for(e=0,n=this.effects.length;e<n;e++)this.effects[e].stop();for(e=0,n=this.cleanups.length;e<n;e++)this.cleanups[e]();if(this.scopes)for(e=0,n=this.scopes.length;e<n;e++)this.scopes[e].stop(!0);if(this.parent&&!t){const t=this.parent.scopes.pop();t&&t!==this&&(this.parent.scopes[this.index]=t,t.index=this.index)}this.active=!1}}}function y(t){return new g(t)}function w(t,e=v){e&&e.active&&e.effects.push(t)}const b=t=>{const e=new Set(t);return e.w=0,e.n=0,e},R=t=>(t.w&j)>0,S=t=>(t.n&j)>0,x=new WeakMap;let m=0,j=1;let O;const k=Symbol(""),$=Symbol("");class P{constructor(t,e=null,n){this.fn=t,this.scheduler=e,this.active=!0,this.deps=[],this.parent=void 0,w(this,n)}run(){if(!this.active)return this.fn();let t=O,e=M;for(;t;){if(t===this)return;t=t.parent}try{return this.parent=O,O=this,M=!0,j=1<<++m,m<=30?(({deps:t})=>{if(t.length)for(let e=0;e<t.length;e++)t[e].w|=j})(this):E(this),this.fn()}finally{m<=30&&(t=>{const{deps:e}=t;if(e.length){let n=0;for(let s=0;s<e.length;s++){const r=e[s];R(r)&&!S(r)?r.delete(t):e[n++]=r,r.w&=~j,r.n&=~j}e.length=n}})(this),j=1<<--m,O=this.parent,M=e,this.parent=void 0}}stop(){this.active&&(E(this),this.onStop&&this.onStop(),this.active=!1)}}function E(t){const{deps:e}=t;if(e.length){for(let n=0;n<e.length;n++)e[n].delete(t);e.length=0}}let M=!0;const z=[];function W(t,e,n){if(M&&O){let e=x.get(t);e||x.set(t,e=new Map);let s=e.get(n);s||e.set(n,s=b()),V(s)}}function V(t,e){let n=!1;m<=30?S(t)||(t.n|=j,n=!R(t)):n=!t.has(O),n&&(t.add(O),O.deps.push(t))}function A(t,e,n,s,r,i){const o=x.get(t);if(!o)return;let l=[];if("clear"===e)l=[...o.values()];else if("length"===n&&c(t))o.forEach(((t,e)=>{("length"===e||e>=s)&&l.push(t)}));else switch(void 0!==n&&l.push(o.get(n)),e){case"add":c(t)?d(n)&&l.push(o.get("length")):(l.push(o.get(k)),u(t)&&l.push(o.get($)));break;case"delete":c(t)||(l.push(o.get(k)),u(t)&&l.push(o.get($)));break;case"set":u(t)&&l.push(o.get(k))}if(1===l.length)l[0]&&N(l[0]);else{const t=[];for(const e of l)e&&t.push(...e);N(b(t))}}function N(t,e){for(const e of c(t)?t:[...t])(e!==O||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}const C=e("__proto__,__v_isRef,__isVue"),U=new Set(Object.getOwnPropertyNames(Symbol).map((t=>Symbol[t])).filter(f)),I=H(),K=H(!1,!0),T=H(!0),B=H(!0,!0),D=F();function F(){const t={};return["includes","indexOf","lastIndexOf"].forEach((e=>{t[e]=function(...t){const n=Et(this);for(let t=0,e=this.length;t<e;t++)W(n,0,t+"");const s=n[e](...t);return-1===s||!1===s?n[e](...t.map(Et)):s}})),["push","pop","shift","unshift","splice"].forEach((e=>{t[e]=function(...t){z.push(M),M=!1;const n=Et(this)[e].apply(this,t);return function(){const t=z.pop();M=void 0===t||t}(),n}})),t}function H(t=!1,e=!1){return function(n,s,r){if("__v_isReactive"===s)return!t;if("__v_isReadonly"===s)return t;if("__v_isShallow"===s)return e;if("__v_raw"===s&&r===(t?e?St:Rt:e?bt:wt).get(n))return n;const i=c(n);if(!t&&i&&o(D,s))return Reflect.get(D,s,r);const u=Reflect.get(n,s,r);if(f(s)?U.has(s):C(s))return u;if(t||W(n,0,s),e)return u;if(Nt(u)){return!i||!d(s)?u.value:u}return a(u)?t?jt(u):mt(u):u}}function L(t=!1){return function(e,n,s,r){let i=e[n];if($t(i)&&Nt(i)&&!Nt(s))return!1;if(!t&&!$t(s)&&(Pt(s)||(s=Et(s),i=Et(i)),!c(e)&&Nt(i)&&!Nt(s)))return i.value=s,!0;const u=c(e)&&d(n)?Number(n)<e.length:o(e,n),l=Reflect.set(e,n,s,r);return e===Et(r)&&(u?_(s,i)&&A(e,"set",n,s):A(e,"add",n,s)),l}}const q={get:I,set:L(),deleteProperty:function(t,e){const n=o(t,e),s=Reflect.deleteProperty(t,e);return s&&n&&A(t,"delete",e,void 0),s},has:function(t,e){const n=Reflect.has(t,e);return f(e)&&U.has(e)||W(t,0,e),n},ownKeys:function(t){return W(t,0,c(t)?"length":k),Reflect.ownKeys(t)}},G={get:T,set:(t,e)=>!0,deleteProperty:(t,e)=>!0},J=r({},q,{get:K,set:L(!0)}),Q=r({},G,{get:B}),X=t=>t,Y=t=>Reflect.getPrototypeOf(t);function Z(t,e,n=!1,s=!1){const r=Et(t=t.__v_raw),i=Et(e);e!==i&&!n&&W(r,0,e),!n&&W(r,0,i);const{has:o}=Y(r),c=s?X:n?Wt:zt;return o.call(r,e)?c(t.get(e)):o.call(r,i)?c(t.get(i)):void(t!==r&&t.get(e))}function tt(t,e=!1){const n=this.__v_raw,s=Et(n),r=Et(t);return t!==r&&!e&&W(s,0,t),!e&&W(s,0,r),t===r?n.has(t):n.has(t)||n.has(r)}function et(t,e=!1){return t=t.__v_raw,!e&&W(Et(t),0,k),Reflect.get(t,"size",t)}function nt(t){t=Et(t);const e=Et(this);return Y(e).has.call(e,t)||(e.add(t),A(e,"add",t,t)),this}function st(t,e){e=Et(e);const n=Et(this),{has:s,get:r}=Y(n);let i=s.call(n,t);i||(t=Et(t),i=s.call(n,t));const o=r.call(n,t);return n.set(t,e),i?_(e,o)&&A(n,"set",t,e):A(n,"add",t,e),this}function rt(t){const e=Et(this),{has:n,get:s}=Y(e);let r=n.call(e,t);r||(t=Et(t),r=n.call(e,t)),s&&s.call(e,t);const i=e.delete(t);return r&&A(e,"delete",t,void 0),i}function it(){const t=Et(this),e=0!==t.size,n=t.clear();return e&&A(t,"clear",void 0,void 0),n}function ot(t,e){return function(n,s){const r=this,i=r.__v_raw,o=Et(i),c=e?X:t?Wt:zt;return!t&&W(o,0,k),i.forEach(((t,e)=>n.call(s,c(t),c(e),r)))}}function ct(t,e,n){return function(...s){const r=this.__v_raw,i=Et(r),o=u(i),c="entries"===t||t===Symbol.iterator&&o,l="keys"===t&&o,f=r[t](...s),a=n?X:e?Wt:zt;return!e&&W(i,0,l?$:k),{next(){const{value:t,done:e}=f.next();return e?{value:t,done:e}:{value:c?[a(t[0]),a(t[1])]:a(t),done:e}},[Symbol.iterator](){return this}}}}function ut(t){return function(...e){return"delete"!==t&&this}}function lt(){const t={get(t){return Z(this,t)},get size(){return et(this)},has:tt,add:nt,set:st,delete:rt,clear:it,forEach:ot(!1,!1)},e={get(t){return Z(this,t,!1,!0)},get size(){return et(this)},has:tt,add:nt,set:st,delete:rt,clear:it,forEach:ot(!1,!0)},n={get(t){return Z(this,t,!0)},get size(){return et(this,!0)},has(t){return tt.call(this,t,!0)},add:ut("add"),set:ut("set"),delete:ut("delete"),clear:ut("clear"),forEach:ot(!0,!1)},s={get(t){return Z(this,t,!0,!0)},get size(){return et(this,!0)},has(t){return tt.call(this,t,!0)},add:ut("add"),set:ut("set"),delete:ut("delete"),clear:ut("clear"),forEach:ot(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach((r=>{t[r]=ct(r,!1,!1),n[r]=ct(r,!0,!1),e[r]=ct(r,!1,!0),s[r]=ct(r,!0,!0)})),[t,n,e,s]}const[ft,at,ht,pt]=lt();function dt(t,e){const n=e?t?pt:ht:t?at:ft;return(e,s,r)=>"__v_isReactive"===s?!t:"__v_isReadonly"===s?t:"__v_raw"===s?e:Reflect.get(o(n,s)&&s in e?n:e,s,r)}const _t={get:dt(!1,!1)},vt={get:dt(!1,!0)},gt={get:dt(!0,!1)},yt={get:dt(!0,!0)},wt=new WeakMap,bt=new WeakMap,Rt=new WeakMap,St=new WeakMap;function xt(t){return t.__v_skip||!Object.isExtensible(t)?0:function(t){switch(t){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}((t=>p(t).slice(8,-1))(t))}function mt(t){return $t(t)?t:Ot(t,!1,q,_t,wt)}function jt(t){return Ot(t,!0,G,gt,Rt)}function Ot(t,e,n,s,r){if(!a(t))return t;if(t.__v_raw&&(!e||!t.__v_isReactive))return t;const i=r.get(t);if(i)return i;const o=xt(t);if(0===o)return t;const c=new Proxy(t,2===o?s:n);return r.set(t,c),c}function kt(t){return $t(t)?kt(t.__v_raw):!(!t||!t.__v_isReactive)}function $t(t){return!(!t||!t.__v_isReadonly)}function Pt(t){return!(!t||!t.__v_isShallow)}function Et(t){const e=t&&t.__v_raw;return e?Et(e):t}function Mt(t){return((t,e,n)=>{Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value:n})})(t,"__v_skip",!0),t}const zt=t=>a(t)?mt(t):t,Wt=t=>a(t)?jt(t):t;function Vt(t){M&&O&&V((t=Et(t)).dep||(t.dep=b()))}function At(t,e){(t=Et(t)).dep&&N(t.dep)}function Nt(t){return!(!t||!0!==t.__v_isRef)}function Ct(t,e){return Nt(t)?t:new Ut(t,e)}class Ut{constructor(t,e){this.__v_isShallow=e,this.dep=void 0,this.__v_isRef=!0,this._rawValue=e?t:Et(t),this._value=e?t:zt(t)}get value(){return Vt(this),this._value}set value(t){t=this.__v_isShallow?t:Et(t),_(t,this._rawValue)&&(this._rawValue=t,this._value=this.__v_isShallow?t:zt(t),At(this))}}function It(t){return Nt(t)?t.value:t}const Kt={get:(t,e,n)=>It(Reflect.get(t,e,n)),set:(t,e,n,s)=>{const r=t[e];return Nt(r)&&!Nt(n)?(r.value=n,!0):Reflect.set(t,e,n,s)}};function Tt(t){return kt(t)?t:new Proxy(t,Kt)}class Bt{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:e,set:n}=t((()=>Vt(this)),(()=>At(this)));this._get=e,this._set=n}get value(){return this._get()}set value(t){this._set(t)}}class Dt{constructor(t,e,n){this._object=t,this._key=e,this._defaultValue=n,this.__v_isRef=!0}get value(){const t=this._object[this._key];return void 0===t?this._defaultValue:t}set value(t){this._object[this._key]=t}}function Ft(t,e,n){const s=t[e];return Nt(s)?s:new Dt(t,e,n)}class Ht{constructor(t,e,n,s){this._setter=e,this.dep=void 0,this.__v_isRef=!0,this._dirty=!0,this.effect=new P(t,(()=>{this._dirty||(this._dirty=!0,At(this))})),this.effect.computed=this,this.effect.active=this._cacheable=!s,this.__v_isReadonly=n}get value(){const t=Et(this);return Vt(t),!t._dirty&&t._cacheable||(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function Lt(t,e,n,s){let r;try{r=s?t(...s):t()}catch(t){Gt(t,e,n)}return r}function qt(t,e,n,s){if(l(t)){const i=Lt(t,e,n,s);return i&&(a(r=i)&&l(r.then)&&l(r.catch))&&i.catch((t=>{Gt(t,e,n)})),i}var r;const i=[];for(let r=0;r<t.length;r++)i.push(qt(t[r],e,n,s));return i}function Gt(t,e,n,s=!0){if(e){let s=e.parent;const r=e.proxy,i=n;for(;s;){const e=s.ec;if(e)for(let n=0;n<e.length;n++)if(!1===e[n](t,r,i))return;s=s.parent}const o=e.appContext.config.errorHandler;if(o)return void Lt(o,null,10,[t,r,i])}!function(t,e,n,s=!0){console.error(t)}(t,0,0,s)}Promise.resolve();let Jt=!1,Qt=!1;const Xt=[];let Yt=0;const Zt=[];let te=null,ee=0;const ne=[];let se=null,re=0;const ie=Promise.resolve();let oe=null,ce=null;function ue(t){const e=oe||ie;return t?e.then(this?t.bind(this):t):e}function le(t){Xt.length&&Xt.includes(t,Jt&&t.allowRecurse?Yt+1:Yt)||t===ce||(null==t.id?Xt.push(t):Xt.splice(function(t){let e=Yt+1,n=Xt.length;for(;e<n;){const s=e+n>>>1;pe(Xt[s])<t?e=s+1:n=s}return e}(t.id),0,t),fe())}function fe(){Jt||Qt||(Qt=!0,oe=ie.then(de))}function ae(t,e,n,s){c(t)?n.push(...t):e&&e.includes(t,t.allowRecurse?s+1:s)||n.push(t),fe()}function he(t,e=null){if(Zt.length){for(ce=e,te=[...new Set(Zt)],Zt.length=0,ee=0;ee<te.length;ee++)te[ee]();te=null,ee=0,ce=null,he(t,e)}}const pe=t=>null==t.id?1/0:t.id;function de(t){Qt=!1,Jt=!0,he(t),Xt.sort(((t,e)=>pe(t)-pe(e)));try{for(Yt=0;Yt<Xt.length;Yt++){const t=Xt[Yt];t&&!1!==t.active&&Lt(t,null,14)}}finally{Yt=0,Xt.length=0,function(t){if(ne.length){const t=[...new Set(ne)];if(ne.length=0,se)return void se.push(...t);for(se=t,se.sort(((t,e)=>pe(t)-pe(e))),re=0;re<se.length;re++)se[re]();se=null,re=0}}(),Jt=!1,oe=null,(Xt.length||Zt.length||ne.length)&&de(t)}}const _e={};function ve(t,e,n){return ge(t,e,n)}function ge(t,e,{immediate:r,deep:i,flush:o}=n){const u=Se;let f,a,h=!1,p=!1;if(Nt(t)?(f=()=>t.value,h=Pt(t)):kt(t)?(f=()=>t,i=!0):c(t)?(p=!0,h=t.some(kt),f=()=>t.map((t=>Nt(t)?t.value:kt(t)?ye(t):l(t)?Lt(t,u,2):void 0))):f=l(t)?e?()=>Lt(t,u,2):()=>{if(!u||!u.isUnmounted)return a&&a(),qt(t,u,3,[d])}:s,e&&i){const t=f;f=()=>ye(t())}let d=t=>{a=w.onStop=()=>{Lt(t,u,4)}};if(xe)return d=s,e?r&&qt(e,u,3,[f(),p?[]:void 0,d]):f(),s;let v=p?[]:_e;const g=()=>{if(w.active)if(e){const t=w.run();(i||h||(p?t.some(((t,e)=>_(t,v[e]))):_(t,v)))&&(a&&a(),qt(e,u,3,[t,v===_e?void 0:v,d]),v=t)}else w.run()};let y;g.allowRecurse=!!e,y="sync"===o?g:"post"===o?()=>we(g,u&&u.suspense):()=>{!u||u.isMounted?function(t){ae(t,te,Zt,ee)}(g):g()};const w=new P(f,y);return e?r?g():v=w.run():"post"===o?we(w.run.bind(w),u&&u.suspense):w.run(),()=>{w.stop(),u&&u.scope&&((t,e)=>{const n=t.indexOf(e);n>-1&&t.splice(n,1)})(u.scope.effects,w)}}function ye(t,e){if(!a(t)||t.__v_skip)return t;if((e=e||new Set).has(t))return t;if(e.add(t),Nt(t))ye(t.value,e);else if(c(t))for(let n=0;n<t.length;n++)ye(t[n],e);else if("[object Set]"===p(t)||u(t))t.forEach((t=>{ye(t,e)}));else if((t=>"[object Object]"===p(t))(t))for(const n in t)ye(t[n],e);return t}const we=function(t,e){e&&e.pendingBranch?c(t)?e.effects.push(...t):e.effects.push(t):ae(t,se,ne,re)},be=t=>t?4&t.vnode.shapeFlag?function(t){if(t.exposed)return t.exposeProxy||(t.exposeProxy=new Proxy(Tt(Mt(t.exposed)),{get:(e,n)=>n in e?e[n]:n in Re?Re[n](t):void 0}))}(t)||t.proxy:be(t.parent):null,Re=r(Object.create(null),{$:t=>t,$el:t=>t.vnode.el,$data:t=>t.data,$props:t=>t.props,$attrs:t=>t.attrs,$slots:t=>t.slots,$refs:t=>t.refs,$parent:t=>be(t.parent),$root:t=>be(t.root),$emit:t=>t.emit,$options:t=>t.type,$forceUpdate:t=>()=>le(t.update),$nextTick:t=>ue.bind(t.proxy),$watch:t=>s});let Se=null;let xe=!1;return t.computed=function(t,e,n=!1){let r,i;const o=l(t);return o?(r=t,i=s):(r=t.get,i=t.set),new Ht(r,i,o||!i,n)},t.customRef=function(t){return new Bt(t)},t.defineStore=function(t){let e;return function(n=!1){return e&&!n||(e&&e.$dispose(),e=function(t){const e=y(!0),n=mt({$dispose:function(){e.stop(),r=[]},$subscribe:function(t,i={}){const o=function(t,e){return t.push(e),()=>{const n=t.indexOf(e);n>-1&&t.splice(n,1)}}(r,t),c=e.run((()=>ve((()=>n),(e=>{t(e.$state)}),Object.assign({},s,i))));return()=>{c(),o()}}}),s={deep:!0,flush:"post"};let r=Mt([]);const i=e.run((()=>t()));return Object.defineProperty(n,"$state",{get:()=>i}),Object.assign(n,i),n}(t)),e}},t.effect=function(t,e){t.effect&&(t=t.effect.fn);const n=new P(t);e&&(r(n,e),e.scope&&w(n,e.scope)),e&&e.lazy||n.run();const s=n.run.bind(n);return s.effect=n,s},t.effectScope=y,t.getCurrentScope=function(){return v},t.isProxy=function(t){return kt(t)||$t(t)},t.isReactive=kt,t.isReadonly=$t,t.isRef=Nt,t.isShallow=Pt,t.markRaw=Mt,t.nextTick=ue,t.onScopeDispose=function(t){v&&v.cleanups.push(t)},t.proxyRefs=Tt,t.reactive=mt,t.readonly=jt,t.ref=function(t){return Ct(t,!1)},t.shallowReactive=function(t){return Ot(t,!1,J,vt,bt)},t.shallowReadonly=function(t){return Ot(t,!0,Q,yt,St)},t.shallowRef=function(t){return Ct(t,!0)},t.stop=function(t){t.effect.stop()},t.toRaw=Et,t.toRef=Ft,t.toRefs=function(t){const e=c(t)?new Array(t.length):{};for(const n in t)e[n]=Ft(t,n);return e},t.triggerRef=function(t){At(t)},t.unref=It,t.watch=ve,t.watchEffect=function(t,e){return ge(t,null,e)},t.watchPostEffect=function(t,e){return ge(t,null,{flush:"post"})},t.watchSyncEffect=function(t,e){return ge(t,null,{flush:"sync"})},Object.defineProperty(t,"__esModule",{value:!0}),t}({});