atomaric 0.0.19 → 0.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/atomaric.js CHANGED
@@ -1,73 +1,74 @@
1
- const x = (e, t, r) => {
1
+ const x = (t, e, r) => {
2
2
  let u = null;
3
- typeof e == "number" ? u = _(
3
+ typeof t == "number" ? u = _(
4
4
  {
5
5
  increment: (s) => {
6
- t.set(+t.get() + (s ?? 0));
6
+ e.set(+e.get() + (s ?? 0));
7
7
  }
8
8
  }
9
- ) : typeof e == "boolean" ? u = _(
9
+ ) : typeof t == "boolean" ? u = _(
10
10
  {
11
11
  toggle: () => {
12
- t.set(!t.get());
12
+ e.set(!e.get());
13
13
  }
14
14
  }
15
- ) : Array.isArray(e) ? u = _(
15
+ ) : Array.isArray(t) ? u = _(
16
16
  {
17
17
  push: (...s) => {
18
- t.set(t.get().concat(s));
18
+ e.set(e.get().concat(s));
19
19
  },
20
20
  unshift: (...s) => {
21
- t.set(s.concat(t.get()));
21
+ e.set(s.concat(e.get()));
22
22
  },
23
23
  update: (s) => {
24
- const i = t.get().slice();
25
- s(i), t.set(i);
24
+ const c = e.get().slice();
25
+ s(c), e.set(c);
26
26
  },
27
27
  filter: (s) => {
28
- t.set(t.get().filter(s ?? J));
28
+ e.set(e.get().filter(s ?? J));
29
29
  }
30
30
  }
31
- ) : e instanceof Set && (u = _(
31
+ ) : t instanceof Set && (u = _(
32
32
  {
33
33
  add: (s) => {
34
- t.set(new Set(t.get()).add(s));
34
+ e.set(new Set(e.get()).add(s));
35
35
  },
36
36
  delete: (s) => {
37
- const i = new Set(t.get());
38
- i.delete(s), t.set(i);
37
+ const c = new Set(e.get());
38
+ c.delete(s), e.set(c);
39
39
  },
40
40
  clear: () => {
41
- t.set(/* @__PURE__ */ new Set());
41
+ e.set(/* @__PURE__ */ new Set());
42
42
  },
43
43
  update: (s) => {
44
- const i = new Set(t.get());
45
- s(i), t.set(i);
44
+ const c = new Set(e.get());
45
+ s(c), e.set(c);
46
46
  }
47
47
  }
48
48
  ));
49
49
  const a = typeof r == "object" && r != null && "do" in r ? r.do(
50
- (s, i) => t.set(s, i),
51
- () => t.get()
50
+ (s, c) => e.set(s, c),
51
+ () => e.get(),
52
+ (s, c, g) => e.setDeferred(s, c, g)
52
53
  ) : null, d = {};
53
54
  return a && Object.keys(a).forEach((s) => Object.defineProperty(d, s, { get: () => a[s] })), u && Object.keys(u).forEach(
54
55
  (s) => Object.defineProperty(d, s, { get: () => u[s] })
55
56
  ), d;
56
- }, J = (e) => e, _ = (e, t) => e;
57
+ }, J = (t) => t, _ = (t, e) => t;
57
58
  class F {
58
- constructor(t, r) {
59
- const u = (n) => i = n, a = () => i, d = /* @__PURE__ */ new Set(), s = (n) => n(g());
60
- let i = t, b, j = () => {
61
- }, g = () => a(), C = () => {
62
- const n = x(t, this, r);
59
+ constructor(e, r) {
60
+ const u = (n) => c = n, a = () => c, d = /* @__PURE__ */ new Set(), s = (n) => n(h());
61
+ let c = e, g, j = () => {
62
+ }, h = () => a(), C = () => {
63
+ const n = x(e, this, r);
63
64
  return C = () => n, n;
64
65
  };
65
66
  const p = new Proxy(this, {
66
67
  get: (n, o) => o === "do" ? C() : n[o],
67
68
  set: V
68
- }), h = (n, o) => {
69
- const f = typeof n == "function" ? n(g()) : n;
70
- if (!(f === g() || f === void 0 || typeof f == "number" && isNaN(f))) {
69
+ }), S = (n, o) => {
70
+ const f = typeof n == "function" ? n(h()) : n;
71
+ if (!(f === h() || f === void 0 || typeof f == "number" && isNaN(f))) {
71
72
  u(f), d.forEach(s, this);
72
73
  try {
73
74
  E.postMessage({ key: l, value: a() });
@@ -76,54 +77,54 @@ class F {
76
77
  o !== !0 && j(f);
77
78
  }
78
79
  };
79
- if (this.set = (n, o) => h(n, o), this.get = () => g(), this.defaultValue = t, this.subscribe = (n) => (d.add(n), () => {
80
+ if (this.set = (n, o) => S(n, o), this.get = () => h(), this.defaultValue = e, this.subscribe = (n) => (d.add(n), () => {
80
81
  d.delete(n);
81
82
  }), this.reset = () => {
82
- h(t, !0), d.forEach(s, this);
83
+ S(e, !0), d.forEach(s, this);
83
84
  }, this.setDeferred = (n, o = 500, f, T = !0) => {
84
- T && b === void 0 && h(n, f), clearTimeout(b), b = setTimeout(() => {
85
- h(n, f), b = void 0;
85
+ T && g === void 0 && S(n, f), clearTimeout(g), g = setTimeout(() => {
86
+ S(n, f), g = void 0;
86
87
  }, o);
87
88
  }, r == null) return p;
88
- let w = null, I = !0, v = !0, D = !1, y = t instanceof Set ? (n) => new Set(JSON.parse(n)) : (n) => JSON.parse(n), A = t instanceof Set ? (n) => {
89
+ let b = null, I = !0, D = !0, v = !1, y = e instanceof Set ? (n) => new Set(JSON.parse(n)) : (n) => JSON.parse(n), A = e instanceof Set ? (n) => {
89
90
  if (n instanceof Set) return JSON.stringify(Array.from(n));
90
91
  throw console.error(n), "The value is not Set instance";
91
92
  } : (n) => JSON.stringify(n);
92
- if (typeof r == "string" ? w = r : "storeKey" in r && (I = r.warnOnDuplicateStoreKey ?? I, v = r.listenStorageChanges ?? v, w = r.storeKey, y = r.parseValue ?? y, A = r.stringifyValue ?? A, D = r.unchangable ?? D), w === null) return p;
93
- const l = `atom/${w}`;
93
+ if (typeof r == "string" ? b = r : "storeKey" in r && (I = r.warnOnDuplicateStoreKey ?? I, D = r.listenStorageChanges ?? D, b = r.storeKey, y = r.parseValue ?? y, A = r.stringifyValue ?? A, v = r.unchangable ?? v), b === null) return p;
94
+ const l = `atom/${b}`;
94
95
  let N = !0;
95
- if (g = () => {
96
- if (g = () => a(), N) {
96
+ if (h = () => {
97
+ if (h = () => a(), N) {
97
98
  N = !1;
98
99
  try {
99
- u(l in c ? y(c[l]) : t);
100
+ u(l in i ? y(i[l]) : e);
100
101
  } catch {
101
- console.warn("Invalid json value", c[l]);
102
+ console.warn("Invalid json value", i[l]);
102
103
  }
103
104
  }
104
105
  return a();
105
106
  }, j = (n) => {
106
- if (n === t) {
107
+ if (n === e) {
107
108
  this.reset();
108
109
  return;
109
110
  }
110
- c[l] = A(n);
111
+ i[l] = A(n);
111
112
  }, this.reset = () => {
112
- delete c[l], h(t, !0);
113
- }, I && S[l] !== void 0 && console.warn("Duplicate Atom key", w), v)
114
- if (D) {
113
+ delete i[l], S(e, !0);
114
+ }, I && w[l] !== void 0 && console.warn("Duplicate Atom key", b), D)
115
+ if (v) {
115
116
  let n = !1, o;
116
- m[l] = this, S[l] = () => {
117
- clearTimeout(o), o = setTimeout(() => n = !1, 10), !n && (n = !0, c[l] = A(a()));
117
+ m[l] = this, w[l] = () => {
118
+ clearTimeout(o), o = setTimeout(() => n = !1, 10), !n && (n = !0, i[l] = A(a()));
118
119
  };
119
120
  } else
120
- S[l] = (n) => {
121
+ w[l] = (n) => {
121
122
  if (n.newValue === null) {
122
123
  this.reset();
123
124
  return;
124
125
  }
125
126
  try {
126
- h(y(n.newValue));
127
+ S(y(n.newValue));
127
128
  } catch {
128
129
  console.warn("Invalid json value", n.newValue);
129
130
  }
@@ -133,30 +134,30 @@ class F {
133
134
  }
134
135
  let E;
135
136
  try {
136
- E = new BroadcastChannel("updateHere"), E.addEventListener("message", (e) => {
137
- var t;
138
- (t = m[e.data.key]) == null || t.set(e.data.value, !0);
137
+ E = new BroadcastChannel("updateHere"), E.addEventListener("message", (t) => {
138
+ var e;
139
+ (e = m[t.data.key]) == null || e.set(t.data.value, !0);
139
140
  });
140
141
  } catch {
141
142
  }
142
- const c = window.localStorage, S = {}, m = {}, V = (e, t) => {
143
- throw `${t} is readonly property`;
143
+ const i = window.localStorage, w = {}, m = {}, V = (t, e) => {
144
+ throw `${e} is readonly property`;
144
145
  };
145
- window.addEventListener("storage", (e) => {
146
- var t;
147
- e.key === null || e.newValue === e.oldValue || (t = S[e.key]) == null || t.call(S, e);
146
+ window.addEventListener("storage", (t) => {
147
+ var e;
148
+ t.key === null || t.newValue === t.oldValue || (e = w[t.key]) == null || e.call(w, t);
148
149
  });
149
- const H = c.setItem.bind(c), L = c.removeItem.bind(c);
150
- c.setItem = (e, t) => {
151
- m[e] === void 0 && H.call(c, e, t);
150
+ const H = i.setItem.bind(i), L = i.removeItem.bind(i);
151
+ i.setItem = (t, e) => {
152
+ m[t] === void 0 && H.call(i, t, e);
152
153
  };
153
- c.removeItem = (e) => {
154
- m[e] === void 0 && L.call(c, e);
154
+ i.removeItem = (t) => {
155
+ m[t] === void 0 && L.call(i, t);
155
156
  };
156
157
  let k = () => {
157
158
  throw "call configureAtomaric() before all!";
158
159
  };
159
- const B = (e) => k = e.useSyncExternalStore, P = (e) => k(e.subscribe, e.get), $ = (e) => e.set, G = (e) => e.setDeferred, M = (e) => e.get, U = (e) => e.do, q = (e) => [P(e), $(e)], z = (e, t) => new F(e, t);
160
+ const B = (t) => k = t.useSyncExternalStore, P = (t) => k(t.subscribe, t.get), $ = (t) => t.set, G = (t) => t.setDeferred, M = (t) => t.get, U = (t) => t.do, q = (t) => [P(t), $(t)], z = (t, e) => new F(t, e);
160
161
  export {
161
162
  F as Atom,
162
163
  z as atom,
@@ -1 +1 @@
1
- (function(i,A){typeof exports=="object"&&typeof module<"u"?A(exports):typeof define=="function"&&define.amd?define(["exports"],A):(i=typeof globalThis<"u"?globalThis:i||self,A(i.atomaric={}))})(this,function(i){"use strict";const A=(e,t,r)=>{let a=null;typeof e=="number"?a=m({increment:s=>{t.set(+t.get()+(s??0))}}):typeof e=="boolean"?a=m({toggle:()=>{t.set(!t.get())}}):Array.isArray(e)?a=m({push:(...s)=>{t.set(t.get().concat(s))},unshift:(...s)=>{t.set(s.concat(t.get()))},update:s=>{const c=t.get().slice();s(c),t.set(c)},filter:s=>{t.set(t.get().filter(s??H))}}):e instanceof Set&&(a=m({add:s=>{t.set(new Set(t.get()).add(s))},delete:s=>{const c=new Set(t.get());c.delete(s),t.set(c)},clear:()=>{t.set(new Set)},update:s=>{const c=new Set(t.get());s(c),t.set(c)}}));const f=typeof r=="object"&&r!=null&&"do"in r?r.do((s,c)=>t.set(s,c),()=>t.get()):null,g={};return f&&Object.keys(f).forEach(s=>Object.defineProperty(g,s,{get:()=>f[s]})),a&&Object.keys(a).forEach(s=>Object.defineProperty(g,s,{get:()=>a[s]})),g},H=e=>e,m=(e,t)=>e;class C{constructor(t,r){const a=n=>c=n,f=()=>c,g=new Set,s=n=>n(S());let c=t,_,V=()=>{},S=()=>f(),F=()=>{const n=A(t,this,r);return F=()=>n,n};const v=new Proxy(this,{get:(n,l)=>l==="do"?F():n[l],set:L}),w=(n,l)=>{const d=typeof n=="function"?n(S()):n;if(!(d===S()||d===void 0||typeof d=="number"&&isNaN(d))){a(d),g.forEach(s,this);try{j.postMessage({key:u,value:f()})}catch{}l!==!0&&V(d)}};if(this.set=(n,l)=>w(n,l),this.get=()=>S(),this.defaultValue=t,this.subscribe=n=>(g.add(n),()=>{g.delete(n)}),this.reset=()=>{w(t,!0),g.forEach(s,this)},this.setDeferred=(n,l=500,d,G=!0)=>{G&&_===void 0&&w(n,d),clearTimeout(_),_=setTimeout(()=>{w(n,d),_=void 0},l)},r==null)return v;let b=null,T=!0,p=!0,E=!1,D=t instanceof Set?n=>new Set(JSON.parse(n)):n=>JSON.parse(n),I=t instanceof Set?n=>{if(n instanceof Set)return JSON.stringify(Array.from(n));throw console.error(n),"The value is not Set instance"}:n=>JSON.stringify(n);if(typeof r=="string"?b=r:"storeKey"in r&&(T=r.warnOnDuplicateStoreKey??T,p=r.listenStorageChanges??p,b=r.storeKey,D=r.parseValue??D,I=r.stringifyValue??I,E=r.unchangable??E),b===null)return v;const u=`atom/${b}`;let P=!0;if(S=()=>{if(S=()=>f(),P){P=!1;try{a(u in o?D(o[u]):t)}catch{console.warn("Invalid json value",o[u])}}return f()},V=n=>{if(n===t){this.reset();return}o[u]=I(n)},this.reset=()=>{delete o[u],w(t,!0)},T&&h[u]!==void 0&&console.warn("Duplicate Atom key",b),p)if(E){let n=!1,l;y[u]=this,h[u]=()=>{clearTimeout(l),l=setTimeout(()=>n=!1,10),!n&&(n=!0,o[u]=I(f()))}}else h[u]=n=>{if(n.newValue===null){this.reset();return}try{w(D(n.newValue))}catch{console.warn("Invalid json value",n.newValue)}};return v}}let j;try{j=new BroadcastChannel("updateHere"),j.addEventListener("message",e=>{var t;(t=y[e.data.key])==null||t.set(e.data.value,!0)})}catch{}const o=window.localStorage,h={},y={},L=(e,t)=>{throw`${t} is readonly property`};window.addEventListener("storage",e=>{var t;e.key===null||e.newValue===e.oldValue||(t=h[e.key])==null||t.call(h,e)});const M=o.setItem.bind(o),$=o.removeItem.bind(o);o.setItem=(e,t)=>{y[e]===void 0&&M.call(o,e,t)},o.removeItem=e=>{y[e]===void 0&&$.call(o,e)};let N=()=>{throw"call configureAtomaric() before all!"};const B=e=>N=e.useSyncExternalStore,k=e=>N(e.subscribe,e.get),J=e=>e.set,U=e=>e.setDeferred,q=e=>e.get,z=e=>e.do,Q=e=>[k(e),J(e)],R=(e,t)=>new C(e,t);i.Atom=C,i.atom=R,i.configureAtomaric=B,i.useAtom=Q,i.useAtomDo=z,i.useAtomGet=q,i.useAtomSet=J,i.useAtomSetDeferred=U,i.useAtomValue=k,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})});
1
+ (function(o,b){typeof exports=="object"&&typeof module<"u"?b(exports):typeof define=="function"&&define.amd?define(["exports"],b):(o=typeof globalThis<"u"?globalThis:o||self,b(o.atomaric={}))})(this,function(o){"use strict";const b=(t,e,r)=>{let a=null;typeof t=="number"?a=y({increment:s=>{e.set(+e.get()+(s??0))}}):typeof t=="boolean"?a=y({toggle:()=>{e.set(!e.get())}}):Array.isArray(t)?a=y({push:(...s)=>{e.set(e.get().concat(s))},unshift:(...s)=>{e.set(s.concat(e.get()))},update:s=>{const i=e.get().slice();s(i),e.set(i)},filter:s=>{e.set(e.get().filter(s??H))}}):t instanceof Set&&(a=y({add:s=>{e.set(new Set(e.get()).add(s))},delete:s=>{const i=new Set(e.get());i.delete(s),e.set(i)},clear:()=>{e.set(new Set)},update:s=>{const i=new Set(e.get());s(i),e.set(i)}}));const f=typeof r=="object"&&r!=null&&"do"in r?r.do((s,i)=>e.set(s,i),()=>e.get(),(s,i,S)=>e.setDeferred(s,i,S)):null,g={};return f&&Object.keys(f).forEach(s=>Object.defineProperty(g,s,{get:()=>f[s]})),a&&Object.keys(a).forEach(s=>Object.defineProperty(g,s,{get:()=>a[s]})),g},H=t=>t,y=(t,e)=>t;class C{constructor(e,r){const a=n=>i=n,f=()=>i,g=new Set,s=n=>n(w());let i=e,S,V=()=>{},w=()=>f(),F=()=>{const n=b(e,this,r);return F=()=>n,n};const v=new Proxy(this,{get:(n,l)=>l==="do"?F():n[l],set:L}),A=(n,l)=>{const d=typeof n=="function"?n(w()):n;if(!(d===w()||d===void 0||typeof d=="number"&&isNaN(d))){a(d),g.forEach(s,this);try{j.postMessage({key:u,value:f()})}catch{}l!==!0&&V(d)}};if(this.set=(n,l)=>A(n,l),this.get=()=>w(),this.defaultValue=e,this.subscribe=n=>(g.add(n),()=>{g.delete(n)}),this.reset=()=>{A(e,!0),g.forEach(s,this)},this.setDeferred=(n,l=500,d,G=!0)=>{G&&S===void 0&&A(n,d),clearTimeout(S),S=setTimeout(()=>{A(n,d),S=void 0},l)},r==null)return v;let m=null,T=!0,p=!0,E=!1,D=e instanceof Set?n=>new Set(JSON.parse(n)):n=>JSON.parse(n),I=e instanceof Set?n=>{if(n instanceof Set)return JSON.stringify(Array.from(n));throw console.error(n),"The value is not Set instance"}:n=>JSON.stringify(n);if(typeof r=="string"?m=r:"storeKey"in r&&(T=r.warnOnDuplicateStoreKey??T,p=r.listenStorageChanges??p,m=r.storeKey,D=r.parseValue??D,I=r.stringifyValue??I,E=r.unchangable??E),m===null)return v;const u=`atom/${m}`;let P=!0;if(w=()=>{if(w=()=>f(),P){P=!1;try{a(u in c?D(c[u]):e)}catch{console.warn("Invalid json value",c[u])}}return f()},V=n=>{if(n===e){this.reset();return}c[u]=I(n)},this.reset=()=>{delete c[u],A(e,!0)},T&&h[u]!==void 0&&console.warn("Duplicate Atom key",m),p)if(E){let n=!1,l;_[u]=this,h[u]=()=>{clearTimeout(l),l=setTimeout(()=>n=!1,10),!n&&(n=!0,c[u]=I(f()))}}else h[u]=n=>{if(n.newValue===null){this.reset();return}try{A(D(n.newValue))}catch{console.warn("Invalid json value",n.newValue)}};return v}}let j;try{j=new BroadcastChannel("updateHere"),j.addEventListener("message",t=>{var e;(e=_[t.data.key])==null||e.set(t.data.value,!0)})}catch{}const c=window.localStorage,h={},_={},L=(t,e)=>{throw`${e} is readonly property`};window.addEventListener("storage",t=>{var e;t.key===null||t.newValue===t.oldValue||(e=h[t.key])==null||e.call(h,t)});const M=c.setItem.bind(c),$=c.removeItem.bind(c);c.setItem=(t,e)=>{_[t]===void 0&&M.call(c,t,e)},c.removeItem=t=>{_[t]===void 0&&$.call(c,t)};let N=()=>{throw"call configureAtomaric() before all!"};const B=t=>N=t.useSyncExternalStore,k=t=>N(t.subscribe,t.get),J=t=>t.set,U=t=>t.setDeferred,q=t=>t.get,z=t=>t.do,Q=t=>[k(t),J(t)],R=(t,e)=>new C(t,e);o.Atom=C,o.atom=R,o.configureAtomaric=B,o.useAtom=Q,o.useAtomDo=z,o.useAtomGet=q,o.useAtomSet=J,o.useAtomSetDeferred=U,o.useAtomValue=k,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "atomaric",
3
3
  "description": "Manage your project state",
4
- "version": "0.0.19",
4
+ "version": "0.0.21",
5
5
  "type": "module",
6
6
  "main": "./build/atomaric.umd.cjs",
7
7
  "module": "./build/atomaric.js",
package/types/model.d.ts CHANGED
@@ -25,6 +25,7 @@ export type AtomOptions<Value, Actions extends Record<string, Function> = {}> =
25
25
  do: (
26
26
  set: (value: Value | ((value: Value) => Value), isPreventSave?: boolean) => void,
27
27
  get: () => Value,
28
+ setDeferred: (value: Value | ((value: Value) => Value), debounceMs?: number, isPreventSave?: boolean) => void,
28
29
  ) => Actions;
29
30
  }
30
31
  );