@tanstack/store 0.0.1-beta.84 → 0.0.1-beta.85

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.
@@ -44,6 +44,7 @@ class Store {
44
44
  this.queue = [];
45
45
  };
46
46
  batch = cb => {
47
+ if (this.batching) return cb();
47
48
  this.batching = true;
48
49
  cb();
49
50
  this.batching = false;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/index.ts"],"sourcesContent":["export type AnyUpdater = (...args: any[]) => any\n\nexport type Listener<TState> = (next: TState, prev: TState) => void\n\ninterface StoreOptions<\n TState,\n TUpdater extends AnyUpdater = (cb: TState) => TState,\n> {\n updateFn?: (previous: TState) => (updater: TUpdater) => TState\n onSubscribe?: (\n listener: Listener<TState>,\n store: Store<TState, TUpdater>,\n ) => () => void\n onUpdate?: (next: TState, prev: TState) => void\n}\n\nexport class Store<\n TState,\n TUpdater extends AnyUpdater = (cb: TState) => TState,\n> {\n listeners = new Set<Listener<TState>>()\n state: TState\n options?: StoreOptions<TState, TUpdater>\n batching = false\n queue: ((...args: any[]) => void)[] = []\n\n constructor(initialState: TState, options?: StoreOptions<TState, TUpdater>) {\n this.state = initialState\n this.options = options\n }\n\n subscribe = (listener: Listener<TState>) => {\n this.listeners.add(listener)\n const unsub = this.options?.onSubscribe?.(listener, this)\n return () => {\n this.listeners.delete(listener)\n unsub?.()\n }\n }\n\n setState = (updater: TUpdater) => {\n const previous = this.state\n this.state = this.options?.updateFn\n ? this.options.updateFn(previous)(updater)\n : (updater as any)(previous)\n\n if (this.state === previous) return\n\n this.options?.onUpdate?.(this.state, previous)\n\n this.queue.push(() => {\n this.listeners.forEach((listener) => listener(this.state, previous))\n })\n this.#flush()\n }\n\n #flush = () => {\n if (this.batching) return\n this.queue.forEach((cb) => cb())\n this.queue = []\n }\n\n batch = (cb: () => void) => {\n this.batching = true\n cb()\n this.batching = false\n this.#flush()\n }\n}\n"],"names":["Store","listeners","Set","batching","queue","constructor","initialState","options","state","subscribe","listener","add","unsub","onSubscribe","delete","setState","updater","previous","updateFn","onUpdate","push","forEach","cb","batch"],"mappings":";;;;;;;;;;;;;;AAgBO,MAAMA,KAAK,CAGhB;EACAC,SAAS,GAAG,IAAIC,GAAG,EAAoB,CAAA;AAGvCC,EAAAA,QAAQ,GAAG,KAAK,CAAA;AAChBC,EAAAA,KAAK,GAAiC,EAAE,CAAA;AAExCC,EAAAA,WAAW,CAACC,YAAoB,EAAEC,OAAwC,EAAE;IAC1E,IAAI,CAACC,KAAK,GAAGF,YAAY,CAAA;IACzB,IAAI,CAACC,OAAO,GAAGA,OAAO,CAAA;AACxB,GAAA;EAEAE,SAAS,GAAIC,QAA0B,IAAK;AAC1C,IAAA,IAAI,CAACT,SAAS,CAACU,GAAG,CAACD,QAAQ,CAAC,CAAA;IAC5B,MAAME,KAAK,GAAG,IAAI,CAACL,OAAO,EAAEM,WAAW,GAAGH,QAAQ,EAAE,IAAI,CAAC,CAAA;AACzD,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,CAACT,SAAS,CAACa,MAAM,CAACJ,QAAQ,CAAC,CAAA;AAC/BE,MAAAA,KAAK,IAAI,CAAA;KACV,CAAA;GACF,CAAA;EAEDG,QAAQ,GAAIC,OAAiB,IAAK;AAChC,IAAA,MAAMC,QAAQ,GAAG,IAAI,CAACT,KAAK,CAAA;IAC3B,IAAI,CAACA,KAAK,GAAG,IAAI,CAACD,OAAO,EAAEW,QAAQ,GAC/B,IAAI,CAACX,OAAO,CAACW,QAAQ,CAACD,QAAQ,CAAC,CAACD,OAAO,CAAC,GACvCA,OAAO,CAASC,QAAQ,CAAC,CAAA;AAE9B,IAAA,IAAI,IAAI,CAACT,KAAK,KAAKS,QAAQ,EAAE,OAAA;IAE7B,IAAI,CAACV,OAAO,EAAEY,QAAQ,GAAG,IAAI,CAACX,KAAK,EAAES,QAAQ,CAAC,CAAA;AAE9C,IAAA,IAAI,CAACb,KAAK,CAACgB,IAAI,CAAC,MAAM;AACpB,MAAA,IAAI,CAACnB,SAAS,CAACoB,OAAO,CAAEX,QAAQ,IAAKA,QAAQ,CAAC,IAAI,CAACF,KAAK,EAAES,QAAQ,CAAC,CAAC,CAAA;AACtE,KAAC,CAAC,CAAA;IACF,IAAI,CAAC,MAAM,EAAE,CAAA;GACd,CAAA;EAED,MAAM,GAAG,MAAM;IACb,IAAI,IAAI,CAACd,QAAQ,EAAE,OAAA;IACnB,IAAI,CAACC,KAAK,CAACiB,OAAO,CAAEC,EAAE,IAAKA,EAAE,EAAE,CAAC,CAAA;IAChC,IAAI,CAAClB,KAAK,GAAG,EAAE,CAAA;GAChB,CAAA;EAEDmB,KAAK,GAAID,EAAc,IAAK;IAC1B,IAAI,CAACnB,QAAQ,GAAG,IAAI,CAAA;AACpBmB,IAAAA,EAAE,EAAE,CAAA;IACJ,IAAI,CAACnB,QAAQ,GAAG,KAAK,CAAA;IACrB,IAAI,CAAC,MAAM,EAAE,CAAA;GACd,CAAA;AACH;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/index.ts"],"sourcesContent":["export type AnyUpdater = (...args: any[]) => any\n\nexport type Listener<TState> = (next: TState, prev: TState) => void\n\ninterface StoreOptions<\n TState,\n TUpdater extends AnyUpdater = (cb: TState) => TState,\n> {\n updateFn?: (previous: TState) => (updater: TUpdater) => TState\n onSubscribe?: (\n listener: Listener<TState>,\n store: Store<TState, TUpdater>,\n ) => () => void\n onUpdate?: (next: TState, prev: TState) => void\n}\n\nexport class Store<\n TState,\n TUpdater extends AnyUpdater = (cb: TState) => TState,\n> {\n listeners = new Set<Listener<TState>>()\n state: TState\n options?: StoreOptions<TState, TUpdater>\n batching = false\n queue: ((...args: any[]) => void)[] = []\n\n constructor(initialState: TState, options?: StoreOptions<TState, TUpdater>) {\n this.state = initialState\n this.options = options\n }\n\n subscribe = (listener: Listener<TState>) => {\n this.listeners.add(listener)\n const unsub = this.options?.onSubscribe?.(listener, this)\n return () => {\n this.listeners.delete(listener)\n unsub?.()\n }\n }\n\n setState = (updater: TUpdater) => {\n const previous = this.state\n this.state = this.options?.updateFn\n ? this.options.updateFn(previous)(updater)\n : (updater as any)(previous)\n\n if (this.state === previous) return\n\n this.options?.onUpdate?.(this.state, previous)\n\n this.queue.push(() => {\n this.listeners.forEach((listener) => listener(this.state, previous))\n })\n this.#flush()\n }\n\n #flush = () => {\n if (this.batching) return\n this.queue.forEach((cb) => cb())\n this.queue = []\n }\n\n batch = (cb: () => void) => {\n if (this.batching) return cb()\n this.batching = true\n cb()\n this.batching = false\n this.#flush()\n }\n}\n"],"names":["Store","listeners","Set","batching","queue","constructor","initialState","options","state","subscribe","listener","add","unsub","onSubscribe","delete","setState","updater","previous","updateFn","onUpdate","push","forEach","cb","batch"],"mappings":";;;;;;;;;;;;;;AAgBO,MAAMA,KAAK,CAGhB;EACAC,SAAS,GAAG,IAAIC,GAAG,EAAoB,CAAA;AAGvCC,EAAAA,QAAQ,GAAG,KAAK,CAAA;AAChBC,EAAAA,KAAK,GAAiC,EAAE,CAAA;AAExCC,EAAAA,WAAW,CAACC,YAAoB,EAAEC,OAAwC,EAAE;IAC1E,IAAI,CAACC,KAAK,GAAGF,YAAY,CAAA;IACzB,IAAI,CAACC,OAAO,GAAGA,OAAO,CAAA;AACxB,GAAA;EAEAE,SAAS,GAAIC,QAA0B,IAAK;AAC1C,IAAA,IAAI,CAACT,SAAS,CAACU,GAAG,CAACD,QAAQ,CAAC,CAAA;IAC5B,MAAME,KAAK,GAAG,IAAI,CAACL,OAAO,EAAEM,WAAW,GAAGH,QAAQ,EAAE,IAAI,CAAC,CAAA;AACzD,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,CAACT,SAAS,CAACa,MAAM,CAACJ,QAAQ,CAAC,CAAA;AAC/BE,MAAAA,KAAK,IAAI,CAAA;KACV,CAAA;GACF,CAAA;EAEDG,QAAQ,GAAIC,OAAiB,IAAK;AAChC,IAAA,MAAMC,QAAQ,GAAG,IAAI,CAACT,KAAK,CAAA;IAC3B,IAAI,CAACA,KAAK,GAAG,IAAI,CAACD,OAAO,EAAEW,QAAQ,GAC/B,IAAI,CAACX,OAAO,CAACW,QAAQ,CAACD,QAAQ,CAAC,CAACD,OAAO,CAAC,GACvCA,OAAO,CAASC,QAAQ,CAAC,CAAA;AAE9B,IAAA,IAAI,IAAI,CAACT,KAAK,KAAKS,QAAQ,EAAE,OAAA;IAE7B,IAAI,CAACV,OAAO,EAAEY,QAAQ,GAAG,IAAI,CAACX,KAAK,EAAES,QAAQ,CAAC,CAAA;AAE9C,IAAA,IAAI,CAACb,KAAK,CAACgB,IAAI,CAAC,MAAM;AACpB,MAAA,IAAI,CAACnB,SAAS,CAACoB,OAAO,CAAEX,QAAQ,IAAKA,QAAQ,CAAC,IAAI,CAACF,KAAK,EAAES,QAAQ,CAAC,CAAC,CAAA;AACtE,KAAC,CAAC,CAAA;IACF,IAAI,CAAC,MAAM,EAAE,CAAA;GACd,CAAA;EAED,MAAM,GAAG,MAAM;IACb,IAAI,IAAI,CAACd,QAAQ,EAAE,OAAA;IACnB,IAAI,CAACC,KAAK,CAACiB,OAAO,CAAEC,EAAE,IAAKA,EAAE,EAAE,CAAC,CAAA;IAChC,IAAI,CAAClB,KAAK,GAAG,EAAE,CAAA;GAChB,CAAA;EAEDmB,KAAK,GAAID,EAAc,IAAK;AAC1B,IAAA,IAAI,IAAI,CAACnB,QAAQ,EAAE,OAAOmB,EAAE,EAAE,CAAA;IAC9B,IAAI,CAACnB,QAAQ,GAAG,IAAI,CAAA;AACpBmB,IAAAA,EAAE,EAAE,CAAA;IACJ,IAAI,CAACnB,QAAQ,GAAG,KAAK,CAAA;IACrB,IAAI,CAAC,MAAM,EAAE,CAAA;GACd,CAAA;AACH;;;;"}
@@ -40,6 +40,7 @@ class Store {
40
40
  this.queue = [];
41
41
  };
42
42
  batch = cb => {
43
+ if (this.batching) return cb();
43
44
  this.batching = true;
44
45
  cb();
45
46
  this.batching = false;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/index.ts"],"sourcesContent":["export type AnyUpdater = (...args: any[]) => any\n\nexport type Listener<TState> = (next: TState, prev: TState) => void\n\ninterface StoreOptions<\n TState,\n TUpdater extends AnyUpdater = (cb: TState) => TState,\n> {\n updateFn?: (previous: TState) => (updater: TUpdater) => TState\n onSubscribe?: (\n listener: Listener<TState>,\n store: Store<TState, TUpdater>,\n ) => () => void\n onUpdate?: (next: TState, prev: TState) => void\n}\n\nexport class Store<\n TState,\n TUpdater extends AnyUpdater = (cb: TState) => TState,\n> {\n listeners = new Set<Listener<TState>>()\n state: TState\n options?: StoreOptions<TState, TUpdater>\n batching = false\n queue: ((...args: any[]) => void)[] = []\n\n constructor(initialState: TState, options?: StoreOptions<TState, TUpdater>) {\n this.state = initialState\n this.options = options\n }\n\n subscribe = (listener: Listener<TState>) => {\n this.listeners.add(listener)\n const unsub = this.options?.onSubscribe?.(listener, this)\n return () => {\n this.listeners.delete(listener)\n unsub?.()\n }\n }\n\n setState = (updater: TUpdater) => {\n const previous = this.state\n this.state = this.options?.updateFn\n ? this.options.updateFn(previous)(updater)\n : (updater as any)(previous)\n\n if (this.state === previous) return\n\n this.options?.onUpdate?.(this.state, previous)\n\n this.queue.push(() => {\n this.listeners.forEach((listener) => listener(this.state, previous))\n })\n this.#flush()\n }\n\n #flush = () => {\n if (this.batching) return\n this.queue.forEach((cb) => cb())\n this.queue = []\n }\n\n batch = (cb: () => void) => {\n this.batching = true\n cb()\n this.batching = false\n this.#flush()\n }\n}\n"],"names":["Store","listeners","Set","batching","queue","constructor","initialState","options","state","subscribe","listener","add","unsub","onSubscribe","delete","setState","updater","previous","updateFn","onUpdate","push","forEach","cb","batch"],"mappings":";;;;;;;;;;AAgBO,MAAMA,KAAK,CAGhB;EACAC,SAAS,GAAG,IAAIC,GAAG,EAAoB,CAAA;AAGvCC,EAAAA,QAAQ,GAAG,KAAK,CAAA;AAChBC,EAAAA,KAAK,GAAiC,EAAE,CAAA;AAExCC,EAAAA,WAAW,CAACC,YAAoB,EAAEC,OAAwC,EAAE;IAC1E,IAAI,CAACC,KAAK,GAAGF,YAAY,CAAA;IACzB,IAAI,CAACC,OAAO,GAAGA,OAAO,CAAA;AACxB,GAAA;EAEAE,SAAS,GAAIC,QAA0B,IAAK;AAC1C,IAAA,IAAI,CAACT,SAAS,CAACU,GAAG,CAACD,QAAQ,CAAC,CAAA;IAC5B,MAAME,KAAK,GAAG,IAAI,CAACL,OAAO,EAAEM,WAAW,GAAGH,QAAQ,EAAE,IAAI,CAAC,CAAA;AACzD,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,CAACT,SAAS,CAACa,MAAM,CAACJ,QAAQ,CAAC,CAAA;AAC/BE,MAAAA,KAAK,IAAI,CAAA;KACV,CAAA;GACF,CAAA;EAEDG,QAAQ,GAAIC,OAAiB,IAAK;AAChC,IAAA,MAAMC,QAAQ,GAAG,IAAI,CAACT,KAAK,CAAA;IAC3B,IAAI,CAACA,KAAK,GAAG,IAAI,CAACD,OAAO,EAAEW,QAAQ,GAC/B,IAAI,CAACX,OAAO,CAACW,QAAQ,CAACD,QAAQ,CAAC,CAACD,OAAO,CAAC,GACvCA,OAAO,CAASC,QAAQ,CAAC,CAAA;AAE9B,IAAA,IAAI,IAAI,CAACT,KAAK,KAAKS,QAAQ,EAAE,OAAA;IAE7B,IAAI,CAACV,OAAO,EAAEY,QAAQ,GAAG,IAAI,CAACX,KAAK,EAAES,QAAQ,CAAC,CAAA;AAE9C,IAAA,IAAI,CAACb,KAAK,CAACgB,IAAI,CAAC,MAAM;AACpB,MAAA,IAAI,CAACnB,SAAS,CAACoB,OAAO,CAAEX,QAAQ,IAAKA,QAAQ,CAAC,IAAI,CAACF,KAAK,EAAES,QAAQ,CAAC,CAAC,CAAA;AACtE,KAAC,CAAC,CAAA;IACF,IAAI,CAAC,MAAM,EAAE,CAAA;GACd,CAAA;EAED,MAAM,GAAG,MAAM;IACb,IAAI,IAAI,CAACd,QAAQ,EAAE,OAAA;IACnB,IAAI,CAACC,KAAK,CAACiB,OAAO,CAAEC,EAAE,IAAKA,EAAE,EAAE,CAAC,CAAA;IAChC,IAAI,CAAClB,KAAK,GAAG,EAAE,CAAA;GAChB,CAAA;EAEDmB,KAAK,GAAID,EAAc,IAAK;IAC1B,IAAI,CAACnB,QAAQ,GAAG,IAAI,CAAA;AACpBmB,IAAAA,EAAE,EAAE,CAAA;IACJ,IAAI,CAACnB,QAAQ,GAAG,KAAK,CAAA;IACrB,IAAI,CAAC,MAAM,EAAE,CAAA;GACd,CAAA;AACH;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/index.ts"],"sourcesContent":["export type AnyUpdater = (...args: any[]) => any\n\nexport type Listener<TState> = (next: TState, prev: TState) => void\n\ninterface StoreOptions<\n TState,\n TUpdater extends AnyUpdater = (cb: TState) => TState,\n> {\n updateFn?: (previous: TState) => (updater: TUpdater) => TState\n onSubscribe?: (\n listener: Listener<TState>,\n store: Store<TState, TUpdater>,\n ) => () => void\n onUpdate?: (next: TState, prev: TState) => void\n}\n\nexport class Store<\n TState,\n TUpdater extends AnyUpdater = (cb: TState) => TState,\n> {\n listeners = new Set<Listener<TState>>()\n state: TState\n options?: StoreOptions<TState, TUpdater>\n batching = false\n queue: ((...args: any[]) => void)[] = []\n\n constructor(initialState: TState, options?: StoreOptions<TState, TUpdater>) {\n this.state = initialState\n this.options = options\n }\n\n subscribe = (listener: Listener<TState>) => {\n this.listeners.add(listener)\n const unsub = this.options?.onSubscribe?.(listener, this)\n return () => {\n this.listeners.delete(listener)\n unsub?.()\n }\n }\n\n setState = (updater: TUpdater) => {\n const previous = this.state\n this.state = this.options?.updateFn\n ? this.options.updateFn(previous)(updater)\n : (updater as any)(previous)\n\n if (this.state === previous) return\n\n this.options?.onUpdate?.(this.state, previous)\n\n this.queue.push(() => {\n this.listeners.forEach((listener) => listener(this.state, previous))\n })\n this.#flush()\n }\n\n #flush = () => {\n if (this.batching) return\n this.queue.forEach((cb) => cb())\n this.queue = []\n }\n\n batch = (cb: () => void) => {\n if (this.batching) return cb()\n this.batching = true\n cb()\n this.batching = false\n this.#flush()\n }\n}\n"],"names":["Store","listeners","Set","batching","queue","constructor","initialState","options","state","subscribe","listener","add","unsub","onSubscribe","delete","setState","updater","previous","updateFn","onUpdate","push","forEach","cb","batch"],"mappings":";;;;;;;;;;AAgBO,MAAMA,KAAK,CAGhB;EACAC,SAAS,GAAG,IAAIC,GAAG,EAAoB,CAAA;AAGvCC,EAAAA,QAAQ,GAAG,KAAK,CAAA;AAChBC,EAAAA,KAAK,GAAiC,EAAE,CAAA;AAExCC,EAAAA,WAAW,CAACC,YAAoB,EAAEC,OAAwC,EAAE;IAC1E,IAAI,CAACC,KAAK,GAAGF,YAAY,CAAA;IACzB,IAAI,CAACC,OAAO,GAAGA,OAAO,CAAA;AACxB,GAAA;EAEAE,SAAS,GAAIC,QAA0B,IAAK;AAC1C,IAAA,IAAI,CAACT,SAAS,CAACU,GAAG,CAACD,QAAQ,CAAC,CAAA;IAC5B,MAAME,KAAK,GAAG,IAAI,CAACL,OAAO,EAAEM,WAAW,GAAGH,QAAQ,EAAE,IAAI,CAAC,CAAA;AACzD,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,CAACT,SAAS,CAACa,MAAM,CAACJ,QAAQ,CAAC,CAAA;AAC/BE,MAAAA,KAAK,IAAI,CAAA;KACV,CAAA;GACF,CAAA;EAEDG,QAAQ,GAAIC,OAAiB,IAAK;AAChC,IAAA,MAAMC,QAAQ,GAAG,IAAI,CAACT,KAAK,CAAA;IAC3B,IAAI,CAACA,KAAK,GAAG,IAAI,CAACD,OAAO,EAAEW,QAAQ,GAC/B,IAAI,CAACX,OAAO,CAACW,QAAQ,CAACD,QAAQ,CAAC,CAACD,OAAO,CAAC,GACvCA,OAAO,CAASC,QAAQ,CAAC,CAAA;AAE9B,IAAA,IAAI,IAAI,CAACT,KAAK,KAAKS,QAAQ,EAAE,OAAA;IAE7B,IAAI,CAACV,OAAO,EAAEY,QAAQ,GAAG,IAAI,CAACX,KAAK,EAAES,QAAQ,CAAC,CAAA;AAE9C,IAAA,IAAI,CAACb,KAAK,CAACgB,IAAI,CAAC,MAAM;AACpB,MAAA,IAAI,CAACnB,SAAS,CAACoB,OAAO,CAAEX,QAAQ,IAAKA,QAAQ,CAAC,IAAI,CAACF,KAAK,EAAES,QAAQ,CAAC,CAAC,CAAA;AACtE,KAAC,CAAC,CAAA;IACF,IAAI,CAAC,MAAM,EAAE,CAAA;GACd,CAAA;EAED,MAAM,GAAG,MAAM;IACb,IAAI,IAAI,CAACd,QAAQ,EAAE,OAAA;IACnB,IAAI,CAACC,KAAK,CAACiB,OAAO,CAAEC,EAAE,IAAKA,EAAE,EAAE,CAAC,CAAA;IAChC,IAAI,CAAClB,KAAK,GAAG,EAAE,CAAA;GAChB,CAAA;EAEDmB,KAAK,GAAID,EAAc,IAAK;AAC1B,IAAA,IAAI,IAAI,CAACnB,QAAQ,EAAE,OAAOmB,EAAE,EAAE,CAAA;IAC9B,IAAI,CAACnB,QAAQ,GAAG,IAAI,CAAA;AACpBmB,IAAAA,EAAE,EAAE,CAAA;IACJ,IAAI,CAACnB,QAAQ,GAAG,KAAK,CAAA;IACrB,IAAI,CAAC,MAAM,EAAE,CAAA;GACd,CAAA;AACH;;;;"}
@@ -4024,7 +4024,7 @@ var drawChart = (function (exports) {
4024
4024
  </script>
4025
4025
  <script>
4026
4026
  /*<!--*/
4027
- const data = {"version":2,"tree":{"name":"root","children":[{"name":"index.production.js","children":[{"name":"packages/store/src/index.ts","uid":"5b7b-1"}]}],"isRoot":true},"nodeParts":{"5b7b-1":{"renderedLength":1071,"gzipLength":382,"brotliLength":0,"mainUid":"5b7b-0"}},"nodeMetas":{"5b7b-0":{"id":"/packages/store/src/index.ts","moduleParts":{"index.production.js":"5b7b-1"},"imported":[],"importedBy":[],"isEntry":true}},"env":{"rollup":"2.79.1"},"options":{"gzip":true,"brotli":false,"sourcemap":false}};
4027
+ const data = {"version":2,"tree":{"name":"root","children":[{"name":"index.production.js","children":[{"name":"packages/store/src/index.ts","uid":"7e12-1"}]}],"isRoot":true},"nodeParts":{"7e12-1":{"renderedLength":1109,"gzipLength":384,"brotliLength":0,"mainUid":"7e12-0"}},"nodeMetas":{"7e12-0":{"id":"/packages/store/src/index.ts","moduleParts":{"index.production.js":"7e12-1"},"imported":[],"importedBy":[],"isEntry":true}},"env":{"rollup":"2.79.1"},"options":{"gzip":true,"brotli":false,"sourcemap":false}};
4028
4028
 
4029
4029
  const run = () => {
4030
4030
  const width = window.innerWidth;
@@ -8,7 +8,7 @@
8
8
  "children": [
9
9
  {
10
10
  "name": "packages/store/src/index.ts",
11
- "uid": "5b7b-3"
11
+ "uid": "7e12-3"
12
12
  }
13
13
  ]
14
14
  }
@@ -16,18 +16,18 @@
16
16
  "isRoot": true
17
17
  },
18
18
  "nodeParts": {
19
- "5b7b-3": {
20
- "renderedLength": 1071,
21
- "gzipLength": 382,
19
+ "7e12-3": {
20
+ "renderedLength": 1109,
21
+ "gzipLength": 384,
22
22
  "brotliLength": 0,
23
- "mainUid": "5b7b-2"
23
+ "mainUid": "7e12-2"
24
24
  }
25
25
  },
26
26
  "nodeMetas": {
27
- "5b7b-2": {
27
+ "7e12-2": {
28
28
  "id": "/packages/store/src/index.ts",
29
29
  "moduleParts": {
30
- "index.production.js": "5b7b-3"
30
+ "index.production.js": "7e12-3"
31
31
  },
32
32
  "imported": [],
33
33
  "importedBy": [],
@@ -46,6 +46,7 @@
46
46
  this.queue = [];
47
47
  };
48
48
  batch = cb => {
49
+ if (this.batching) return cb();
49
50
  this.batching = true;
50
51
  cb();
51
52
  this.batching = false;
@@ -1 +1 @@
1
- {"version":3,"file":"index.development.js","sources":["../../src/index.ts"],"sourcesContent":["export type AnyUpdater = (...args: any[]) => any\n\nexport type Listener<TState> = (next: TState, prev: TState) => void\n\ninterface StoreOptions<\n TState,\n TUpdater extends AnyUpdater = (cb: TState) => TState,\n> {\n updateFn?: (previous: TState) => (updater: TUpdater) => TState\n onSubscribe?: (\n listener: Listener<TState>,\n store: Store<TState, TUpdater>,\n ) => () => void\n onUpdate?: (next: TState, prev: TState) => void\n}\n\nexport class Store<\n TState,\n TUpdater extends AnyUpdater = (cb: TState) => TState,\n> {\n listeners = new Set<Listener<TState>>()\n state: TState\n options?: StoreOptions<TState, TUpdater>\n batching = false\n queue: ((...args: any[]) => void)[] = []\n\n constructor(initialState: TState, options?: StoreOptions<TState, TUpdater>) {\n this.state = initialState\n this.options = options\n }\n\n subscribe = (listener: Listener<TState>) => {\n this.listeners.add(listener)\n const unsub = this.options?.onSubscribe?.(listener, this)\n return () => {\n this.listeners.delete(listener)\n unsub?.()\n }\n }\n\n setState = (updater: TUpdater) => {\n const previous = this.state\n this.state = this.options?.updateFn\n ? this.options.updateFn(previous)(updater)\n : (updater as any)(previous)\n\n if (this.state === previous) return\n\n this.options?.onUpdate?.(this.state, previous)\n\n this.queue.push(() => {\n this.listeners.forEach((listener) => listener(this.state, previous))\n })\n this.#flush()\n }\n\n #flush = () => {\n if (this.batching) return\n this.queue.forEach((cb) => cb())\n this.queue = []\n }\n\n batch = (cb: () => void) => {\n this.batching = true\n cb()\n this.batching = false\n this.#flush()\n }\n}\n"],"names":["Store","listeners","Set","batching","queue","constructor","initialState","options","state","subscribe","listener","add","unsub","onSubscribe","delete","setState","updater","previous","updateFn","onUpdate","push","forEach","cb","batch"],"mappings":";;;;;;;;;;;;;;;;EAgBO,MAAMA,KAAK,CAGhB;IACAC,SAAS,GAAG,IAAIC,GAAG,EAAoB,CAAA;EAGvCC,EAAAA,QAAQ,GAAG,KAAK,CAAA;EAChBC,EAAAA,KAAK,GAAiC,EAAE,CAAA;EAExCC,EAAAA,WAAW,CAACC,YAAoB,EAAEC,OAAwC,EAAE;MAC1E,IAAI,CAACC,KAAK,GAAGF,YAAY,CAAA;MACzB,IAAI,CAACC,OAAO,GAAGA,OAAO,CAAA;EACxB,GAAA;IAEAE,SAAS,GAAIC,QAA0B,IAAK;EAC1C,IAAA,IAAI,CAACT,SAAS,CAACU,GAAG,CAACD,QAAQ,CAAC,CAAA;MAC5B,MAAME,KAAK,GAAG,IAAI,CAACL,OAAO,EAAEM,WAAW,GAAGH,QAAQ,EAAE,IAAI,CAAC,CAAA;EACzD,IAAA,OAAO,MAAM;EACX,MAAA,IAAI,CAACT,SAAS,CAACa,MAAM,CAACJ,QAAQ,CAAC,CAAA;EAC/BE,MAAAA,KAAK,IAAI,CAAA;OACV,CAAA;KACF,CAAA;IAEDG,QAAQ,GAAIC,OAAiB,IAAK;EAChC,IAAA,MAAMC,QAAQ,GAAG,IAAI,CAACT,KAAK,CAAA;MAC3B,IAAI,CAACA,KAAK,GAAG,IAAI,CAACD,OAAO,EAAEW,QAAQ,GAC/B,IAAI,CAACX,OAAO,CAACW,QAAQ,CAACD,QAAQ,CAAC,CAACD,OAAO,CAAC,GACvCA,OAAO,CAASC,QAAQ,CAAC,CAAA;EAE9B,IAAA,IAAI,IAAI,CAACT,KAAK,KAAKS,QAAQ,EAAE,OAAA;MAE7B,IAAI,CAACV,OAAO,EAAEY,QAAQ,GAAG,IAAI,CAACX,KAAK,EAAES,QAAQ,CAAC,CAAA;EAE9C,IAAA,IAAI,CAACb,KAAK,CAACgB,IAAI,CAAC,MAAM;EACpB,MAAA,IAAI,CAACnB,SAAS,CAACoB,OAAO,CAAEX,QAAQ,IAAKA,QAAQ,CAAC,IAAI,CAACF,KAAK,EAAES,QAAQ,CAAC,CAAC,CAAA;EACtE,KAAC,CAAC,CAAA;MACF,IAAI,CAAC,MAAM,EAAE,CAAA;KACd,CAAA;IAED,MAAM,GAAG,MAAM;MACb,IAAI,IAAI,CAACd,QAAQ,EAAE,OAAA;MACnB,IAAI,CAACC,KAAK,CAACiB,OAAO,CAAEC,EAAE,IAAKA,EAAE,EAAE,CAAC,CAAA;MAChC,IAAI,CAAClB,KAAK,GAAG,EAAE,CAAA;KAChB,CAAA;IAEDmB,KAAK,GAAID,EAAc,IAAK;MAC1B,IAAI,CAACnB,QAAQ,GAAG,IAAI,CAAA;EACpBmB,IAAAA,EAAE,EAAE,CAAA;MACJ,IAAI,CAACnB,QAAQ,GAAG,KAAK,CAAA;MACrB,IAAI,CAAC,MAAM,EAAE,CAAA;KACd,CAAA;EACH;;;;;;;;;;"}
1
+ {"version":3,"file":"index.development.js","sources":["../../src/index.ts"],"sourcesContent":["export type AnyUpdater = (...args: any[]) => any\n\nexport type Listener<TState> = (next: TState, prev: TState) => void\n\ninterface StoreOptions<\n TState,\n TUpdater extends AnyUpdater = (cb: TState) => TState,\n> {\n updateFn?: (previous: TState) => (updater: TUpdater) => TState\n onSubscribe?: (\n listener: Listener<TState>,\n store: Store<TState, TUpdater>,\n ) => () => void\n onUpdate?: (next: TState, prev: TState) => void\n}\n\nexport class Store<\n TState,\n TUpdater extends AnyUpdater = (cb: TState) => TState,\n> {\n listeners = new Set<Listener<TState>>()\n state: TState\n options?: StoreOptions<TState, TUpdater>\n batching = false\n queue: ((...args: any[]) => void)[] = []\n\n constructor(initialState: TState, options?: StoreOptions<TState, TUpdater>) {\n this.state = initialState\n this.options = options\n }\n\n subscribe = (listener: Listener<TState>) => {\n this.listeners.add(listener)\n const unsub = this.options?.onSubscribe?.(listener, this)\n return () => {\n this.listeners.delete(listener)\n unsub?.()\n }\n }\n\n setState = (updater: TUpdater) => {\n const previous = this.state\n this.state = this.options?.updateFn\n ? this.options.updateFn(previous)(updater)\n : (updater as any)(previous)\n\n if (this.state === previous) return\n\n this.options?.onUpdate?.(this.state, previous)\n\n this.queue.push(() => {\n this.listeners.forEach((listener) => listener(this.state, previous))\n })\n this.#flush()\n }\n\n #flush = () => {\n if (this.batching) return\n this.queue.forEach((cb) => cb())\n this.queue = []\n }\n\n batch = (cb: () => void) => {\n if (this.batching) return cb()\n this.batching = true\n cb()\n this.batching = false\n this.#flush()\n }\n}\n"],"names":["Store","listeners","Set","batching","queue","constructor","initialState","options","state","subscribe","listener","add","unsub","onSubscribe","delete","setState","updater","previous","updateFn","onUpdate","push","forEach","cb","batch"],"mappings":";;;;;;;;;;;;;;;;EAgBO,MAAMA,KAAK,CAGhB;IACAC,SAAS,GAAG,IAAIC,GAAG,EAAoB,CAAA;EAGvCC,EAAAA,QAAQ,GAAG,KAAK,CAAA;EAChBC,EAAAA,KAAK,GAAiC,EAAE,CAAA;EAExCC,EAAAA,WAAW,CAACC,YAAoB,EAAEC,OAAwC,EAAE;MAC1E,IAAI,CAACC,KAAK,GAAGF,YAAY,CAAA;MACzB,IAAI,CAACC,OAAO,GAAGA,OAAO,CAAA;EACxB,GAAA;IAEAE,SAAS,GAAIC,QAA0B,IAAK;EAC1C,IAAA,IAAI,CAACT,SAAS,CAACU,GAAG,CAACD,QAAQ,CAAC,CAAA;MAC5B,MAAME,KAAK,GAAG,IAAI,CAACL,OAAO,EAAEM,WAAW,GAAGH,QAAQ,EAAE,IAAI,CAAC,CAAA;EACzD,IAAA,OAAO,MAAM;EACX,MAAA,IAAI,CAACT,SAAS,CAACa,MAAM,CAACJ,QAAQ,CAAC,CAAA;EAC/BE,MAAAA,KAAK,IAAI,CAAA;OACV,CAAA;KACF,CAAA;IAEDG,QAAQ,GAAIC,OAAiB,IAAK;EAChC,IAAA,MAAMC,QAAQ,GAAG,IAAI,CAACT,KAAK,CAAA;MAC3B,IAAI,CAACA,KAAK,GAAG,IAAI,CAACD,OAAO,EAAEW,QAAQ,GAC/B,IAAI,CAACX,OAAO,CAACW,QAAQ,CAACD,QAAQ,CAAC,CAACD,OAAO,CAAC,GACvCA,OAAO,CAASC,QAAQ,CAAC,CAAA;EAE9B,IAAA,IAAI,IAAI,CAACT,KAAK,KAAKS,QAAQ,EAAE,OAAA;MAE7B,IAAI,CAACV,OAAO,EAAEY,QAAQ,GAAG,IAAI,CAACX,KAAK,EAAES,QAAQ,CAAC,CAAA;EAE9C,IAAA,IAAI,CAACb,KAAK,CAACgB,IAAI,CAAC,MAAM;EACpB,MAAA,IAAI,CAACnB,SAAS,CAACoB,OAAO,CAAEX,QAAQ,IAAKA,QAAQ,CAAC,IAAI,CAACF,KAAK,EAAES,QAAQ,CAAC,CAAC,CAAA;EACtE,KAAC,CAAC,CAAA;MACF,IAAI,CAAC,MAAM,EAAE,CAAA;KACd,CAAA;IAED,MAAM,GAAG,MAAM;MACb,IAAI,IAAI,CAACd,QAAQ,EAAE,OAAA;MACnB,IAAI,CAACC,KAAK,CAACiB,OAAO,CAAEC,EAAE,IAAKA,EAAE,EAAE,CAAC,CAAA;MAChC,IAAI,CAAClB,KAAK,GAAG,EAAE,CAAA;KAChB,CAAA;IAEDmB,KAAK,GAAID,EAAc,IAAK;EAC1B,IAAA,IAAI,IAAI,CAACnB,QAAQ,EAAE,OAAOmB,EAAE,EAAE,CAAA;MAC9B,IAAI,CAACnB,QAAQ,GAAG,IAAI,CAAA;EACpBmB,IAAAA,EAAE,EAAE,CAAA;MACJ,IAAI,CAACnB,QAAQ,GAAG,KAAK,CAAA;MACrB,IAAI,CAAC,MAAM,EAAE,CAAA;KACd,CAAA;EACH;;;;;;;;;;"}
@@ -8,5 +8,5 @@
8
8
  *
9
9
  * @license MIT
10
10
  */
11
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).Store={})}(this,(function(t){"use strict";t.Store=class{listeners=new Set;batching=!1;queue=[];constructor(t,e){this.state=t,this.options=e}subscribe=t=>{this.listeners.add(t);const e=this.options?.onSubscribe?.(t,this);return()=>{this.listeners.delete(t),e?.()}};setState=t=>{const e=this.state;this.state=this.options?.updateFn?this.options.updateFn(e)(t):t(e),this.state!==e&&(this.options?.onUpdate?.(this.state,e),this.queue.push((()=>{this.listeners.forEach((t=>t(this.state,e)))})),this.#t())};#t=()=>{this.batching||(this.queue.forEach((t=>t())),this.queue=[])};batch=t=>{this.batching=!0,t(),this.batching=!1,this.#t()}},Object.defineProperty(t,"__esModule",{value:!0})}));
11
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).Store={})}(this,(function(t){"use strict";t.Store=class{listeners=new Set;batching=!1;queue=[];constructor(t,e){this.state=t,this.options=e}subscribe=t=>{this.listeners.add(t);const e=this.options?.onSubscribe?.(t,this);return()=>{this.listeners.delete(t),e?.()}};setState=t=>{const e=this.state;this.state=this.options?.updateFn?this.options.updateFn(e)(t):t(e),this.state!==e&&(this.options?.onUpdate?.(this.state,e),this.queue.push((()=>{this.listeners.forEach((t=>t(this.state,e)))})),this.#t())};#t=()=>{this.batching||(this.queue.forEach((t=>t())),this.queue=[])};batch=t=>{if(this.batching)return t();this.batching=!0,t(),this.batching=!1,this.#t()}},Object.defineProperty(t,"__esModule",{value:!0})}));
12
12
  //# sourceMappingURL=index.production.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.production.js","sources":["../../src/index.ts"],"sourcesContent":["export type AnyUpdater = (...args: any[]) => any\n\nexport type Listener<TState> = (next: TState, prev: TState) => void\n\ninterface StoreOptions<\n TState,\n TUpdater extends AnyUpdater = (cb: TState) => TState,\n> {\n updateFn?: (previous: TState) => (updater: TUpdater) => TState\n onSubscribe?: (\n listener: Listener<TState>,\n store: Store<TState, TUpdater>,\n ) => () => void\n onUpdate?: (next: TState, prev: TState) => void\n}\n\nexport class Store<\n TState,\n TUpdater extends AnyUpdater = (cb: TState) => TState,\n> {\n listeners = new Set<Listener<TState>>()\n state: TState\n options?: StoreOptions<TState, TUpdater>\n batching = false\n queue: ((...args: any[]) => void)[] = []\n\n constructor(initialState: TState, options?: StoreOptions<TState, TUpdater>) {\n this.state = initialState\n this.options = options\n }\n\n subscribe = (listener: Listener<TState>) => {\n this.listeners.add(listener)\n const unsub = this.options?.onSubscribe?.(listener, this)\n return () => {\n this.listeners.delete(listener)\n unsub?.()\n }\n }\n\n setState = (updater: TUpdater) => {\n const previous = this.state\n this.state = this.options?.updateFn\n ? this.options.updateFn(previous)(updater)\n : (updater as any)(previous)\n\n if (this.state === previous) return\n\n this.options?.onUpdate?.(this.state, previous)\n\n this.queue.push(() => {\n this.listeners.forEach((listener) => listener(this.state, previous))\n })\n this.#flush()\n }\n\n #flush = () => {\n if (this.batching) return\n this.queue.forEach((cb) => cb())\n this.queue = []\n }\n\n batch = (cb: () => void) => {\n this.batching = true\n cb()\n this.batching = false\n this.#flush()\n }\n}\n"],"names":["listeners","Set","batching","queue","constructor","initialState","options","this","state","subscribe","listener","add","unsub","onSubscribe","delete","setState","updater","previous","updateFn","onUpdate","push","forEach","flush","cb","batch"],"mappings":";;;;;;;;;;qPAgBO,MAILA,UAAY,IAAIC,IAGhBC,UAAW,EACXC,MAAsC,GAEtCC,YAAYC,EAAsBC,GAChCC,KAAKC,MAAQH,EACbE,KAAKD,QAAUA,CACjB,CAEAG,UAAaC,IACXH,KAAKP,UAAUW,IAAID,GACnB,MAAME,EAAQL,KAAKD,SAASO,cAAcH,EAAUH,MACpD,MAAO,KACLA,KAAKP,UAAUc,OAAOJ,GACtBE,KAAS,CACV,EAGHG,SAAYC,IACV,MAAMC,EAAWV,KAAKC,MACtBD,KAAKC,MAAQD,KAAKD,SAASY,SACvBX,KAAKD,QAAQY,SAASD,EAAtBV,CAAgCS,GAC/BA,EAAgBC,GAEjBV,KAAKC,QAAUS,IAEnBV,KAAKD,SAASa,WAAWZ,KAAKC,MAAOS,GAErCV,KAAKJ,MAAMiB,MAAK,KACdb,KAAKP,UAAUqB,SAASX,GAAaA,EAASH,KAAKC,MAAOS,IAAU,IAEtEV,MAAKe,IAAQ,EAGfA,GAAS,KACHf,KAAKL,WACTK,KAAKJ,MAAMkB,SAASE,GAAOA,MAC3BhB,KAAKJ,MAAQ,GAAE,EAGjBqB,MAASD,IACPhB,KAAKL,UAAW,EAChBqB,IACAhB,KAAKL,UAAW,EAChBK,MAAKe,GAAQ"}
1
+ {"version":3,"file":"index.production.js","sources":["../../src/index.ts"],"sourcesContent":["export type AnyUpdater = (...args: any[]) => any\n\nexport type Listener<TState> = (next: TState, prev: TState) => void\n\ninterface StoreOptions<\n TState,\n TUpdater extends AnyUpdater = (cb: TState) => TState,\n> {\n updateFn?: (previous: TState) => (updater: TUpdater) => TState\n onSubscribe?: (\n listener: Listener<TState>,\n store: Store<TState, TUpdater>,\n ) => () => void\n onUpdate?: (next: TState, prev: TState) => void\n}\n\nexport class Store<\n TState,\n TUpdater extends AnyUpdater = (cb: TState) => TState,\n> {\n listeners = new Set<Listener<TState>>()\n state: TState\n options?: StoreOptions<TState, TUpdater>\n batching = false\n queue: ((...args: any[]) => void)[] = []\n\n constructor(initialState: TState, options?: StoreOptions<TState, TUpdater>) {\n this.state = initialState\n this.options = options\n }\n\n subscribe = (listener: Listener<TState>) => {\n this.listeners.add(listener)\n const unsub = this.options?.onSubscribe?.(listener, this)\n return () => {\n this.listeners.delete(listener)\n unsub?.()\n }\n }\n\n setState = (updater: TUpdater) => {\n const previous = this.state\n this.state = this.options?.updateFn\n ? this.options.updateFn(previous)(updater)\n : (updater as any)(previous)\n\n if (this.state === previous) return\n\n this.options?.onUpdate?.(this.state, previous)\n\n this.queue.push(() => {\n this.listeners.forEach((listener) => listener(this.state, previous))\n })\n this.#flush()\n }\n\n #flush = () => {\n if (this.batching) return\n this.queue.forEach((cb) => cb())\n this.queue = []\n }\n\n batch = (cb: () => void) => {\n if (this.batching) return cb()\n this.batching = true\n cb()\n this.batching = false\n this.#flush()\n }\n}\n"],"names":["listeners","Set","batching","queue","constructor","initialState","options","this","state","subscribe","listener","add","unsub","onSubscribe","delete","setState","updater","previous","updateFn","onUpdate","push","forEach","flush","cb","batch"],"mappings":";;;;;;;;;;qPAgBO,MAILA,UAAY,IAAIC,IAGhBC,UAAW,EACXC,MAAsC,GAEtCC,YAAYC,EAAsBC,GAChCC,KAAKC,MAAQH,EACbE,KAAKD,QAAUA,CACjB,CAEAG,UAAaC,IACXH,KAAKP,UAAUW,IAAID,GACnB,MAAME,EAAQL,KAAKD,SAASO,cAAcH,EAAUH,MACpD,MAAO,KACLA,KAAKP,UAAUc,OAAOJ,GACtBE,KAAS,CACV,EAGHG,SAAYC,IACV,MAAMC,EAAWV,KAAKC,MACtBD,KAAKC,MAAQD,KAAKD,SAASY,SACvBX,KAAKD,QAAQY,SAASD,EAAtBV,CAAgCS,GAC/BA,EAAgBC,GAEjBV,KAAKC,QAAUS,IAEnBV,KAAKD,SAASa,WAAWZ,KAAKC,MAAOS,GAErCV,KAAKJ,MAAMiB,MAAK,KACdb,KAAKP,UAAUqB,SAASX,GAAaA,EAASH,KAAKC,MAAOS,IAAU,IAEtEV,MAAKe,IAAQ,EAGfA,GAAS,KACHf,KAAKL,WACTK,KAAKJ,MAAMkB,SAASE,GAAOA,MAC3BhB,KAAKJ,MAAQ,GAAE,EAGjBqB,MAASD,IACP,GAAIhB,KAAKL,SAAU,OAAOqB,IAC1BhB,KAAKL,UAAW,EAChBqB,IACAhB,KAAKL,UAAW,EAChBK,MAAKe,GAAQ"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tanstack/store",
3
3
  "author": "Tanner Linsley",
4
- "version": "0.0.1-beta.84",
4
+ "version": "0.0.1-beta.85",
5
5
  "license": "MIT",
6
6
  "repository": "tanstack/store",
7
7
  "homepage": "https://tanstack.com/store",
@@ -28,5 +28,8 @@
28
28
  "build/**",
29
29
  "src"
30
30
  ],
31
- "sideEffects": false
31
+ "sideEffects": false,
32
+ "scripts": {
33
+ "build": "rollup --config rollup.config.js"
34
+ }
32
35
  }
package/src/index.ts CHANGED
@@ -61,6 +61,7 @@ export class Store<
61
61
  }
62
62
 
63
63
  batch = (cb: () => void) => {
64
+ if (this.batching) return cb()
64
65
  this.batching = true
65
66
  cb()
66
67
  this.batching = false