@tanstack/store 0.0.1-beta.81 → 0.0.1-beta.84
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/cjs/index.js +0 -42
- package/build/cjs/index.js.map +1 -1
- package/build/esm/index.js +1 -42
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +7 -7
- package/build/types/index.d.ts +1 -2
- package/build/umd/index.development.js +0 -42
- package/build/umd/index.development.js.map +1 -1
- package/build/umd/index.production.js +1 -1
- package/build/umd/index.production.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +0 -54
package/build/cjs/index.js
CHANGED
|
@@ -50,48 +50,6 @@ class Store {
|
|
|
50
50
|
this.#flush();
|
|
51
51
|
};
|
|
52
52
|
}
|
|
53
|
-
function shallow(objA, objB) {
|
|
54
|
-
if (Object.is(objA, objB)) {
|
|
55
|
-
return true;
|
|
56
|
-
}
|
|
57
|
-
if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {
|
|
58
|
-
return false;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// if (objA instanceof Map && objB instanceof Map) {
|
|
62
|
-
// if (objA.size !== objB.size) return false
|
|
63
|
-
|
|
64
|
-
// for (const [key, value] of objA) {
|
|
65
|
-
// if (!Object.is(value, objB.get(key))) {
|
|
66
|
-
// return false
|
|
67
|
-
// }
|
|
68
|
-
// }
|
|
69
|
-
// return true
|
|
70
|
-
// }
|
|
71
|
-
|
|
72
|
-
// if (objA instanceof Set && objB instanceof Set) {
|
|
73
|
-
// if (objA.size !== objB.size) return false
|
|
74
|
-
|
|
75
|
-
// for (const value of objA) {
|
|
76
|
-
// if (!objB.has(value)) {
|
|
77
|
-
// return false
|
|
78
|
-
// }
|
|
79
|
-
// }
|
|
80
|
-
// return true
|
|
81
|
-
// }
|
|
82
|
-
|
|
83
|
-
const keysA = Object.keys(objA);
|
|
84
|
-
if (keysA.length !== Object.keys(objB).length) {
|
|
85
|
-
return false;
|
|
86
|
-
}
|
|
87
|
-
for (let i = 0; i < keysA.length; i++) {
|
|
88
|
-
if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !Object.is(objA[keysA[i]], objB[keysA[i]])) {
|
|
89
|
-
return false;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
return true;
|
|
93
|
-
}
|
|
94
53
|
|
|
95
54
|
exports.Store = Store;
|
|
96
|
-
exports.shallow = shallow;
|
|
97
55
|
//# sourceMappingURL=index.js.map
|
package/build/cjs/index.js.map
CHANGED
|
@@ -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
|
|
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;;;;"}
|
package/build/esm/index.js
CHANGED
|
@@ -46,47 +46,6 @@ class Store {
|
|
|
46
46
|
this.#flush();
|
|
47
47
|
};
|
|
48
48
|
}
|
|
49
|
-
function shallow(objA, objB) {
|
|
50
|
-
if (Object.is(objA, objB)) {
|
|
51
|
-
return true;
|
|
52
|
-
}
|
|
53
|
-
if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {
|
|
54
|
-
return false;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
// if (objA instanceof Map && objB instanceof Map) {
|
|
58
|
-
// if (objA.size !== objB.size) return false
|
|
59
|
-
|
|
60
|
-
// for (const [key, value] of objA) {
|
|
61
|
-
// if (!Object.is(value, objB.get(key))) {
|
|
62
|
-
// return false
|
|
63
|
-
// }
|
|
64
|
-
// }
|
|
65
|
-
// return true
|
|
66
|
-
// }
|
|
67
|
-
|
|
68
|
-
// if (objA instanceof Set && objB instanceof Set) {
|
|
69
|
-
// if (objA.size !== objB.size) return false
|
|
70
|
-
|
|
71
|
-
// for (const value of objA) {
|
|
72
|
-
// if (!objB.has(value)) {
|
|
73
|
-
// return false
|
|
74
|
-
// }
|
|
75
|
-
// }
|
|
76
|
-
// return true
|
|
77
|
-
// }
|
|
78
|
-
|
|
79
|
-
const keysA = Object.keys(objA);
|
|
80
|
-
if (keysA.length !== Object.keys(objB).length) {
|
|
81
|
-
return false;
|
|
82
|
-
}
|
|
83
|
-
for (let i = 0; i < keysA.length; i++) {
|
|
84
|
-
if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !Object.is(objA[keysA[i]], objB[keysA[i]])) {
|
|
85
|
-
return false;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
return true;
|
|
89
|
-
}
|
|
90
49
|
|
|
91
|
-
export { Store
|
|
50
|
+
export { Store };
|
|
92
51
|
//# sourceMappingURL=index.js.map
|
package/build/esm/index.js.map
CHANGED
|
@@ -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
|
|
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;;;;"}
|
package/build/stats-html.html
CHANGED
|
@@ -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":"
|
|
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}};
|
|
4028
4028
|
|
|
4029
4029
|
const run = () => {
|
|
4030
4030
|
const width = window.innerWidth;
|
package/build/stats-react.json
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"children": [
|
|
9
9
|
{
|
|
10
10
|
"name": "packages/store/src/index.ts",
|
|
11
|
-
"uid": "
|
|
11
|
+
"uid": "5b7b-3"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -16,18 +16,18 @@
|
|
|
16
16
|
"isRoot": true
|
|
17
17
|
},
|
|
18
18
|
"nodeParts": {
|
|
19
|
-
"
|
|
20
|
-
"renderedLength":
|
|
21
|
-
"gzipLength":
|
|
19
|
+
"5b7b-3": {
|
|
20
|
+
"renderedLength": 1071,
|
|
21
|
+
"gzipLength": 382,
|
|
22
22
|
"brotliLength": 0,
|
|
23
|
-
"mainUid": "
|
|
23
|
+
"mainUid": "5b7b-2"
|
|
24
24
|
}
|
|
25
25
|
},
|
|
26
26
|
"nodeMetas": {
|
|
27
|
-
"
|
|
27
|
+
"5b7b-2": {
|
|
28
28
|
"id": "/packages/store/src/index.ts",
|
|
29
29
|
"moduleParts": {
|
|
30
|
-
"index.production.js": "
|
|
30
|
+
"index.production.js": "5b7b-3"
|
|
31
31
|
},
|
|
32
32
|
"imported": [],
|
|
33
33
|
"importedBy": [],
|
package/build/types/index.d.ts
CHANGED
|
@@ -27,6 +27,5 @@ declare class Store<TState, TUpdater extends AnyUpdater = (cb: TState) => TState
|
|
|
27
27
|
setState: (updater: TUpdater) => void;
|
|
28
28
|
batch: (cb: () => void) => void;
|
|
29
29
|
}
|
|
30
|
-
declare function shallow<T>(objA: T, objB: T): boolean;
|
|
31
30
|
|
|
32
|
-
export { AnyUpdater, Listener, Store
|
|
31
|
+
export { AnyUpdater, Listener, Store };
|
|
@@ -52,50 +52,8 @@
|
|
|
52
52
|
this.#flush();
|
|
53
53
|
};
|
|
54
54
|
}
|
|
55
|
-
function shallow(objA, objB) {
|
|
56
|
-
if (Object.is(objA, objB)) {
|
|
57
|
-
return true;
|
|
58
|
-
}
|
|
59
|
-
if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {
|
|
60
|
-
return false;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
// if (objA instanceof Map && objB instanceof Map) {
|
|
64
|
-
// if (objA.size !== objB.size) return false
|
|
65
|
-
|
|
66
|
-
// for (const [key, value] of objA) {
|
|
67
|
-
// if (!Object.is(value, objB.get(key))) {
|
|
68
|
-
// return false
|
|
69
|
-
// }
|
|
70
|
-
// }
|
|
71
|
-
// return true
|
|
72
|
-
// }
|
|
73
|
-
|
|
74
|
-
// if (objA instanceof Set && objB instanceof Set) {
|
|
75
|
-
// if (objA.size !== objB.size) return false
|
|
76
|
-
|
|
77
|
-
// for (const value of objA) {
|
|
78
|
-
// if (!objB.has(value)) {
|
|
79
|
-
// return false
|
|
80
|
-
// }
|
|
81
|
-
// }
|
|
82
|
-
// return true
|
|
83
|
-
// }
|
|
84
|
-
|
|
85
|
-
const keysA = Object.keys(objA);
|
|
86
|
-
if (keysA.length !== Object.keys(objB).length) {
|
|
87
|
-
return false;
|
|
88
|
-
}
|
|
89
|
-
for (let i = 0; i < keysA.length; i++) {
|
|
90
|
-
if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !Object.is(objA[keysA[i]], objB[keysA[i]])) {
|
|
91
|
-
return false;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
return true;
|
|
95
|
-
}
|
|
96
55
|
|
|
97
56
|
exports.Store = Store;
|
|
98
|
-
exports.shallow = shallow;
|
|
99
57
|
|
|
100
58
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
101
59
|
|
|
@@ -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
|
|
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;;;;;;;;;;"}
|
|
@@ -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()}},
|
|
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})}));
|
|
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
|
|
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"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -67,57 +67,3 @@ export class Store<
|
|
|
67
67
|
this.#flush()
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
export function shallow<T>(objA: T, objB: T) {
|
|
73
|
-
if (Object.is(objA, objB)) {
|
|
74
|
-
return true
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
if (
|
|
78
|
-
typeof objA !== 'object' ||
|
|
79
|
-
objA === null ||
|
|
80
|
-
typeof objB !== 'object' ||
|
|
81
|
-
objB === null
|
|
82
|
-
) {
|
|
83
|
-
return false
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
// if (objA instanceof Map && objB instanceof Map) {
|
|
87
|
-
// if (objA.size !== objB.size) return false
|
|
88
|
-
|
|
89
|
-
// for (const [key, value] of objA) {
|
|
90
|
-
// if (!Object.is(value, objB.get(key))) {
|
|
91
|
-
// return false
|
|
92
|
-
// }
|
|
93
|
-
// }
|
|
94
|
-
// return true
|
|
95
|
-
// }
|
|
96
|
-
|
|
97
|
-
// if (objA instanceof Set && objB instanceof Set) {
|
|
98
|
-
// if (objA.size !== objB.size) return false
|
|
99
|
-
|
|
100
|
-
// for (const value of objA) {
|
|
101
|
-
// if (!objB.has(value)) {
|
|
102
|
-
// return false
|
|
103
|
-
// }
|
|
104
|
-
// }
|
|
105
|
-
// return true
|
|
106
|
-
// }
|
|
107
|
-
|
|
108
|
-
const keysA = Object.keys(objA)
|
|
109
|
-
if (keysA.length !== Object.keys(objB).length) {
|
|
110
|
-
return false
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
for (let i = 0; i < keysA.length; i++) {
|
|
114
|
-
if (
|
|
115
|
-
!Object.prototype.hasOwnProperty.call(objB, keysA[i] as string) ||
|
|
116
|
-
!Object.is(objA[keysA[i] as keyof T], objB[keysA[i] as keyof T])
|
|
117
|
-
) {
|
|
118
|
-
return false
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
return true
|
|
122
|
-
}
|
|
123
|
-
|