@ikas/component-cli 1.4.0-beta.230 → 1.4.0-beta.232
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/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +17 -6
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/update-section-prop.js +2 -2
- package/dist/commands/update-section-prop.js.map +1 -1
- package/dist/utils/design-asset-room-envelope.d.ts +70 -0
- package/dist/utils/design-asset-room-envelope.d.ts.map +1 -0
- package/dist/utils/design-asset-room-envelope.js +110 -0
- package/dist/utils/design-asset-room-envelope.js.map +1 -0
- package/dist/utils/design-asset-room.d.ts +47 -0
- package/dist/utils/design-asset-room.d.ts.map +1 -0
- package/dist/utils/design-asset-room.js +251 -0
- package/dist/utils/design-asset-room.js.map +1 -0
- package/dist/utils/websocket-server.d.ts +33 -0
- package/dist/utils/websocket-server.d.ts.map +1 -1
- package/dist/utils/websocket-server.js +83 -56
- package/dist/utils/websocket-server.js.map +1 -1
- package/package.json +4 -2
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
import { readFileSync } from "fs";
|
|
2
|
+
import { HocuspocusProvider, HocuspocusProviderWebsocket } from "@hocuspocus/provider";
|
|
3
|
+
import chalk from "chalk";
|
|
4
|
+
import { WebSocket } from "ws";
|
|
5
|
+
import * as Y from "yjs";
|
|
6
|
+
import { DEV_SERVER_PEER, encodeRoomControl, encodeRoomMessage, parseRoomEnvelope, RoomChunkAssembler, } from "./design-asset-room-envelope.js";
|
|
7
|
+
export function readDesignAssetRoomEnv(env = process.env) {
|
|
8
|
+
const wsUrl = env.IKAS_DESIGN_ASSET_ROOM_WS_URL;
|
|
9
|
+
const roomId = env.IKAS_DESIGN_ASSET_ROOM_ID;
|
|
10
|
+
const tokenFile = env.IKAS_DESIGN_ASSET_ROOM_TOKEN_FILE;
|
|
11
|
+
if (!wsUrl || !roomId || !tokenFile)
|
|
12
|
+
return null;
|
|
13
|
+
let url;
|
|
14
|
+
try {
|
|
15
|
+
url = new URL(wsUrl);
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
// The token goes to this host: only over TLS (plain ws only to a local gateway).
|
|
21
|
+
const isLocal = url.hostname === "localhost" || url.hostname === "127.0.0.1";
|
|
22
|
+
if (url.protocol !== "wss:" && !(url.protocol === "ws:" && isLocal))
|
|
23
|
+
return null;
|
|
24
|
+
const segments = url.pathname.split("/").filter(Boolean);
|
|
25
|
+
if (segments.length < 2 || segments[segments.length - 1] !== roomId)
|
|
26
|
+
return null;
|
|
27
|
+
const documentName = segments.slice(-2).join("/");
|
|
28
|
+
return { wsUrl, documentName, tokenFile };
|
|
29
|
+
}
|
|
30
|
+
/** The dev server says it is alive this often; editors treat a longer silence as a lost dev server. */
|
|
31
|
+
const PING_INTERVAL_MS = 15_000;
|
|
32
|
+
/** An editor tab silent this long is gone (tabs ping every 30s). */
|
|
33
|
+
const PEER_TIMEOUT_MS = 75_000;
|
|
34
|
+
/** Retry after the room refused us: the CLI may still be refreshing the token file. */
|
|
35
|
+
const AUTH_RETRY_MS = 30_000;
|
|
36
|
+
/**
|
|
37
|
+
* A tab joins once for itself and once more when our `hello` crosses its
|
|
38
|
+
* first join; a second join this soon after its state went out is that echo,
|
|
39
|
+
* not a reconnect (which waits out the editor's 3s reconnect delay).
|
|
40
|
+
*/
|
|
41
|
+
const REJOIN_ECHO_MS = 2_000;
|
|
42
|
+
/** Room diagnostics with an ISO timestamp, to match against the gateway's logs. Never logs the token. */
|
|
43
|
+
function logRoom(message) {
|
|
44
|
+
console.log(chalk.gray(` [design-asset-room ${new Date().toISOString()}] ${message}`));
|
|
45
|
+
}
|
|
46
|
+
/** An editor tab of the room, as the dev server's `DevServerWebSocket` sees it. */
|
|
47
|
+
class RoomPeer {
|
|
48
|
+
tabId;
|
|
49
|
+
room;
|
|
50
|
+
viaRoom = true;
|
|
51
|
+
readyState = WebSocket.OPEN;
|
|
52
|
+
lastSeenAt = Date.now();
|
|
53
|
+
stateSentAt = Date.now();
|
|
54
|
+
hooks = null;
|
|
55
|
+
constructor(tabId, room) {
|
|
56
|
+
this.tabId = tabId;
|
|
57
|
+
this.room = room;
|
|
58
|
+
}
|
|
59
|
+
send(data) {
|
|
60
|
+
if (this.readyState !== WebSocket.OPEN)
|
|
61
|
+
return;
|
|
62
|
+
this.room.sendTo(this.tabId, data);
|
|
63
|
+
}
|
|
64
|
+
close() {
|
|
65
|
+
this.readyState = WebSocket.CLOSED;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Joins the design asset room as the dev server and feeds every editor tab of
|
|
70
|
+
* the room into `DevServerWebSocket` as a client of its own, so tab routing,
|
|
71
|
+
* request ids and initial state work exactly as on the localhost socket.
|
|
72
|
+
* Messages travel as Hocuspocus stateless messages (see the envelope module).
|
|
73
|
+
*/
|
|
74
|
+
export class DesignAssetRoomBridge {
|
|
75
|
+
env;
|
|
76
|
+
server;
|
|
77
|
+
provider = null;
|
|
78
|
+
peers = new Map();
|
|
79
|
+
assembler = new RoomChunkAssembler();
|
|
80
|
+
pingTimer = null;
|
|
81
|
+
authRetryTimer = null;
|
|
82
|
+
hasJoined = false;
|
|
83
|
+
hasWarnedAuth = false;
|
|
84
|
+
constructor(env, server) {
|
|
85
|
+
this.env = env;
|
|
86
|
+
this.server = server;
|
|
87
|
+
}
|
|
88
|
+
start() {
|
|
89
|
+
logRoom(`connecting to ${this.env.wsUrl} as document ${this.env.documentName} (token file ${this.env.tokenFile})`);
|
|
90
|
+
const websocketProvider = new HocuspocusProviderWebsocket({
|
|
91
|
+
url: this.env.wsUrl,
|
|
92
|
+
WebSocketPolyfill: WebSocket,
|
|
93
|
+
});
|
|
94
|
+
this.provider = new HocuspocusProvider({
|
|
95
|
+
websocketProvider,
|
|
96
|
+
name: this.env.documentName,
|
|
97
|
+
document: new Y.Doc(),
|
|
98
|
+
// Read on every (re)connect: the CLI keeps the file fresh. Never logged.
|
|
99
|
+
token: () => {
|
|
100
|
+
try {
|
|
101
|
+
return readFileSync(this.env.tokenFile, "utf8").trim();
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
logRoom(`cannot read the token file: ${error.message}`);
|
|
105
|
+
return "";
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
});
|
|
109
|
+
websocketProvider.on("connect", () => logRoom("socket connected"));
|
|
110
|
+
websocketProvider.on("close", ({ event }) => logRoom(`socket closed (code ${event?.code ?? "?"}${event?.reason ? `, reason ${event.reason}` : ""})`));
|
|
111
|
+
this.provider.on("authenticated", () => {
|
|
112
|
+
logRoom("authenticated");
|
|
113
|
+
this.onJoined();
|
|
114
|
+
});
|
|
115
|
+
this.provider.on("authenticationFailed", ({ reason }) => {
|
|
116
|
+
logRoom(`authentication failed: ${reason}`);
|
|
117
|
+
this.onRefused();
|
|
118
|
+
});
|
|
119
|
+
this.provider.on("disconnect", () => this.onLeft());
|
|
120
|
+
this.provider.on("stateless", ({ payload }) => this.onStateless(payload));
|
|
121
|
+
// A provider given its own socket does not attach to it by itself.
|
|
122
|
+
this.provider.attach();
|
|
123
|
+
this.server.roomBroadcast = (data) => this.sendTo(undefined, data);
|
|
124
|
+
this.pingTimer = setInterval(() => this.tick(), PING_INTERVAL_MS);
|
|
125
|
+
this.pingTimer.unref();
|
|
126
|
+
}
|
|
127
|
+
stop() {
|
|
128
|
+
if (this.pingTimer)
|
|
129
|
+
clearInterval(this.pingTimer);
|
|
130
|
+
if (this.authRetryTimer)
|
|
131
|
+
clearTimeout(this.authRetryTimer);
|
|
132
|
+
this.pingTimer = null;
|
|
133
|
+
this.authRetryTimer = null;
|
|
134
|
+
this.server.roomBroadcast = null;
|
|
135
|
+
this.dropAllPeers();
|
|
136
|
+
const websocketProvider = this.provider?.configuration.websocketProvider;
|
|
137
|
+
this.provider?.destroy();
|
|
138
|
+
websocketProvider?.destroy();
|
|
139
|
+
this.provider = null;
|
|
140
|
+
}
|
|
141
|
+
/** Sends one serialized protocol message to one tab, or to every tab when `tabId` is undefined. */
|
|
142
|
+
sendTo(tabId, data) {
|
|
143
|
+
if (!this.provider?.isAuthenticated)
|
|
144
|
+
return;
|
|
145
|
+
for (const payload of encodeRoomMessage(DEV_SERVER_PEER, data, tabId)) {
|
|
146
|
+
this.provider.sendStateless(payload);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
onJoined() {
|
|
150
|
+
if (this.authRetryTimer)
|
|
151
|
+
clearTimeout(this.authRetryTimer);
|
|
152
|
+
this.authRetryTimer = null;
|
|
153
|
+
this.hasWarnedAuth = false;
|
|
154
|
+
if (!this.hasJoined)
|
|
155
|
+
console.log(chalk.green(" Joined the design asset room — waiting for the editor"));
|
|
156
|
+
this.hasJoined = true;
|
|
157
|
+
// Tabs that were already here answer with `join` and get their initial state.
|
|
158
|
+
this.provider?.sendStateless(encodeRoomControl(DEV_SERVER_PEER, "hello"));
|
|
159
|
+
}
|
|
160
|
+
onRefused() {
|
|
161
|
+
if (!this.hasWarnedAuth) {
|
|
162
|
+
this.hasWarnedAuth = true;
|
|
163
|
+
console.log(chalk.yellow(" The design asset room refused this dev server (room expired or session ended). Retrying — restart `ikas theme dev` if this persists."));
|
|
164
|
+
}
|
|
165
|
+
if (this.authRetryTimer)
|
|
166
|
+
return;
|
|
167
|
+
this.authRetryTimer = setTimeout(() => {
|
|
168
|
+
this.authRetryTimer = null;
|
|
169
|
+
const websocketProvider = this.provider?.configuration.websocketProvider;
|
|
170
|
+
websocketProvider?.disconnect();
|
|
171
|
+
void websocketProvider?.connect();
|
|
172
|
+
}, AUTH_RETRY_MS);
|
|
173
|
+
this.authRetryTimer.unref();
|
|
174
|
+
}
|
|
175
|
+
/** Lost the gateway: tabs re-join after our `hello` once we are back. */
|
|
176
|
+
onLeft() {
|
|
177
|
+
this.dropAllPeers();
|
|
178
|
+
}
|
|
179
|
+
onStateless(payload) {
|
|
180
|
+
const envelope = parseRoomEnvelope(payload);
|
|
181
|
+
// Only editor tabs talk to us; another dev server in the room is ignored.
|
|
182
|
+
if (!envelope || envelope.from === DEV_SERVER_PEER)
|
|
183
|
+
return;
|
|
184
|
+
if (envelope.to && envelope.to !== DEV_SERVER_PEER)
|
|
185
|
+
return;
|
|
186
|
+
const tabId = envelope.from;
|
|
187
|
+
if (envelope.ctl === "leave") {
|
|
188
|
+
this.dropPeer(tabId);
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
if (envelope.ctl === "join") {
|
|
192
|
+
const existing = this.peers.get(tabId);
|
|
193
|
+
if (existing) {
|
|
194
|
+
existing.lastSeenAt = Date.now();
|
|
195
|
+
if (existing.lastSeenAt - existing.stateSentAt < REJOIN_ECHO_MS)
|
|
196
|
+
return;
|
|
197
|
+
// The tab reconnected (or we said hello again): resend its state.
|
|
198
|
+
existing.stateSentAt = existing.lastSeenAt;
|
|
199
|
+
existing.hooks?.receive(JSON.stringify({ type: "request-state" }));
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
this.addPeer(tabId);
|
|
203
|
+
}
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
const data = this.messageOf(envelope);
|
|
207
|
+
if (data === null)
|
|
208
|
+
return;
|
|
209
|
+
const peer = this.peers.get(tabId) ?? this.addPeer(tabId);
|
|
210
|
+
peer.lastSeenAt = Date.now();
|
|
211
|
+
peer.hooks?.receive(data);
|
|
212
|
+
}
|
|
213
|
+
messageOf(envelope) {
|
|
214
|
+
if (envelope.chunk)
|
|
215
|
+
return this.assembler.accept(envelope);
|
|
216
|
+
if (envelope.msg === undefined)
|
|
217
|
+
return null;
|
|
218
|
+
return JSON.stringify(envelope.msg);
|
|
219
|
+
}
|
|
220
|
+
addPeer(tabId) {
|
|
221
|
+
const peer = new RoomPeer(tabId, this);
|
|
222
|
+
this.peers.set(tabId, peer);
|
|
223
|
+
// Registering sends the tab its initial state.
|
|
224
|
+
peer.hooks = this.server.attachRoomClient(peer);
|
|
225
|
+
return peer;
|
|
226
|
+
}
|
|
227
|
+
dropPeer(tabId) {
|
|
228
|
+
const peer = this.peers.get(tabId);
|
|
229
|
+
if (!peer)
|
|
230
|
+
return;
|
|
231
|
+
this.peers.delete(tabId);
|
|
232
|
+
this.assembler.forget(tabId);
|
|
233
|
+
peer.close();
|
|
234
|
+
peer.hooks?.close();
|
|
235
|
+
}
|
|
236
|
+
dropAllPeers() {
|
|
237
|
+
for (const tabId of [...this.peers.keys()])
|
|
238
|
+
this.dropPeer(tabId);
|
|
239
|
+
}
|
|
240
|
+
tick() {
|
|
241
|
+
if (this.provider?.isAuthenticated) {
|
|
242
|
+
this.provider.sendStateless(encodeRoomControl(DEV_SERVER_PEER, "ping"));
|
|
243
|
+
}
|
|
244
|
+
const staleBefore = Date.now() - PEER_TIMEOUT_MS;
|
|
245
|
+
for (const peer of [...this.peers.values()]) {
|
|
246
|
+
if (peer.lastSeenAt < staleBefore)
|
|
247
|
+
this.dropPeer(peer.tabId);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=design-asset-room.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"design-asset-room.js","sourceRoot":"","sources":["../../src/utils/design-asset-room.ts"],"names":[],"mappings":"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"}
|
|
@@ -486,6 +486,23 @@ export interface ArchiveProjectCommandResult {
|
|
|
486
486
|
/** The zip itself, base64 — the editor hands it to the ikas backend. */
|
|
487
487
|
contentBase64: string;
|
|
488
488
|
}
|
|
489
|
+
/**
|
|
490
|
+
* What the server needs of a connected client: a localhost socket, or an
|
|
491
|
+
* editor tab that reached the dev server through the design asset room
|
|
492
|
+
* (see `design-asset-room.ts`). `readyState` uses the `ws` constants.
|
|
493
|
+
*/
|
|
494
|
+
export interface DevServerClient {
|
|
495
|
+
readonly readyState: number;
|
|
496
|
+
send(data: string): void;
|
|
497
|
+
close(): void;
|
|
498
|
+
/** An editor tab in the design asset room: broadcasts reach it through `roomBroadcast`. */
|
|
499
|
+
readonly viaRoom?: boolean;
|
|
500
|
+
}
|
|
501
|
+
/** Hooks the design asset room uses to feed one of its editor tabs into the server. */
|
|
502
|
+
export interface DevServerClientHooks {
|
|
503
|
+
receive(data: string): void;
|
|
504
|
+
close(): void;
|
|
505
|
+
}
|
|
489
506
|
/**
|
|
490
507
|
* Dev server WebSocket manager
|
|
491
508
|
*/
|
|
@@ -498,11 +515,27 @@ export declare class DevServerWebSocket {
|
|
|
498
515
|
private forwardedEditorActions;
|
|
499
516
|
/** What a control client sends to drive the editor (see `writeDevServerToken`); none: every action is refused. */
|
|
500
517
|
private token;
|
|
518
|
+
private handlers;
|
|
519
|
+
/**
|
|
520
|
+
* Sends one message to every editor tab in the design asset room (set while
|
|
521
|
+
* the room is joined). A broadcast goes out once for the whole room instead
|
|
522
|
+
* of once per tab, since the room relays every message to every tab anyway.
|
|
523
|
+
*/
|
|
524
|
+
roomBroadcast: ((data: string) => void) | null;
|
|
501
525
|
constructor(port?: number, token?: string);
|
|
502
526
|
/**
|
|
503
527
|
* Start the WebSocket server
|
|
504
528
|
*/
|
|
505
529
|
start(handlers: EditorMessageHandlers): Promise<void>;
|
|
530
|
+
/**
|
|
531
|
+
* Adds an editor tab that joined the design asset room. Only editors come
|
|
532
|
+
* through the room (control clients stay on localhost), and they can never
|
|
533
|
+
* send `editor-action`: they hold no dev server token.
|
|
534
|
+
*/
|
|
535
|
+
attachRoomClient(client: DevServerClient): DevServerClientHooks;
|
|
536
|
+
/** Registers a connected client, sends an editor its initial state, and returns its message/close hooks. */
|
|
537
|
+
private addClient;
|
|
538
|
+
private sendInitialState;
|
|
506
539
|
/**
|
|
507
540
|
* Handle incoming messages from editor
|
|
508
541
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket-server.d.ts","sourceRoot":"","sources":["../../src/utils/websocket-server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"websocket-server.d.ts","sourceRoot":"","sources":["../../src/utils/websocket-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,13 @@ export class DevServerWebSocket {
|
|
|
25
25
|
forwardedEditorActions = new Map();
|
|
26
26
|
/** What a control client sends to drive the editor (see `writeDevServerToken`); none: every action is refused. */
|
|
27
27
|
token;
|
|
28
|
+
handlers = null;
|
|
29
|
+
/**
|
|
30
|
+
* Sends one message to every editor tab in the design asset room (set while
|
|
31
|
+
* the room is joined). A broadcast goes out once for the whole room instead
|
|
32
|
+
* of once per tab, since the room relays every message to every tab anyway.
|
|
33
|
+
*/
|
|
34
|
+
roomBroadcast = null;
|
|
28
35
|
constructor(port = 5201, token) {
|
|
29
36
|
this.port = port;
|
|
30
37
|
this.token = token;
|
|
@@ -33,6 +40,7 @@ export class DevServerWebSocket {
|
|
|
33
40
|
* Start the WebSocket server
|
|
34
41
|
*/
|
|
35
42
|
start(handlers) {
|
|
43
|
+
this.handlers = handlers;
|
|
36
44
|
return new Promise((resolve, reject) => {
|
|
37
45
|
try {
|
|
38
46
|
// HTTP server wraps the WS so we can answer Chrome's Private Network
|
|
@@ -88,53 +96,12 @@ export class DevServerWebSocket {
|
|
|
88
96
|
catch {
|
|
89
97
|
// Malformed upgrade URL — treat as an editor, the safe default.
|
|
90
98
|
}
|
|
91
|
-
const
|
|
99
|
+
const hooks = this.addClient(ws, {
|
|
92
100
|
isControl,
|
|
93
101
|
authorized: !!this.token && isSameToken(token, this.token),
|
|
94
|
-
lastActivityAt: Date.now(),
|
|
95
|
-
lastVisibleAt: 0
|
|
96
|
-
};
|
|
97
|
-
this.clientInfo.set(ws, clientInfo);
|
|
98
|
-
if (!isControl)
|
|
99
|
-
console.log(chalk.green(" Editor connected"));
|
|
100
|
-
// Send initial state on connection. Control clients discard it, and
|
|
101
|
-
// it carries every component's compiled JS/CSS — no point shipping
|
|
102
|
-
// the whole dev bundle to a socket that exists to send one command.
|
|
103
|
-
if (!isControl) {
|
|
104
|
-
const state = handlers.onRequestState();
|
|
105
|
-
this.sendTo(ws, {
|
|
106
|
-
type: "initial-state",
|
|
107
|
-
payload: {
|
|
108
|
-
components: state.components,
|
|
109
|
-
sharedModules: state.sharedModules,
|
|
110
|
-
globalStyles: state.globalStyles,
|
|
111
|
-
i18n: state.i18n,
|
|
112
|
-
warnings: state.warnings,
|
|
113
|
-
timestamp: Date.now()
|
|
114
|
-
}
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
ws.on("message", (data) => {
|
|
118
|
-
try {
|
|
119
|
-
const message = JSON.parse(data.toString());
|
|
120
|
-
this.handleMessage(ws, message, handlers).catch((e) => {
|
|
121
|
-
console.error(chalk.red(" Unhandled error in message handler:"), e);
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
catch (e) {
|
|
125
|
-
console.error(chalk.red(" Invalid message from editor"));
|
|
126
|
-
}
|
|
127
|
-
});
|
|
128
|
-
ws.on("close", () => {
|
|
129
|
-
this.clientInfo.delete(ws);
|
|
130
|
-
this.dropPendingEditorActionsForClient(ws);
|
|
131
|
-
// Read the live flag, not the connect-time one: legacy control
|
|
132
|
-
// clients (no `?client=control`) are only marked once they send an
|
|
133
|
-
// `editor-action`. The object outlives the map entry, which the
|
|
134
|
-
// "error" handler may already have removed.
|
|
135
|
-
if (!clientInfo.isControl)
|
|
136
|
-
console.log(chalk.yellow(" Editor disconnected"));
|
|
137
102
|
});
|
|
103
|
+
ws.on("message", (data) => hooks.receive(data.toString()));
|
|
104
|
+
ws.on("close", () => hooks.close());
|
|
138
105
|
ws.on("error", (error) => {
|
|
139
106
|
console.error(chalk.red(" WebSocket error:"), error.message);
|
|
140
107
|
this.clientInfo.delete(ws);
|
|
@@ -158,6 +125,70 @@ export class DevServerWebSocket {
|
|
|
158
125
|
}
|
|
159
126
|
});
|
|
160
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* Adds an editor tab that joined the design asset room. Only editors come
|
|
130
|
+
* through the room (control clients stay on localhost), and they can never
|
|
131
|
+
* send `editor-action`: they hold no dev server token.
|
|
132
|
+
*/
|
|
133
|
+
attachRoomClient(client) {
|
|
134
|
+
return this.addClient(client, { isControl: false, authorized: false });
|
|
135
|
+
}
|
|
136
|
+
/** Registers a connected client, sends an editor its initial state, and returns its message/close hooks. */
|
|
137
|
+
addClient(client, access) {
|
|
138
|
+
const clientInfo = {
|
|
139
|
+
...access,
|
|
140
|
+
lastActivityAt: Date.now(),
|
|
141
|
+
lastVisibleAt: 0
|
|
142
|
+
};
|
|
143
|
+
this.clientInfo.set(client, clientInfo);
|
|
144
|
+
if (!access.isControl)
|
|
145
|
+
console.log(chalk.green(" Editor connected"));
|
|
146
|
+
// Send initial state on connection. Control clients discard it, and
|
|
147
|
+
// it carries every component's compiled JS/CSS — no point shipping
|
|
148
|
+
// the whole dev bundle to a socket that exists to send one command.
|
|
149
|
+
if (!access.isControl && this.handlers) {
|
|
150
|
+
this.sendInitialState(client, this.handlers);
|
|
151
|
+
}
|
|
152
|
+
return {
|
|
153
|
+
receive: (data) => {
|
|
154
|
+
if (!this.handlers)
|
|
155
|
+
return;
|
|
156
|
+
try {
|
|
157
|
+
const message = JSON.parse(data);
|
|
158
|
+
this.handleMessage(client, message, this.handlers).catch((e) => {
|
|
159
|
+
console.error(chalk.red(" Unhandled error in message handler:"), e);
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
catch (e) {
|
|
163
|
+
console.error(chalk.red(" Invalid message from editor"));
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
close: () => {
|
|
167
|
+
this.clientInfo.delete(client);
|
|
168
|
+
this.dropPendingEditorActionsForClient(client);
|
|
169
|
+
// Read the live flag, not the connect-time one: legacy control
|
|
170
|
+
// clients (no `?client=control`) are only marked once they send an
|
|
171
|
+
// `editor-action`. The object outlives the map entry, which the
|
|
172
|
+
// "error" handler may already have removed.
|
|
173
|
+
if (!clientInfo.isControl)
|
|
174
|
+
console.log(chalk.yellow(" Editor disconnected"));
|
|
175
|
+
},
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
sendInitialState(client, handlers) {
|
|
179
|
+
const state = handlers.onRequestState();
|
|
180
|
+
this.sendTo(client, {
|
|
181
|
+
type: "initial-state",
|
|
182
|
+
payload: {
|
|
183
|
+
components: state.components,
|
|
184
|
+
sharedModules: state.sharedModules,
|
|
185
|
+
globalStyles: state.globalStyles,
|
|
186
|
+
i18n: state.i18n,
|
|
187
|
+
warnings: state.warnings,
|
|
188
|
+
timestamp: Date.now()
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
}
|
|
161
192
|
/**
|
|
162
193
|
* Handle incoming messages from editor
|
|
163
194
|
*/
|
|
@@ -193,18 +224,7 @@ export class DevServerWebSocket {
|
|
|
193
224
|
break;
|
|
194
225
|
}
|
|
195
226
|
case "request-state": {
|
|
196
|
-
|
|
197
|
-
this.sendTo(ws, {
|
|
198
|
-
type: "initial-state",
|
|
199
|
-
payload: {
|
|
200
|
-
components: state.components,
|
|
201
|
-
sharedModules: state.sharedModules,
|
|
202
|
-
globalStyles: state.globalStyles,
|
|
203
|
-
i18n: state.i18n,
|
|
204
|
-
warnings: state.warnings,
|
|
205
|
-
timestamp: Date.now()
|
|
206
|
-
}
|
|
207
|
-
});
|
|
227
|
+
this.sendInitialState(ws, handlers);
|
|
208
228
|
break;
|
|
209
229
|
}
|
|
210
230
|
case "ping":
|
|
@@ -709,11 +729,18 @@ export class DevServerWebSocket {
|
|
|
709
729
|
*/
|
|
710
730
|
broadcast(message) {
|
|
711
731
|
const data = JSON.stringify(message);
|
|
732
|
+
let hasRoomClients = false;
|
|
712
733
|
for (const client of this.clientInfo.keys()) {
|
|
734
|
+
if (client.viaRoom) {
|
|
735
|
+
hasRoomClients = true;
|
|
736
|
+
continue;
|
|
737
|
+
}
|
|
713
738
|
if (client.readyState === WebSocket.OPEN) {
|
|
714
739
|
client.send(data);
|
|
715
740
|
}
|
|
716
741
|
}
|
|
742
|
+
if (hasRoomClients)
|
|
743
|
+
this.roomBroadcast?.(data);
|
|
717
744
|
}
|
|
718
745
|
/**
|
|
719
746
|
* Broadcast a component update
|