Socket
Socket
Sign inDemoInstall

jotai

Package Overview
Dependencies
Maintainers
2
Versions
176
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

jotai - npm Package Compare versions

Comparing version 2.9.2 to 2.9.3

2

package.json

@@ -6,3 +6,3 @@ {

"type": "commonjs",
"version": "2.9.2",
"version": "2.9.3",
"main": "./index.js",

@@ -9,0 +9,0 @@ "types": "./index.d.ts",

@@ -118,2 +118,17 @@ System.register([], (function (exports) {

};
const addDependency = (pending, atom, atomState, a, aState) => {
var _a;
if (a === atom) {
throw new Error("[Bug] atom cannot depend on itself");
}
atomState.d.set(a, aState.n);
const continuablePromise = getPendingContinuablePromise(atomState);
if (continuablePromise) {
addPendingContinuablePromiseToDependency(atom, continuablePromise, aState);
}
(_a = aState.m) == null ? void 0 : _a.t.add(atom);
if (pending) {
addPendingDependent(pending, a, atom);
}
};
const createPending = () => [/* @__PURE__ */ new Map(), /* @__PURE__ */ new Map(), /* @__PURE__ */ new Set()];

@@ -150,4 +165,3 @@ const addPendingAtom = (pending, atom, atomState) => {

};
const createStore = exports("createStore", () => {
const atomStateMap = /* @__PURE__ */ new WeakMap();
const buildStore = (getAtomState) => {
let debugMountedAtoms;

@@ -157,10 +171,2 @@ {

}
const getAtomState = (atom) => {
let atomState = atomStateMap.get(atom);
if (!atomState) {
atomState = { d: /* @__PURE__ */ new Map(), p: /* @__PURE__ */ new Set(), n: 0 };
atomStateMap.set(atom, atomState);
}
return atomState;
};
const setAtomStateValueOrPromise = (atom, atomState, valueOrPromise, abortPromise = () => {

@@ -186,7 +192,6 @@ }, completePromise = () => {

for (const a of atomState.d.keys()) {
const aState = getAtomState(a);
addPendingContinuablePromiseToDependency(
atom,
continuablePromise,
aState
getAtomState(a, atomState)
);

@@ -212,20 +217,3 @@ }

};
const addDependency = (pending, atom, a, aState) => {
var _a;
if (a === atom) {
throw new Error("[Bug] atom cannot depend on itself");
}
const atomState = getAtomState(atom);
atomState.d.set(a, aState.n);
const continuablePromise = getPendingContinuablePromise(atomState);
if (continuablePromise) {
addPendingContinuablePromiseToDependency(atom, continuablePromise, aState);
}
(_a = aState.m) == null ? void 0 : _a.t.add(atom);
if (pending) {
addPendingDependent(pending, a, atom);
}
};
const readAtomState = (pending, atom, force) => {
const atomState = getAtomState(atom);
const readAtomState = (pending, atom, atomState, force) => {
if (!(force == null ? void 0 : force(atom)) && isAtomStateInitialized(atomState)) {

@@ -239,3 +227,3 @@ if (atomState.m) {

// check if the atom epoch number is unchanged
readAtomState(pending, a, force).n === n
readAtomState(pending, a, getAtomState(a, atomState), force).n === n
)

@@ -250,3 +238,3 @@ )) {

if (isSelfAtom(atom, a)) {
const aState2 = getAtomState(a);
const aState2 = getAtomState(a, atomState);
if (!isAtomStateInitialized(aState2)) {

@@ -261,8 +249,13 @@ if (hasInitialValue(a)) {

}
const aState = readAtomState(pending, a, force);
const aState = readAtomState(
pending,
a,
getAtomState(a, atomState),
force
);
if (isSync) {
addDependency(pending, atom, a, aState);
addDependency(pending, atom, atomState, a, aState);
} else {
const pending2 = createPending();
addDependency(pending2, atom, a, aState);
addDependency(pending2, atom, atomState, a, aState);
mountDependencies(pending2, atom, atomState);

@@ -324,37 +317,40 @@ flushPending(pending2);

};
const readAtom = (atom) => returnAtomValue(readAtomState(void 0, atom));
const recomputeDependents = (pending, atom) => {
const getDependents = (a) => {
var _a, _b;
const aState = getAtomState(a);
const dependents = new Set((_a = aState.m) == null ? void 0 : _a.t);
for (const atomWithPendingContinuablePromise of aState.p) {
dependents.add(atomWithPendingContinuablePromise);
}
(_b = getPendingDependents(pending, a)) == null ? void 0 : _b.forEach((dependent) => {
dependents.add(dependent);
});
return dependents;
};
const readAtom = (atom) => returnAtomValue(readAtomState(void 0, atom, getAtomState(atom)));
const getDependents = (pending, atom, atomState) => {
var _a, _b;
const dependents = /* @__PURE__ */ new Map();
for (const a of ((_a = atomState.m) == null ? void 0 : _a.t) || []) {
dependents.set(a, getAtomState(a, atomState));
}
for (const atomWithPendingContinuablePromise of atomState.p) {
dependents.set(
atomWithPendingContinuablePromise,
getAtomState(atomWithPendingContinuablePromise, atomState)
);
}
(_b = getPendingDependents(pending, atom)) == null ? void 0 : _b.forEach((dependent) => {
dependents.set(dependent, getAtomState(dependent, atomState));
});
return dependents;
};
const recomputeDependents = (pending, atom, atomState) => {
const topsortedAtoms = [];
const markedAtoms = /* @__PURE__ */ new Set();
const visit = (n) => {
if (markedAtoms.has(n)) {
const visit = (a, aState) => {
if (markedAtoms.has(a)) {
return;
}
markedAtoms.add(n);
for (const m of getDependents(n)) {
if (n !== m) {
visit(m);
markedAtoms.add(a);
for (const [d, s] of getDependents(pending, a, aState)) {
if (a !== d) {
visit(d, s);
}
}
topsortedAtoms.push(n);
topsortedAtoms.push([a, aState, aState.n]);
};
visit(atom);
visit(atom, atomState);
const changedAtoms = /* @__PURE__ */ new Set([atom]);
const isMarked = (a) => markedAtoms.has(a);
for (let i = topsortedAtoms.length - 1; i >= 0; --i) {
const a = topsortedAtoms[i];
const aState = getAtomState(a);
const prevEpochNumber = aState.n;
const [a, aState, prevEpochNumber] = topsortedAtoms[i];
let hasChangedDeps = false;

@@ -368,3 +364,3 @@ for (const dep of aState.d.keys()) {

if (hasChangedDeps) {
readAtomState(pending, a, isMarked);
readAtomState(pending, a, aState, isMarked);
mountDependencies(pending, a, aState);

@@ -379,5 +375,6 @@ if (prevEpochNumber !== aState.n) {

};
const writeAtomState = (pending, atom, ...args) => {
const getter = (a) => returnAtomValue(readAtomState(pending, a));
const writeAtomState = (pending, atom, atomState, ...args) => {
const getter = (a) => returnAtomValue(readAtomState(pending, a, getAtomState(a, atomState)));
const setter = (a, ...args2) => {
const aState = getAtomState(a, atomState);
let r;

@@ -388,3 +385,2 @@ if (isSelfAtom(atom, a)) {

}
const aState = getAtomState(a);
const hasPrevValue = "v" in aState;

@@ -397,6 +393,6 @@ const prevValue = aState.v;

addPendingAtom(pending, a, aState);
recomputeDependents(pending, a);
recomputeDependents(pending, a, aState);
}
} else {
r = writeAtomState(pending, a, ...args2);
r = writeAtomState(pending, a, aState, ...args2);
}

@@ -411,3 +407,3 @@ flushPending(pending);

const pending = createPending();
const result = writeAtomState(pending, atom, ...args);
const result = writeAtomState(pending, atom, getAtomState(atom), ...args);
flushPending(pending);

@@ -420,3 +416,3 @@ return result;

if (!atomState.m.d.has(a)) {
const aMounted = mountAtom(pending, a);
const aMounted = mountAtom(pending, a, getAtomState(a, atomState));
aMounted.t.add(atom);

@@ -429,3 +425,3 @@ atomState.m.d.add(a);

atomState.m.d.delete(a);
const aMounted = unmountAtom(pending, a);
const aMounted = unmountAtom(pending, a, getAtomState(a, atomState));
aMounted == null ? void 0 : aMounted.t.delete(atom);

@@ -436,8 +432,7 @@ }

};
const mountAtom = (pending, atom) => {
const atomState = getAtomState(atom);
const mountAtom = (pending, atom, atomState) => {
if (!atomState.m) {
readAtomState(pending, atom);
readAtomState(pending, atom, atomState);
for (const a of atomState.d.keys()) {
const aMounted = mountAtom(pending, a);
const aMounted = mountAtom(pending, a, getAtomState(a, atomState));
aMounted.t.add(atom);

@@ -458,3 +453,3 @@ }

const onUnmount = onMount(
(...args) => writeAtomState(pending, atom, ...args)
(...args) => writeAtomState(pending, atom, atomState, ...args)
);

@@ -469,8 +464,9 @@ if (onUnmount) {

};
const unmountAtom = (pending, atom) => {
const atomState = getAtomState(atom);
if (atomState.m && !atomState.m.l.size && !Array.from(atomState.m.t).some((a) => {
var _a;
return (_a = getAtomState(a).m) == null ? void 0 : _a.d.has(atom);
})) {
const unmountAtom = (pending, atom, atomState) => {
if (atomState.m && !atomState.m.l.size && !Array.from(atomState.m.t).some(
(a) => {
var _a;
return (_a = getAtomState(a, atomState).m) == null ? void 0 : _a.d.has(atom);
}
)) {
const onUnmount = atomState.m.u;

@@ -485,3 +481,3 @@ if (onUnmount) {

for (const a of atomState.d.keys()) {
const aMounted = unmountAtom(pending, a);
const aMounted = unmountAtom(pending, a, getAtomState(a, atomState));
aMounted == null ? void 0 : aMounted.t.delete(atom);

@@ -500,3 +496,4 @@ }

const pending = createPending();
const mounted = mountAtom(pending, atom);
const atomState = getAtomState(atom);
const mounted = mountAtom(pending, atom, atomState);
flushPending(pending);

@@ -508,10 +505,12 @@ const listeners = mounted.l;

const pending2 = createPending();
unmountAtom(pending2, atom);
unmountAtom(pending2, atom, atomState);
flushPending(pending2);
};
};
const unstable_derive = (fn) => buildStore(...fn(getAtomState));
const store = {
get: readAtom,
set: writeAtom,
sub: subscribeAtom
sub: subscribeAtom,
unstable_derive
};

@@ -521,3 +520,11 @@ {

// store dev methods (these are tentative and subject to change without notice)
dev4_get_internal_weak_map: () => atomStateMap,
dev4_get_internal_weak_map: () => ({
get: (atom) => {
const atomState = getAtomState(atom);
if (atomState.n === 0) {
return void 0;
}
return atomState;
}
}),
dev4_get_mounted_atoms: () => debugMountedAtoms,

@@ -535,3 +542,3 @@ dev4_restore_atoms: (values) => {

addPendingAtom(pending, atom, atomState);
recomputeDependents(pending, atom);
recomputeDependents(pending, atom, atomState);
}

@@ -546,2 +553,14 @@ }

return store;
};
const createStore = exports("createStore", () => {
const atomStateMap = /* @__PURE__ */ new WeakMap();
const getAtomState = (atom) => {
let atomState = atomStateMap.get(atom);
if (!atomState) {
atomState = { d: /* @__PURE__ */ new Map(), p: /* @__PURE__ */ new Set(), n: 0 };
atomStateMap.set(atom, atomState);
}
return atomState;
};
return buildStore(getAtomState);
});

@@ -548,0 +567,0 @@ let defaultStore;

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

System.register([],function(W){"use strict";return{execute:function(){W("atom",L);let K=0;function L(t,s){const f=`atom${++K}`,m={toString(){return f}};return typeof t=="function"?m.read=t:(m.init=t,m.read=N,m.write=R),s&&(m.write=s),m}function N(t){return t(this)}function R(t,s,f){return s(this,typeof f=="function"?f(t(this)):f)}const q=(t,s)=>t.unstable_is?t.unstable_is(s):s===t,B=t=>"init"in t,F=t=>!!t.write,M=Symbol(""),_="pending",T="fulfilled",U="rejected",$=t=>typeof t=="object"&&t!==null&&M in t,D=new WeakMap,x=(t,s,f)=>{if(!D.has(t)){let m;const w=new Promise((j,V)=>{let y=t;const z=h=>p=>{y===h&&(w.status=T,w.value=p,j(p),f())},g=h=>p=>{y===h&&(w.status=U,w.reason=p,V(p),f())};t.then(z(t),g(t)),m=(h,p)=>{h&&(D.set(h,w),y=h,h.then(z(h),g(h)),s(),s=p)}});w.status=_,w[M]=m,D.set(t,w)}return D.get(t)},Q=t=>typeof(t==null?void 0:t.then)=="function",G=t=>"v"in t||"e"in t,O=t=>{if("e"in t)throw t.e;return t.v},P=t=>{const s=t.v;return $(s)&&s.status===_?s:null},H=(t,s,f)=>{f.p.has(t)||(f.p.add(t),s.then(()=>{f.p.delete(t)},()=>{f.p.delete(t)}))},E=()=>[new Map,new Map,new Set],I=(t,s,f)=>{t[0].has(s)||t[0].set(s,new Set),t[1].set(s,f)},X=(t,s,f)=>{const m=t[0].get(s);m&&m.add(f)},Y=(t,s)=>t[0].get(s),J=(t,s)=>{t[2].add(s)},b=t=>{for(;t[1].size||t[2].size;){t[0].clear();const s=new Set(t[1].values());t[1].clear();const f=new Set(t[2]);t[2].clear(),s.forEach(m=>{var w;return(w=m.m)==null?void 0:w.l.forEach(j=>j())}),f.forEach(m=>m())}},Z=W("createStore",()=>{const t=new WeakMap,s=r=>{let e=t.get(r);return e||(e={d:new Map,p:new Set,n:0},t.set(r,e)),e},f=(r,e,n,o=()=>{},c=()=>{})=>{const l="v"in e,u=e.v,v=P(e);if(Q(n))if(v)v!==n&&(v[M](n,o),++e.n);else{const a=x(n,o,c);if(a.status===_)for(const i of e.d.keys()){const d=s(i);H(r,a,d)}e.v=a,delete e.e}else v&&v[M](Promise.resolve(n),o),e.v=n,delete e.e;(!l||!Object.is(u,e.v))&&++e.n},m=(r,e,n,o)=>{var c;const l=s(e);l.d.set(n,o.n);const u=P(l);u&&H(e,u,o),(c=o.m)==null||c.t.add(e),r&&X(r,n,e)},w=(r,e,n)=>{const o=s(e);if(!(n!=null&&n(e))&&G(o)&&(o.m||Array.from(o.d).every(([i,d])=>w(r,i,n).n===d)))return o;o.d.clear();let c=!0;const l=i=>{if(q(e,i)){const S=s(i);if(!G(S))if(B(i))f(i,S,i.init);else throw new Error("no atom init");return O(S)}const d=w(r,i,n);if(c)m(r,e,i,d);else{const S=E();m(S,e,i,d),g(S,e,o),b(S)}return O(d)};let u,v;const a={get signal(){return u||(u=new AbortController),u.signal},get setSelf(){return!v&&F(e)&&(v=(...i)=>{if(!c)return z(e,...i)}),v}};try{const i=e.read(l,a);return f(e,o,i,()=>u==null?void 0:u.abort(),()=>{if(o.m){const d=E();g(d,e,o),b(d)}}),o}catch(i){return delete o.v,o.e=i,++o.n,o}finally{c=!1}},j=r=>O(w(void 0,r)),V=(r,e)=>{const n=a=>{var i,d;const S=s(a),k=new Set((i=S.m)==null?void 0:i.t);for(const A of S.p)k.add(A);return(d=Y(r,a))==null||d.forEach(A=>{k.add(A)}),k},o=[],c=new Set,l=a=>{if(!c.has(a)){c.add(a);for(const i of n(a))a!==i&&l(i);o.push(a)}};l(e);const u=new Set([e]),v=a=>c.has(a);for(let a=o.length-1;a>=0;--a){const i=o[a],d=s(i),S=d.n;let k=!1;for(const A of d.d.keys())if(A!==i&&u.has(A)){k=!0;break}k&&(w(r,i,v),g(r,i,d),S!==d.n&&(I(r,i,d),u.add(i))),c.delete(i)}},y=(r,e,...n)=>{const o=l=>O(w(r,l)),c=(l,...u)=>{let v;if(q(e,l)){if(!B(l))throw new Error("atom not writable");const a=s(l),i="v"in a,d=a.v,S=u[0];f(l,a,S),g(r,l,a),(!i||!Object.is(d,a.v))&&(I(r,l,a),V(r,l))}else v=y(r,l,...u);return b(r),v};return e.write(o,c,...n)},z=(r,...e)=>{const n=E(),o=y(n,r,...e);return b(n),o},g=(r,e,n)=>{if(n.m&&!P(n)){for(const o of n.d.keys())n.m.d.has(o)||(h(r,o).t.add(e),n.m.d.add(o));for(const o of n.m.d||[])if(!n.d.has(o)){n.m.d.delete(o);const c=p(r,o);c==null||c.t.delete(e)}}},h=(r,e)=>{const n=s(e);if(!n.m){w(r,e);for(const o of n.d.keys())h(r,o).t.add(e);if(n.m={l:new Set,d:new Set(n.d.keys()),t:new Set},F(e)&&e.onMount){const o=n.m,{onMount:c}=e;J(r,()=>{const l=c((...u)=>y(r,e,...u));l&&(o.u=l)})}}return n.m},p=(r,e)=>{const n=s(e);if(n.m&&!n.m.l.size&&!Array.from(n.m.t).some(o=>{var c;return(c=s(o).m)==null?void 0:c.d.has(e)})){const o=n.m.u;o&&J(r,o),delete n.m;for(const l of n.d.keys()){const u=p(r,l);u==null||u.t.delete(e)}const c=P(n);c&&c[M](void 0,()=>{});return}return n.m};return{get:j,set:z,sub:(r,e)=>{const n=E(),o=h(n,r);b(n);const c=o.l;return c.add(e),()=>{c.delete(e);const l=E();p(l,r),b(l)}}}});let C;const tt=W("getDefaultStore",()=>(C||(C=Z()),C))}}});
System.register([],function(D){"use strict";return{execute:function(){D("atom",N);let L=0;function N(t,s){const l=`atom${++L}`,d={toString(){return l}};return typeof t=="function"?d.read=t:(d.init=t,d.read=Q,d.write=R),s&&(d.write=s),d}function Q(t){return t(this)}function R(t,s,l){return s(this,typeof l=="function"?l(t(this)):l)}const C=(t,s)=>t.unstable_is?t.unstable_is(s):s===t,T=t=>"init"in t,q=t=>!!t.write,E=Symbol(""),O="pending",U="fulfilled",$="rejected",x=t=>typeof t=="object"&&t!==null&&E in t,V=new WeakMap,X=(t,s,l)=>{if(!V.has(t)){let d;const w=new Promise((y,g)=>{let k=t;const b=h=>o=>{k===h&&(w.status=U,w.value=o,y(o),l())},M=h=>o=>{k===h&&(w.status=$,w.reason=o,g(o),l())};t.then(b(t),M(t)),d=(h,o)=>{h&&(V.set(h,w),k=h,h.then(b(h),M(h)),s(),s=o)}});w.status=O,w[E]=d,V.set(t,w)}return V.get(t)},Y=t=>typeof(t==null?void 0:t.then)=="function",B=t=>"v"in t||"e"in t,_=t=>{if("e"in t)throw t.e;return t.v},z=t=>{const s=t.v;return x(s)&&s.status===O?s:null},F=(t,s,l)=>{l.p.has(t)||(l.p.add(t),s.then(()=>{l.p.delete(t)},()=>{l.p.delete(t)}))},G=(t,s,l,d,w)=>{var y;l.d.set(d,w.n);const g=z(l);g&&F(s,g,w),(y=w.m)==null||y.t.add(s),t&&Z(t,d,s)},j=()=>[new Map,new Map,new Set],H=(t,s,l)=>{t[0].has(s)||t[0].set(s,new Set),t[1].set(s,l)},Z=(t,s,l)=>{const d=t[0].get(s);d&&d.add(l)},A=(t,s)=>t[0].get(s),I=(t,s)=>{t[2].add(s)},p=t=>{for(;t[1].size||t[2].size;){t[0].clear();const s=new Set(t[1].values());t[1].clear();const l=new Set(t[2]);t[2].clear(),s.forEach(d=>{var w;return(w=d.m)==null?void 0:w.l.forEach(y=>y())}),l.forEach(d=>d())}},J=t=>{const s=(o,r,e,n=()=>{},u=()=>{})=>{const f="v"in r,i=r.v,v=z(r);if(Y(e))if(v)v!==e&&(v[E](e,n),++r.n);else{const a=X(e,n,u);if(a.status===O)for(const c of r.d.keys())F(o,a,t(c,r));r.v=a,delete r.e}else v&&v[E](Promise.resolve(e),n),r.v=e,delete r.e;(!f||!Object.is(i,r.v))&&++r.n},l=(o,r,e,n)=>{if(!(n!=null&&n(r))&&B(e)&&(e.m||Array.from(e.d).every(([c,m])=>l(o,c,t(c,e),n).n===m)))return e;e.d.clear();let u=!0;const f=c=>{if(C(r,c)){const S=t(c,e);if(!B(S))if(T(c))s(c,S,c.init);else throw new Error("no atom init");return _(S)}const m=l(o,c,t(c,e),n);if(u)G(o,r,e,c,m);else{const S=j();G(S,r,e,c,m),b(S,r,e),p(S)}return _(m)};let i,v;const a={get signal(){return i||(i=new AbortController),i.signal},get setSelf(){return!v&&q(r)&&(v=(...c)=>{if(!u)return k(r,...c)}),v}};try{const c=r.read(f,a);return s(r,e,c,()=>i==null?void 0:i.abort(),()=>{if(e.m){const m=j();b(m,r,e),p(m)}}),e}catch(c){return delete e.v,e.e=c,++e.n,e}finally{u=!1}},d=o=>_(l(void 0,o,t(o))),w=(o,r,e)=>{var n,u;const f=new Map;for(const i of((n=e.m)==null?void 0:n.t)||[])f.set(i,t(i,e));for(const i of e.p)f.set(i,t(i,e));return(u=A(o,r))==null||u.forEach(i=>{f.set(i,t(i,e))}),f},y=(o,r,e)=>{const n=[],u=new Set,f=(a,c)=>{if(!u.has(a)){u.add(a);for(const[m,S]of w(o,a,c))a!==m&&f(m,S);n.push([a,c,c.n])}};f(r,e);const i=new Set([r]),v=a=>u.has(a);for(let a=n.length-1;a>=0;--a){const[c,m,S]=n[a];let P=!1;for(const K of m.d.keys())if(K!==c&&i.has(K)){P=!0;break}P&&(l(o,c,m,v),b(o,c,m),S!==m.n&&(H(o,c,m),i.add(c))),u.delete(c)}},g=(o,r,e,...n)=>{const u=i=>_(l(o,i,t(i,e))),f=(i,...v)=>{const a=t(i,e);let c;if(C(r,i)){if(!T(i))throw new Error("atom not writable");const m="v"in a,S=a.v,P=v[0];s(i,a,P),b(o,i,a),(!m||!Object.is(S,a.v))&&(H(o,i,a),y(o,i,a))}else c=g(o,i,a,...v);return p(o),c};return r.write(u,f,...n)},k=(o,...r)=>{const e=j(),n=g(e,o,t(o),...r);return p(e),n},b=(o,r,e)=>{if(e.m&&!z(e)){for(const n of e.d.keys())e.m.d.has(n)||(M(o,n,t(n,e)).t.add(r),e.m.d.add(n));for(const n of e.m.d||[])if(!e.d.has(n)){e.m.d.delete(n);const u=h(o,n,t(n,e));u==null||u.t.delete(r)}}},M=(o,r,e)=>{if(!e.m){l(o,r,e);for(const n of e.d.keys())M(o,n,t(n,e)).t.add(r);if(e.m={l:new Set,d:new Set(e.d.keys()),t:new Set},q(r)&&r.onMount){const n=e.m,{onMount:u}=r;I(o,()=>{const f=u((...i)=>g(o,r,e,...i));f&&(n.u=f)})}}return e.m},h=(o,r,e)=>{if(e.m&&!e.m.l.size&&!Array.from(e.m.t).some(n=>{var u;return(u=t(n,e).m)==null?void 0:u.d.has(r)})){const n=e.m.u;n&&I(o,n),delete e.m;for(const f of e.d.keys()){const i=h(o,f,t(f,e));i==null||i.t.delete(r)}const u=z(e);u&&u[E](void 0,()=>{});return}return e.m};return{get:d,set:k,sub:(o,r)=>{const e=j(),n=t(o),u=M(e,o,n);p(e);const f=u.l;return f.add(r),()=>{f.delete(r);const i=j();h(i,o,n),p(i)}},unstable_derive:o=>J(...o(t))}},tt=D("createStore",()=>{const t=new WeakMap;return J(s=>{let l=t.get(s);return l||(l={d:new Map,p:new Set,n:0},t.set(s,l)),l})});let W;const et=D("getDefaultStore",()=>(W||(W=tt()),W))}}});

@@ -48,4 +48,10 @@ import type { Atom, WritableAtom } from './atom';

};
type GetAtomState = <Value>(atom: Atom<Value>, originAtomState?: AtomState) => AtomState<Value>;
type StoreArgs = readonly [
/*getAtomState*/ GetAtomState
];
type DevStoreRev4 = {
dev4_get_internal_weak_map: () => WeakMap<AnyAtom, AtomState>;
dev4_get_internal_weak_map: () => {
get: (atom: AnyAtom) => AtomState | undefined;
};
dev4_get_mounted_atoms: () => Set<AnyAtom>;

@@ -61,2 +67,3 @@ dev4_restore_atoms: (values: Iterable<readonly [

sub: (atom: AnyAtom, listener: () => void) => () => void;
unstable_derive: (fn: (...args: StoreArgs) => StoreArgs) => Store;
};

@@ -63,0 +70,0 @@ type Store = PrdStore | (PrdStore & DevStoreRev4);

@@ -48,4 +48,10 @@ import type { Atom, WritableAtom } from './atom';

};
type GetAtomState = <Value>(atom: Atom<Value>, originAtomState?: AtomState) => AtomState<Value>;
type StoreArgs = readonly [
/*getAtomState*/ GetAtomState
];
type DevStoreRev4 = {
dev4_get_internal_weak_map: () => WeakMap<AnyAtom, AtomState>;
dev4_get_internal_weak_map: () => {
get: (atom: AnyAtom) => AtomState | undefined;
};
dev4_get_mounted_atoms: () => Set<AnyAtom>;

@@ -61,2 +67,3 @@ dev4_restore_atoms: (values: Iterable<readonly [

sub: (atom: AnyAtom, listener: () => void) => () => void;
unstable_derive: (fn: (...args: StoreArgs) => StoreArgs) => Store;
};

@@ -63,0 +70,0 @@ type Store = PrdStore | (PrdStore & DevStoreRev4);

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

};
var addDependency = function addDependency(pending, atom, atomState, a, aState) {
var _aState$m;
if (a === atom) {
throw new Error('[Bug] atom cannot depend on itself');
}
atomState.d.set(a, aState.n);
var continuablePromise = getPendingContinuablePromise(atomState);
if (continuablePromise) {
addPendingContinuablePromiseToDependency(atom, continuablePromise, aState);
}
(_aState$m = aState.m) == null || _aState$m.t.add(atom);
if (pending) {
addPendingDependent(pending, a, atom);
}
};
var createPending = function createPending() {

@@ -195,4 +210,3 @@ return [new Map(), new Map(), new Set()];

};
var createStore = function createStore() {
var atomStateMap = new WeakMap();
var _buildStore = function buildStore(getAtomState) {
var debugMountedAtoms;

@@ -202,14 +216,2 @@ {

}
var getAtomState = function getAtomState(atom) {
var atomState = atomStateMap.get(atom);
if (!atomState) {
atomState = {
d: new Map(),
p: new Set(),
n: 0
};
atomStateMap.set(atom, atomState);
}
return atomState;
};
var setAtomStateValueOrPromise = function setAtomStateValueOrPromise(atom, atomState, valueOrPromise, abortPromise, completePromise) {

@@ -236,4 +238,3 @@ if (abortPromise === void 0) {

var a = _step.value;
var aState = getAtomState(a);
addPendingContinuablePromiseToDependency(atom, continuablePromise, aState);
addPendingContinuablePromiseToDependency(atom, continuablePromise, getAtomState(a, atomState));
}

@@ -255,20 +256,3 @@ }

};
var addDependency = function addDependency(pending, atom, a, aState) {
var _aState$m;
if (a === atom) {
throw new Error('[Bug] atom cannot depend on itself');
}
var atomState = getAtomState(atom);
atomState.d.set(a, aState.n);
var continuablePromise = getPendingContinuablePromise(atomState);
if (continuablePromise) {
addPendingContinuablePromiseToDependency(atom, continuablePromise, aState);
}
(_aState$m = aState.m) == null || _aState$m.t.add(atom);
if (pending) {
addPendingDependent(pending, a, atom);
}
};
var _readAtomState = function readAtomState(pending, atom, force) {
var atomState = getAtomState(atom);
var _readAtomState = function readAtomState(pending, atom, atomState, force) {
if (!(force != null && force(atom)) && isAtomStateInitialized(atomState)) {

@@ -281,3 +265,3 @@ if (atomState.m) {

n = _ref[1];
return _readAtomState(pending, a, force).n === n;
return _readAtomState(pending, a, getAtomState(a, atomState), force).n === n;
})) {

@@ -291,3 +275,3 @@ return atomState;

if (isSelfAtom(atom, a)) {
var _aState = getAtomState(a);
var _aState = getAtomState(a, atomState);
if (!isAtomStateInitialized(_aState)) {

@@ -302,8 +286,8 @@ if (hasInitialValue(a)) {

}
var aState = _readAtomState(pending, a, force);
var aState = _readAtomState(pending, a, getAtomState(a, atomState), force);
if (isSync) {
addDependency(pending, atom, a, aState);
addDependency(pending, atom, atomState, a, aState);
} else {
var _pending = createPending();
addDependency(_pending, atom, a, aState);
addDependency(_pending, atom, atomState, a, aState);
mountDependencies(_pending, atom, atomState);

@@ -366,34 +350,40 @@ flushPending(_pending);

var readAtom = function readAtom(atom) {
return returnAtomValue(_readAtomState(undefined, atom));
return returnAtomValue(_readAtomState(undefined, atom, getAtomState(atom)));
};
var recomputeDependents = function recomputeDependents(pending, atom) {
var getDependents = function getDependents(a) {
var _aState$m2, _getPendingDependents;
var aState = getAtomState(a);
var dependents = new Set((_aState$m2 = aState.m) == null ? void 0 : _aState$m2.t);
for (var _iterator2 = _createForOfIteratorHelperLoose(aState.p), _step2; !(_step2 = _iterator2()).done;) {
var atomWithPendingContinuablePromise = _step2.value;
dependents.add(atomWithPendingContinuablePromise);
}
(_getPendingDependents = getPendingDependents(pending, a)) == null || _getPendingDependents.forEach(function (dependent) {
dependents.add(dependent);
});
return dependents;
};
var getDependents = function getDependents(pending, atom, atomState) {
var _getPendingDependents;
var dependents = new Map();
for (var _iterator2 = _createForOfIteratorHelperLoose(((_atomState$m2 = atomState.m) == null ? void 0 : _atomState$m2.t) || []), _step2; !(_step2 = _iterator2()).done;) {
var _atomState$m2;
var a = _step2.value;
dependents.set(a, getAtomState(a, atomState));
}
for (var _iterator3 = _createForOfIteratorHelperLoose(atomState.p), _step3; !(_step3 = _iterator3()).done;) {
var atomWithPendingContinuablePromise = _step3.value;
dependents.set(atomWithPendingContinuablePromise, getAtomState(atomWithPendingContinuablePromise, atomState));
}
(_getPendingDependents = getPendingDependents(pending, atom)) == null || _getPendingDependents.forEach(function (dependent) {
dependents.set(dependent, getAtomState(dependent, atomState));
});
return dependents;
};
var recomputeDependents = function recomputeDependents(pending, atom, atomState) {
var topsortedAtoms = [];
var markedAtoms = new Set();
var _visit = function visit(n) {
if (markedAtoms.has(n)) {
var _visit = function visit(a, aState) {
if (markedAtoms.has(a)) {
return;
}
markedAtoms.add(n);
for (var _iterator3 = _createForOfIteratorHelperLoose(getDependents(n)), _step3; !(_step3 = _iterator3()).done;) {
var m = _step3.value;
if (n !== m) {
_visit(m);
markedAtoms.add(a);
for (var _iterator4 = _createForOfIteratorHelperLoose(getDependents(pending, a, aState)), _step4; !(_step4 = _iterator4()).done;) {
var _step4$value = _step4.value,
d = _step4$value[0],
s = _step4$value[1];
if (a !== d) {
_visit(d, s);
}
}
topsortedAtoms.push(n);
topsortedAtoms.push([a, aState, aState.n]);
};
_visit(atom);
_visit(atom, atomState);
var changedAtoms = new Set([atom]);

@@ -404,8 +394,9 @@ var isMarked = function isMarked(a) {

for (var i = topsortedAtoms.length - 1; i >= 0; --i) {
var a = topsortedAtoms[i];
var aState = getAtomState(a);
var prevEpochNumber = aState.n;
var _ref2 = topsortedAtoms[i],
a = _ref2[0],
aState = _ref2[1],
prevEpochNumber = _ref2[2];
var hasChangedDeps = false;
for (var _iterator4 = _createForOfIteratorHelperLoose(aState.d.keys()), _step4; !(_step4 = _iterator4()).done;) {
var dep = _step4.value;
for (var _iterator5 = _createForOfIteratorHelperLoose(aState.d.keys()), _step5; !(_step5 = _iterator5()).done;) {
var dep = _step5.value;
if (dep !== a && changedAtoms.has(dep)) {

@@ -417,3 +408,3 @@ hasChangedDeps = true;

if (hasChangedDeps) {
_readAtomState(pending, a, isMarked);
_readAtomState(pending, a, aState, isMarked);
mountDependencies(pending, a, aState);

@@ -428,7 +419,8 @@ if (prevEpochNumber !== aState.n) {

};
var _writeAtomState = function writeAtomState(pending, atom) {
var _writeAtomState = function writeAtomState(pending, atom, atomState) {
var getter = function getter(a) {
return returnAtomValue(_readAtomState(pending, a));
return returnAtomValue(_readAtomState(pending, a, getAtomState(a, atomState)));
};
var setter = function setter(a) {
var aState = getAtomState(a, atomState);
var r;

@@ -442,3 +434,2 @@ for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {

}
var aState = getAtomState(a);
var hasPrevValue = 'v' in aState;

@@ -451,6 +442,6 @@ var prevValue = aState.v;

addPendingAtom(pending, a, aState);
recomputeDependents(pending, a);
recomputeDependents(pending, a, aState);
}
} else {
r = _writeAtomState.apply(void 0, [pending, a].concat(args));
r = _writeAtomState.apply(void 0, [pending, a, aState].concat(args));
}

@@ -460,4 +451,4 @@ flushPending(pending);

};
for (var _len2 = arguments.length, args = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {
args[_key2 - 2] = arguments[_key2];
for (var _len2 = arguments.length, args = new Array(_len2 > 3 ? _len2 - 3 : 0), _key2 = 3; _key2 < _len2; _key2++) {
args[_key2 - 3] = arguments[_key2];
}

@@ -472,3 +463,3 @@ var result = atom.write.apply(atom, [getter, setter].concat(args));

}
var result = _writeAtomState.apply(void 0, [pending, atom].concat(args));
var result = _writeAtomState.apply(void 0, [pending, atom, getAtomState(atom)].concat(args));
flushPending(pending);

@@ -479,6 +470,6 @@ return result;

if (atomState.m && !getPendingContinuablePromise(atomState)) {
for (var _iterator5 = _createForOfIteratorHelperLoose(atomState.d.keys()), _step5; !(_step5 = _iterator5()).done;) {
var a = _step5.value;
for (var _iterator6 = _createForOfIteratorHelperLoose(atomState.d.keys()), _step6; !(_step6 = _iterator6()).done;) {
var a = _step6.value;
if (!atomState.m.d.has(a)) {
var aMounted = _mountAtom(pending, a);
var aMounted = _mountAtom(pending, a, getAtomState(a, atomState));
aMounted.t.add(atom);

@@ -488,7 +479,7 @@ atomState.m.d.add(a);

}
for (var _iterator6 = _createForOfIteratorHelperLoose(atomState.m.d || []), _step6; !(_step6 = _iterator6()).done;) {
var _a = _step6.value;
for (var _iterator7 = _createForOfIteratorHelperLoose(atomState.m.d || []), _step7; !(_step7 = _iterator7()).done;) {
var _a = _step7.value;
if (!atomState.d.has(_a)) {
atomState.m.d.delete(_a);
var _aMounted = _unmountAtom(pending, _a);
var _aMounted = _unmountAtom(pending, _a, getAtomState(_a, atomState));
_aMounted == null || _aMounted.t.delete(atom);

@@ -499,9 +490,8 @@ }

};
var _mountAtom = function mountAtom(pending, atom) {
var atomState = getAtomState(atom);
var _mountAtom = function mountAtom(pending, atom, atomState) {
if (!atomState.m) {
_readAtomState(pending, atom);
for (var _iterator7 = _createForOfIteratorHelperLoose(atomState.d.keys()), _step7; !(_step7 = _iterator7()).done;) {
var a = _step7.value;
var aMounted = _mountAtom(pending, a);
_readAtomState(pending, atom, atomState);
for (var _iterator8 = _createForOfIteratorHelperLoose(atomState.d.keys()), _step8; !(_step8 = _iterator8()).done;) {
var a = _step8.value;
var aMounted = _mountAtom(pending, a, getAtomState(a, atomState));
aMounted.t.add(atom);

@@ -525,3 +515,3 @@ }

}
return _writeAtomState.apply(void 0, [pending, atom].concat(args));
return _writeAtomState.apply(void 0, [pending, atom, atomState].concat(args));
});

@@ -536,7 +526,6 @@ if (onUnmount) {

};
var _unmountAtom = function unmountAtom(pending, atom) {
var atomState = getAtomState(atom);
var _unmountAtom = function unmountAtom(pending, atom, atomState) {
if (atomState.m && !atomState.m.l.size && !Array.from(atomState.m.t).some(function (a) {
var _getAtomState$m;
return (_getAtomState$m = getAtomState(a).m) == null ? void 0 : _getAtomState$m.d.has(atom);
return (_getAtomState$m = getAtomState(a, atomState).m) == null ? void 0 : _getAtomState$m.d.has(atom);
})) {

@@ -551,5 +540,5 @@ var onUnmount = atomState.m.u;

}
for (var _iterator8 = _createForOfIteratorHelperLoose(atomState.d.keys()), _step8; !(_step8 = _iterator8()).done;) {
var a = _step8.value;
var aMounted = _unmountAtom(pending, a);
for (var _iterator9 = _createForOfIteratorHelperLoose(atomState.d.keys()), _step9; !(_step9 = _iterator9()).done;) {
var a = _step9.value;
var aMounted = _unmountAtom(pending, a, getAtomState(a, atomState));
aMounted == null || aMounted.t.delete(atom);

@@ -567,3 +556,4 @@ }

var pending = createPending();
var mounted = _mountAtom(pending, atom);
var atomState = getAtomState(atom);
var mounted = _mountAtom(pending, atom, atomState);
flushPending(pending);

@@ -575,10 +565,14 @@ var listeners = mounted.l;

var pending = createPending();
_unmountAtom(pending, atom);
_unmountAtom(pending, atom, atomState);
flushPending(pending);
};
};
var unstable_derive = function unstable_derive(fn) {
return _buildStore.apply(void 0, fn(getAtomState));
};
var store = {
get: readAtom,
set: writeAtom,
sub: subscribeAtom
sub: subscribeAtom,
unstable_derive: unstable_derive
};

@@ -588,3 +582,11 @@ {

dev4_get_internal_weak_map: function dev4_get_internal_weak_map() {
return atomStateMap;
return {
get: function get(atom) {
var atomState = getAtomState(atom);
if (atomState.n === 0) {
return undefined;
}
return atomState;
}
};
},

@@ -596,15 +598,15 @@ dev4_get_mounted_atoms: function dev4_get_mounted_atoms() {

var pending = createPending();
for (var _iterator9 = _createForOfIteratorHelperLoose(values), _step9; !(_step9 = _iterator9()).done;) {
var _step9$value = _step9.value,
atom = _step9$value[0],
value = _step9$value[1];
if (hasInitialValue(atom)) {
var atomState = getAtomState(atom);
for (var _iterator10 = _createForOfIteratorHelperLoose(values), _step10; !(_step10 = _iterator10()).done;) {
var _step10$value = _step10.value,
_atom = _step10$value[0],
value = _step10$value[1];
if (hasInitialValue(_atom)) {
var atomState = getAtomState(_atom);
var hasPrevValue = 'v' in atomState;
var prevValue = atomState.v;
setAtomStateValueOrPromise(atom, atomState, value);
mountDependencies(pending, atom, atomState);
setAtomStateValueOrPromise(_atom, atomState, value);
mountDependencies(pending, _atom, atomState);
if (!hasPrevValue || !Object.is(prevValue, atomState.v)) {
addPendingAtom(pending, atom, atomState);
recomputeDependents(pending, atom);
addPendingAtom(pending, _atom, atomState);
recomputeDependents(pending, _atom, atomState);
}

@@ -620,2 +622,18 @@ }

};
var createStore = function createStore() {
var atomStateMap = new WeakMap();
var getAtomState = function getAtomState(atom) {
var atomState = atomStateMap.get(atom);
if (!atomState) {
atomState = {
d: new Map(),
p: new Set(),
n: 0
};
atomStateMap.set(atom, atomState);
}
return atomState;
};
return _buildStore(getAtomState);
};
var defaultStore;

@@ -626,4 +644,4 @@ var getDefaultStore = function getDefaultStore() {

{
var _ref2;
(_ref2 = globalThis).__JOTAI_DEFAULT_STORE__ || (_ref2.__JOTAI_DEFAULT_STORE__ = defaultStore);
var _ref3;
(_ref3 = globalThis).__JOTAI_DEFAULT_STORE__ || (_ref3.__JOTAI_DEFAULT_STORE__ = defaultStore);
if (globalThis.__JOTAI_DEFAULT_STORE__ !== defaultStore) {

@@ -630,0 +648,0 @@ console.warn('Detected multiple Jotai instances. It may cause unexpected behavior with the default store. https://github.com/pmndrs/jotai/discussions/2044');

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

!function(n,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((n="undefined"!=typeof globalThis?globalThis:n||self).jotaiVanilla={})}(this,(function(n){"use strict";var e=0;function t(n){return n(this)}function r(n,e,t){return e(this,"function"==typeof t?t(n(this)):t)}function o(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=Array(e);t<e;t++)r[t]=n[t];return r}function a(n,e){var t="undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(t)return(t=t.call(n)).next.bind(t);if(Array.isArray(n)||(t=function(n,e){if(n){if("string"==typeof n)return o(n,e);var t={}.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?o(n,e):void 0}}(n))||e){t&&(n=t);var r=0;return function(){return r>=n.length?{done:!0}:{done:!1,value:n[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,u=function(n,e){return n.unstable_is?n.unstable_is(e):e===n},f=function(n){return"init"in n},l=function(n){return!!n.write},c=Symbol(""),v="pending",d=new WeakMap,s=function(n){return"v"in n||"e"in n},m=function(n){if("e"in n)throw n.e;return n.v},y=function(n){var e,t=n.v;return"object"==typeof(e=t)&&null!==e&&c in e&&t.status===v?t:null},h=function(n,e,t){t.p.has(n)||(t.p.add(n),e.then((function(){t.p.delete(n)}),(function(){t.p.delete(n)})))},p=function(){return[new Map,new Map,new Set]},w=function(n,e,t){n[0].has(e)||n[0].set(e,new Set),n[1].set(e,t)},g=function(n,e){n[2].add(e)},b=function(n){for(;n[1].size||n[2].size;){n[0].clear();var e=new Set(n[1].values());n[1].clear();var t=new Set(n[2]);n[2].clear(),e.forEach((function(n){var e;return null==(e=n.m)?void 0:e.l.forEach((function(n){return n()}))})),t.forEach((function(n){return n()}))}},S=function(){var n=new WeakMap,e=function(e){var t=n.get(e);return t||(t={d:new Map,p:new Set,n:0},n.set(e,t)),t},t=function(n,t,r,o,i){void 0===o&&(o=function(){}),void 0===i&&(i=function(){});var u,f="v"in t,l=t.v,s=y(t);if("function"==typeof(null==(u=r)?void 0:u.then))if(s)s!==r&&(s[c](r,o),++t.n);else{var m=function(n,e,t){if(!d.has(n)){var r,o=new Promise((function(a,i){var u=n,f=function(n){return function(e){u===n&&(o.status="fulfilled",o.value=e,a(e),t())}},l=function(n){return function(e){u===n&&(o.status="rejected",o.reason=e,i(e),t())}};n.then(f(n),l(n)),r=function(n,t){n&&(d.set(n,o),u=n,n.then(f(n),l(n)),e(),e=t)}}));o.status=v,o[c]=r,d.set(n,o)}return d.get(n)}(r,o,i);if(m.status===v)for(var p,w=a(t.d.keys());!(p=w()).done;){var g=p.value,b=e(g);h(n,m,b)}t.v=m,delete t.e}else s&&s[c](Promise.resolve(r),o),t.v=r,delete t.e;f&&Object.is(l,t.v)||++t.n},r=function(n,t,r,o){var a,i=e(t);i.d.set(r,o.n);var u=y(i);u&&h(t,u,o),null==(a=o.m)||a.t.add(t),n&&function(n,e,t){var r=n[0].get(e);r&&r.add(t)}(n,r,t)},o=function(n,a,i){var c=e(a);if((null==i||!i(a))&&s(c)){if(c.m)return c;if(Array.from(c.d).every((function(e){var t=e[0],r=e[1];return o(n,t,i).n===r})))return c}c.d.clear();var v,d,y=!0,h={get signal(){return v||(v=new AbortController),v.signal},get setSelf(){return!d&&l(a)&&(d=function(){if(!y){for(var n=arguments.length,e=new Array(n),t=0;t<n;t++)e[t]=arguments[t];return A.apply(void 0,[a].concat(e))}}),d}};try{var w=a.read((function(l){if(u(a,l)){var v=e(l);if(!s(v)){if(!f(l))throw new Error("no atom init");t(l,v,l.init)}return m(v)}var d=o(n,l,i);if(y)r(n,a,l,d);else{var h=p();r(h,a,l,d),k(h,a,c),b(h)}return m(d)}),h);return t(a,c,w,(function(){var n;return null==(n=v)?void 0:n.abort()}),(function(){if(c.m){var n=p();k(n,a,c),b(n)}})),c}catch(n){return delete c.v,c.e=n,++c.n,c}finally{y=!1}},i=function(n,t){var r=[],i=new Set,u=function(t){if(!i.has(t)){i.add(t);for(var o,f=a(function(t){for(var r,o,i,u=e(t),f=new Set(null==(r=u.m)?void 0:r.t),l=a(u.p);!(i=l()).done;){var c=i.value;f.add(c)}return null==(o=function(n,e){return n[0].get(e)}(n,t))||o.forEach((function(n){f.add(n)})),f}(t));!(o=f()).done;){var l=o.value;t!==l&&u(l)}r.push(t)}};u(t);for(var f=new Set([t]),l=function(n){return i.has(n)},c=r.length-1;c>=0;--c){for(var v,d=r[c],s=e(d),m=s.n,y=!1,h=a(s.d.keys());!(v=h()).done;){var p=v.value;if(p!==d&&f.has(p)){y=!0;break}}y&&(o(n,d,l),k(n,d,s),m!==s.n&&(w(n,d,s),f.add(d))),i.delete(d)}},S=function(n,r){for(var a=arguments.length,l=new Array(a>2?a-2:0),c=2;c<a;c++)l[c-2]=arguments[c];var v=r.write.apply(r,[function(e){return m(o(n,e))},function(o){for(var a,l=arguments.length,c=new Array(l>1?l-1:0),v=1;v<l;v++)c[v-1]=arguments[v];if(u(r,o)){if(!f(o))throw new Error("atom not writable");var d=e(o),s="v"in d,m=d.v,y=c[0];t(o,d,y),k(n,o,d),s&&Object.is(m,d.v)||(w(n,o,d),i(n,o))}else a=S.apply(void 0,[n,o].concat(c));return b(n),a}].concat(l));return v},A=function(n){for(var e=p(),t=arguments.length,r=new Array(t>1?t-1:0),o=1;o<t;o++)r[o-1]=arguments[o];var a=S.apply(void 0,[e,n].concat(r));return b(e),a},k=function(n,e,t){if(t.m&&!y(t)){for(var r,o=a(t.d.keys());!(r=o()).done;){var i=r.value;if(!t.m.d.has(i))j(n,i).t.add(e),t.m.d.add(i)}for(var u,f=a(t.m.d||[]);!(u=f()).done;){var l=u.value;if(!t.d.has(l)){t.m.d.delete(l);var c=M(n,l);null==c||c.t.delete(e)}}}},j=function(n,t){var r=e(t);if(!r.m){o(n,t);for(var i,u=a(r.d.keys());!(i=u()).done;){var f=i.value;j(n,f).t.add(t)}if(r.m={l:new Set,d:new Set(r.d.keys()),t:new Set},l(t)&&t.onMount){var c=r.m,v=t.onMount;g(n,(function(){var e=v((function(){for(var e=arguments.length,r=new Array(e),o=0;o<e;o++)r[o]=arguments[o];return S.apply(void 0,[n,t].concat(r))}));e&&(c.u=e)}))}}return r.m},M=function(n,t){var r=e(t);if(!r.m||r.m.l.size||Array.from(r.m.t).some((function(n){var r;return null==(r=e(n).m)?void 0:r.d.has(t)})))return r.m;var o=r.m.u;o&&g(n,o),delete r.m;for(var i,u=a(r.d.keys());!(i=u()).done;){var f=i.value,l=M(n,f);null==l||l.t.delete(t)}var v=y(r);v&&v[c](void 0,(function(){}))},E={get:function(n){return m(o(void 0,n))},set:A,sub:function(n,e){var t=p(),r=j(t,n);b(t);var o=r.l;return o.add(e),function(){o.delete(e);var t=p();M(t,n),b(t)}}};return E};n.atom=function(n,o){var a="atom"+ ++e,i={toString:function(){return a}};return"function"==typeof n?i.read=n:(i.init=n,i.read=t,i.write=r),o&&(i.write=o),i},n.createStore=S,n.getDefaultStore=function(){return i||(i=S()),i}}));
!function(n,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((n="undefined"!=typeof globalThis?globalThis:n||self).jotaiVanilla={})}(this,(function(n){"use strict";var e=0;function t(n){return n(this)}function r(n,e,t){return e(this,"function"==typeof t?t(n(this)):t)}function o(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=Array(e);t<e;t++)r[t]=n[t];return r}function a(n,e){var t="undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(t)return(t=t.call(n)).next.bind(t);if(Array.isArray(n)||(t=function(n,e){if(n){if("string"==typeof n)return o(n,e);var t={}.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?o(n,e):void 0}}(n))||e){t&&(n=t);var r=0;return function(){return r>=n.length?{done:!0}:{done:!1,value:n[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,u=function(n,e){return n.unstable_is?n.unstable_is(e):e===n},f=function(n){return"init"in n},l=function(n){return!!n.write},c=Symbol(""),v="pending",d=new WeakMap,s=function(n){return"v"in n||"e"in n},m=function(n){if("e"in n)throw n.e;return n.v},p=function(n){var e,t=n.v;return"object"==typeof(e=t)&&null!==e&&c in e&&t.status===v?t:null},y=function(n,e,t){t.p.has(n)||(t.p.add(n),e.then((function(){t.p.delete(n)}),(function(){t.p.delete(n)})))},h=function(n,e,t,r,o){var a;t.d.set(r,o.n);var i=p(t);i&&y(e,i,o),null==(a=o.m)||a.t.add(e),n&&b(n,r,e)},w=function(){return[new Map,new Map,new Set]},g=function(n,e,t){n[0].has(e)||n[0].set(e,new Set),n[1].set(e,t)},b=function(n,e,t){var r=n[0].get(e);r&&r.add(t)},S=function(n,e){n[2].add(e)},A=function(n){for(;n[1].size||n[2].size;){n[0].clear();var e=new Set(n[1].values());n[1].clear();var t=new Set(n[2]);n[2].clear(),e.forEach((function(n){var e;return null==(e=n.m)?void 0:e.l.forEach((function(n){return n()}))})),t.forEach((function(n){return n()}))}},k=function(n){var e=function(e,t,r,o,i){void 0===o&&(o=function(){}),void 0===i&&(i=function(){});var u,f="v"in t,l=t.v,s=p(t);if("function"==typeof(null==(u=r)?void 0:u.then))if(s)s!==r&&(s[c](r,o),++t.n);else{var m=function(n,e,t){if(!d.has(n)){var r,o=new Promise((function(a,i){var u=n,f=function(n){return function(e){u===n&&(o.status="fulfilled",o.value=e,a(e),t())}},l=function(n){return function(e){u===n&&(o.status="rejected",o.reason=e,i(e),t())}};n.then(f(n),l(n)),r=function(n,t){n&&(d.set(n,o),u=n,n.then(f(n),l(n)),e(),e=t)}}));o.status=v,o[c]=r,d.set(n,o)}return d.get(n)}(r,o,i);if(m.status===v)for(var h,w=a(t.d.keys());!(h=w()).done;){var g=h.value;y(e,m,n(g,t))}t.v=m,delete t.e}else s&&s[c](Promise.resolve(r),o),t.v=r,delete t.e;f&&Object.is(l,t.v)||++t.n},t=function(r,o,a,c){if((null==c||!c(o))&&s(a)){if(a.m)return a;if(Array.from(a.d).every((function(e){var o=e[0],i=e[1];return t(r,o,n(o,a),c).n===i})))return a}a.d.clear();var v,d,p=!0,y={get signal(){return v||(v=new AbortController),v.signal},get setSelf(){return!d&&l(o)&&(d=function(){if(!p){for(var n=arguments.length,e=new Array(n),t=0;t<n;t++)e[t]=arguments[t];return i.apply(void 0,[o].concat(e))}}),d}};try{var g=o.read((function(i){if(u(o,i)){var l=n(i,a);if(!s(l)){if(!f(i))throw new Error("no atom init");e(i,l,i.init)}return m(l)}var v=t(r,i,n(i,a),c);if(p)h(r,o,a,i,v);else{var d=w();h(d,o,a,i,v),b(d,o,a),A(d)}return m(v)}),y);return e(o,a,g,(function(){var n;return null==(n=v)?void 0:n.abort()}),(function(){if(a.m){var n=w();b(n,o,a),A(n)}})),a}catch(n){return delete a.v,a.e=n,++a.n,a}finally{p=!1}},r=function(e,r,o){var i=[],u=new Set,f=function(t,r){if(!u.has(t)){u.add(t);for(var o,l=a(function(e,t,r){for(var o,i,u=new Map,f=a((null==(l=r.m)?void 0:l.t)||[]);!(i=f()).done;){var l,c=i.value;u.set(c,n(c,r))}for(var v,d=a(r.p);!(v=d()).done;){var s=v.value;u.set(s,n(s,r))}return null==(o=function(n,e){return n[0].get(e)}(e,t))||o.forEach((function(e){u.set(e,n(e,r))})),u}(e,t,r));!(o=l()).done;){var c=o.value,v=c[0],d=c[1];t!==v&&f(v,d)}i.push([t,r,r.n])}};f(r,o);for(var l=new Set([r]),c=function(n){return u.has(n)},v=i.length-1;v>=0;--v){for(var d,s=i[v],m=s[0],p=s[1],y=s[2],h=!1,w=a(p.d.keys());!(d=w()).done;){var S=d.value;if(S!==m&&l.has(S)){h=!0;break}}h&&(t(e,m,p,c),b(e,m,p),y!==p.n&&(g(e,m,p),l.add(m))),u.delete(m)}},o=function(a,i,l){for(var c=arguments.length,v=new Array(c>3?c-3:0),d=3;d<c;d++)v[d-3]=arguments[d];var s=i.write.apply(i,[function(e){return m(t(a,e,n(e,l)))},function(t){for(var c,v=n(t,l),d=arguments.length,s=new Array(d>1?d-1:0),m=1;m<d;m++)s[m-1]=arguments[m];if(u(i,t)){if(!f(t))throw new Error("atom not writable");var p="v"in v,y=v.v,h=s[0];e(t,v,h),b(a,t,v),p&&Object.is(y,v.v)||(g(a,t,v),r(a,t,v))}else c=o.apply(void 0,[a,t,v].concat(s));return A(a),c}].concat(v));return s},i=function(e){for(var t=w(),r=arguments.length,a=new Array(r>1?r-1:0),i=1;i<r;i++)a[i-1]=arguments[i];var u=o.apply(void 0,[t,e,n(e)].concat(a));return A(t),u},b=function(e,t,r){if(r.m&&!p(r)){for(var o,i=a(r.d.keys());!(o=i()).done;){var u=o.value;if(!r.m.d.has(u))M(e,u,n(u,r)).t.add(t),r.m.d.add(u)}for(var f,l=a(r.m.d||[]);!(f=l()).done;){var c=f.value;if(!r.d.has(c)){r.m.d.delete(c);var v=j(e,c,n(c,r));null==v||v.t.delete(t)}}}},M=function(e,r,i){if(!i.m){t(e,r,i);for(var u,f=a(i.d.keys());!(u=f()).done;){var c=u.value;M(e,c,n(c,i)).t.add(r)}if(i.m={l:new Set,d:new Set(i.d.keys()),t:new Set},l(r)&&r.onMount){var v=i.m,d=r.onMount;S(e,(function(){var n=d((function(){for(var n=arguments.length,t=new Array(n),a=0;a<n;a++)t[a]=arguments[a];return o.apply(void 0,[e,r,i].concat(t))}));n&&(v.u=n)}))}}return i.m},j=function(e,t,r){if(!r.m||r.m.l.size||Array.from(r.m.t).some((function(e){var o;return null==(o=n(e,r).m)?void 0:o.d.has(t)})))return r.m;var o=r.m.u;o&&S(e,o),delete r.m;for(var i,u=a(r.d.keys());!(i=u()).done;){var f=i.value,l=j(e,f,n(f,r));null==l||l.t.delete(t)}var v=p(r);v&&v[c](void 0,(function(){}))},E={get:function(e){return m(t(void 0,e,n(e)))},set:i,sub:function(e,t){var r=w(),o=n(e),a=M(r,e,o);A(r);var i=a.l;return i.add(t),function(){i.delete(t);var n=w();j(n,e,o),A(n)}},unstable_derive:function(e){return k.apply(void 0,e(n))}};return E},M=function(){var n=new WeakMap;return k((function(e){var t=n.get(e);return t||(t={d:new Map,p:new Set,n:0},n.set(e,t)),t}))};n.atom=function(n,o){var a="atom"+ ++e,i={toString:function(){return a}};return"function"==typeof n?i.read=n:(i.init=n,i.read=t,i.write=r),o&&(i.write=o),i},n.createStore=M,n.getDefaultStore=function(){return i||(i=M()),i}}));

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

};
var addDependency = function addDependency(pending, atom, atomState, a, aState) {
var _aState$m;
if (process.env.NODE_ENV !== 'production' && a === atom) {
throw new Error('[Bug] atom cannot depend on itself');
}
atomState.d.set(a, aState.n);
var continuablePromise = getPendingContinuablePromise(atomState);
if (continuablePromise) {
addPendingContinuablePromiseToDependency(atom, continuablePromise, aState);
}
(_aState$m = aState.m) == null || _aState$m.t.add(atom);
if (pending) {
addPendingDependent(pending, a, atom);
}
};
var createPending = function createPending() {

@@ -191,4 +206,3 @@ return [new Map(), new Map(), new Set()];

};
var createStore = function createStore() {
var atomStateMap = new WeakMap();
var _buildStore = function buildStore(getAtomState) {
var debugMountedAtoms;

@@ -198,14 +212,2 @@ if (process.env.NODE_ENV !== 'production') {

}
var getAtomState = function getAtomState(atom) {
var atomState = atomStateMap.get(atom);
if (!atomState) {
atomState = {
d: new Map(),
p: new Set(),
n: 0
};
atomStateMap.set(atom, atomState);
}
return atomState;
};
var setAtomStateValueOrPromise = function setAtomStateValueOrPromise(atom, atomState, valueOrPromise, abortPromise, completePromise) {

@@ -232,4 +234,3 @@ if (abortPromise === void 0) {

var a = _step.value;
var aState = getAtomState(a);
addPendingContinuablePromiseToDependency(atom, continuablePromise, aState);
addPendingContinuablePromiseToDependency(atom, continuablePromise, getAtomState(a, atomState));
}

@@ -251,20 +252,3 @@ }

};
var addDependency = function addDependency(pending, atom, a, aState) {
var _aState$m;
if (process.env.NODE_ENV !== 'production' && a === atom) {
throw new Error('[Bug] atom cannot depend on itself');
}
var atomState = getAtomState(atom);
atomState.d.set(a, aState.n);
var continuablePromise = getPendingContinuablePromise(atomState);
if (continuablePromise) {
addPendingContinuablePromiseToDependency(atom, continuablePromise, aState);
}
(_aState$m = aState.m) == null || _aState$m.t.add(atom);
if (pending) {
addPendingDependent(pending, a, atom);
}
};
var _readAtomState = function readAtomState(pending, atom, force) {
var atomState = getAtomState(atom);
var _readAtomState = function readAtomState(pending, atom, atomState, force) {
if (!(force != null && force(atom)) && isAtomStateInitialized(atomState)) {

@@ -277,3 +261,3 @@ if (atomState.m) {

n = _ref[1];
return _readAtomState(pending, a, force).n === n;
return _readAtomState(pending, a, getAtomState(a, atomState), force).n === n;
})) {

@@ -287,3 +271,3 @@ return atomState;

if (isSelfAtom(atom, a)) {
var _aState = getAtomState(a);
var _aState = getAtomState(a, atomState);
if (!isAtomStateInitialized(_aState)) {

@@ -298,8 +282,8 @@ if (hasInitialValue(a)) {

}
var aState = _readAtomState(pending, a, force);
var aState = _readAtomState(pending, a, getAtomState(a, atomState), force);
if (isSync) {
addDependency(pending, atom, a, aState);
addDependency(pending, atom, atomState, a, aState);
} else {
var _pending = createPending();
addDependency(_pending, atom, a, aState);
addDependency(_pending, atom, atomState, a, aState);
mountDependencies(_pending, atom, atomState);

@@ -362,34 +346,40 @@ flushPending(_pending);

var readAtom = function readAtom(atom) {
return returnAtomValue(_readAtomState(undefined, atom));
return returnAtomValue(_readAtomState(undefined, atom, getAtomState(atom)));
};
var recomputeDependents = function recomputeDependents(pending, atom) {
var getDependents = function getDependents(a) {
var _aState$m2, _getPendingDependents;
var aState = getAtomState(a);
var dependents = new Set((_aState$m2 = aState.m) == null ? void 0 : _aState$m2.t);
for (var _iterator2 = _createForOfIteratorHelperLoose(aState.p), _step2; !(_step2 = _iterator2()).done;) {
var atomWithPendingContinuablePromise = _step2.value;
dependents.add(atomWithPendingContinuablePromise);
}
(_getPendingDependents = getPendingDependents(pending, a)) == null || _getPendingDependents.forEach(function (dependent) {
dependents.add(dependent);
});
return dependents;
};
var getDependents = function getDependents(pending, atom, atomState) {
var _getPendingDependents;
var dependents = new Map();
for (var _iterator2 = _createForOfIteratorHelperLoose(((_atomState$m2 = atomState.m) == null ? void 0 : _atomState$m2.t) || []), _step2; !(_step2 = _iterator2()).done;) {
var _atomState$m2;
var a = _step2.value;
dependents.set(a, getAtomState(a, atomState));
}
for (var _iterator3 = _createForOfIteratorHelperLoose(atomState.p), _step3; !(_step3 = _iterator3()).done;) {
var atomWithPendingContinuablePromise = _step3.value;
dependents.set(atomWithPendingContinuablePromise, getAtomState(atomWithPendingContinuablePromise, atomState));
}
(_getPendingDependents = getPendingDependents(pending, atom)) == null || _getPendingDependents.forEach(function (dependent) {
dependents.set(dependent, getAtomState(dependent, atomState));
});
return dependents;
};
var recomputeDependents = function recomputeDependents(pending, atom, atomState) {
var topsortedAtoms = [];
var markedAtoms = new Set();
var _visit = function visit(n) {
if (markedAtoms.has(n)) {
var _visit = function visit(a, aState) {
if (markedAtoms.has(a)) {
return;
}
markedAtoms.add(n);
for (var _iterator3 = _createForOfIteratorHelperLoose(getDependents(n)), _step3; !(_step3 = _iterator3()).done;) {
var m = _step3.value;
if (n !== m) {
_visit(m);
markedAtoms.add(a);
for (var _iterator4 = _createForOfIteratorHelperLoose(getDependents(pending, a, aState)), _step4; !(_step4 = _iterator4()).done;) {
var _step4$value = _step4.value,
d = _step4$value[0],
s = _step4$value[1];
if (a !== d) {
_visit(d, s);
}
}
topsortedAtoms.push(n);
topsortedAtoms.push([a, aState, aState.n]);
};
_visit(atom);
_visit(atom, atomState);
var changedAtoms = new Set([atom]);

@@ -400,8 +390,9 @@ var isMarked = function isMarked(a) {

for (var i = topsortedAtoms.length - 1; i >= 0; --i) {
var a = topsortedAtoms[i];
var aState = getAtomState(a);
var prevEpochNumber = aState.n;
var _ref2 = topsortedAtoms[i],
a = _ref2[0],
aState = _ref2[1],
prevEpochNumber = _ref2[2];
var hasChangedDeps = false;
for (var _iterator4 = _createForOfIteratorHelperLoose(aState.d.keys()), _step4; !(_step4 = _iterator4()).done;) {
var dep = _step4.value;
for (var _iterator5 = _createForOfIteratorHelperLoose(aState.d.keys()), _step5; !(_step5 = _iterator5()).done;) {
var dep = _step5.value;
if (dep !== a && changedAtoms.has(dep)) {

@@ -413,3 +404,3 @@ hasChangedDeps = true;

if (hasChangedDeps) {
_readAtomState(pending, a, isMarked);
_readAtomState(pending, a, aState, isMarked);
mountDependencies(pending, a, aState);

@@ -424,7 +415,8 @@ if (prevEpochNumber !== aState.n) {

};
var _writeAtomState = function writeAtomState(pending, atom) {
var _writeAtomState = function writeAtomState(pending, atom, atomState) {
var getter = function getter(a) {
return returnAtomValue(_readAtomState(pending, a));
return returnAtomValue(_readAtomState(pending, a, getAtomState(a, atomState)));
};
var setter = function setter(a) {
var aState = getAtomState(a, atomState);
var r;

@@ -438,3 +430,2 @@ for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {

}
var aState = getAtomState(a);
var hasPrevValue = 'v' in aState;

@@ -447,6 +438,6 @@ var prevValue = aState.v;

addPendingAtom(pending, a, aState);
recomputeDependents(pending, a);
recomputeDependents(pending, a, aState);
}
} else {
r = _writeAtomState.apply(void 0, [pending, a].concat(args));
r = _writeAtomState.apply(void 0, [pending, a, aState].concat(args));
}

@@ -456,4 +447,4 @@ flushPending(pending);

};
for (var _len2 = arguments.length, args = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {
args[_key2 - 2] = arguments[_key2];
for (var _len2 = arguments.length, args = new Array(_len2 > 3 ? _len2 - 3 : 0), _key2 = 3; _key2 < _len2; _key2++) {
args[_key2 - 3] = arguments[_key2];
}

@@ -468,3 +459,3 @@ var result = atom.write.apply(atom, [getter, setter].concat(args));

}
var result = _writeAtomState.apply(void 0, [pending, atom].concat(args));
var result = _writeAtomState.apply(void 0, [pending, atom, getAtomState(atom)].concat(args));
flushPending(pending);

@@ -475,6 +466,6 @@ return result;

if (atomState.m && !getPendingContinuablePromise(atomState)) {
for (var _iterator5 = _createForOfIteratorHelperLoose(atomState.d.keys()), _step5; !(_step5 = _iterator5()).done;) {
var a = _step5.value;
for (var _iterator6 = _createForOfIteratorHelperLoose(atomState.d.keys()), _step6; !(_step6 = _iterator6()).done;) {
var a = _step6.value;
if (!atomState.m.d.has(a)) {
var aMounted = _mountAtom(pending, a);
var aMounted = _mountAtom(pending, a, getAtomState(a, atomState));
aMounted.t.add(atom);

@@ -484,7 +475,7 @@ atomState.m.d.add(a);

}
for (var _iterator6 = _createForOfIteratorHelperLoose(atomState.m.d || []), _step6; !(_step6 = _iterator6()).done;) {
var _a = _step6.value;
for (var _iterator7 = _createForOfIteratorHelperLoose(atomState.m.d || []), _step7; !(_step7 = _iterator7()).done;) {
var _a = _step7.value;
if (!atomState.d.has(_a)) {
atomState.m.d.delete(_a);
var _aMounted = _unmountAtom(pending, _a);
var _aMounted = _unmountAtom(pending, _a, getAtomState(_a, atomState));
_aMounted == null || _aMounted.t.delete(atom);

@@ -495,9 +486,8 @@ }

};
var _mountAtom = function mountAtom(pending, atom) {
var atomState = getAtomState(atom);
var _mountAtom = function mountAtom(pending, atom, atomState) {
if (!atomState.m) {
_readAtomState(pending, atom);
for (var _iterator7 = _createForOfIteratorHelperLoose(atomState.d.keys()), _step7; !(_step7 = _iterator7()).done;) {
var a = _step7.value;
var aMounted = _mountAtom(pending, a);
_readAtomState(pending, atom, atomState);
for (var _iterator8 = _createForOfIteratorHelperLoose(atomState.d.keys()), _step8; !(_step8 = _iterator8()).done;) {
var a = _step8.value;
var aMounted = _mountAtom(pending, a, getAtomState(a, atomState));
aMounted.t.add(atom);

@@ -521,3 +511,3 @@ }

}
return _writeAtomState.apply(void 0, [pending, atom].concat(args));
return _writeAtomState.apply(void 0, [pending, atom, atomState].concat(args));
});

@@ -532,7 +522,6 @@ if (onUnmount) {

};
var _unmountAtom = function unmountAtom(pending, atom) {
var atomState = getAtomState(atom);
var _unmountAtom = function unmountAtom(pending, atom, atomState) {
if (atomState.m && !atomState.m.l.size && !Array.from(atomState.m.t).some(function (a) {
var _getAtomState$m;
return (_getAtomState$m = getAtomState(a).m) == null ? void 0 : _getAtomState$m.d.has(atom);
return (_getAtomState$m = getAtomState(a, atomState).m) == null ? void 0 : _getAtomState$m.d.has(atom);
})) {

@@ -547,5 +536,5 @@ var onUnmount = atomState.m.u;

}
for (var _iterator8 = _createForOfIteratorHelperLoose(atomState.d.keys()), _step8; !(_step8 = _iterator8()).done;) {
var a = _step8.value;
var aMounted = _unmountAtom(pending, a);
for (var _iterator9 = _createForOfIteratorHelperLoose(atomState.d.keys()), _step9; !(_step9 = _iterator9()).done;) {
var a = _step9.value;
var aMounted = _unmountAtom(pending, a, getAtomState(a, atomState));
aMounted == null || aMounted.t.delete(atom);

@@ -563,3 +552,4 @@ }

var pending = createPending();
var mounted = _mountAtom(pending, atom);
var atomState = getAtomState(atom);
var mounted = _mountAtom(pending, atom, atomState);
flushPending(pending);

@@ -571,10 +561,14 @@ var listeners = mounted.l;

var pending = createPending();
_unmountAtom(pending, atom);
_unmountAtom(pending, atom, atomState);
flushPending(pending);
};
};
var unstable_derive = function unstable_derive(fn) {
return _buildStore.apply(void 0, fn(getAtomState));
};
var store = {
get: readAtom,
set: writeAtom,
sub: subscribeAtom
sub: subscribeAtom,
unstable_derive: unstable_derive
};

@@ -584,3 +578,11 @@ if (process.env.NODE_ENV !== 'production') {

dev4_get_internal_weak_map: function dev4_get_internal_weak_map() {
return atomStateMap;
return {
get: function get(atom) {
var atomState = getAtomState(atom);
if (atomState.n === 0) {
return undefined;
}
return atomState;
}
};
},

@@ -592,15 +594,15 @@ dev4_get_mounted_atoms: function dev4_get_mounted_atoms() {

var pending = createPending();
for (var _iterator9 = _createForOfIteratorHelperLoose(values), _step9; !(_step9 = _iterator9()).done;) {
var _step9$value = _step9.value,
atom = _step9$value[0],
value = _step9$value[1];
if (hasInitialValue(atom)) {
var atomState = getAtomState(atom);
for (var _iterator10 = _createForOfIteratorHelperLoose(values), _step10; !(_step10 = _iterator10()).done;) {
var _step10$value = _step10.value,
_atom = _step10$value[0],
value = _step10$value[1];
if (hasInitialValue(_atom)) {
var atomState = getAtomState(_atom);
var hasPrevValue = 'v' in atomState;
var prevValue = atomState.v;
setAtomStateValueOrPromise(atom, atomState, value);
mountDependencies(pending, atom, atomState);
setAtomStateValueOrPromise(_atom, atomState, value);
mountDependencies(pending, _atom, atomState);
if (!hasPrevValue || !Object.is(prevValue, atomState.v)) {
addPendingAtom(pending, atom, atomState);
recomputeDependents(pending, atom);
addPendingAtom(pending, _atom, atomState);
recomputeDependents(pending, _atom, atomState);
}

@@ -616,2 +618,18 @@ }

};
var createStore = function createStore() {
var atomStateMap = new WeakMap();
var getAtomState = function getAtomState(atom) {
var atomState = atomStateMap.get(atom);
if (!atomState) {
atomState = {
d: new Map(),
p: new Set(),
n: 0
};
atomStateMap.set(atom, atomState);
}
return atomState;
};
return _buildStore(getAtomState);
};
var defaultStore;

@@ -622,4 +640,4 @@ var getDefaultStore = function getDefaultStore() {

if (process.env.NODE_ENV !== 'production') {
var _ref2;
(_ref2 = globalThis).__JOTAI_DEFAULT_STORE__ || (_ref2.__JOTAI_DEFAULT_STORE__ = defaultStore);
var _ref3;
(_ref3 = globalThis).__JOTAI_DEFAULT_STORE__ || (_ref3.__JOTAI_DEFAULT_STORE__ = defaultStore);
if (globalThis.__JOTAI_DEFAULT_STORE__ !== defaultStore) {

@@ -626,0 +644,0 @@ console.warn('Detected multiple Jotai instances. It may cause unexpected behavior with the default store. https://github.com/pmndrs/jotai/discussions/2044');

@@ -48,4 +48,10 @@ import type { Atom, WritableAtom } from './atom';

};
type GetAtomState = <Value>(atom: Atom<Value>, originAtomState?: AtomState) => AtomState<Value>;
type StoreArgs = readonly [
getAtomState: GetAtomState
];
type DevStoreRev4 = {
dev4_get_internal_weak_map: () => WeakMap<AnyAtom, AtomState>;
dev4_get_internal_weak_map: () => {
get: (atom: AnyAtom) => AtomState | undefined;
};
dev4_get_mounted_atoms: () => Set<AnyAtom>;

@@ -58,2 +64,3 @@ dev4_restore_atoms: (values: Iterable<readonly [AnyAtom, AnyValue]>) => void;

sub: (atom: AnyAtom, listener: () => void) => () => void;
unstable_derive: (fn: (...args: StoreArgs) => StoreArgs) => Store;
};

@@ -60,0 +67,0 @@ type Store = PrdStore | (PrdStore & DevStoreRev4);

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