@exodus/atoms 3.5.2 → 3.6.0
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/package.json +3 -3
- package/src/enforce-rules.js +10 -3
- package/src/event-emitter.js +2 -1
- package/src/factories/memory.js +5 -5
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@exodus/atoms",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.6.0",
|
|
4
4
|
"main": "src/index.js",
|
|
5
5
|
"author": "Exodus Movement Inc.",
|
|
6
6
|
"scripts": {
|
|
@@ -29,10 +29,10 @@
|
|
|
29
29
|
"proxy-freeze": "^1.0.0"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
|
-
"@exodus/storage-memory": "^1.0
|
|
32
|
+
"@exodus/storage-memory": "^2.1.0",
|
|
33
33
|
"delay": "^5.0.0",
|
|
34
34
|
"eslint": "^8.33.0",
|
|
35
35
|
"jest": "^29.1.2"
|
|
36
36
|
},
|
|
37
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "9352420baa5144820706bb4d9476f0e7b535a72a"
|
|
38
38
|
}
|
package/src/enforce-rules.js
CHANGED
|
@@ -14,8 +14,8 @@ const withChangeDetection = (listener) => {
|
|
|
14
14
|
|
|
15
15
|
try {
|
|
16
16
|
await listener(currentValue)
|
|
17
|
-
} catch (
|
|
18
|
-
console.warn('observer failed',
|
|
17
|
+
} catch (error) {
|
|
18
|
+
console.warn('observer failed', error)
|
|
19
19
|
}
|
|
20
20
|
},
|
|
21
21
|
get called() {
|
|
@@ -43,9 +43,16 @@ const enforceObservableRules = ({ defaultValue, ...atom }) => {
|
|
|
43
43
|
return unsubscribe
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
+
const set = async (value) => {
|
|
47
|
+
// support a function a la React's setState(oldState => newState)
|
|
48
|
+
if (typeof value === 'function') value = await value(await get())
|
|
49
|
+
|
|
50
|
+
await atom.set(value)
|
|
51
|
+
}
|
|
52
|
+
|
|
46
53
|
return {
|
|
47
54
|
get,
|
|
48
|
-
set
|
|
55
|
+
set,
|
|
49
56
|
observe,
|
|
50
57
|
}
|
|
51
58
|
}
|
package/src/event-emitter.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import enforceObservableRules from './enforce-rules'
|
|
2
2
|
|
|
3
|
-
const fromEventEmitter = ({ emitter, event, get, defaultValue }) => {
|
|
3
|
+
const fromEventEmitter = ({ emitter, event, get, set, defaultValue }) => {
|
|
4
4
|
const observe = (listener) => {
|
|
5
5
|
emitter.on(event, listener)
|
|
6
6
|
return () => emitter.removeListener(event, listener)
|
|
@@ -8,6 +8,7 @@ const fromEventEmitter = ({ emitter, event, get, defaultValue }) => {
|
|
|
8
8
|
|
|
9
9
|
return enforceObservableRules({
|
|
10
10
|
get,
|
|
11
|
+
set,
|
|
11
12
|
observe,
|
|
12
13
|
defaultValue,
|
|
13
14
|
})
|
package/src/factories/memory.js
CHANGED
|
@@ -23,14 +23,14 @@ const createAtomMock = (options = {}) => {
|
|
|
23
23
|
latestValue = data
|
|
24
24
|
if (data !== undefined) {
|
|
25
25
|
initialized.resolve()
|
|
26
|
+
initialized.resolved = true
|
|
27
|
+
}
|
|
28
|
+
if (initialized.resolved) {
|
|
29
|
+
emitter.emit('data', data)
|
|
26
30
|
}
|
|
27
|
-
emitter.emit('data', data)
|
|
28
31
|
}
|
|
29
32
|
|
|
30
|
-
return {
|
|
31
|
-
...fromEventEmitter({ emitter, event: 'data', get, defaultValue }),
|
|
32
|
-
set,
|
|
33
|
-
}
|
|
33
|
+
return fromEventEmitter({ emitter, event: 'data', get, set, defaultValue })
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
export default createAtomMock
|