atom.io 0.19.4 → 0.20.1
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/data/dist/index.js +1 -1
- package/data/src/dict.ts +1 -1
- package/data/src/join.ts +1 -1
- package/data/src/struct-family.ts +1 -1
- package/data/src/struct.ts +5 -3
- package/dist/index.d.ts +1 -0
- package/internal/dist/index.cjs +137 -95
- package/internal/dist/index.d.ts +13 -9
- package/internal/dist/index.js +137 -95
- package/internal/src/atom/index.ts +1 -1
- package/internal/src/caching.ts +13 -9
- package/internal/src/families/create-atom-family.ts +1 -1
- package/internal/src/families/find-in-store.ts +2 -2
- package/internal/src/families/index.ts +1 -1
- package/internal/src/future.ts +52 -15
- package/internal/src/index.ts +2 -2
- package/internal/src/mutable/create-mutable-atom-family.ts +2 -3
- package/internal/src/mutable/create-mutable-atom.ts +3 -3
- package/internal/src/mutable/get-update-token.ts +1 -0
- package/internal/src/operation.ts +3 -3
- package/internal/src/selector/delete-selector.ts +1 -1
- package/internal/src/selector/register-selector.ts +1 -1
- package/internal/src/set-state/set-into-store.ts +7 -1
- package/internal/src/store/deposit.ts +1 -1
- package/internal/src/store/store.ts +2 -2
- package/internal/src/store/withdraw-new-family-member.ts +1 -1
- package/internal/src/store/withdraw.ts +2 -3
- package/internal/src/subscribe/subscribe-to-state.ts +1 -0
- package/internal/src/subscribe/subscribe-to-timeline.ts +1 -0
- package/internal/src/subscribe/subscribe-to-transaction.ts +2 -1
- package/internal/src/timeline/add-atom-to-timeline.ts +2 -2
- package/internal/src/timeline/create-timeline.ts +1 -1
- package/internal/src/transaction/act-upon-store.ts +1 -1
- package/internal/src/transaction/apply-transaction.ts +1 -1
- package/internal/src/transaction/build-transaction.ts +2 -2
- package/internal/src/transaction/create-transaction.ts +2 -2
- package/internal/src/transaction/index.ts +1 -1
- package/internal/src/transaction/is-root-store.ts +1 -1
- package/introspection/src/attach-atom-index.ts +1 -1
- package/introspection/src/attach-introspection-states.ts +2 -2
- package/introspection/src/attach-selector-index.ts +1 -1
- package/introspection/src/attach-timeline-family.ts +2 -2
- package/introspection/src/attach-timeline-index.ts +1 -1
- package/introspection/src/attach-transaction-index.ts +2 -2
- package/introspection/src/attach-transaction-logs.ts +2 -2
- package/json/dist/index.cjs +35 -33
- package/json/dist/index.d.ts +5 -5
- package/json/src/index.ts +2 -3
- package/json/src/select-json-family.ts +1 -1
- package/json/src/select-json.ts +1 -2
- package/package.json +15 -15
- package/react/src/use-tl.ts +1 -1
- package/react-devtools/dist/index.cjs +99 -99
- package/react-devtools/dist/index.d.ts +2 -2
- package/react-devtools/dist/index.js +77 -77
- package/react-devtools/src/AtomIODevtools.tsx +2 -2
- package/react-devtools/src/TransactionIndex.tsx +2 -2
- package/react-devtools/src/Updates.tsx +1 -1
- package/react-devtools/src/index.ts +1 -1
- package/realtime/src/realtime-continuity.ts +1 -1
- package/realtime-client/dist/index.js +1 -1
- package/realtime-client/src/pull-atom-family-member.ts +1 -1
- package/realtime-client/src/pull-atom.ts +1 -1
- package/realtime-client/src/pull-mutable-atom-family-member.ts +2 -2
- package/realtime-client/src/sync-continuity.ts +1 -1
- package/realtime-react/dist/index.js +1 -1
- package/realtime-react/src/use-realtime-service.ts +1 -0
- package/realtime-react/src/use-sync-continuity.ts +2 -1
- package/realtime-server/dist/index.cjs +98 -98
- package/realtime-server/dist/index.d.ts +14 -14
- package/realtime-server/dist/index.js +100 -100
- package/realtime-server/src/index.ts +5 -5
- package/realtime-server/src/ipc-sockets/parent-socket.ts +3 -3
- package/realtime-server/src/realtime-action-receiver.ts +1 -1
- package/realtime-server/src/realtime-continuity-synchronizer.ts +2 -3
- package/realtime-server/src/realtime-family-provider.ts +1 -1
- package/realtime-server/src/realtime-mutable-family-provider.ts +1 -1
- package/realtime-server/src/realtime-mutable-provider.ts +2 -2
- package/realtime-server/src/realtime-server-stores/realtime-continuity-store.ts +2 -2
- package/realtime-server/src/realtime-server-stores/server-room-external-actions.ts +1 -1
- package/realtime-server/src/realtime-server-stores/server-room-external-store.ts +1 -0
- package/realtime-server/src/realtime-state-provider.ts +1 -1
- package/realtime-server/src/realtime-state-synchronizer.ts +1 -1
- package/realtime-testing/dist/index.js +2 -2
- package/realtime-testing/src/setup-realtime-test.tsx +3 -2
- package/src/atom.ts +1 -1
- package/src/find-state.ts +1 -1
- package/src/index.ts +1 -0
- package/src/logger.ts +1 -0
- package/src/selector.ts +1 -1
- package/src/silo.ts +4 -4
- package/src/subscribe.ts +2 -2
- package/src/timeline.ts +1 -1
- package/src/transaction.ts +3 -3
- package/transceivers/set-rtx/src/set-rtx.ts +1 -1
- package/dist/{chunk-ATKDGVTV.js → chunk-2AIFLP2B.js} +0 -0
- package/dist/{chunk-CC7IF7QF.js → chunk-3V3VWQ7X.js} +6 -6
- /package/dist/{chunk-MSCJWACE.js → chunk-SMZRGPN6.js} +0 -0
package/internal/src/caching.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { StateUpdate } from "atom.io"
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
import type { ReadableState } from "."
|
|
4
|
+
import { isChildStore } from "."
|
|
3
5
|
import { Future } from "./future"
|
|
4
6
|
import { copyMutableIfNeeded } from "./set-state/copy-mutable-if-needed"
|
|
5
7
|
import type { Store } from "./store"
|
|
@@ -25,23 +27,19 @@ export function cacheValue<T>(
|
|
|
25
27
|
): Future<T> | T {
|
|
26
28
|
const currentValue = target.valueMap.get(key)
|
|
27
29
|
if (currentValue instanceof Future) {
|
|
28
|
-
currentValue
|
|
30
|
+
const future = currentValue
|
|
31
|
+
future.use(value)
|
|
29
32
|
}
|
|
30
33
|
if (value instanceof Promise) {
|
|
31
34
|
const future = new Future<T>(value)
|
|
32
35
|
target.valueMap.set(key, future)
|
|
33
36
|
future
|
|
34
37
|
.then((resolved) => {
|
|
35
|
-
if (future.isCanceled) {
|
|
36
|
-
return
|
|
37
|
-
}
|
|
38
38
|
cacheValue(key, resolved, subject, target)
|
|
39
39
|
subject.next({ newValue: resolved, oldValue: future })
|
|
40
40
|
})
|
|
41
41
|
.catch((thrown) => {
|
|
42
|
-
|
|
43
|
-
target.logger.error(`💥`, `state`, key, `rejected:`, thrown)
|
|
44
|
-
}
|
|
42
|
+
target.logger.error(`💥`, `state`, key, `rejected:`, thrown)
|
|
45
43
|
})
|
|
46
44
|
return future
|
|
47
45
|
}
|
|
@@ -65,7 +63,13 @@ export const readCachedValue = <T>(
|
|
|
65
63
|
export const evictCachedValue = (key: string, target: Store): void => {
|
|
66
64
|
const currentValue = target.valueMap.get(key)
|
|
67
65
|
if (currentValue instanceof Future) {
|
|
68
|
-
currentValue
|
|
66
|
+
const future = currentValue
|
|
67
|
+
const selector =
|
|
68
|
+
target.selectors.get(key) ?? target.readonlySelectors.get(key)
|
|
69
|
+
if (selector) {
|
|
70
|
+
future.use(selector.get())
|
|
71
|
+
}
|
|
72
|
+
return
|
|
69
73
|
}
|
|
70
74
|
if (target.operation.open) {
|
|
71
75
|
target.operation.prev.set(key, currentValue)
|
|
@@ -6,7 +6,7 @@ import type {
|
|
|
6
6
|
} from "atom.io"
|
|
7
7
|
import type { Json } from "atom.io/json"
|
|
8
8
|
|
|
9
|
-
import { type Transceiver
|
|
9
|
+
import { createMutableAtomFamily, type Transceiver } from "../mutable"
|
|
10
10
|
import type { Store } from "../store"
|
|
11
11
|
import { createRegularAtomFamily } from "./create-regular-atom-family"
|
|
12
12
|
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import type { Json } from "atom.io/json"
|
|
2
|
-
|
|
3
1
|
import type {
|
|
4
2
|
AtomFamilyToken,
|
|
5
3
|
AtomToken,
|
|
@@ -18,6 +16,8 @@ import type {
|
|
|
18
16
|
WritableSelectorToken,
|
|
19
17
|
WritableToken,
|
|
20
18
|
} from "atom.io"
|
|
19
|
+
import type { Json } from "atom.io/json"
|
|
20
|
+
|
|
21
21
|
import type { Transceiver } from "../mutable"
|
|
22
22
|
import { NotFoundError } from "../not-found-error"
|
|
23
23
|
import type { Store } from "../store"
|
package/internal/src/future.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* A Promise
|
|
2
|
+
* A Promise whose incoming value can be hot swapped.
|
|
3
3
|
* @internal
|
|
4
4
|
* @private
|
|
5
5
|
* @typeParam T The type of the value that the promise will resolve to.
|
|
@@ -8,29 +8,66 @@
|
|
|
8
8
|
* Can be constructed like a Promise, or from an existing Promise.
|
|
9
9
|
*/
|
|
10
10
|
export class Future<T> extends Promise<T> {
|
|
11
|
-
|
|
11
|
+
private destiny: Promise<T> | undefined
|
|
12
|
+
private resolve: (value: T) => void
|
|
13
|
+
private reject: (reason?: any) => void
|
|
12
14
|
|
|
13
15
|
public constructor(
|
|
14
16
|
executor:
|
|
15
17
|
| Promise<T>
|
|
16
18
|
| ((resolve: (value: T) => void, reject: (reason?: any) => void) => void),
|
|
17
19
|
) {
|
|
20
|
+
let promise: Promise<T> | undefined
|
|
21
|
+
let superResolve: ((value: T) => void) | undefined
|
|
22
|
+
let superReject: ((reason?: any) => void) | undefined
|
|
18
23
|
super((resolve, reject) => {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
superResolve = resolve
|
|
25
|
+
superReject = reject
|
|
26
|
+
promise = executor instanceof Promise ? executor : new Promise(executor)
|
|
27
|
+
promise.then(
|
|
28
|
+
(value) => {
|
|
29
|
+
if (promise) {
|
|
30
|
+
this.pass(promise, value)
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
(reason) => {
|
|
34
|
+
if (promise) {
|
|
35
|
+
this.fail(promise, reason)
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
)
|
|
30
39
|
})
|
|
40
|
+
this.destiny = promise
|
|
41
|
+
this.resolve = superResolve as (value: T) => void
|
|
42
|
+
this.reject = superReject as (reason?: any) => void
|
|
31
43
|
}
|
|
32
44
|
|
|
33
|
-
|
|
34
|
-
this.
|
|
45
|
+
private pass(promise: Promise<T>, value: T) {
|
|
46
|
+
if (promise === this.destiny) {
|
|
47
|
+
this.resolve(value)
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
private fail(promise: Promise<T>, reason: any) {
|
|
51
|
+
if (promise === this.destiny) {
|
|
52
|
+
this.reject(reason)
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
public use(value: Promise<T> | T): void {
|
|
57
|
+
if (value instanceof Promise) {
|
|
58
|
+
const promise = value
|
|
59
|
+
this.destiny = promise
|
|
60
|
+
promise.then(
|
|
61
|
+
(resolved) => {
|
|
62
|
+
this.pass(promise, resolved)
|
|
63
|
+
},
|
|
64
|
+
(reason) => {
|
|
65
|
+
this.fail(promise, reason)
|
|
66
|
+
},
|
|
67
|
+
)
|
|
68
|
+
} else {
|
|
69
|
+
this.resolve(value)
|
|
70
|
+
this.destiny = undefined
|
|
71
|
+
}
|
|
35
72
|
}
|
|
36
73
|
}
|
package/internal/src/index.ts
CHANGED
|
@@ -5,10 +5,9 @@ import type { Transceiver } from "./mutable"
|
|
|
5
5
|
import type { Store } from "./store"
|
|
6
6
|
import type { Subject } from "./subject"
|
|
7
7
|
|
|
8
|
-
export * from "./atom"
|
|
9
8
|
export * from "./arbitrary"
|
|
9
|
+
export * from "./atom"
|
|
10
10
|
export * from "./caching"
|
|
11
|
-
export * from "./lineage"
|
|
12
11
|
export * from "./families"
|
|
13
12
|
export * from "./future"
|
|
14
13
|
export * from "./get-environment-data"
|
|
@@ -16,6 +15,7 @@ export * from "./get-state"
|
|
|
16
15
|
export * from "./ingest-updates"
|
|
17
16
|
export * from "./keys"
|
|
18
17
|
export * from "./lazy-map"
|
|
18
|
+
export * from "./lineage"
|
|
19
19
|
export * from "./mutable"
|
|
20
20
|
export * from "./not-found-error"
|
|
21
21
|
export * from "./operation"
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import type {
|
|
2
|
+
FamilyMetadata,
|
|
2
3
|
MutableAtomFamily,
|
|
3
4
|
MutableAtomFamilyOptions,
|
|
4
5
|
MutableAtomOptions,
|
|
5
6
|
MutableAtomToken,
|
|
6
7
|
} from "atom.io"
|
|
7
|
-
import type { FamilyMetadata } from "atom.io"
|
|
8
8
|
import type { Json } from "atom.io/json"
|
|
9
|
-
import { selectJsonFamily } from "atom.io/json"
|
|
10
|
-
import { stringifyJson } from "atom.io/json"
|
|
9
|
+
import { selectJsonFamily, stringifyJson } from "atom.io/json"
|
|
11
10
|
|
|
12
11
|
import { newest } from "../lineage"
|
|
13
12
|
import { createMutableAtom } from "../mutable"
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import type { UpdateHandler } from "atom.io"
|
|
2
1
|
import type {
|
|
3
2
|
FamilyMetadata,
|
|
4
3
|
MutableAtomOptions,
|
|
5
4
|
MutableAtomToken,
|
|
5
|
+
UpdateHandler,
|
|
6
6
|
} from "atom.io"
|
|
7
7
|
import type { Json } from "atom.io/json"
|
|
8
8
|
import { selectJson } from "atom.io/json"
|
|
9
9
|
|
|
10
|
-
import { type MutableAtom,
|
|
10
|
+
import { cacheValue, type MutableAtom, setIntoStore } from ".."
|
|
11
11
|
import { markAtomAsDefault } from "../atom"
|
|
12
12
|
import { newest } from "../lineage"
|
|
13
|
-
import { type Store
|
|
13
|
+
import { deposit, type Store } from "../store"
|
|
14
14
|
import { Subject } from "../subject"
|
|
15
15
|
import { subscribeToState } from "../subscribe"
|
|
16
16
|
import { Tracker } from "./tracker"
|
|
@@ -21,11 +21,11 @@ export const openOperation = (
|
|
|
21
21
|
store: Store,
|
|
22
22
|
): `rejection` | undefined => {
|
|
23
23
|
if (store.operation.open) {
|
|
24
|
-
store.logger.
|
|
25
|
-
|
|
24
|
+
store.logger.warn(
|
|
25
|
+
`❗`,
|
|
26
26
|
token.type,
|
|
27
27
|
token.key,
|
|
28
|
-
`
|
|
28
|
+
`tried to setState, but must wait until setState for "${store.operation.token.key}" completes`,
|
|
29
29
|
)
|
|
30
30
|
return `rejection`
|
|
31
31
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ReadonlySelectorToken, WritableSelectorToken } from "atom.io"
|
|
2
2
|
|
|
3
|
-
import { newest } from ".."
|
|
4
3
|
import type { Store } from ".."
|
|
4
|
+
import { newest } from ".."
|
|
5
5
|
|
|
6
6
|
export function deleteSelector(
|
|
7
7
|
selectorToken: ReadonlySelectorToken<unknown> | WritableSelectorToken<unknown>,
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { WritableToken } from "atom.io"
|
|
2
2
|
|
|
3
|
-
import { NotFoundError } from "../not-found-error"
|
|
4
3
|
import { closeOperation, openOperation } from "../operation"
|
|
5
4
|
import type { Store } from "../store"
|
|
6
5
|
import { withdrawOrCreate } from "../store"
|
|
@@ -13,6 +12,13 @@ export function setIntoStore<T, New extends T>(
|
|
|
13
12
|
): void {
|
|
14
13
|
const rejection = openOperation(token, store)
|
|
15
14
|
if (rejection) {
|
|
15
|
+
const unsubscribe = store.on.operationClose.subscribe(
|
|
16
|
+
`waiting to set "${token.key}"`,
|
|
17
|
+
() => {
|
|
18
|
+
unsubscribe()
|
|
19
|
+
setIntoStore(token, value, store)
|
|
20
|
+
},
|
|
21
|
+
)
|
|
16
22
|
return
|
|
17
23
|
}
|
|
18
24
|
const state = withdrawOrCreate(token, store)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { AtomIOLogger } from "atom.io"
|
|
2
1
|
import type {
|
|
3
2
|
AtomToken,
|
|
3
|
+
Func,
|
|
4
4
|
Logger,
|
|
5
5
|
MutableAtomFamily,
|
|
6
6
|
ReadonlySelectorFamily,
|
|
@@ -10,8 +10,8 @@ import type {
|
|
|
10
10
|
TransactionToken,
|
|
11
11
|
WritableSelectorFamily,
|
|
12
12
|
WritableSelectorToken,
|
|
13
|
-
Func,
|
|
14
13
|
} from "atom.io"
|
|
14
|
+
import { AtomIOLogger } from "atom.io"
|
|
15
15
|
|
|
16
16
|
import { Junction } from "~/packages/rel8/junction/src"
|
|
17
17
|
|
|
@@ -2,6 +2,7 @@ import type {
|
|
|
2
2
|
AtomFamily,
|
|
3
3
|
AtomFamilyToken,
|
|
4
4
|
AtomToken,
|
|
5
|
+
Func,
|
|
5
6
|
MutableAtomFamily,
|
|
6
7
|
MutableAtomFamilyToken,
|
|
7
8
|
MutableAtomToken,
|
|
@@ -22,10 +23,9 @@ import type {
|
|
|
22
23
|
WritableSelectorFamilyToken,
|
|
23
24
|
WritableSelectorToken,
|
|
24
25
|
WritableToken,
|
|
25
|
-
Func,
|
|
26
26
|
} from "atom.io"
|
|
27
|
-
|
|
28
27
|
import type { Json } from "atom.io/json"
|
|
28
|
+
|
|
29
29
|
import type {
|
|
30
30
|
Atom,
|
|
31
31
|
MutableAtom,
|
|
@@ -38,7 +38,6 @@ import type {
|
|
|
38
38
|
WritableState,
|
|
39
39
|
} from ".."
|
|
40
40
|
import { NotFoundError } from ".."
|
|
41
|
-
|
|
42
41
|
import type { Timeline } from "../timeline"
|
|
43
42
|
import type { Transaction } from "../transaction"
|
|
44
43
|
import type { Store } from "./store"
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type {
|
|
2
2
|
AtomToken,
|
|
3
|
+
Func,
|
|
4
|
+
TimelineUpdate,
|
|
3
5
|
TransactionToken,
|
|
4
6
|
TransactionUpdate,
|
|
5
|
-
Func,
|
|
6
7
|
} from "atom.io"
|
|
7
|
-
import type { TimelineUpdate } from "atom.io"
|
|
8
8
|
|
|
9
9
|
import { newest } from "../lineage"
|
|
10
10
|
import { getUpdateToken } from "../mutable"
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type {
|
|
2
2
|
AtomFamilyToken,
|
|
3
3
|
FamilyMetadata,
|
|
4
|
+
Func,
|
|
4
5
|
StateUpdate,
|
|
5
6
|
TimelineManageable,
|
|
6
7
|
TimelineOptions,
|
|
@@ -8,7 +9,6 @@ import type {
|
|
|
8
9
|
TimelineUpdate,
|
|
9
10
|
TokenType,
|
|
10
11
|
TransactionUpdate,
|
|
11
|
-
Func,
|
|
12
12
|
} from "atom.io"
|
|
13
13
|
|
|
14
14
|
import { newest } from "../lineage"
|
|
@@ -2,8 +2,8 @@ import type { Func } from "atom.io"
|
|
|
2
2
|
|
|
3
3
|
import { ingestTransactionUpdate } from "../ingest-updates"
|
|
4
4
|
import { newest } from "../lineage"
|
|
5
|
-
import { withdraw } from "../store"
|
|
6
5
|
import type { Store } from "../store"
|
|
6
|
+
import { withdraw } from "../store"
|
|
7
7
|
import { isChildStore, isRootStore } from "./is-root-store"
|
|
8
8
|
import { setEpochNumberOfAction } from "./set-epoch-number"
|
|
9
9
|
|
|
@@ -2,8 +2,6 @@ import type { findState, Func } from "atom.io"
|
|
|
2
2
|
|
|
3
3
|
import { Junction } from "~/packages/rel8/junction/src"
|
|
4
4
|
|
|
5
|
-
import type { TransactionProgress } from "."
|
|
6
|
-
import { actUponStore, getEpochNumberOfAction } from "."
|
|
7
5
|
import { arbitrary } from "../arbitrary"
|
|
8
6
|
import { findInStore } from "../families"
|
|
9
7
|
import { getEnvironmentData } from "../get-environment-data"
|
|
@@ -12,6 +10,8 @@ import { LazyMap } from "../lazy-map"
|
|
|
12
10
|
import { newest } from "../lineage"
|
|
13
11
|
import { setIntoStore } from "../set-state"
|
|
14
12
|
import type { Store } from "../store"
|
|
13
|
+
import type { TransactionProgress } from "."
|
|
14
|
+
import { actUponStore, getEpochNumberOfAction } from "."
|
|
15
15
|
import type { ChildStore, RootStore } from "./is-root-store"
|
|
16
16
|
|
|
17
17
|
export const buildTransaction = (
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import type {
|
|
2
|
+
Func,
|
|
2
3
|
TransactionOptions,
|
|
3
4
|
TransactionToken,
|
|
4
5
|
TransactionUpdate,
|
|
5
|
-
Func,
|
|
6
6
|
} from "atom.io"
|
|
7
7
|
|
|
8
8
|
import { newest } from "../lineage"
|
|
9
|
-
import { deposit } from "../store"
|
|
10
9
|
import type { Store } from "../store"
|
|
10
|
+
import { deposit } from "../store"
|
|
11
11
|
import { Subject } from "../subject"
|
|
12
12
|
import { abortTransaction } from "./abort-transaction"
|
|
13
13
|
import { applyTransaction } from "./apply-transaction"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Func } from "atom.io"
|
|
2
2
|
|
|
3
|
-
import type { TransactionEpoch, TransactionProgress } from "."
|
|
4
3
|
import type { Store } from "../store"
|
|
4
|
+
import type { TransactionEpoch, TransactionProgress } from "."
|
|
5
5
|
|
|
6
6
|
export interface RootStore extends Store {
|
|
7
7
|
transactionMeta: TransactionEpoch
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import type {
|
|
2
|
+
Func,
|
|
2
3
|
ReadonlySelectorFamily,
|
|
3
4
|
ReadonlySelectorFamilyToken,
|
|
4
5
|
ReadonlySelectorToken,
|
|
5
6
|
TimelineToken,
|
|
6
7
|
TransactionToken,
|
|
7
8
|
TransactionUpdate,
|
|
8
|
-
Func,
|
|
9
9
|
} from "atom.io"
|
|
10
|
-
import * as Internal from "atom.io/internal"
|
|
11
10
|
import type { Timeline } from "atom.io/internal"
|
|
11
|
+
import * as Internal from "atom.io/internal"
|
|
12
12
|
|
|
13
13
|
import { type AtomTokenIndex, attachAtomIndex } from "./attach-atom-index"
|
|
14
14
|
import type { SelectorTokenIndex } from "./attach-selector-index"
|
|
@@ -4,10 +4,10 @@ import type {
|
|
|
4
4
|
} from "atom.io"
|
|
5
5
|
import type { Store, Timeline } from "atom.io/internal"
|
|
6
6
|
import {
|
|
7
|
-
IMPLICIT,
|
|
8
|
-
Subject,
|
|
9
7
|
createRegularAtomFamily,
|
|
10
8
|
createSelectorFamily,
|
|
9
|
+
IMPLICIT,
|
|
10
|
+
Subject,
|
|
11
11
|
} from "atom.io/internal"
|
|
12
12
|
|
|
13
13
|
export const attachTimelineFamily = (
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { ReadonlySelectorToken, TimelineToken } from "atom.io"
|
|
2
2
|
import type { Store } from "atom.io/internal"
|
|
3
3
|
import {
|
|
4
|
-
IMPLICIT,
|
|
5
4
|
createRegularAtom,
|
|
6
5
|
createStandaloneSelector,
|
|
6
|
+
IMPLICIT,
|
|
7
7
|
} from "atom.io/internal"
|
|
8
8
|
|
|
9
9
|
export const attachTimelineIndex = (
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type { ReadonlySelectorToken, TransactionToken
|
|
1
|
+
import type { Func, ReadonlySelectorToken, TransactionToken } from "atom.io"
|
|
2
2
|
import type { Store } from "atom.io/internal"
|
|
3
3
|
import {
|
|
4
|
-
IMPLICIT,
|
|
5
4
|
createRegularAtom,
|
|
6
5
|
createStandaloneSelector,
|
|
6
|
+
IMPLICIT,
|
|
7
7
|
} from "atom.io/internal"
|
|
8
8
|
|
|
9
9
|
export const attachTransactionIndex = (
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import type {
|
|
2
|
+
Func,
|
|
2
3
|
ReadonlySelectorFamilyToken,
|
|
3
4
|
TransactionUpdate,
|
|
4
|
-
Func,
|
|
5
5
|
} from "atom.io"
|
|
6
6
|
import type { Store } from "atom.io/internal"
|
|
7
7
|
import {
|
|
8
|
-
IMPLICIT,
|
|
9
8
|
createRegularAtomFamily,
|
|
10
9
|
createSelectorFamily,
|
|
10
|
+
IMPLICIT,
|
|
11
11
|
} from "atom.io/internal"
|
|
12
12
|
|
|
13
13
|
export const attachTransactionLogs = (
|
package/json/dist/index.cjs
CHANGED
|
@@ -2,6 +2,41 @@
|
|
|
2
2
|
|
|
3
3
|
var internal = require('atom.io/internal');
|
|
4
4
|
|
|
5
|
+
// json/src/select-json.ts
|
|
6
|
+
var selectJson = (atom, transform, store = internal.IMPLICIT.STORE) => {
|
|
7
|
+
return internal.createStandaloneSelector(
|
|
8
|
+
{
|
|
9
|
+
key: `${atom.key}:JSON`,
|
|
10
|
+
get: ({ get }) => transform.toJson(get(atom)),
|
|
11
|
+
set: ({ set }, newValue) => {
|
|
12
|
+
set(atom, transform.fromJson(newValue));
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
store
|
|
16
|
+
);
|
|
17
|
+
};
|
|
18
|
+
function selectJsonFamily(family, transform, store = internal.IMPLICIT.STORE) {
|
|
19
|
+
const jsonFamily = internal.createSelectorFamily(
|
|
20
|
+
{
|
|
21
|
+
key: `${family.key}:JSON`,
|
|
22
|
+
get: (key) => ({ get }) => transform.toJson(get(family(key))),
|
|
23
|
+
set: (key) => ({ set }, newValue) => {
|
|
24
|
+
set(family(key), transform.fromJson(newValue));
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
store
|
|
28
|
+
);
|
|
29
|
+
family.subject.subscribe(
|
|
30
|
+
`store=${store.config.name}::json-selector-family`,
|
|
31
|
+
(token) => {
|
|
32
|
+
if (token.family) {
|
|
33
|
+
jsonFamily(parseJson(token.family.subKey));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
);
|
|
37
|
+
return jsonFamily;
|
|
38
|
+
}
|
|
39
|
+
|
|
5
40
|
// ../anvl/src/json/json-interface.ts
|
|
6
41
|
var stringSetJsonInterface = {
|
|
7
42
|
toJson: (stringSet) => Array.from(stringSet),
|
|
@@ -44,39 +79,6 @@ var isNull = (input) => {
|
|
|
44
79
|
var isPrimitive = (input) => {
|
|
45
80
|
return isString(input) || isNumber(input) || isBoolean(input) || isNull(input);
|
|
46
81
|
};
|
|
47
|
-
var selectJson = (atom, transform, store = internal.IMPLICIT.STORE) => {
|
|
48
|
-
return internal.createStandaloneSelector(
|
|
49
|
-
{
|
|
50
|
-
key: `${atom.key}:JSON`,
|
|
51
|
-
get: ({ get }) => transform.toJson(get(atom)),
|
|
52
|
-
set: ({ set }, newValue) => {
|
|
53
|
-
set(atom, transform.fromJson(newValue));
|
|
54
|
-
}
|
|
55
|
-
},
|
|
56
|
-
store
|
|
57
|
-
);
|
|
58
|
-
};
|
|
59
|
-
function selectJsonFamily(family, transform, store = internal.IMPLICIT.STORE) {
|
|
60
|
-
const jsonFamily = internal.createSelectorFamily(
|
|
61
|
-
{
|
|
62
|
-
key: `${family.key}:JSON`,
|
|
63
|
-
get: (key) => ({ get }) => transform.toJson(get(family(key))),
|
|
64
|
-
set: (key) => ({ set }, newValue) => {
|
|
65
|
-
set(family(key), transform.fromJson(newValue));
|
|
66
|
-
}
|
|
67
|
-
},
|
|
68
|
-
store
|
|
69
|
-
);
|
|
70
|
-
family.subject.subscribe(
|
|
71
|
-
`store=${store.config.name}::json-selector-family`,
|
|
72
|
-
(token) => {
|
|
73
|
-
if (token.family) {
|
|
74
|
-
jsonFamily(parseJson(token.family.subKey));
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
);
|
|
78
|
-
return jsonFamily;
|
|
79
|
-
}
|
|
80
82
|
|
|
81
83
|
exports.JSON_DEFAULTS = JSON_DEFAULTS;
|
|
82
84
|
exports.JSON_TYPE_NAMES = JSON_TYPE_NAMES;
|