Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

valtio

Package Overview
Dependencies
Maintainers
2
Versions
112
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

valtio - npm Package Compare versions

Comparing version 1.10.7 to 1.11.0

4

esm/vanilla.d.ts

@@ -33,7 +33,7 @@ type AnyFunction = (...args: any[]) => any;

export declare function ref<T extends object>(obj: T): T & AsRef;
export declare const unstable_buildProxyFunction: (objectIs?: (value1: any, value2: any) => boolean, newProxy?: <T extends object>(target: T, handler: ProxyHandler<T>) => T, canProxy?: (x: unknown) => boolean, defaultHandlePromise?: <P extends Promise<any>>(promise: P & {
export declare const unstable_buildProxyFunction: (objectIs?: (value1: any, value2: any) => boolean, newProxy?: <T extends object>(target: T, handler: ProxyHandler<T>) => T, canProxy?: (x: unknown) => boolean, shouldTrapDefineProperty?: (desc: PropertyDescriptor) => boolean | undefined, defaultHandlePromise?: <P extends Promise<any>>(promise: P & {
status?: 'pending' | 'fulfilled' | 'rejected';
value?: Awaited<P>;
reason?: unknown;
}) => Awaited<P>, snapCache?: WeakMap<object, [version: number, snap: unknown]>, createSnapshot?: CreateSnapshot, proxyCache?: WeakMap<object, object>, versionHolder?: [number, number], proxyFunction?: <T_1 extends object>(initialObject: T_1) => T_1) => readonly [<T_1 extends object>(initialObject: T_1) => T_1, WeakMap<object, ProxyState>, WeakSet<object>, (value1: any, value2: any) => boolean, <T extends object>(target: T, handler: ProxyHandler<T>) => T, (x: unknown) => boolean, <P extends Promise<any>>(promise: P & {
}) => Awaited<P>, snapCache?: WeakMap<object, [version: number, snap: unknown]>, createSnapshot?: CreateSnapshot, proxyCache?: WeakMap<object, object>, versionHolder?: [number, number], proxyFunction?: <T_1 extends object>(initialObject: T_1) => T_1) => readonly [<T_1 extends object>(initialObject: T_1) => T_1, WeakMap<object, ProxyState>, WeakSet<object>, (value1: any, value2: any) => boolean, <T extends object>(target: T, handler: ProxyHandler<T>) => T, (x: unknown) => boolean, (desc: PropertyDescriptor) => boolean | undefined, <P extends Promise<any>>(promise: P & {
status?: 'pending' | 'fulfilled' | 'rejected';

@@ -40,0 +40,0 @@ value?: Awaited<P>;

@@ -6,3 +6,3 @@ import { markToTrack, getUntracked } from 'proxy-compare';

const refSet = /* @__PURE__ */ new WeakSet();
const buildProxyFunction = (objectIs = Object.is, newProxy = (target, handler) => new Proxy(target, handler), canProxy = (x) => isObject(x) && !refSet.has(x) && (Array.isArray(x) || !(Symbol.iterator in x)) && !(x instanceof WeakMap) && !(x instanceof WeakSet) && !(x instanceof Error) && !(x instanceof Number) && !(x instanceof Date) && !(x instanceof String) && !(x instanceof RegExp) && !(x instanceof ArrayBuffer), defaultHandlePromise = (promise) => {
const buildProxyFunction = (objectIs = Object.is, newProxy = (target, handler) => new Proxy(target, handler), canProxy = (x) => isObject(x) && !refSet.has(x) && (Array.isArray(x) || !(Symbol.iterator in x)) && !(x instanceof WeakMap) && !(x instanceof WeakSet) && !(x instanceof Error) && !(x instanceof Number) && !(x instanceof Date) && !(x instanceof String) && !(x instanceof RegExp) && !(x instanceof ArrayBuffer), shouldTrapDefineProperty = (desc) => desc.configurable && desc.enumerable && desc.writable, defaultHandlePromise = (promise) => {
switch (promise.status) {

@@ -133,2 +133,33 @@ case "fulfilled":

const baseObject = Array.isArray(initialObject) ? [] : Object.create(Object.getPrototypeOf(initialObject));
const trapSet = (hasPrevValue, prevValue, prop, value, setValue) => {
if (hasPrevValue && (objectIs(prevValue, value) || proxyCache.has(value) && objectIs(prevValue, proxyCache.get(value)))) {
return;
}
removePropListener(prop);
if (isObject(value)) {
value = getUntracked(value) || value;
}
let nextValue = value;
if (value instanceof Promise) {
value.then((v) => {
value.status = "fulfilled";
value.value = v;
notifyUpdate(["resolve", [prop], v]);
}).catch((e) => {
value.status = "rejected";
value.reason = e;
notifyUpdate(["reject", [prop], e]);
});
} else {
if (!proxyStateMap.has(value) && canProxy(value)) {
nextValue = proxyFunction(value);
}
const childProxyState = !refSet.has(nextValue) && proxyStateMap.get(nextValue);
if (childProxyState) {
addPropListener(prop, childProxyState);
}
}
setValue(nextValue);
notifyUpdate(["set", [prop], value, prevValue]);
};
const handler = {

@@ -147,32 +178,27 @@ deleteProperty(target, prop) {

const prevValue = Reflect.get(target, prop, receiver);
if (hasPrevValue && (objectIs(prevValue, value) || proxyCache.has(value) && objectIs(prevValue, proxyCache.get(value)))) {
return true;
}
removePropListener(prop);
if (isObject(value)) {
value = getUntracked(value) || value;
}
let nextValue = value;
if (value instanceof Promise) {
value.then((v) => {
value.status = "fulfilled";
value.value = v;
notifyUpdate(["resolve", [prop], v]);
}).catch((e) => {
value.status = "rejected";
value.reason = e;
notifyUpdate(["reject", [prop], e]);
});
} else {
if (!proxyStateMap.has(value) && canProxy(value)) {
nextValue = proxyFunction(value);
trapSet(hasPrevValue, prevValue, prop, value, (nextValue) => {
Reflect.set(target, prop, nextValue, receiver);
});
return true;
},
defineProperty(target, prop, desc) {
if (shouldTrapDefineProperty(desc)) {
const prevDesc = Reflect.getOwnPropertyDescriptor(target, prop);
if (!prevDesc || shouldTrapDefineProperty(prevDesc)) {
trapSet(
!!prevDesc && "value" in prevDesc,
prevDesc == null ? void 0 : prevDesc.value,
prop,
desc.value,
(nextValue) => {
Reflect.defineProperty(target, prop, {
...desc,
value: nextValue
});
}
);
return true;
}
const childProxyState = !refSet.has(nextValue) && proxyStateMap.get(nextValue);
if (childProxyState) {
addPropListener(prop, childProxyState);
}
}
Reflect.set(target, prop, nextValue, receiver);
notifyUpdate(["set", [prop], value, prevValue]);
return true;
return Reflect.defineProperty(target, prop, desc);
}

@@ -212,2 +238,3 @@ };

canProxy,
shouldTrapDefineProperty,
defaultHandlePromise,

@@ -214,0 +241,0 @@ snapCache,

{
"name": "valtio",
"private": false,
"version": "1.10.7",
"version": "1.11.0",
"description": "💊 Valtio makes proxy-state simple for React and Vanilla",

@@ -6,0 +6,0 @@ "main": "./index.js",

@@ -22,3 +22,3 @@ System.register(['proxy-compare'], (function (exports) {

const refSet = /* @__PURE__ */ new WeakSet();
const buildProxyFunction = (objectIs = Object.is, newProxy = (target, handler) => new Proxy(target, handler), canProxy = (x) => isObject(x) && !refSet.has(x) && (Array.isArray(x) || !(Symbol.iterator in x)) && !(x instanceof WeakMap) && !(x instanceof WeakSet) && !(x instanceof Error) && !(x instanceof Number) && !(x instanceof Date) && !(x instanceof String) && !(x instanceof RegExp) && !(x instanceof ArrayBuffer), defaultHandlePromise = (promise) => {
const buildProxyFunction = (objectIs = Object.is, newProxy = (target, handler) => new Proxy(target, handler), canProxy = (x) => isObject(x) && !refSet.has(x) && (Array.isArray(x) || !(Symbol.iterator in x)) && !(x instanceof WeakMap) && !(x instanceof WeakSet) && !(x instanceof Error) && !(x instanceof Number) && !(x instanceof Date) && !(x instanceof String) && !(x instanceof RegExp) && !(x instanceof ArrayBuffer), shouldTrapDefineProperty = (desc) => desc.configurable && desc.enumerable && desc.writable, defaultHandlePromise = (promise) => {
switch (promise.status) {

@@ -149,2 +149,33 @@ case "fulfilled":

const baseObject = Array.isArray(initialObject) ? [] : Object.create(Object.getPrototypeOf(initialObject));
const trapSet = (hasPrevValue, prevValue, prop, value, setValue) => {
if (hasPrevValue && (objectIs(prevValue, value) || proxyCache.has(value) && objectIs(prevValue, proxyCache.get(value)))) {
return;
}
removePropListener(prop);
if (isObject(value)) {
value = getUntracked(value) || value;
}
let nextValue = value;
if (value instanceof Promise) {
value.then((v) => {
value.status = "fulfilled";
value.value = v;
notifyUpdate(["resolve", [prop], v]);
}).catch((e) => {
value.status = "rejected";
value.reason = e;
notifyUpdate(["reject", [prop], e]);
});
} else {
if (!proxyStateMap.has(value) && canProxy(value)) {
nextValue = proxyFunction(value);
}
const childProxyState = !refSet.has(nextValue) && proxyStateMap.get(nextValue);
if (childProxyState) {
addPropListener(prop, childProxyState);
}
}
setValue(nextValue);
notifyUpdate(["set", [prop], value, prevValue]);
};
const handler = {

@@ -163,32 +194,27 @@ deleteProperty(target, prop) {

const prevValue = Reflect.get(target, prop, receiver);
if (hasPrevValue && (objectIs(prevValue, value) || proxyCache.has(value) && objectIs(prevValue, proxyCache.get(value)))) {
return true;
}
removePropListener(prop);
if (isObject(value)) {
value = getUntracked(value) || value;
}
let nextValue = value;
if (value instanceof Promise) {
value.then((v) => {
value.status = "fulfilled";
value.value = v;
notifyUpdate(["resolve", [prop], v]);
}).catch((e) => {
value.status = "rejected";
value.reason = e;
notifyUpdate(["reject", [prop], e]);
});
} else {
if (!proxyStateMap.has(value) && canProxy(value)) {
nextValue = proxyFunction(value);
trapSet(hasPrevValue, prevValue, prop, value, (nextValue) => {
Reflect.set(target, prop, nextValue, receiver);
});
return true;
},
defineProperty(target, prop, desc) {
if (shouldTrapDefineProperty(desc)) {
const prevDesc = Reflect.getOwnPropertyDescriptor(target, prop);
if (!prevDesc || shouldTrapDefineProperty(prevDesc)) {
trapSet(
!!prevDesc && "value" in prevDesc,
prevDesc == null ? void 0 : prevDesc.value,
prop,
desc.value,
(nextValue) => {
Reflect.defineProperty(target, prop, {
...desc,
value: nextValue
});
}
);
return true;
}
const childProxyState = !refSet.has(nextValue) && proxyStateMap.get(nextValue);
if (childProxyState) {
addPropListener(prop, childProxyState);
}
}
Reflect.set(target, prop, nextValue, receiver);
notifyUpdate(["set", [prop], value, prevValue]);
return true;
return Reflect.defineProperty(target, prop, desc);
}

@@ -228,2 +254,3 @@ };

canProxy,
shouldTrapDefineProperty,
defaultHandlePromise,

@@ -230,0 +257,0 @@ snapCache,

@@ -1,1 +0,1 @@

System.register(["proxy-compare"],function(D){"use strict";var W,K;return{setters:[function(O){W=O.markToTrack,K=O.getUntracked}],execute:function(){D({getVersion:_,proxy:U,ref:L,snapshot:B,subscribe:q});const O=c=>typeof c=="object"&&c!==null,f=new WeakMap,E=new WeakSet,T=(c=Object.is,l=(t,w)=>new Proxy(t,w),v=t=>O(t)&&!E.has(t)&&(Array.isArray(t)||!(Symbol.iterator in t))&&!(t instanceof WeakMap)&&!(t instanceof WeakSet)&&!(t instanceof Error)&&!(t instanceof Number)&&!(t instanceof Date)&&!(t instanceof String)&&!(t instanceof RegExp)&&!(t instanceof ArrayBuffer),P=t=>{switch(t.status){case"fulfilled":return t.value;case"rejected":throw t.reason;default:throw t}},u=new WeakMap,d=(t,w,g=P)=>{const s=u.get(t);if((s==null?void 0:s[0])===w)return s[1];const a=Array.isArray(t)?[]:Object.create(Object.getPrototypeOf(t));return W(a,!0),u.set(t,[w,a]),Reflect.ownKeys(t).forEach(k=>{if(Object.getOwnPropertyDescriptor(a,k))return;const y=Reflect.get(t,k),j={value:y,enumerable:!0,configurable:!0};if(E.has(y))W(y,!1);else if(y instanceof Promise)delete j.value,j.get=()=>g(y);else if(f.has(y)){const[i,m]=f.get(y);j.value=d(i,m(),g)}Object.defineProperty(a,k,j)}),Object.preventExtensions(a)},p=new WeakMap,b=[1,1],x=t=>{if(!O(t))throw new Error("object required");const w=p.get(t);if(w)return w;let g=b[0];const s=new Set,a=(n,e=++b[0])=>{g!==e&&(g=e,s.forEach(r=>r(n,e)))};let k=b[1];const y=(n=++b[1])=>(k!==n&&!s.size&&(k=n,i.forEach(([e])=>{const r=e[1](n);r>g&&(g=r)})),g),j=n=>(e,r)=>{const o=[...e];o[1]=[n,...o[1]],a(o,r)},i=new Map,m=(n,e)=>{if(s.size){const r=e[3](j(n));i.set(n,[e,r])}else i.set(n,[e])},V=n=>{var e;const r=i.get(n);r&&(i.delete(n),(e=r[1])==null||e.call(r))},N=n=>(s.add(n),s.size===1&&i.forEach(([e,r],o)=>{const M=e[3](j(o));i.set(o,[e,M])}),()=>{s.delete(n),s.size===0&&i.forEach(([e,r],o)=>{r&&(r(),i.set(o,[e]))})}),z=Array.isArray(t)?[]:Object.create(Object.getPrototypeOf(t)),R=l(z,{deleteProperty(n,e){const r=Reflect.get(n,e);V(e);const o=Reflect.deleteProperty(n,e);return o&&a(["delete",[e],r]),o},set(n,e,r,o){const M=Reflect.has(n,e),S=Reflect.get(n,e,o);if(M&&(c(S,r)||p.has(r)&&c(S,p.get(r))))return!0;V(e),O(r)&&(r=K(r)||r);let A=r;if(r instanceof Promise)r.then(h=>{r.status="fulfilled",r.value=h,a(["resolve",[e],h])}).catch(h=>{r.status="rejected",r.reason=h,a(["reject",[e],h])});else{!f.has(r)&&v(r)&&(A=x(r));const h=!E.has(A)&&f.get(A);h&&m(e,h)}return Reflect.set(n,e,A,o),a(["set",[e],r,S]),!0}});p.set(t,R);const C=[z,y,d,N];return f.set(R,C),Reflect.ownKeys(t).forEach(n=>{const e=Object.getOwnPropertyDescriptor(t,n);"value"in e&&(R[n]=t[n],delete e.value,delete e.writable),Object.defineProperty(z,n,e)}),R})=>[x,f,E,c,l,v,P,u,d,p,b],[F]=T();function U(c={}){return F(c)}function _(c){const l=f.get(c);return l==null?void 0:l[1]()}function q(c,l,v){const P=f.get(c);let u;const d=[],p=P[3];let b=!1;const x=p(t=>{if(d.push(t),v){l(d.splice(0));return}u||(u=Promise.resolve().then(()=>{u=void 0,b&&l(d.splice(0))}))});return b=!0,()=>{b=!1,x()}}function B(c,l){const v=f.get(c),[P,u,d]=v;return d(P,u(),l)}function L(c){return E.add(c),c}const G=D("unstable_buildProxyFunction",T)}}});
System.register(["proxy-compare"],function(D){"use strict";var M,F;return{setters:[function(O){M=O.markToTrack,F=O.getUntracked}],execute:function(){D({getVersion:_,proxy:U,ref:C,snapshot:B,subscribe:q});const O=s=>typeof s=="object"&&s!==null,u=new WeakMap,m=new WeakSet,V=(s=Object.is,f=(r,w)=>new Proxy(r,w),k=r=>O(r)&&!m.has(r)&&(Array.isArray(r)||!(Symbol.iterator in r))&&!(r instanceof WeakMap)&&!(r instanceof WeakSet)&&!(r instanceof Error)&&!(r instanceof Number)&&!(r instanceof Date)&&!(r instanceof String)&&!(r instanceof RegExp)&&!(r instanceof ArrayBuffer),h=r=>r.configurable&&r.enumerable&&r.writable,d=r=>{switch(r.status){case"fulfilled":return r.value;case"rejected":throw r.reason;default:throw r}},p=new WeakMap,A=(r,w,g=d)=>{const o=p.get(r);if((o==null?void 0:o[0])===w)return o[1];const a=Array.isArray(r)?[]:Object.create(Object.getPrototypeOf(r));return M(a,!0),p.set(r,[w,a]),Reflect.ownKeys(r).forEach(E=>{if(Object.getOwnPropertyDescriptor(a,E))return;const b=Reflect.get(r,E),P={value:b,enumerable:!0,configurable:!0};if(m.has(b))M(b,!1);else if(b instanceof Promise)delete P.value,P.get=()=>g(b);else if(u.has(b)){const[i,W]=u.get(b);P.value=A(i,W(),g)}Object.defineProperty(a,E,P)}),Object.preventExtensions(a)},y=new WeakMap,v=[1,1],x=r=>{if(!O(r))throw new Error("object required");const w=y.get(r);if(w)return w;let g=v[0];const o=new Set,a=(n,e=++v[0])=>{g!==e&&(g=e,o.forEach(c=>c(n,e)))};let E=v[1];const b=(n=++v[1])=>(E!==n&&!o.size&&(E=n,i.forEach(([e])=>{const c=e[1](n);c>g&&(g=c)})),g),P=n=>(e,c)=>{const t=[...e];t[1]=[n,...t[1]],a(t,c)},i=new Map,W=(n,e)=>{if(o.size){const c=e[3](P(n));i.set(n,[e,c])}else i.set(n,[e])},K=n=>{var e;const c=i.get(n);c&&(i.delete(n),(e=c[1])==null||e.call(c))},G=n=>(o.add(n),o.size===1&&i.forEach(([e,c],t)=>{const j=e[3](P(t));i.set(t,[e,j])}),()=>{o.delete(n),o.size===0&&i.forEach(([e,c],t)=>{c&&(c(),i.set(t,[e]))})}),z=Array.isArray(r)?[]:Object.create(Object.getPrototypeOf(r)),N=(n,e,c,t,j)=>{if(n&&(s(e,t)||y.has(t)&&s(e,y.get(t))))return;K(c),O(t)&&(t=F(t)||t);let R=t;if(t instanceof Promise)t.then(l=>{t.status="fulfilled",t.value=l,a(["resolve",[c],l])}).catch(l=>{t.status="rejected",t.reason=l,a(["reject",[c],l])});else{!u.has(t)&&k(t)&&(R=x(t));const l=!m.has(R)&&u.get(R);l&&W(c,l)}j(R),a(["set",[c],t,e])},T=f(z,{deleteProperty(n,e){const c=Reflect.get(n,e);K(e);const t=Reflect.deleteProperty(n,e);return t&&a(["delete",[e],c]),t},set(n,e,c,t){const j=Reflect.has(n,e),R=Reflect.get(n,e,t);return N(j,R,e,c,l=>{Reflect.set(n,e,l,t)}),!0},defineProperty(n,e,c){if(h(c)){const t=Reflect.getOwnPropertyDescriptor(n,e);if(!t||h(t))return N(!!t&&"value"in t,t==null?void 0:t.value,e,c.value,j=>{Reflect.defineProperty(n,e,{...c,value:j})}),!0}return Reflect.defineProperty(n,e,c)}});y.set(r,T);const H=[z,b,A,G];return u.set(T,H),Reflect.ownKeys(r).forEach(n=>{const e=Object.getOwnPropertyDescriptor(r,n);"value"in e&&(T[n]=r[n],delete e.value,delete e.writable),Object.defineProperty(z,n,e)}),T})=>[x,u,m,s,f,k,h,d,p,A,y,v],[S]=V();function U(s={}){return S(s)}function _(s){const f=u.get(s);return f==null?void 0:f[1]()}function q(s,f,k){const h=u.get(s);let d;const p=[],A=h[3];let y=!1;const v=A(x=>{if(p.push(x),k){f(p.splice(0));return}d||(d=Promise.resolve().then(()=>{d=void 0,y&&f(p.splice(0))}))});return y=!0,()=>{y=!1,v()}}function B(s,f){const k=u.get(s),[h,d,p]=k;return p(h,d(),f)}function C(s){return m.add(s),s}const I=D("unstable_buildProxyFunction",V)}}});

@@ -50,3 +50,3 @@ type AnyFunction = (...args: any[]) => any;

export declare function ref<T extends object>(obj: T): T & AsRef;
export declare const unstable_buildProxyFunction: (objectIs?: (value1: any, value2: any) => boolean, newProxy?: <T extends object>(target: T, handler: ProxyHandler<T>) => T, canProxy?: (x: unknown) => boolean, defaultHandlePromise?: <P extends Promise<any>>(promise: P & {
export declare const unstable_buildProxyFunction: (objectIs?: (value1: any, value2: any) => boolean, newProxy?: <T extends object>(target: T, handler: ProxyHandler<T>) => T, canProxy?: (x: unknown) => boolean, shouldTrapDefineProperty?: (desc: PropertyDescriptor) => boolean | undefined, defaultHandlePromise?: <P extends Promise<any>>(promise: P & {
status?: 'pending' | 'fulfilled' | 'rejected';

@@ -68,2 +68,3 @@ value?: Awaited<P>;

(x: unknown) => boolean,
(desc: PropertyDescriptor) => boolean | undefined,
<P extends Promise<any>>(promise: P & {

@@ -70,0 +71,0 @@ status?: 'pending' | 'fulfilled' | 'rejected';

@@ -50,3 +50,3 @@ type AnyFunction = (...args: any[]) => any;

export declare function ref<T extends object>(obj: T): T & AsRef;
export declare const unstable_buildProxyFunction: (objectIs?: (value1: any, value2: any) => boolean, newProxy?: <T extends object>(target: T, handler: ProxyHandler<T>) => T, canProxy?: (x: unknown) => boolean, defaultHandlePromise?: <P extends Promise<any>>(promise: P & {
export declare const unstable_buildProxyFunction: (objectIs?: (value1: any, value2: any) => boolean, newProxy?: <T extends object>(target: T, handler: ProxyHandler<T>) => T, canProxy?: (x: unknown) => boolean, shouldTrapDefineProperty?: (desc: PropertyDescriptor) => boolean | undefined, defaultHandlePromise?: <P extends Promise<any>>(promise: P & {
status?: 'pending' | 'fulfilled' | 'rejected';

@@ -68,2 +68,3 @@ value?: Awaited<P>;

(x: unknown) => boolean,
(desc: PropertyDescriptor) => boolean | undefined,
<P extends Promise<any>>(promise: P & {

@@ -70,0 +71,0 @@ status?: 'pending' | 'fulfilled' | 'rejected';

@@ -7,2 +7,17 @@ (function (global, factory) {

function _extends() {
_extends = Object.assign ? Object.assign.bind() : function (target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
return _extends.apply(this, arguments);
}
var isObject = function isObject(x) {

@@ -13,3 +28,3 @@ return typeof x === 'object' && x !== null;

var refSet = new WeakSet();
var buildProxyFunction = function buildProxyFunction(objectIs, newProxy, canProxy, defaultHandlePromise, snapCache, createSnapshot, proxyCache, versionHolder, _proxyFunction) {
var buildProxyFunction = function buildProxyFunction(objectIs, newProxy, canProxy, shouldTrapDefineProperty, defaultHandlePromise, snapCache, createSnapshot, proxyCache, versionHolder, _proxyFunction) {
if (objectIs === void 0) {

@@ -28,2 +43,7 @@ objectIs = Object.is;

}
if (shouldTrapDefineProperty === void 0) {
shouldTrapDefineProperty = function shouldTrapDefineProperty(desc) {
return desc.configurable && desc.enumerable && desc.writable;
};
}
if (defaultHandlePromise === void 0) {

@@ -193,2 +213,33 @@ defaultHandlePromise = function defaultHandlePromise(promise) {

var baseObject = Array.isArray(initialObject) ? [] : Object.create(Object.getPrototypeOf(initialObject));
var trapSet = function trapSet(hasPrevValue, prevValue, prop, value, setValue) {
if (hasPrevValue && (objectIs(prevValue, value) || proxyCache.has(value) && objectIs(prevValue, proxyCache.get(value)))) {
return;
}
removePropListener(prop);
if (isObject(value)) {
value = proxyCompare.getUntracked(value) || value;
}
var nextValue = value;
if (value instanceof Promise) {
value.then(function (v) {
value.status = 'fulfilled';
value.value = v;
notifyUpdate(['resolve', [prop], v]);
}).catch(function (e) {
value.status = 'rejected';
value.reason = e;
notifyUpdate(['reject', [prop], e]);
});
} else {
if (!proxyStateMap.has(value) && canProxy(value)) {
nextValue = _proxyFunction(value);
}
var childProxyState = !refSet.has(nextValue) && proxyStateMap.get(nextValue);
if (childProxyState) {
addPropListener(prop, childProxyState);
}
}
setValue(nextValue);
notifyUpdate(['set', [prop], value, prevValue]);
};
var handler = {

@@ -207,32 +258,20 @@ deleteProperty: function deleteProperty(target, prop) {

var prevValue = Reflect.get(target, prop, receiver);
if (hasPrevValue && (objectIs(prevValue, value) || proxyCache.has(value) && objectIs(prevValue, proxyCache.get(value)))) {
return true;
}
removePropListener(prop);
if (isObject(value)) {
value = proxyCompare.getUntracked(value) || value;
}
var nextValue = value;
if (value instanceof Promise) {
value.then(function (v) {
value.status = 'fulfilled';
value.value = v;
notifyUpdate(['resolve', [prop], v]);
}).catch(function (e) {
value.status = 'rejected';
value.reason = e;
notifyUpdate(['reject', [prop], e]);
});
} else {
if (!proxyStateMap.has(value) && canProxy(value)) {
nextValue = _proxyFunction(value);
trapSet(hasPrevValue, prevValue, prop, value, function (nextValue) {
Reflect.set(target, prop, nextValue, receiver);
});
return true;
},
defineProperty: function defineProperty(target, prop, desc) {
if (shouldTrapDefineProperty(desc)) {
var prevDesc = Reflect.getOwnPropertyDescriptor(target, prop);
if (!prevDesc || shouldTrapDefineProperty(prevDesc)) {
trapSet(!!prevDesc && 'value' in prevDesc, prevDesc == null ? void 0 : prevDesc.value, prop, desc.value, function (nextValue) {
Reflect.defineProperty(target, prop, _extends({}, desc, {
value: nextValue
}));
});
return true;
}
var childProxyState = !refSet.has(nextValue) && proxyStateMap.get(nextValue);
if (childProxyState) {
addPropListener(prop, childProxyState);
}
}
Reflect.set(target, prop, nextValue, receiver);
notifyUpdate(['set', [prop], value, prevValue]);
return true;
return Reflect.defineProperty(target, prop, desc);
}

@@ -256,3 +295,3 @@ };

}
return [_proxyFunction, proxyStateMap, refSet, objectIs, newProxy, canProxy, defaultHandlePromise, snapCache, createSnapshot, proxyCache, versionHolder];
return [_proxyFunction, proxyStateMap, refSet, objectIs, newProxy, canProxy, shouldTrapDefineProperty, defaultHandlePromise, snapCache, createSnapshot, proxyCache, versionHolder];
};

@@ -259,0 +298,0 @@ var _buildProxyFunction = buildProxyFunction(),

@@ -1,1 +0,1 @@

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("proxy-compare")):"function"==typeof define&&define.amd?define(["exports","proxy-compare"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).valtioVanilla={},e.proxyCompare)}(this,(function(e,t){"use strict";var n=function(e){return"object"==typeof e&&null!==e},r=new WeakMap,o=new WeakSet,i=function(e,i,a,c,f,u,s,l,v){return void 0===e&&(e=Object.is),void 0===i&&(i=function(e,t){return new Proxy(e,t)}),void 0===a&&(a=function(e){return n(e)&&!o.has(e)&&(Array.isArray(e)||!(Symbol.iterator in e))&&!(e instanceof WeakMap)&&!(e instanceof WeakSet)&&!(e instanceof Error)&&!(e instanceof Number)&&!(e instanceof Date)&&!(e instanceof String)&&!(e instanceof RegExp)&&!(e instanceof ArrayBuffer)}),void 0===c&&(c=function(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:throw e}}),void 0===f&&(f=new WeakMap),void 0===u&&(u=function(e){function t(t,n,r){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}((function(e,n,i){void 0===i&&(i=c);var a=f.get(e);if((null==a?void 0:a[0])===n)return a[1];var s=Array.isArray(e)?[]:Object.create(Object.getPrototypeOf(e));return t.markToTrack(s,!0),f.set(e,[n,s]),Reflect.ownKeys(e).forEach((function(n){if(!Object.getOwnPropertyDescriptor(s,n)){var a=Reflect.get(e,n),c={value:a,enumerable:!0,configurable:!0};if(o.has(a))t.markToTrack(a,!1);else if(a instanceof Promise)delete c.value,c.get=function(){return i(a)};else if(r.has(a)){var f=r.get(a),l=f[0],v=f[1];c.value=u(l,v(),i)}Object.defineProperty(s,n,c)}})),Object.preventExtensions(s)}))),void 0===s&&(s=new WeakMap),void 0===l&&(l=[1,1]),void 0===v&&(v=function(c){if(!n(c))throw new Error("object required");var f=s.get(c);if(f)return f;var d=l[0],p=new Set,y=function(e,t){void 0===t&&(t=++l[0]),d!==t&&(d=t,p.forEach((function(n){return n(e,t)})))},g=l[1],h=function(e){return function(t,n){var r=[].concat(t);r[1]=[e].concat(r[1]),y(r,n)}},b=new Map,w=function(e){var t,n=b.get(e);n&&(b.delete(e),null==(t=n[1])||t.call(n))},j=Array.isArray(c)?[]:Object.create(Object.getPrototypeOf(c)),O=i(j,{deleteProperty:function(e,t){var n=Reflect.get(e,t);w(t);var r=Reflect.deleteProperty(e,t);return r&&y(["delete",[t],n]),r},set:function(i,c,f,u){var l=Reflect.has(i,c),d=Reflect.get(i,c,u);if(l&&(e(d,f)||s.has(f)&&e(d,s.get(f))))return!0;w(c),n(f)&&(f=t.getUntracked(f)||f);var g=f;if(f instanceof Promise)f.then((function(e){f.status="fulfilled",f.value=e,y(["resolve",[c],e])})).catch((function(e){f.status="rejected",f.reason=e,y(["reject",[c],e])}));else{!r.has(f)&&a(f)&&(g=v(f));var j=!o.has(g)&&r.get(g);j&&function(e,t){if(p.size){var n=t[3](h(e));b.set(e,[t,n])}else b.set(e,[t])}(c,j)}return Reflect.set(i,c,g,u),y(["set",[c],f,d]),!0}});s.set(c,O);var m=[j,function(e){return void 0===e&&(e=++l[1]),g===e||p.size||(g=e,b.forEach((function(t){var n=t[0][1](e);n>d&&(d=n)}))),d},u,function(e){p.add(e),1===p.size&&b.forEach((function(e,t){var n=e[0];e[1];var r=n[3](h(t));b.set(t,[n,r])}));return function(){p.delete(e),0===p.size&&b.forEach((function(e,t){var n=e[0],r=e[1];r&&(r(),b.set(t,[n]))}))}}];return r.set(O,m),Reflect.ownKeys(c).forEach((function(e){var t=Object.getOwnPropertyDescriptor(c,e);"value"in t&&(O[e]=c[e],delete t.value,delete t.writable),Object.defineProperty(j,e,t)})),O}),[v,r,o,e,i,a,c,f,u,s,l]},a=i()[0];var c=i;e.getVersion=function(e){var t=r.get(e);return null==t?void 0:t[1]()},e.proxy=function(e){return void 0===e&&(e={}),a(e)},e.ref=function(e){return o.add(e),e},e.snapshot=function(e,t){var n=r.get(e),o=n[0],i=n[1];return(0,n[2])(o,i(),t)},e.subscribe=function(e,t,n){var o,i=r.get(e),a=[],c=i[3],f=!1,u=c((function(e){a.push(e),n?t(a.splice(0)):o||(o=Promise.resolve().then((function(){o=void 0,f&&t(a.splice(0))})))}));return f=!0,function(){f=!1,u()}},e.unstable_buildProxyFunction=c}));
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("proxy-compare")):"function"==typeof define&&define.amd?define(["exports","proxy-compare"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).valtioVanilla={},e.proxyCompare)}(this,(function(e,t){"use strict";function n(){return n=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},n.apply(this,arguments)}var r=function(e){return"object"==typeof e&&null!==e},o=new WeakMap,i=new WeakSet,a=function(e,a,c,f,u,s,l,v,d,p){return void 0===e&&(e=Object.is),void 0===a&&(a=function(e,t){return new Proxy(e,t)}),void 0===c&&(c=function(e){return r(e)&&!i.has(e)&&(Array.isArray(e)||!(Symbol.iterator in e))&&!(e instanceof WeakMap)&&!(e instanceof WeakSet)&&!(e instanceof Error)&&!(e instanceof Number)&&!(e instanceof Date)&&!(e instanceof String)&&!(e instanceof RegExp)&&!(e instanceof ArrayBuffer)}),void 0===f&&(f=function(e){return e.configurable&&e.enumerable&&e.writable}),void 0===u&&(u=function(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:throw e}}),void 0===s&&(s=new WeakMap),void 0===l&&(l=function(e){function t(t,n,r){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}((function(e,n,r){void 0===r&&(r=u);var a=s.get(e);if((null==a?void 0:a[0])===n)return a[1];var c=Array.isArray(e)?[]:Object.create(Object.getPrototypeOf(e));return t.markToTrack(c,!0),s.set(e,[n,c]),Reflect.ownKeys(e).forEach((function(n){if(!Object.getOwnPropertyDescriptor(c,n)){var a=Reflect.get(e,n),f={value:a,enumerable:!0,configurable:!0};if(i.has(a))t.markToTrack(a,!1);else if(a instanceof Promise)delete f.value,f.get=function(){return r(a)};else if(o.has(a)){var u=o.get(a),s=u[0],v=u[1];f.value=l(s,v(),r)}Object.defineProperty(c,n,f)}})),Object.preventExtensions(c)}))),void 0===v&&(v=new WeakMap),void 0===d&&(d=[1,1]),void 0===p&&(p=function(u){if(!r(u))throw new Error("object required");var s=v.get(u);if(s)return s;var y=d[0],b=new Set,g=function(e,t){void 0===t&&(t=++d[0]),y!==t&&(y=t,b.forEach((function(n){return n(e,t)})))},h=d[1],w=function(e){return function(t,n){var r=[].concat(t);r[1]=[e].concat(r[1]),g(r,n)}},j=new Map,O=function(e){var t,n=j.get(e);n&&(j.delete(e),null==(t=n[1])||t.call(n))},P=Array.isArray(u)?[]:Object.create(Object.getPrototypeOf(u)),m=function(n,a,f,u,s){if(!n||!(e(a,u)||v.has(u)&&e(a,v.get(u)))){O(f),r(u)&&(u=t.getUntracked(u)||u);var l=u;if(u instanceof Promise)u.then((function(e){u.status="fulfilled",u.value=e,g(["resolve",[f],e])})).catch((function(e){u.status="rejected",u.reason=e,g(["reject",[f],e])}));else{!o.has(u)&&c(u)&&(l=p(u));var d=!i.has(l)&&o.get(l);d&&function(e,t){if(b.size){var n=t[3](w(e));j.set(e,[t,n])}else j.set(e,[t])}(f,d)}s(l),g(["set",[f],u,a])}},R=a(P,{deleteProperty:function(e,t){var n=Reflect.get(e,t);O(t);var r=Reflect.deleteProperty(e,t);return r&&g(["delete",[t],n]),r},set:function(e,t,n,r){var o=Reflect.has(e,t),i=Reflect.get(e,t,r);return m(o,i,t,n,(function(n){Reflect.set(e,t,n,r)})),!0},defineProperty:function(e,t,r){if(f(r)){var o=Reflect.getOwnPropertyDescriptor(e,t);if(!o||f(o))return m(!!o&&"value"in o,null==o?void 0:o.value,t,r.value,(function(o){Reflect.defineProperty(e,t,n({},r,{value:o}))})),!0}return Reflect.defineProperty(e,t,r)}});v.set(u,R);var k=[P,function(e){return void 0===e&&(e=++d[1]),h===e||b.size||(h=e,j.forEach((function(t){var n=t[0][1](e);n>y&&(y=n)}))),y},l,function(e){b.add(e),1===b.size&&j.forEach((function(e,t){var n=e[0];e[1];var r=n[3](w(t));j.set(t,[n,r])}));return function(){b.delete(e),0===b.size&&j.forEach((function(e,t){var n=e[0],r=e[1];r&&(r(),j.set(t,[n]))}))}}];return o.set(R,k),Reflect.ownKeys(u).forEach((function(e){var t=Object.getOwnPropertyDescriptor(u,e);"value"in t&&(R[e]=u[e],delete t.value,delete t.writable),Object.defineProperty(P,e,t)})),R}),[p,o,i,e,a,c,f,u,s,l,v,d]},c=a()[0];var f=a;e.getVersion=function(e){var t=o.get(e);return null==t?void 0:t[1]()},e.proxy=function(e){return void 0===e&&(e={}),c(e)},e.ref=function(e){return i.add(e),e},e.snapshot=function(e,t){var n=o.get(e),r=n[0],i=n[1];return(0,n[2])(r,i(),t)},e.subscribe=function(e,t,n){var r,i=o.get(e),a=[],c=i[3],f=!1,u=c((function(e){a.push(e),n?t(a.splice(0)):r||(r=Promise.resolve().then((function(){r=void 0,f&&t(a.splice(0))})))}));return f=!0,function(){f=!1,u()}},e.unstable_buildProxyFunction=f}));

@@ -33,7 +33,7 @@ type AnyFunction = (...args: any[]) => any;

export declare function ref<T extends object>(obj: T): T & AsRef;
export declare const unstable_buildProxyFunction: (objectIs?: (value1: any, value2: any) => boolean, newProxy?: <T extends object>(target: T, handler: ProxyHandler<T>) => T, canProxy?: (x: unknown) => boolean, defaultHandlePromise?: <P extends Promise<any>>(promise: P & {
export declare const unstable_buildProxyFunction: (objectIs?: (value1: any, value2: any) => boolean, newProxy?: <T extends object>(target: T, handler: ProxyHandler<T>) => T, canProxy?: (x: unknown) => boolean, shouldTrapDefineProperty?: (desc: PropertyDescriptor) => boolean | undefined, defaultHandlePromise?: <P extends Promise<any>>(promise: P & {
status?: 'pending' | 'fulfilled' | 'rejected';
value?: Awaited<P>;
reason?: unknown;
}) => Awaited<P>, snapCache?: WeakMap<object, [version: number, snap: unknown]>, createSnapshot?: CreateSnapshot, proxyCache?: WeakMap<object, object>, versionHolder?: [number, number], proxyFunction?: <T_1 extends object>(initialObject: T_1) => T_1) => readonly [<T_1 extends object>(initialObject: T_1) => T_1, WeakMap<object, ProxyState>, WeakSet<object>, (value1: any, value2: any) => boolean, <T extends object>(target: T, handler: ProxyHandler<T>) => T, (x: unknown) => boolean, <P extends Promise<any>>(promise: P & {
}) => Awaited<P>, snapCache?: WeakMap<object, [version: number, snap: unknown]>, createSnapshot?: CreateSnapshot, proxyCache?: WeakMap<object, object>, versionHolder?: [number, number], proxyFunction?: <T_1 extends object>(initialObject: T_1) => T_1) => readonly [<T_1 extends object>(initialObject: T_1) => T_1, WeakMap<object, ProxyState>, WeakSet<object>, (value1: any, value2: any) => boolean, <T extends object>(target: T, handler: ProxyHandler<T>) => T, (x: unknown) => boolean, (desc: PropertyDescriptor) => boolean | undefined, <P extends Promise<any>>(promise: P & {
status?: 'pending' | 'fulfilled' | 'rejected';

@@ -40,0 +40,0 @@ value?: Awaited<P>;

@@ -5,2 +5,17 @@ 'use strict';

function _extends() {
_extends = Object.assign ? Object.assign.bind() : function (target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
return _extends.apply(this, arguments);
}
var isObject = function isObject(x) {

@@ -11,3 +26,3 @@ return typeof x === 'object' && x !== null;

var refSet = new WeakSet();
var buildProxyFunction = function buildProxyFunction(objectIs, newProxy, canProxy, defaultHandlePromise, snapCache, createSnapshot, proxyCache, versionHolder, _proxyFunction) {
var buildProxyFunction = function buildProxyFunction(objectIs, newProxy, canProxy, shouldTrapDefineProperty, defaultHandlePromise, snapCache, createSnapshot, proxyCache, versionHolder, _proxyFunction) {
if (objectIs === void 0) {

@@ -26,2 +41,7 @@ objectIs = Object.is;

}
if (shouldTrapDefineProperty === void 0) {
shouldTrapDefineProperty = function shouldTrapDefineProperty(desc) {
return desc.configurable && desc.enumerable && desc.writable;
};
}
if (defaultHandlePromise === void 0) {

@@ -191,2 +211,33 @@ defaultHandlePromise = function defaultHandlePromise(promise) {

var baseObject = Array.isArray(initialObject) ? [] : Object.create(Object.getPrototypeOf(initialObject));
var trapSet = function trapSet(hasPrevValue, prevValue, prop, value, setValue) {
if (hasPrevValue && (objectIs(prevValue, value) || proxyCache.has(value) && objectIs(prevValue, proxyCache.get(value)))) {
return;
}
removePropListener(prop);
if (isObject(value)) {
value = proxyCompare.getUntracked(value) || value;
}
var nextValue = value;
if (value instanceof Promise) {
value.then(function (v) {
value.status = 'fulfilled';
value.value = v;
notifyUpdate(['resolve', [prop], v]);
}).catch(function (e) {
value.status = 'rejected';
value.reason = e;
notifyUpdate(['reject', [prop], e]);
});
} else {
if (!proxyStateMap.has(value) && canProxy(value)) {
nextValue = _proxyFunction(value);
}
var childProxyState = !refSet.has(nextValue) && proxyStateMap.get(nextValue);
if (childProxyState) {
addPropListener(prop, childProxyState);
}
}
setValue(nextValue);
notifyUpdate(['set', [prop], value, prevValue]);
};
var handler = {

@@ -205,32 +256,20 @@ deleteProperty: function deleteProperty(target, prop) {

var prevValue = Reflect.get(target, prop, receiver);
if (hasPrevValue && (objectIs(prevValue, value) || proxyCache.has(value) && objectIs(prevValue, proxyCache.get(value)))) {
return true;
}
removePropListener(prop);
if (isObject(value)) {
value = proxyCompare.getUntracked(value) || value;
}
var nextValue = value;
if (value instanceof Promise) {
value.then(function (v) {
value.status = 'fulfilled';
value.value = v;
notifyUpdate(['resolve', [prop], v]);
}).catch(function (e) {
value.status = 'rejected';
value.reason = e;
notifyUpdate(['reject', [prop], e]);
});
} else {
if (!proxyStateMap.has(value) && canProxy(value)) {
nextValue = _proxyFunction(value);
trapSet(hasPrevValue, prevValue, prop, value, function (nextValue) {
Reflect.set(target, prop, nextValue, receiver);
});
return true;
},
defineProperty: function defineProperty(target, prop, desc) {
if (shouldTrapDefineProperty(desc)) {
var prevDesc = Reflect.getOwnPropertyDescriptor(target, prop);
if (!prevDesc || shouldTrapDefineProperty(prevDesc)) {
trapSet(!!prevDesc && 'value' in prevDesc, prevDesc == null ? void 0 : prevDesc.value, prop, desc.value, function (nextValue) {
Reflect.defineProperty(target, prop, _extends({}, desc, {
value: nextValue
}));
});
return true;
}
var childProxyState = !refSet.has(nextValue) && proxyStateMap.get(nextValue);
if (childProxyState) {
addPropListener(prop, childProxyState);
}
}
Reflect.set(target, prop, nextValue, receiver);
notifyUpdate(['set', [prop], value, prevValue]);
return true;
return Reflect.defineProperty(target, prop, desc);
}

@@ -254,3 +293,3 @@ };

}
return [_proxyFunction, proxyStateMap, refSet, objectIs, newProxy, canProxy, defaultHandlePromise, snapCache, createSnapshot, proxyCache, versionHolder];
return [_proxyFunction, proxyStateMap, refSet, objectIs, newProxy, canProxy, shouldTrapDefineProperty, defaultHandlePromise, snapCache, createSnapshot, proxyCache, versionHolder];
};

@@ -257,0 +296,0 @@ var _buildProxyFunction = buildProxyFunction(),

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc