atom.io 0.40.8 → 0.40.9
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-Cl8Af3a2.js → chunk-CTAAG5j7.js} +3 -1
- package/dist/eslint-plugin/index.js +2 -3
- package/dist/eslint-plugin/index.js.map +1 -1
- package/dist/internal/index.d.ts +4 -3
- package/dist/internal/index.d.ts.map +1 -1
- package/dist/internal/index.js +1129 -3
- package/dist/internal/index.js.map +1 -1
- package/dist/react-devtools/index.js.map +1 -1
- package/dist/realtime/index.d.ts +29 -5
- package/dist/realtime/index.d.ts.map +1 -1
- package/dist/realtime/index.js +46 -3
- package/dist/realtime/index.js.map +1 -1
- package/dist/realtime-client/index.d.ts +1 -2
- package/dist/realtime-client/index.d.ts.map +1 -1
- package/dist/realtime-client/index.js +1 -2
- package/dist/realtime-client/index.js.map +1 -1
- package/dist/realtime-react/index.d.ts +4 -4
- package/dist/realtime-react/index.d.ts.map +1 -1
- package/dist/realtime-react/index.js +1 -2
- package/dist/realtime-react/index.js.map +1 -1
- package/dist/realtime-server/index.d.ts +5 -16
- package/dist/realtime-server/index.d.ts.map +1 -1
- package/dist/realtime-server/index.js +6 -10
- package/dist/realtime-server/index.js.map +1 -1
- package/dist/realtime-testing/index.d.ts +2 -2
- package/dist/realtime-testing/index.d.ts.map +1 -1
- package/dist/realtime-testing/index.js +2 -2
- package/dist/realtime-testing/index.js.map +1 -1
- package/dist/transceivers/set-rtx/index.d.ts +1 -1
- package/dist/transceivers/set-rtx/index.d.ts.map +1 -1
- package/dist/transceivers/set-rtx/index.js +2 -2
- package/dist/transceivers/set-rtx/index.js.map +1 -1
- package/dist/transceivers/u-list/index.d.ts +29 -0
- package/dist/transceivers/u-list/index.d.ts.map +1 -0
- package/dist/transceivers/u-list/index.js +87 -0
- package/dist/transceivers/u-list/index.js.map +1 -0
- package/package.json +8 -4
- package/src/internal/mutable/tracker.ts +21 -21
- package/src/internal/mutable/transceiver.ts +4 -4
- package/src/internal/set-state/index.ts +1 -0
- package/src/{realtime-server → realtime}/employ-socket.ts +2 -2
- package/src/realtime/index.ts +2 -0
- package/src/realtime/shared-room-store.ts +12 -11
- package/src/realtime-client/continuity/register-and-attempt-confirmed-update.ts +1 -1
- package/src/realtime-client/push-state.ts +1 -2
- package/src/realtime-react/use-single-effect.ts +1 -1
- package/src/realtime-server/continuity/continuity-store.ts +1 -1
- package/src/realtime-server/continuity/provide-outcomes.ts +2 -2
- package/src/realtime-server/continuity/provide-perspectives.ts +1 -2
- package/src/realtime-server/continuity/provide-startup-payloads.ts +3 -3
- package/src/realtime-server/continuity/receive-action-requests.ts +2 -4
- package/src/realtime-server/continuity/track-acknowledgements.ts +2 -3
- package/src/realtime-server/index.ts +0 -1
- package/src/realtime-server/ipc-sockets/custom-socket.ts +1 -2
- package/src/realtime-server/ipc-sockets/parent-socket.ts +2 -4
- package/src/realtime-server/realtime-family-provider.ts +1 -1
- package/src/realtime-server/realtime-mutable-family-provider.ts +1 -1
- package/src/realtime-server/realtime-mutable-provider.ts +1 -1
- package/src/realtime-server/realtime-server-stores/server-room-external-store.ts +2 -2
- package/src/realtime-server/realtime-server-stores/server-user-store.ts +8 -9
- package/src/realtime-server/realtime-state-provider.ts +1 -1
- package/src/realtime-server/realtime-state-receiver.ts +3 -6
- package/src/realtime-server/server-config.ts +1 -2
- package/src/realtime-testing/setup-realtime-test.tsx +3 -4
- package/src/transceivers/set-rtx/set-rtx.ts +3 -3
- package/src/transceivers/u-list/index.ts +1 -0
- package/src/transceivers/u-list/u-list.ts +123 -0
- package/dist/employ-socket-D6wgByWh.js +0 -12
- package/dist/employ-socket-D6wgByWh.js.map +0 -1
- package/dist/has-role-CMlaUlaf.js +0 -1133
- package/dist/has-role-CMlaUlaf.js.map +0 -1
- package/dist/is-fn-DY1wZ-md.js +0 -10
- package/dist/is-fn-DY1wZ-md.js.map +0 -1
- package/dist/mutex-store-CSvxY9i3.js +0 -11
- package/dist/mutex-store-CSvxY9i3.js.map +0 -1
- package/dist/shared-room-store-BfW3nWif.js +0 -31
- package/dist/shared-room-store-BfW3nWif.js.map +0 -1
- package/dist/shared-room-store-D2o4ZLjC.d.ts +0 -15
- package/dist/shared-room-store-D2o4ZLjC.d.ts.map +0 -1
- /package/src/{realtime-server → realtime}/socket-interface.ts +0 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import type { Transceiver, TransceiverMode } from "atom.io/internal"
|
|
2
|
+
import { Subject } from "atom.io/internal"
|
|
3
|
+
import type { Json, primitive, stringified } from "atom.io/json"
|
|
4
|
+
import { stringifyJson } from "atom.io/json"
|
|
5
|
+
|
|
6
|
+
export type UListUpdateType = `add` | `clear` | `del`
|
|
7
|
+
export type UListUpdate<P extends primitive> =
|
|
8
|
+
| `${`add` | `del`}:${stringified<P>}`
|
|
9
|
+
| `clear:${stringified<P[]>}`
|
|
10
|
+
|
|
11
|
+
export interface UListJson<P extends primitive> extends Json.Object {
|
|
12
|
+
members: P[]
|
|
13
|
+
}
|
|
14
|
+
export class UList<P extends primitive>
|
|
15
|
+
extends Set<P>
|
|
16
|
+
implements Transceiver<ReadonlySet<P>, UListUpdate<P>, UListJson<P>>
|
|
17
|
+
{
|
|
18
|
+
public mode: TransceiverMode = `record`
|
|
19
|
+
public readonly subject: Subject<UListUpdate<P>> = new Subject<
|
|
20
|
+
UListUpdate<P>
|
|
21
|
+
>()
|
|
22
|
+
|
|
23
|
+
public constructor(values?: Iterable<P>) {
|
|
24
|
+
super(values)
|
|
25
|
+
if (values instanceof UList) {
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
public readonly READONLY_VIEW: ReadonlySet<P> = this
|
|
30
|
+
|
|
31
|
+
public toJSON(): UListJson<P> {
|
|
32
|
+
return {
|
|
33
|
+
members: [...this],
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
public static fromJSON<P extends primitive>(json: UListJson<P>): UList<P> {
|
|
38
|
+
return new UList<P>(json.members)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
public add(value: P): this {
|
|
42
|
+
const result = super.add(value)
|
|
43
|
+
if (this.mode === `record`) {
|
|
44
|
+
this.emit(`add:${stringifyJson<P>(value)}`)
|
|
45
|
+
}
|
|
46
|
+
return result
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
public clear(): void {
|
|
50
|
+
const capturedContents = this.mode === `record` ? [...this] : null
|
|
51
|
+
super.clear()
|
|
52
|
+
if (capturedContents) {
|
|
53
|
+
this.emit(`clear:${stringifyJson(capturedContents)}`)
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
public delete(value: P): boolean {
|
|
58
|
+
const result = super.delete(value)
|
|
59
|
+
if (this.mode === `record`) {
|
|
60
|
+
this.emit(`del:${stringifyJson<P>(value)}`)
|
|
61
|
+
}
|
|
62
|
+
return result
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
public subscribe(
|
|
66
|
+
key: string,
|
|
67
|
+
fn: (update: UListUpdate<P>) => void,
|
|
68
|
+
): () => void {
|
|
69
|
+
return this.subject.subscribe(key, fn)
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
public emit(update: UListUpdate<P>): void {
|
|
73
|
+
this.subject.next(update)
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
private doStep(update: UListUpdate<P>): void {
|
|
77
|
+
const typeValueBreak = update.indexOf(`:`)
|
|
78
|
+
const type = update.substring(0, typeValueBreak) as UListUpdateType
|
|
79
|
+
const value = update.substring(typeValueBreak + 1)
|
|
80
|
+
switch (type) {
|
|
81
|
+
case `add`:
|
|
82
|
+
this.add(JSON.parse(value))
|
|
83
|
+
break
|
|
84
|
+
case `del`:
|
|
85
|
+
this.delete(JSON.parse(value))
|
|
86
|
+
break
|
|
87
|
+
case `clear`:
|
|
88
|
+
this.clear()
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
public do(update: UListUpdate<P>): null {
|
|
93
|
+
this.mode = `playback`
|
|
94
|
+
this.doStep(update)
|
|
95
|
+
this.mode = `record`
|
|
96
|
+
return null
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
public undoStep(update: UListUpdate<P>): void {
|
|
100
|
+
const breakpoint = update.indexOf(`:`)
|
|
101
|
+
const type = update.substring(0, breakpoint) as UListUpdateType
|
|
102
|
+
const value = update.substring(breakpoint + 1)
|
|
103
|
+
switch (type) {
|
|
104
|
+
case `add`:
|
|
105
|
+
this.delete(JSON.parse(value))
|
|
106
|
+
break
|
|
107
|
+
case `del`:
|
|
108
|
+
this.add(JSON.parse(value))
|
|
109
|
+
break
|
|
110
|
+
case `clear`: {
|
|
111
|
+
const values = JSON.parse(value) as P[]
|
|
112
|
+
for (const v of values) this.add(v)
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
public undo(update: UListUpdate<P>): number | null {
|
|
118
|
+
this.mode = `playback`
|
|
119
|
+
this.undoStep(update)
|
|
120
|
+
this.mode = `record`
|
|
121
|
+
return null
|
|
122
|
+
}
|
|
123
|
+
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
//#region src/realtime-server/employ-socket.ts
|
|
2
|
-
function employSocket(socket, event, handleEvent) {
|
|
3
|
-
socket.on(event, handleEvent);
|
|
4
|
-
const retireSocket = () => {
|
|
5
|
-
socket.off(event, handleEvent);
|
|
6
|
-
};
|
|
7
|
-
return retireSocket;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
//#endregion
|
|
11
|
-
export { employSocket };
|
|
12
|
-
//# sourceMappingURL=employ-socket-D6wgByWh.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"employ-socket-D6wgByWh.js","names":[],"sources":["../src/realtime-server/employ-socket.ts"],"sourcesContent":["import type { Events } from \"./ipc-sockets\"\nimport type { Socket } from \"./socket-interface\"\n\nexport function employSocket<I extends Events, K extends string & keyof I>(\n\tsocket: Socket,\n\tevent: K,\n\thandleEvent: (...data: I[K]) => void,\n): () => void {\n\tsocket.on(event, handleEvent)\n\tconst retireSocket = () => {\n\t\tsocket.off(event, handleEvent)\n\t}\n\treturn retireSocket\n}\n"],"mappings":";AAGA,SAAgB,aACf,QACA,OACA,aACa;AACb,QAAO,GAAG,OAAO,YAAY;CAC7B,MAAM,qBAAqB;AAC1B,SAAO,IAAI,OAAO,YAAY;;AAE/B,QAAO"}
|