atom.io 0.16.2 → 0.17.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/dist/chunk-H4Q5FTPZ.js +11 -0
- package/dist/chunk-H4Q5FTPZ.js.map +1 -0
- package/dist/index.cjs +35 -60
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +8 -8
- package/dist/index.js +12 -36
- package/dist/index.js.map +1 -1
- package/internal/dist/index.cjs +268 -195
- package/internal/dist/index.cjs.map +1 -1
- package/internal/dist/index.d.ts +36 -11
- package/internal/dist/index.js +258 -195
- package/internal/dist/index.js.map +1 -1
- package/internal/src/atom/create-regular-atom.ts +2 -3
- package/internal/src/families/find-in-store.ts +74 -0
- package/internal/src/families/index.ts +1 -0
- package/internal/src/get-state/get-from-store.ts +14 -0
- package/internal/src/get-state/index.ts +2 -0
- package/internal/src/{read-or-compute-value.ts → get-state/read-or-compute-value.ts} +3 -3
- package/internal/src/index.ts +1 -1
- package/internal/src/ingest-updates/ingest-atom-update.ts +2 -2
- package/internal/src/ingest-updates/ingest-transaction-update.ts +1 -0
- package/internal/src/mutable/create-mutable-atom.ts +3 -4
- package/internal/src/mutable/tracker.ts +43 -35
- package/internal/src/mutable/transceiver.ts +1 -1
- package/internal/src/not-found-error.ts +14 -3
- package/internal/src/operation.ts +2 -1
- package/internal/src/selector/create-writable-selector.ts +2 -1
- package/internal/src/selector/register-selector.ts +6 -5
- package/internal/src/set-state/index.ts +1 -0
- package/internal/src/set-state/set-atom.ts +17 -3
- package/internal/src/set-state/set-into-store.ts +24 -0
- package/internal/src/set-state/stow-update.ts +2 -4
- package/internal/src/store/store.ts +13 -4
- package/internal/src/subscribe/subscribe-to-root-atoms.ts +1 -1
- package/internal/src/timeline/add-atom-to-timeline.ts +5 -5
- package/internal/src/transaction/abort-transaction.ts +2 -1
- package/internal/src/transaction/apply-transaction.ts +5 -3
- package/internal/src/transaction/build-transaction.ts +20 -11
- package/internal/src/transaction/create-transaction.ts +2 -3
- package/internal/src/transaction/index.ts +3 -2
- package/internal/src/transaction/is-root-store.ts +23 -0
- package/package.json +10 -10
- package/react/dist/index.cjs +27 -21
- package/react/dist/index.cjs.map +1 -1
- package/react/dist/index.d.ts +8 -2
- package/react/dist/index.js +28 -22
- package/react/dist/index.js.map +1 -1
- package/react/src/index.ts +4 -1
- package/react/src/use-i.ts +35 -0
- package/react/src/use-json.ts +38 -0
- package/react/src/use-o.ts +33 -0
- package/react/src/use-tl.ts +45 -0
- package/realtime-client/dist/index.cjs +167 -64
- package/realtime-client/dist/index.cjs.map +1 -1
- package/realtime-client/dist/index.d.ts +10 -6
- package/realtime-client/dist/index.js +158 -63
- package/realtime-client/dist/index.js.map +1 -1
- package/realtime-client/src/index.ts +2 -1
- package/realtime-client/src/pull-family-member.ts +3 -3
- package/realtime-client/src/pull-mutable-family-member.ts +4 -4
- package/realtime-client/src/pull-mutable.ts +4 -4
- package/realtime-client/src/pull-state.ts +7 -6
- package/realtime-client/src/{realtime-client-store.ts → realtime-client-stores/client-main-store.ts} +0 -8
- package/realtime-client/src/realtime-client-stores/client-sync-store.ts +15 -0
- package/realtime-client/src/realtime-client-stores/index.ts +2 -0
- package/realtime-client/src/sync-server-action.ts +134 -40
- package/realtime-client/src/sync-state.ts +19 -0
- package/realtime-react/dist/index.cjs +43 -26
- package/realtime-react/dist/index.cjs.map +1 -1
- package/realtime-react/dist/index.d.ts +3 -1
- package/realtime-react/dist/index.js +41 -25
- package/realtime-react/dist/index.js.map +1 -1
- package/realtime-react/src/index.ts +1 -0
- package/realtime-react/src/on-mount.ts +3 -21
- package/realtime-react/src/use-realtime-service.ts +1 -1
- package/realtime-react/src/use-single-effect.ts +29 -0
- package/realtime-react/src/use-sync-server-action.ts +4 -7
- package/realtime-react/src/use-sync.ts +17 -0
- package/realtime-server/dist/index.cjs +239 -56
- package/realtime-server/dist/index.cjs.map +1 -1
- package/realtime-server/dist/index.d.ts +140 -9
- package/realtime-server/dist/index.js +228 -58
- package/realtime-server/dist/index.js.map +1 -1
- package/realtime-server/src/index.ts +2 -0
- package/realtime-server/src/realtime-action-synchronizer.ts +95 -14
- package/realtime-server/src/realtime-family-provider.ts +11 -6
- package/realtime-server/src/realtime-mutable-family-provider.ts +8 -6
- package/realtime-server/src/realtime-mutable-provider.ts +3 -2
- package/realtime-server/src/realtime-server-stores/index.ts +2 -0
- package/realtime-server/src/realtime-server-stores/server-sync-store.ts +115 -0
- package/realtime-server/src/realtime-server-stores/server-user-store.ts +45 -0
- package/realtime-server/src/realtime-state-provider.ts +18 -11
- package/realtime-server/src/realtime-state-receiver.ts +2 -2
- package/realtime-server/src/realtime-state-synchronizer.ts +23 -0
- package/realtime-testing/dist/index.cjs +65 -26
- package/realtime-testing/dist/index.cjs.map +1 -1
- package/realtime-testing/dist/index.d.ts +11 -7
- package/realtime-testing/dist/index.js +64 -26
- package/realtime-testing/dist/index.js.map +1 -1
- package/realtime-testing/src/setup-realtime-test.tsx +83 -43
- package/src/find-state.ts +8 -16
- package/src/get-state.ts +2 -11
- package/src/logger.ts +1 -0
- package/src/set-state.ts +1 -13
- package/src/silo.ts +7 -3
- package/src/transaction.ts +3 -3
- package/react/src/store-hooks.ts +0 -87
- package/realtime-server/src/realtime-server-store.ts +0 -39
package/react/src/store-hooks.ts
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import * as React from "react"
|
|
2
|
-
|
|
3
|
-
import { getState, redo, setState, undo } from "atom.io"
|
|
4
|
-
import type {
|
|
5
|
-
MutableAtomToken,
|
|
6
|
-
ReadableToken,
|
|
7
|
-
TimelineToken,
|
|
8
|
-
WritableToken,
|
|
9
|
-
} from "atom.io"
|
|
10
|
-
|
|
11
|
-
import {
|
|
12
|
-
getJsonToken,
|
|
13
|
-
subscribeToState,
|
|
14
|
-
subscribeToTimeline,
|
|
15
|
-
withdraw,
|
|
16
|
-
} from "atom.io/internal"
|
|
17
|
-
import type { Json } from "atom.io/json"
|
|
18
|
-
import { StoreContext } from "./store-context"
|
|
19
|
-
|
|
20
|
-
export function useI<T>(
|
|
21
|
-
token: WritableToken<T>,
|
|
22
|
-
): <New extends T>(next: New | ((old: T) => New)) => void {
|
|
23
|
-
const store = React.useContext(StoreContext)
|
|
24
|
-
const setter: React.MutableRefObject<
|
|
25
|
-
(<New extends T>(next: New | ((old: T) => New)) => void) | null
|
|
26
|
-
> = React.useRef(null)
|
|
27
|
-
if (setter.current === null) {
|
|
28
|
-
setter.current = (next) => setState(token, next, store)
|
|
29
|
-
}
|
|
30
|
-
return setter.current
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export function useO<T>(token: ReadableToken<T>): T {
|
|
34
|
-
const store = React.useContext(StoreContext)
|
|
35
|
-
const id = React.useId()
|
|
36
|
-
return React.useSyncExternalStore<T>(
|
|
37
|
-
(dispatch) => subscribeToState(token, dispatch, `use-o:${id}`, store),
|
|
38
|
-
() => getState(token, store),
|
|
39
|
-
() => getState(token, store),
|
|
40
|
-
)
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export function useJSON<Serializable extends Json.Serializable>(
|
|
44
|
-
token: MutableAtomToken<any, Serializable>,
|
|
45
|
-
): Serializable {
|
|
46
|
-
const jsonToken = getJsonToken(token)
|
|
47
|
-
return useO(jsonToken)
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export type TimelineMeta = {
|
|
51
|
-
at: number
|
|
52
|
-
length: number
|
|
53
|
-
undo: () => void
|
|
54
|
-
redo: () => void
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
export function useTL(token: TimelineToken<any>): TimelineMeta {
|
|
58
|
-
const store = React.useContext(StoreContext)
|
|
59
|
-
const id = React.useId()
|
|
60
|
-
const timeline = withdraw(token, store)
|
|
61
|
-
const tokenRef = React.useRef(token)
|
|
62
|
-
const rebuildMeta = () => {
|
|
63
|
-
return {
|
|
64
|
-
at: timeline?.at ?? NaN,
|
|
65
|
-
length: timeline?.history.length ?? NaN,
|
|
66
|
-
undo: () => undo(token),
|
|
67
|
-
redo: () => redo(token),
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
const meta = React.useRef<TimelineMeta>(rebuildMeta())
|
|
71
|
-
const retrieve = () => {
|
|
72
|
-
if (
|
|
73
|
-
meta.current.at !== timeline?.at ||
|
|
74
|
-
meta.current.length !== timeline?.history.length ||
|
|
75
|
-
tokenRef.current !== token
|
|
76
|
-
) {
|
|
77
|
-
tokenRef.current = token
|
|
78
|
-
meta.current = rebuildMeta()
|
|
79
|
-
}
|
|
80
|
-
return meta.current
|
|
81
|
-
}
|
|
82
|
-
return React.useSyncExternalStore<TimelineMeta>(
|
|
83
|
-
(dispatch) => subscribeToTimeline(token, dispatch, `use-tl:${id}`, store),
|
|
84
|
-
retrieve,
|
|
85
|
-
retrieve,
|
|
86
|
-
)
|
|
87
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import * as AtomIO from "atom.io"
|
|
2
|
-
|
|
3
|
-
export const completeUpdateAtoms = AtomIO.atomFamily<
|
|
4
|
-
AtomIO.TransactionUpdate<any> | null,
|
|
5
|
-
string
|
|
6
|
-
>({
|
|
7
|
-
key: `completeUpdate`,
|
|
8
|
-
default: null,
|
|
9
|
-
})
|
|
10
|
-
|
|
11
|
-
export const transactionRedactorAtoms = AtomIO.atomFamily<
|
|
12
|
-
{
|
|
13
|
-
filter: (
|
|
14
|
-
updates: AtomIO.TransactionUpdateContent[],
|
|
15
|
-
) => AtomIO.TransactionUpdateContent[]
|
|
16
|
-
},
|
|
17
|
-
string
|
|
18
|
-
>({
|
|
19
|
-
key: `transactionRedactor`,
|
|
20
|
-
default: { filter: (updates) => updates },
|
|
21
|
-
})
|
|
22
|
-
|
|
23
|
-
export const redactedUpdateSelectors = AtomIO.selectorFamily<
|
|
24
|
-
AtomIO.TransactionUpdate<any> | null,
|
|
25
|
-
[transactionKey: string, updateId: string]
|
|
26
|
-
>({
|
|
27
|
-
key: `redactedUpdate`,
|
|
28
|
-
get:
|
|
29
|
-
([transactionKey, updateId]) =>
|
|
30
|
-
({ get, find }) => {
|
|
31
|
-
const update = get(find(completeUpdateAtoms, updateId))
|
|
32
|
-
const { filter } = get(find(transactionRedactorAtoms, transactionKey))
|
|
33
|
-
|
|
34
|
-
if (update && filter) {
|
|
35
|
-
return { ...update, updates: filter(update.updates) }
|
|
36
|
-
}
|
|
37
|
-
return null
|
|
38
|
-
},
|
|
39
|
-
})
|