stitchkit 0.110.0 → 0.110.2
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/CHANGELOG.md +17 -0
- package/dist/agent-runtime/archive-spill.d.ts +61 -0
- package/dist/agent-runtime/archive-spill.d.ts.map +1 -0
- package/dist/agent-runtime/branch-contract.d.ts +102 -0
- package/dist/agent-runtime/branch-contract.d.ts.map +1 -0
- package/dist/agent-runtime/branch-events.d.ts +18 -0
- package/dist/agent-runtime/branch-events.d.ts.map +1 -0
- package/dist/agent-runtime/branch-identities.d.ts +20 -0
- package/dist/agent-runtime/branch-identities.d.ts.map +1 -0
- package/dist/agent-runtime/branch-messages.d.ts +32 -0
- package/dist/agent-runtime/branch-messages.d.ts.map +1 -0
- package/dist/agent-runtime/branch-observations.d.ts +104 -0
- package/dist/agent-runtime/branch-observations.d.ts.map +1 -0
- package/dist/agent-runtime/branch-provider.d.ts +130 -0
- package/dist/agent-runtime/branch-provider.d.ts.map +1 -0
- package/dist/agent-runtime/branch-replay.d.ts +426 -0
- package/dist/agent-runtime/branch-replay.d.ts.map +1 -0
- package/dist/agent-runtime/branch-source.d.ts +16 -0
- package/dist/agent-runtime/branch-source.d.ts.map +1 -0
- package/dist/agent-runtime/branch-transitions.d.ts +6 -0
- package/dist/agent-runtime/branch-transitions.d.ts.map +1 -0
- package/dist/agent-runtime/sqlite-history.d.ts.map +1 -1
- package/dist/agent-runtime/sqlite-purge.d.ts.map +1 -1
- package/dist/agent-runtime/store-archive.d.ts +1 -0
- package/dist/agent-runtime/store-archive.d.ts.map +1 -1
- package/dist/agent-runtime/store-branch.d.ts +5 -0
- package/dist/agent-runtime/store-branch.d.ts.map +1 -0
- package/dist/agent-runtime/store-conformance-branch.d.ts +4 -0
- package/dist/agent-runtime/store-conformance-branch.d.ts.map +1 -0
- package/dist/agent-runtime/store-conformance-lifecycle.d.ts +10 -10
- package/dist/agent-runtime/store-conformance.d.ts.map +1 -1
- package/dist/agent-runtime/store-create.d.ts +1 -1
- package/dist/agent-runtime/store-create.d.ts.map +1 -1
- package/dist/agent-runtime/store-driver-contract.d.ts +6 -0
- package/dist/agent-runtime/store-driver-contract.d.ts.map +1 -1
- package/dist/agent-runtime/store-events.d.ts +90 -0
- package/dist/agent-runtime/store-events.d.ts.map +1 -1
- package/dist/agent-runtime/store-memory-archive.d.ts +8 -0
- package/dist/agent-runtime/store-memory-archive.d.ts.map +1 -0
- package/dist/agent-runtime/store-memory-events.d.ts +7 -0
- package/dist/agent-runtime/store-memory-events.d.ts.map +1 -0
- package/dist/agent-runtime/store-memory.d.ts +1 -1
- package/dist/agent-runtime/store-memory.d.ts.map +1 -1
- package/dist/agent-runtime/store-purge.d.ts +2 -0
- package/dist/agent-runtime/store-purge.d.ts.map +1 -1
- package/dist/agent-runtime/store-reduce-run.d.ts +2 -2
- package/dist/agent-runtime/store-reduce-run.d.ts.map +1 -1
- package/dist/agent-runtime/store-reduce-shared.d.ts +1 -0
- package/dist/agent-runtime/store-reduce-shared.d.ts.map +1 -1
- package/dist/agent-runtime/store-reducer.d.ts +2 -2
- package/dist/agent-runtime/store-reducer.d.ts.map +1 -1
- package/dist/agent-runtime/store.d.ts +3 -0
- package/dist/agent-runtime/store.d.ts.map +1 -1
- package/dist/browser/socket-io-client.d.ts +6 -0
- package/dist/browser/socket-io-client.d.ts.map +1 -0
- package/dist/browser/socket-io-contract.d.ts +183 -0
- package/dist/browser/socket-io-contract.d.ts.map +1 -0
- package/dist/browser/socket-io-default-peer.d.ts +3 -0
- package/dist/browser/socket-io-default-peer.d.ts.map +1 -0
- package/dist/browser/socket-io-explicit-peer.d.ts +12 -0
- package/dist/browser/socket-io-explicit-peer.d.ts.map +1 -0
- package/dist/browser/socket-io-peer.d.ts +2 -11
- package/dist/browser/socket-io-peer.d.ts.map +1 -1
- package/dist/browser/socket-io.d.ts +5 -224
- package/dist/browser/socket-io.d.ts.map +1 -1
- package/dist/durability/events.d.ts +4 -0
- package/dist/durability/events.d.ts.map +1 -1
- package/dist/entrypoints/agent-runtime/coding-tools.js +2 -3
- package/dist/entrypoints/agent-runtime/harness.js +5 -4
- package/dist/entrypoints/agent-runtime/realtime.js +3 -3
- package/dist/entrypoints/agent-runtime/sandbox.js +4 -6
- package/dist/entrypoints/agent-runtime/sqlite/bun.js +13 -3
- package/dist/entrypoints/agent-runtime/sqlite/node.js +13 -3
- package/dist/entrypoints/agent-runtime/testing.js +89 -5
- package/dist/entrypoints/agent-runtime.d.ts +1 -0
- package/dist/entrypoints/agent-runtime.d.ts.map +1 -1
- package/dist/entrypoints/agent-runtime.js +28 -18
- package/dist/entrypoints/application/directory-inbox.js +6 -6
- package/dist/entrypoints/application.js +1 -1
- package/dist/entrypoints/cli/publish.js +2 -2
- package/dist/entrypoints/cli.js +8 -8
- package/dist/entrypoints/contract.js +1 -1
- package/dist/entrypoints/files.js +1 -1
- package/dist/entrypoints/http.d.ts +1 -0
- package/dist/entrypoints/http.d.ts.map +1 -1
- package/dist/entrypoints/http.js +6 -2
- package/dist/entrypoints/index.js +20 -411
- package/dist/entrypoints/node.js +3 -3
- package/dist/entrypoints/observability.js +1 -1
- package/dist/entrypoints/process.js +1 -1
- package/dist/entrypoints/realtime.d.ts +6 -0
- package/dist/entrypoints/realtime.d.ts.map +1 -0
- package/dist/entrypoints/realtime.js +25 -0
- package/dist/entrypoints/remote.js +1 -1
- package/dist/entrypoints/server.js +11 -11
- package/dist/entrypoints/telegram/screens.js +9 -9
- package/dist/entrypoints/telegram.js +3 -3
- package/dist/entrypoints/testing.js +2 -2
- package/dist/entrypoints/tools/connections.js +3 -3
- package/dist/entrypoints/tools/invoker.js +3 -3
- package/dist/entrypoints/tools/mcp.js +4 -4
- package/dist/entrypoints/tools.js +26 -24
- package/dist/{index-61m15a18.js → index-0d8m0kee.js} +1 -1
- package/dist/{index-dmfr2cg5.js → index-2tazbwhv.js} +6 -6
- package/dist/{index-c17xcx4k.js → index-56yx8dxp.js} +19 -96
- package/dist/{index-0gs4ymfj.js → index-6qeqdz0z.js} +7 -1
- package/dist/{index-064zxbwj.js → index-79zxnh52.js} +3 -3
- package/dist/{index-2pevnh0x.js → index-7c046kxr.js} +4 -4
- package/dist/index-86sxnvpr.js +336 -0
- package/dist/{index-jyw90rps.js → index-bm180f2d.js} +204 -84
- package/dist/{index-mnhtbqrb.js → index-dd1z5kxb.js} +2 -2
- package/dist/{index-7a1xhhdx.js → index-e1sjcjfy.js} +31 -11
- package/dist/{index-5p55xreg.js → index-e9rbhw1s.js} +67 -29
- package/dist/{index-p6mvqcbq.js → index-ghwntn9n.js} +1 -1
- package/dist/index-hqsbtvta.js +92 -0
- package/dist/{index-73cz22ds.js → index-mha6b4vk.js} +6 -6
- package/dist/index-s2bgwsyr.js +2280 -0
- package/dist/{index-fnra8n1j.js → index-s2eybn7b.js} +9 -9
- package/dist/{index-njs9gvrh.js → index-s6d8zsha.js} +6 -6
- package/dist/index-snef22zr.js +94 -0
- package/dist/{index-c0hffcmj.js → index-zbssway3.js} +19 -2
- package/dist/process/group-presence.d.ts +3 -0
- package/dist/process/group-presence.d.ts.map +1 -0
- package/dist/process/group-settlement.d.ts.map +1 -1
- package/dist/process/group.d.ts.map +1 -1
- package/llms/agent-runtime.3.txt +3 -0
- package/llms/agent-runtime.txt +60 -0
- package/llms/realtime.txt +31 -0
- package/llms/stitchkit.txt +1 -0
- package/llms-full.txt +85 -0
- package/llms.txt +3 -2
- package/package.json +5 -1
- package/dist/index-8ks9b85e.js +0 -129
- package/dist/index-d2h99n7d.js +0 -1071
- package/dist/{index-9j2atjte.js → index-2f9r0jgr.js} +3 -3
- package/dist/{index-y70v24cw.js → index-8asb62xn.js} +0 -0
- package/dist/{index-k7qdkh3n.js → index-h1spd9kv.js} +3 -3
- package/dist/{index-zgwkwr1g.js → index-jk44mbqb.js} +0 -0
- package/dist/{index-qd8x73e8.js → index-k8fbzggr.js} +0 -0
- package/dist/{index-85qve8mq.js → index-pzw0fpek.js} +0 -0
- package/dist/{index-y3nemndz.js → index-r6v4mc67.js} +3 -3
- package/dist/{index-ktjmgq9p.js → index-s0xbnpfh.js} +3 -3
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
import {
|
|
2
|
+
RealtimeRequestTimeoutError2,
|
|
3
|
+
RealtimeRequestDisconnectedError2
|
|
4
|
+
} from "./index-4s0fep5q.js";
|
|
5
|
+
import {
|
|
6
|
+
isModuleNotFound
|
|
7
|
+
} from "./index-srs8hj9c.js";
|
|
8
|
+
import {
|
|
9
|
+
realtimeRequestTraces,
|
|
10
|
+
createRequestTracer,
|
|
11
|
+
bindRealtimeClient2
|
|
12
|
+
} from "./index-pvh3z03x.js";
|
|
13
|
+
|
|
14
|
+
// src/browser/retained.ts
|
|
15
|
+
function createRetainedTopics2() {
|
|
16
|
+
const last = {};
|
|
17
|
+
return {
|
|
18
|
+
record(topic, payload) {
|
|
19
|
+
last[topic] = payload;
|
|
20
|
+
},
|
|
21
|
+
replay(topic, handler) {
|
|
22
|
+
const value = last[topic];
|
|
23
|
+
if (value !== undefined)
|
|
24
|
+
handler(value);
|
|
25
|
+
},
|
|
26
|
+
get(topic) {
|
|
27
|
+
return last[topic];
|
|
28
|
+
},
|
|
29
|
+
clear(topic) {
|
|
30
|
+
if (topic !== undefined) {
|
|
31
|
+
delete last[topic];
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
for (const key of Object.keys(last))
|
|
35
|
+
Reflect.deleteProperty(last, key);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// src/browser/socket-io-connection.ts
|
|
41
|
+
function toIoAuth(auth) {
|
|
42
|
+
if (typeof auth !== "function")
|
|
43
|
+
return auth;
|
|
44
|
+
return (cb) => {
|
|
45
|
+
Promise.resolve().then(auth).then(cb, () => cb({}));
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function ioOptions(config) {
|
|
49
|
+
return {
|
|
50
|
+
path: config.path ?? "/socket.io/",
|
|
51
|
+
withCredentials: config.withCredentials ?? true,
|
|
52
|
+
auth: toIoAuth(config.auth),
|
|
53
|
+
...config.query && { query: config.query },
|
|
54
|
+
...config.extraHeaders && { extraHeaders: config.extraHeaders },
|
|
55
|
+
transports: config.transports ?? ["websocket", "polling"],
|
|
56
|
+
autoConnect: false,
|
|
57
|
+
reconnection: true,
|
|
58
|
+
reconnectionAttempts: config.reconnectionAttempts ?? Infinity,
|
|
59
|
+
reconnectionDelay: config.reconnectionDelay ?? 1000,
|
|
60
|
+
reconnectionDelayMax: config.reconnectionDelayMax ?? 5000,
|
|
61
|
+
timeout: config.timeout ?? 20000
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
function reportPeerFailure(config, error) {
|
|
65
|
+
if (!config.onConnectError)
|
|
66
|
+
throw error;
|
|
67
|
+
config.onConnectError({
|
|
68
|
+
message: error instanceof Error ? error.message : String(error),
|
|
69
|
+
data: error,
|
|
70
|
+
terminal: true
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
function awaitAcknowledgement(input) {
|
|
74
|
+
const { active, event } = input;
|
|
75
|
+
return new Promise((resolve, reject) => {
|
|
76
|
+
let settled = false;
|
|
77
|
+
const finish = (result) => {
|
|
78
|
+
if (settled)
|
|
79
|
+
return;
|
|
80
|
+
settled = true;
|
|
81
|
+
input.pendingRequestDisconnects.delete(onDisconnect);
|
|
82
|
+
active.off("disconnect", onDisconnect);
|
|
83
|
+
result();
|
|
84
|
+
};
|
|
85
|
+
const onDisconnect = () => {
|
|
86
|
+
finish(() => {
|
|
87
|
+
input.closeTrace("disconnected");
|
|
88
|
+
reject(new RealtimeRequestDisconnectedError2(event));
|
|
89
|
+
});
|
|
90
|
+
};
|
|
91
|
+
input.pendingRequestDisconnects.add(onDisconnect);
|
|
92
|
+
active.on("disconnect", onDisconnect);
|
|
93
|
+
const acknowledgement = input.emit();
|
|
94
|
+
acknowledgement.then((value) => finish(() => resolve(value)), () => {
|
|
95
|
+
finish(() => {
|
|
96
|
+
const connected = active.connected;
|
|
97
|
+
input.closeTrace(connected ? "timeout" : "disconnected");
|
|
98
|
+
reject(connected ? new RealtimeRequestTimeoutError2(event, input.timeoutMs) : new RealtimeRequestDisconnectedError2(event));
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
function createStickyEvents(retain) {
|
|
104
|
+
const names = retain ? retain.map(String) : [];
|
|
105
|
+
const known = new Set(names);
|
|
106
|
+
const retained = names.length > 0 ? createRetainedTopics2() : null;
|
|
107
|
+
return {
|
|
108
|
+
record(socket) {
|
|
109
|
+
if (!retained)
|
|
110
|
+
return;
|
|
111
|
+
for (const name of names) {
|
|
112
|
+
socket.on(name, (payload) => retained.record(name, payload));
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
replay(name, handler) {
|
|
116
|
+
if (retained && known.has(name))
|
|
117
|
+
retained.replay(name, (payload) => handler(payload));
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
function createRecycle(delay) {
|
|
122
|
+
let timer = null;
|
|
123
|
+
const clear = () => {
|
|
124
|
+
if (timer === null)
|
|
125
|
+
return;
|
|
126
|
+
clearTimeout(timer);
|
|
127
|
+
timer = null;
|
|
128
|
+
};
|
|
129
|
+
return {
|
|
130
|
+
clear,
|
|
131
|
+
schedule(run) {
|
|
132
|
+
if (delay === false)
|
|
133
|
+
return;
|
|
134
|
+
clear();
|
|
135
|
+
timer = setTimeout(() => {
|
|
136
|
+
timer = null;
|
|
137
|
+
run();
|
|
138
|
+
}, delay);
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
function connectErrorReport(error, socket) {
|
|
143
|
+
return {
|
|
144
|
+
message: error.message,
|
|
145
|
+
data: Reflect.get(error, "data"),
|
|
146
|
+
terminal: socket !== null && !socket.active
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// src/browser/socket-io-peer.ts
|
|
151
|
+
function isIoModule(module) {
|
|
152
|
+
if (typeof module !== "object" || module === null)
|
|
153
|
+
return false;
|
|
154
|
+
return typeof Reflect.get(module, "io") === "function";
|
|
155
|
+
}
|
|
156
|
+
function createIoResolver(injected, defaultIo) {
|
|
157
|
+
if (!injected)
|
|
158
|
+
return defaultIo;
|
|
159
|
+
let pending = null;
|
|
160
|
+
return () => {
|
|
161
|
+
if (!pending) {
|
|
162
|
+
pending = Promise.resolve().then(injected).then((module) => {
|
|
163
|
+
const io = isIoModule(module) ? module.io : null;
|
|
164
|
+
if (!io) {
|
|
165
|
+
pending = null;
|
|
166
|
+
throw new Error("stitchkit: the loader passed in `peers.client` did not return the \"socket.io-client\" module — it must resolve to the module itself, as `() => import('socket.io-client')`.");
|
|
167
|
+
}
|
|
168
|
+
return io;
|
|
169
|
+
}, (cause) => {
|
|
170
|
+
pending = null;
|
|
171
|
+
if (!isModuleNotFound(cause))
|
|
172
|
+
throw cause;
|
|
173
|
+
throw new Error('stitchkit: createSocketIOClient could not load "socket.io-client" through the loader passed in `peers` — the artifact does not contain it. Check that the loader is a literal `import(\'socket.io-client\')` your bundler can follow, and that "socket.io-client" is a dependency of the package being bundled.', { cause });
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
return pending;
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
// src/browser/socket-io-client.ts
|
|
181
|
+
function createRealtimeClientWithPeer(contract, { onRejected, logger, onRequestPhase, ...config }, defaultIo) {
|
|
182
|
+
const transport = createSocketIOClientInternal(config, defaultIo, onRequestPhase);
|
|
183
|
+
const bound = bindRealtimeClient2(contract, transport, { onRejected, logger });
|
|
184
|
+
return {
|
|
185
|
+
...bound,
|
|
186
|
+
get connected() {
|
|
187
|
+
return bound.connected;
|
|
188
|
+
},
|
|
189
|
+
connect: transport.connect,
|
|
190
|
+
disconnect: transport.disconnect
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
function createSocketIOClientWithPeer(config, defaultIo) {
|
|
194
|
+
return createSocketIOClientInternal(config, defaultIo);
|
|
195
|
+
}
|
|
196
|
+
function createSocketIOClientInternal(config, defaultIo, onRequestPhase) {
|
|
197
|
+
let socket = null;
|
|
198
|
+
const resolveIo = createIoResolver(config.peers?.client, defaultIo);
|
|
199
|
+
let desiredConnected = false;
|
|
200
|
+
let loadingPeer = false;
|
|
201
|
+
const recycle = createRecycle(config.reconnectOnServerDisconnect ?? 1000);
|
|
202
|
+
const pendingRequestDisconnects = new Set;
|
|
203
|
+
const tracer = createRequestTracer(onRequestPhase);
|
|
204
|
+
const connectionListeners = new Set;
|
|
205
|
+
const subscriptions = new Set;
|
|
206
|
+
const sticky = createStickyEvents(config.retain);
|
|
207
|
+
function notifyConnection(connected, reason) {
|
|
208
|
+
for (const listener of connectionListeners)
|
|
209
|
+
listener(connected, reason);
|
|
210
|
+
}
|
|
211
|
+
function openSocket(io) {
|
|
212
|
+
if (!desiredConnected || socket)
|
|
213
|
+
return;
|
|
214
|
+
socket = io(config.url, ioOptions(config));
|
|
215
|
+
tracer.observeEachOpen(socket, () => socket);
|
|
216
|
+
socket.on("connect", () => notifyConnection(true));
|
|
217
|
+
socket.on("disconnect", (reason) => {
|
|
218
|
+
notifyConnection(false, reason);
|
|
219
|
+
if (reason === "io server disconnect") {
|
|
220
|
+
const current = socket;
|
|
221
|
+
recycle.schedule(() => {
|
|
222
|
+
if (socket === current && current && !current.connected)
|
|
223
|
+
current.connect();
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
socket.io.on("reconnect_failed", () => {
|
|
228
|
+
desiredConnected = false;
|
|
229
|
+
});
|
|
230
|
+
socket.on("connect_error", (error) => {
|
|
231
|
+
const report = connectErrorReport(error, socket);
|
|
232
|
+
if (report.terminal)
|
|
233
|
+
desiredConnected = false;
|
|
234
|
+
config.onConnectError?.(report);
|
|
235
|
+
});
|
|
236
|
+
sticky.record(socket);
|
|
237
|
+
for (const attach of subscriptions)
|
|
238
|
+
attach(socket);
|
|
239
|
+
socket.connect();
|
|
240
|
+
}
|
|
241
|
+
return {
|
|
242
|
+
get connected() {
|
|
243
|
+
return socket?.connected ?? false;
|
|
244
|
+
},
|
|
245
|
+
connect() {
|
|
246
|
+
if (socket?.connected || desiredConnected)
|
|
247
|
+
return;
|
|
248
|
+
desiredConnected = true;
|
|
249
|
+
if (socket) {
|
|
250
|
+
socket.connect();
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
if (loadingPeer)
|
|
254
|
+
return;
|
|
255
|
+
loadingPeer = true;
|
|
256
|
+
resolveIo().then((io) => {
|
|
257
|
+
loadingPeer = false;
|
|
258
|
+
openSocket(io);
|
|
259
|
+
}, (error) => {
|
|
260
|
+
loadingPeer = false;
|
|
261
|
+
desiredConnected = false;
|
|
262
|
+
reportPeerFailure(config, error);
|
|
263
|
+
});
|
|
264
|
+
},
|
|
265
|
+
disconnect() {
|
|
266
|
+
desiredConnected = false;
|
|
267
|
+
recycle.clear();
|
|
268
|
+
for (const reject of [...pendingRequestDisconnects])
|
|
269
|
+
reject();
|
|
270
|
+
if (!socket)
|
|
271
|
+
return;
|
|
272
|
+
const wasConnected = socket.connected;
|
|
273
|
+
socket.removeAllListeners();
|
|
274
|
+
socket.disconnect();
|
|
275
|
+
socket = null;
|
|
276
|
+
if (wasConnected)
|
|
277
|
+
notifyConnection(false);
|
|
278
|
+
},
|
|
279
|
+
on(event, handler) {
|
|
280
|
+
const name = event;
|
|
281
|
+
const attach = (s) => {
|
|
282
|
+
s.on(name, handler);
|
|
283
|
+
};
|
|
284
|
+
subscriptions.add(attach);
|
|
285
|
+
if (socket)
|
|
286
|
+
attach(socket);
|
|
287
|
+
const fn = handler;
|
|
288
|
+
sticky.replay(name, fn);
|
|
289
|
+
return () => {
|
|
290
|
+
subscriptions.delete(attach);
|
|
291
|
+
socket?.off(name, handler);
|
|
292
|
+
};
|
|
293
|
+
},
|
|
294
|
+
emit(event, ...args) {
|
|
295
|
+
const name = event;
|
|
296
|
+
if (!socket?.connected) {
|
|
297
|
+
config.onDroppedEmit?.({ event: name, args });
|
|
298
|
+
return false;
|
|
299
|
+
}
|
|
300
|
+
socket.emit(name, ...args);
|
|
301
|
+
return true;
|
|
302
|
+
},
|
|
303
|
+
emitWithAck(event, args, options) {
|
|
304
|
+
const trace = tracer.start(event, options.onPhase);
|
|
305
|
+
const closeTrace = (phase) => tracer.close(trace, phase);
|
|
306
|
+
const active = socket;
|
|
307
|
+
if (!active?.connected) {
|
|
308
|
+
const pending = Promise.reject(new RealtimeRequestDisconnectedError2(event));
|
|
309
|
+
closeTrace("disconnected");
|
|
310
|
+
if (trace)
|
|
311
|
+
realtimeRequestTraces.set(pending, trace);
|
|
312
|
+
return pending;
|
|
313
|
+
}
|
|
314
|
+
if (trace)
|
|
315
|
+
tracer.observe(active);
|
|
316
|
+
const pending = awaitAcknowledgement({
|
|
317
|
+
active,
|
|
318
|
+
event,
|
|
319
|
+
args,
|
|
320
|
+
timeoutMs: options.timeoutMs,
|
|
321
|
+
pendingRequestDisconnects,
|
|
322
|
+
closeTrace,
|
|
323
|
+
emit: () => tracer.starting(trace, () => active.timeout(options.timeoutMs).emitWithAck(event, ...args))
|
|
324
|
+
});
|
|
325
|
+
if (trace)
|
|
326
|
+
realtimeRequestTraces.set(pending, trace);
|
|
327
|
+
return pending;
|
|
328
|
+
},
|
|
329
|
+
onConnectionChange(listener) {
|
|
330
|
+
connectionListeners.add(listener);
|
|
331
|
+
return () => connectionListeners.delete(listener);
|
|
332
|
+
}
|
|
333
|
+
};
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
export { createRetainedTopics2, createRealtimeClientWithPeer, createSocketIOClientWithPeer };
|