@modularizer/plat 0.2.0 → 0.4.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.
Files changed (72) hide show
  1. package/README.md +58 -0
  2. package/dist/cli/commands/api-proxy.d.ts.map +1 -1
  3. package/dist/cli/commands/api-proxy.js +13 -96
  4. package/dist/cli/commands/api-proxy.js.map +1 -1
  5. package/dist/cli/runtime.d.ts.map +1 -1
  6. package/dist/cli/runtime.js +9 -1
  7. package/dist/cli/runtime.js.map +1 -1
  8. package/dist/cli/spec-source.d.ts +1 -0
  9. package/dist/cli/spec-source.d.ts.map +1 -1
  10. package/dist/cli/spec-source.js +15 -0
  11. package/dist/cli/spec-source.js.map +1 -1
  12. package/dist/client/openapi-client.d.ts.map +1 -1
  13. package/dist/client/openapi-client.js +8 -2
  14. package/dist/client/openapi-client.js.map +1 -1
  15. package/dist/client-entry.d.ts +2 -0
  16. package/dist/client-entry.d.ts.map +1 -1
  17. package/dist/client-entry.js +2 -0
  18. package/dist/client-entry.js.map +1 -1
  19. package/dist/client-server-entry.d.ts +2 -0
  20. package/dist/client-server-entry.d.ts.map +1 -1
  21. package/dist/client-server-entry.js +2 -0
  22. package/dist/client-server-entry.js.map +1 -1
  23. package/dist/client-side-python/runtime.d.ts +102 -0
  24. package/dist/client-side-python/runtime.d.ts.map +1 -0
  25. package/dist/client-side-python/runtime.js +595 -0
  26. package/dist/client-side-python/runtime.js.map +1 -0
  27. package/dist/client-side-server/channel.d.ts +9 -0
  28. package/dist/client-side-server/channel.d.ts.map +1 -1
  29. package/dist/client-side-server/channel.js +19 -0
  30. package/dist/client-side-server/channel.js.map +1 -1
  31. package/dist/client-side-server/identity.d.ts +116 -0
  32. package/dist/client-side-server/identity.d.ts.map +1 -0
  33. package/dist/client-side-server/identity.js +358 -0
  34. package/dist/client-side-server/identity.js.map +1 -0
  35. package/dist/client-side-server/mqtt-webrtc.d.ts +39 -0
  36. package/dist/client-side-server/mqtt-webrtc.d.ts.map +1 -1
  37. package/dist/client-side-server/mqtt-webrtc.js +327 -80
  38. package/dist/client-side-server/mqtt-webrtc.js.map +1 -1
  39. package/dist/client-side-server/protocol.d.ts +13 -1
  40. package/dist/client-side-server/protocol.d.ts.map +1 -1
  41. package/dist/client-side-server/protocol.js +12 -1
  42. package/dist/client-side-server/protocol.js.map +1 -1
  43. package/dist/client-side-server/server.d.ts +43 -2
  44. package/dist/client-side-server/server.d.ts.map +1 -1
  45. package/dist/client-side-server/server.js +179 -9
  46. package/dist/client-side-server/server.js.map +1 -1
  47. package/dist/generated/python-browser-sources.d.ts +2 -0
  48. package/dist/generated/python-browser-sources.d.ts.map +1 -0
  49. package/dist/generated/python-browser-sources.js +13 -0
  50. package/dist/generated/python-browser-sources.js.map +1 -0
  51. package/dist/logging.d.ts.map +1 -1
  52. package/dist/logging.js +39 -4
  53. package/dist/logging.js.map +1 -1
  54. package/dist/python-browser-entry.d.ts +2 -0
  55. package/dist/python-browser-entry.d.ts.map +1 -0
  56. package/dist/python-browser-entry.js +2 -0
  57. package/dist/python-browser-entry.js.map +1 -0
  58. package/dist/server/authority-server.d.ts +27 -0
  59. package/dist/server/authority-server.d.ts.map +1 -0
  60. package/dist/server/authority-server.js +97 -0
  61. package/dist/server/authority-server.js.map +1 -0
  62. package/dist/server/config/types.d.ts +21 -0
  63. package/dist/server/config/types.d.ts.map +1 -1
  64. package/dist/server/index.d.ts +1 -0
  65. package/dist/server/index.d.ts.map +1 -1
  66. package/dist/server/index.js +1 -0
  67. package/dist/server/index.js.map +1 -1
  68. package/dist/server/server.d.ts +2 -0
  69. package/dist/server/server.d.ts.map +1 -1
  70. package/dist/server/server.js +38 -1
  71. package/dist/server/server.js.map +1 -1
  72. package/package.json +7 -2
@@ -1,6 +1,9 @@
1
1
  import * as mqttModule from 'mqtt';
2
2
  import { createClientSideServerTransportPlugin } from '../client/css-transport-plugin.js';
3
3
  import { createRTCDataChannelAdapter } from './channel.js';
4
+ import { buildClientSideServerIdentityChallenge, clientSideServerPublicKeysEqual, getOrCreateClientSideServerIdentityKeyPair, loadTrustedClientSideServerRecordFromMap, resolveTrustedClientSideServerFromAuthorities, loadTrustedClientSideServerRecord, trustClientSideServerFromAuthorityRecord, saveTrustedClientSideServerRecordToMap, signClientSideServerChallenge, toClientSideServerPublicIdentity, trustClientSideServerOnFirstUse, verifyClientSideServerChallenge, verifySignedClientSideServerAuthorityRecord, } from './identity.js';
5
+ import { isClientSideServerPeerMessage, } from './protocol.js';
6
+ import { parseClientSideServerAddress, } from './signaling.js';
4
7
  export const DEFAULT_CLIENT_SIDE_SERVER_MQTT_BROKER = 'wss://broker.emqx.io:8084/mqtt';
5
8
  export const DEFAULT_CLIENT_SIDE_SERVER_MQTT_TOPIC = 'mrtchat/plat-css';
6
9
  export const DEFAULT_CLIENT_SIDE_SERVER_ICE_SERVERS = [
@@ -10,6 +13,8 @@ export const DEFAULT_CLIENT_SIDE_SERVER_ICE_SERVERS = [
10
13
  { urls: 'stun:stun3.l.google.com:19302' },
11
14
  { urls: 'stun:stun4.l.google.com:19302' },
12
15
  ];
16
+ let defaultPeerPool;
17
+ let defaultTransportPlugin;
13
18
  export class ClientSideServerMQTTWebRTCServer {
14
19
  options;
15
20
  mqtt;
@@ -18,6 +23,8 @@ export class ClientSideServerMQTTWebRTCServer {
18
23
  peers = new Map();
19
24
  pendingCandidates = new Map();
20
25
  announceTimer;
26
+ identityKeyPair;
27
+ publicIdentity;
21
28
  constructor(options) {
22
29
  this.options = options;
23
30
  this.serverInstanceId = `${options.serverName}:${randomId('server')}`;
@@ -28,6 +35,7 @@ export class ClientSideServerMQTTWebRTCServer {
28
35
  async start() {
29
36
  if (this.mqtt)
30
37
  return;
38
+ await this.ensureIdentity();
31
39
  this.mqtt = await connectToBroker(this.options);
32
40
  this.mqtt.on('message', (_topic, payload) => {
33
41
  void this.onMessage(payload);
@@ -65,6 +73,8 @@ export class ClientSideServerMQTTWebRTCServer {
65
73
  kind: 'announce',
66
74
  senderId: this.serverInstanceId,
67
75
  serverName: this.options.serverName,
76
+ identity: this.publicIdentity,
77
+ authorityRecord: this.options.identity?.authorityRecord,
68
78
  at: Date.now(),
69
79
  });
70
80
  }
@@ -96,6 +106,7 @@ export class ClientSideServerMQTTWebRTCServer {
96
106
  async acceptOffer(message) {
97
107
  if (!this.mqtt || !message.connectionId || !message.description)
98
108
  return;
109
+ await this.ensureIdentity();
99
110
  const peer = new RTCPeerConnection({
100
111
  iceServers: this.options.iceServers ?? DEFAULT_CLIENT_SIDE_SERVER_ICE_SERVERS,
101
112
  });
@@ -144,100 +155,306 @@ export class ClientSideServerMQTTWebRTCServer {
144
155
  serverName: this.options.serverName,
145
156
  connectionId: message.connectionId,
146
157
  description: answer,
158
+ identity: this.publicIdentity,
159
+ authorityRecord: this.options.identity?.authorityRecord,
160
+ challengeNonce: message.challengeNonce,
161
+ challengeSignature: message.challengeNonce
162
+ ? await signClientSideServerChallenge(this.identityKeyPair, buildClientSideServerIdentityChallenge({
163
+ serverName: this.options.serverName,
164
+ connectionId: message.connectionId,
165
+ challengeNonce: message.challengeNonce,
166
+ }))
167
+ : undefined,
147
168
  at: Date.now(),
148
169
  });
149
170
  }
171
+ async ensureIdentity() {
172
+ if (this.identityKeyPair && this.publicIdentity)
173
+ return;
174
+ const storageKey = this.options.identity?.keyPairStorageKey ?? `plat-css:keypair:${this.options.serverName}`;
175
+ this.identityKeyPair = this.options.identity?.keyPair
176
+ ?? await getOrCreateClientSideServerIdentityKeyPair({
177
+ storage: this.options.identity?.storage,
178
+ storageKey,
179
+ });
180
+ this.publicIdentity = await toClientSideServerPublicIdentity(this.identityKeyPair);
181
+ }
150
182
  }
151
183
  export function createClientSideServerMQTTWebRTCTransportPlugin(options = {}) {
184
+ if (isDefaultMQTTWebRTCOptions(options)) {
185
+ defaultTransportPlugin ??= createClientSideServerMQTTWebRTCTransportPluginInternal(options);
186
+ return defaultTransportPlugin;
187
+ }
188
+ return createClientSideServerMQTTWebRTCTransportPluginInternal(options);
189
+ }
190
+ function createClientSideServerMQTTWebRTCTransportPluginInternal(options) {
191
+ const pool = createClientSideServerMQTTWebRTCPeerPool(options);
152
192
  return createClientSideServerTransportPlugin({
153
193
  connect: async ({ address }) => {
154
- const mqtt = await connectToBroker(options);
155
- const topic = options.mqttTopic ?? DEFAULT_CLIENT_SIDE_SERVER_MQTT_TOPIC;
156
- const clientInstanceId = `${options.clientIdPrefix ?? 'client'}:${randomId('peer')}`;
157
- const connectionId = randomId('conn');
158
- const peer = new RTCPeerConnection({
159
- iceServers: options.iceServers ?? DEFAULT_CLIENT_SIDE_SERVER_ICE_SERVERS,
194
+ const session = await pool.connect(address);
195
+ return {
196
+ send: (message) => session.send(message),
197
+ subscribe: (listener) => session.subscribe(listener),
198
+ close: () => undefined,
199
+ };
200
+ },
201
+ });
202
+ }
203
+ export function createClientSideServerMQTTWebRTCPeerPool(options = {}) {
204
+ if (isDefaultMQTTWebRTCOptions(options)) {
205
+ defaultPeerPool ??= createClientSideServerMQTTWebRTCPeerPoolInternal(options);
206
+ return defaultPeerPool;
207
+ }
208
+ return createClientSideServerMQTTWebRTCPeerPoolInternal(options);
209
+ }
210
+ function createClientSideServerMQTTWebRTCPeerPoolInternal(options) {
211
+ const sessions = new Map();
212
+ const normalizeAddress = (input) => typeof input === 'string' ? parseClientSideServerAddress(input) : input;
213
+ const connect = async (input) => {
214
+ const address = normalizeAddress(input);
215
+ const existing = sessions.get(address.href);
216
+ if (existing) {
217
+ const session = await existing;
218
+ if (session.isOpen())
219
+ return session;
220
+ sessions.delete(address.href);
221
+ }
222
+ const created = createClientSideServerMQTTWebRTCPeerSession(address, options);
223
+ sessions.set(address.href, created);
224
+ try {
225
+ return await created;
226
+ }
227
+ catch (error) {
228
+ sessions.delete(address.href);
229
+ throw error;
230
+ }
231
+ };
232
+ return {
233
+ connect,
234
+ async close(input) {
235
+ const address = normalizeAddress(input);
236
+ const existing = sessions.get(address.href);
237
+ if (!existing)
238
+ return;
239
+ sessions.delete(address.href);
240
+ const session = await existing;
241
+ await session.close?.();
242
+ },
243
+ async closeAll() {
244
+ const pending = Array.from(sessions.values());
245
+ sessions.clear();
246
+ for (const sessionPromise of pending) {
247
+ const session = await sessionPromise;
248
+ await session.close?.();
249
+ }
250
+ },
251
+ };
252
+ }
253
+ async function createClientSideServerMQTTWebRTCPeerSession(address, options) {
254
+ const webrtc = await resolveClientWebRTCImplementation();
255
+ const mqtt = await connectToBroker(options);
256
+ const topic = options.mqttTopic ?? DEFAULT_CLIENT_SIDE_SERVER_MQTT_TOPIC;
257
+ const peerId = `${options.clientIdPrefix ?? 'client'}:${randomId('peer')}`;
258
+ const connectionId = randomId('conn');
259
+ const challengeNonce = randomId('challenge');
260
+ const peer = new webrtc.RTCPeerConnection({
261
+ iceServers: options.iceServers ?? DEFAULT_CLIENT_SIDE_SERVER_ICE_SERVERS,
262
+ });
263
+ const dataChannel = peer.createDataChannel(`plat-css:${connectionId}`);
264
+ const ready = deferred();
265
+ const timeoutMs = options.connectionTimeoutMs ?? (typeof RTCPeerConnection !== 'undefined' ? 15_000 : 30_000);
266
+ const cleanupCallbacks = [];
267
+ const pendingCandidates = [];
268
+ const expectedIdentity = await resolveExpectedServerIdentity(address.serverName, options.identity);
269
+ let open = true;
270
+ await subscribe(mqtt, topic);
271
+ const onMessage = async (_topic, payload) => {
272
+ const message = parseSignalingMessage(payload);
273
+ if (!message || message.senderId === peerId || message.targetId !== peerId || message.connectionId !== connectionId) {
274
+ return;
275
+ }
276
+ if (message.kind === 'answer' && message.description) {
277
+ await verifyServerIdentityForAnswer({
278
+ serverName: address.serverName,
279
+ connectionId,
280
+ challengeNonce,
281
+ message,
282
+ optionsIdentity: options.identity,
283
+ expectedIdentity,
160
284
  });
161
- const dataChannel = peer.createDataChannel(`plat-css:${connectionId}`);
162
- const ready = deferred();
163
- const timeoutMs = options.connectionTimeoutMs ?? 15_000;
164
- const cleanupCallbacks = [];
165
- const pendingCandidates = [];
166
- await subscribe(mqtt, topic);
167
- const onMessage = async (_topic, payload) => {
168
- const message = parseSignalingMessage(payload);
169
- if (!message || message.senderId === clientInstanceId || message.targetId !== clientInstanceId || message.connectionId !== connectionId) {
170
- return;
171
- }
172
- if (message.kind === 'answer' && message.description) {
173
- await peer.setRemoteDescription(new RTCSessionDescription(message.description));
174
- for (const candidate of pendingCandidates.splice(0, pendingCandidates.length)) {
175
- await peer.addIceCandidate(new RTCIceCandidate(candidate));
176
- }
177
- return;
178
- }
179
- if (message.kind === 'ice' && message.candidate) {
180
- if (peer.remoteDescription) {
181
- await peer.addIceCandidate(new RTCIceCandidate(message.candidate));
182
- }
183
- else {
184
- pendingCandidates.push(message.candidate);
185
- }
285
+ await peer.setRemoteDescription(webrtc.createSessionDescription(message.description));
286
+ if (!expectedIdentity && message.authorityRecord && options.identity?.authority?.publicKeyJwk) {
287
+ const trusted = await trustClientSideServerFromAuthorityRecord(message.authorityRecord, options.identity.authority.publicKeyJwk, {
288
+ storage: options.identity?.knownHostsStorage,
289
+ storageKey: options.identity?.knownHostsStorageKey,
290
+ });
291
+ if (options.identity?.knownHosts) {
292
+ saveTrustedClientSideServerRecordToMap(options.identity.knownHosts, trusted);
186
293
  }
187
- };
188
- mqtt.on('message', onMessage);
189
- cleanupCallbacks.push(() => mqtt.off('message', onMessage));
190
- peer.onicecandidate = (event) => {
191
- if (!event.candidate)
192
- return;
193
- void publish(mqtt, topic, {
194
- protocol: 'plat-css-v1',
195
- kind: 'ice',
196
- senderId: clientInstanceId,
197
- targetId: address.serverName,
198
- connectionId,
199
- candidate: event.candidate.toJSON(),
200
- at: Date.now(),
294
+ }
295
+ else if (!expectedIdentity && options.identity?.trustOnFirstUse !== false && message.identity) {
296
+ const trusted = await trustClientSideServerOnFirstUse(address.serverName, message.identity, {
297
+ storage: options.identity?.knownHostsStorage,
298
+ storageKey: options.identity?.knownHostsStorageKey,
201
299
  });
202
- };
203
- peer.onconnectionstatechange = () => {
204
- if (peer.connectionState === 'failed') {
205
- ready.reject(new Error(`WebRTC connection to ${address.serverName} failed`));
300
+ if (options.identity?.knownHosts) {
301
+ saveTrustedClientSideServerRecordToMap(options.identity.knownHosts, trusted);
206
302
  }
207
- };
208
- dataChannel.addEventListener('open', () => ready.resolve(), { once: true });
209
- dataChannel.addEventListener('error', () => ready.reject(new Error(`Data channel to ${address.serverName} failed`)), { once: true });
210
- const offer = await peer.createOffer();
211
- await peer.setLocalDescription(offer);
212
- await publish(mqtt, topic, {
213
- protocol: 'plat-css-v1',
214
- kind: 'offer',
215
- senderId: clientInstanceId,
216
- targetId: address.serverName,
217
- serverName: address.serverName,
218
- connectionId,
219
- description: offer,
220
- at: Date.now(),
303
+ }
304
+ for (const candidate of pendingCandidates.splice(0, pendingCandidates.length)) {
305
+ await peer.addIceCandidate(webrtc.createIceCandidate(candidate));
306
+ }
307
+ return;
308
+ }
309
+ if (message.kind === 'ice' && message.candidate) {
310
+ if (peer.remoteDescription) {
311
+ await peer.addIceCandidate(webrtc.createIceCandidate(message.candidate));
312
+ }
313
+ else {
314
+ pendingCandidates.push(message.candidate);
315
+ }
316
+ }
317
+ };
318
+ mqtt.on('message', onMessage);
319
+ cleanupCallbacks.push(() => mqtt.off('message', onMessage));
320
+ peer.onicecandidate = (event) => {
321
+ if (!event.candidate)
322
+ return;
323
+ void publish(mqtt, topic, {
324
+ protocol: 'plat-css-v1',
325
+ kind: 'ice',
326
+ senderId: peerId,
327
+ targetId: address.serverName,
328
+ connectionId,
329
+ candidate: webrtc.serializeIceCandidate(event.candidate),
330
+ at: Date.now(),
331
+ });
332
+ };
333
+ peer.onconnectionstatechange = () => {
334
+ if (peer.connectionState === 'failed') {
335
+ ready.reject(new Error(`WebRTC connection to ${address.serverName} failed`));
336
+ }
337
+ if (peer.connectionState === 'failed' || peer.connectionState === 'closed' || peer.connectionState === 'disconnected') {
338
+ open = false;
339
+ }
340
+ };
341
+ dataChannel.addEventListener('open', () => ready.resolve(), { once: true });
342
+ dataChannel.addEventListener('error', () => ready.reject(new Error(`Data channel to ${address.serverName} failed`)), { once: true });
343
+ dataChannel.addEventListener('close', () => {
344
+ open = false;
345
+ ready.reject(new Error(`Data channel to ${address.serverName} closed before becoming ready`));
346
+ }, { once: true });
347
+ const offer = await peer.createOffer();
348
+ await peer.setLocalDescription(offer);
349
+ await publish(mqtt, topic, {
350
+ protocol: 'plat-css-v1',
351
+ kind: 'offer',
352
+ senderId: peerId,
353
+ targetId: address.serverName,
354
+ serverName: address.serverName,
355
+ connectionId,
356
+ description: offer,
357
+ challengeNonce,
358
+ at: Date.now(),
359
+ });
360
+ const timer = setTimeout(() => {
361
+ ready.reject(new Error(`Timed out connecting to client-side server ${address.serverName}`));
362
+ }, timeoutMs);
363
+ cleanupCallbacks.push(() => clearTimeout(timer));
364
+ await ready.promise;
365
+ const channel = createRTCDataChannelAdapter(dataChannel);
366
+ const originalClose = channel.close?.bind(channel);
367
+ return {
368
+ ...channel,
369
+ address,
370
+ connectionId,
371
+ peerId,
372
+ connectedAt: Date.now(),
373
+ isOpen: () => open && dataChannel.readyState === 'open',
374
+ async sendPeer(event, data) {
375
+ await channel.send({
376
+ platcss: 'peer',
377
+ event,
378
+ data,
379
+ fromPeerId: peerId,
380
+ fromServerName: address.serverName,
221
381
  });
222
- const timer = setTimeout(() => {
223
- ready.reject(new Error(`Timed out connecting to client-side server ${address.serverName}`));
224
- }, timeoutMs);
225
- cleanupCallbacks.push(() => clearTimeout(timer));
226
- await ready.promise;
227
- const adapter = createRTCDataChannelAdapter(dataChannel);
228
- const originalClose = adapter.close?.bind(adapter);
229
- return {
230
- ...adapter,
231
- async close() {
232
- for (const cleanup of cleanupCallbacks)
233
- cleanup();
234
- peer.close();
235
- await originalClose?.();
236
- await endClient(mqtt);
237
- },
238
- };
239
382
  },
383
+ subscribePeer(listener) {
384
+ return channel.subscribe(async (message) => {
385
+ if (isClientSideServerPeerMessage(message)) {
386
+ await listener(message);
387
+ }
388
+ });
389
+ },
390
+ async close() {
391
+ if (!open)
392
+ return;
393
+ open = false;
394
+ for (const cleanup of cleanupCallbacks)
395
+ cleanup();
396
+ await originalClose?.();
397
+ await peer.close();
398
+ await endClient(mqtt);
399
+ },
400
+ };
401
+ }
402
+ async function resolveExpectedServerIdentity(serverName, options) {
403
+ const mapped = loadTrustedClientSideServerRecordFromMap(options?.knownHosts, serverName);
404
+ if (mapped)
405
+ return mapped;
406
+ if (options?.authorityServers?.length) {
407
+ const trusted = await resolveTrustedClientSideServerFromAuthorities(serverName, options.authorityServers, {
408
+ storage: options?.knownHostsStorage,
409
+ storageKey: options?.knownHostsStorageKey,
410
+ });
411
+ if (trusted) {
412
+ if (options.knownHosts) {
413
+ saveTrustedClientSideServerRecordToMap(options.knownHosts, trusted);
414
+ }
415
+ return trusted;
416
+ }
417
+ }
418
+ const authorityResolved = options?.authorityResolver ? await options.authorityResolver(serverName) : null;
419
+ if (authorityResolved)
420
+ return authorityResolved;
421
+ const stored = loadTrustedClientSideServerRecord(serverName, {
422
+ storage: options?.knownHostsStorage,
423
+ storageKey: options?.knownHostsStorageKey,
240
424
  });
425
+ if (stored && options?.knownHosts) {
426
+ saveTrustedClientSideServerRecordToMap(options.knownHosts, stored);
427
+ }
428
+ return stored;
429
+ }
430
+ async function verifyServerIdentityForAnswer(input) {
431
+ const { message, serverName, connectionId, challengeNonce, expectedIdentity } = input;
432
+ if (!message.identity || !message.challengeSignature) {
433
+ if (expectedIdentity) {
434
+ throw new Error(`Server ${serverName} did not provide identity proof`);
435
+ }
436
+ return;
437
+ }
438
+ if (message.authorityRecord && input.optionsIdentity?.authority?.publicKeyJwk) {
439
+ const authorityOk = await verifySignedClientSideServerAuthorityRecord(message.authorityRecord, input.optionsIdentity.authority.publicKeyJwk);
440
+ if (!authorityOk) {
441
+ throw new Error(`Server ${serverName} provided an invalid authority record`);
442
+ }
443
+ if (!clientSideServerPublicKeysEqual(message.authorityRecord.publicKeyJwk, message.identity.publicKeyJwk)) {
444
+ throw new Error(`Server ${serverName} authority record does not match presented identity`);
445
+ }
446
+ }
447
+ const verified = await verifyClientSideServerChallenge(message.identity.publicKeyJwk, buildClientSideServerIdentityChallenge({
448
+ serverName,
449
+ connectionId,
450
+ challengeNonce,
451
+ }), message.challengeSignature);
452
+ if (!verified) {
453
+ throw new Error(`Server ${serverName} failed identity challenge verification`);
454
+ }
455
+ if (expectedIdentity && !clientSideServerPublicKeysEqual(expectedIdentity.publicKeyJwk, message.identity.publicKeyJwk)) {
456
+ throw new Error(`Server ${serverName} presented an unexpected public key`);
457
+ }
241
458
  }
242
459
  export function createClientSideServerMQTTWebRTCServer(options) {
243
460
  return new ClientSideServerMQTTWebRTCServer(options);
@@ -316,6 +533,9 @@ function randomId(prefix) {
316
533
  }
317
534
  return `${prefix}-${Math.random().toString(36).slice(2)}`;
318
535
  }
536
+ function isDefaultMQTTWebRTCOptions(options) {
537
+ return Object.keys(options).length === 0;
538
+ }
319
539
  function deferred() {
320
540
  let resolve;
321
541
  let reject;
@@ -325,4 +545,31 @@ function deferred() {
325
545
  });
326
546
  return { promise, resolve, reject };
327
547
  }
548
+ async function resolveClientWebRTCImplementation() {
549
+ if (typeof RTCPeerConnection !== 'undefined') {
550
+ return {
551
+ RTCPeerConnection,
552
+ createSessionDescription: (description) => new RTCSessionDescription(description),
553
+ createIceCandidate: (candidate) => new RTCIceCandidate(candidate),
554
+ serializeIceCandidate: (candidate) => candidate.toJSON(),
555
+ };
556
+ }
557
+ try {
558
+ const dynamicImport = new Function('m', 'return import(m)');
559
+ const wrtcModule = await dynamicImport('@roamhq/wrtc');
560
+ const wrtc = wrtcModule.default ?? wrtcModule;
561
+ if (typeof wrtc?.RTCPeerConnection === 'function') {
562
+ return {
563
+ RTCPeerConnection: wrtc.RTCPeerConnection,
564
+ createSessionDescription: (description) => new wrtc.RTCSessionDescription(description),
565
+ createIceCandidate: (candidate) => new wrtc.RTCIceCandidate(candidate),
566
+ serializeIceCandidate: (candidate) => candidate.toJSON(),
567
+ };
568
+ }
569
+ }
570
+ catch (error) {
571
+ throw new Error(`Node css:// support requires @roamhq/wrtc to be available: ${error instanceof Error ? error.message : String(error)}`);
572
+ }
573
+ throw new Error('Node css:// support requires @roamhq/wrtc to expose RTCPeerConnection');
574
+ }
328
575
  //# sourceMappingURL=mqtt-webrtc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mqtt-webrtc.js","sourceRoot":"","sources":["../../src/client-side-server/mqtt-webrtc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mqtt-webrtc.js","sourceRoot":"","sources":["../../src/client-side-server/mqtt-webrtc.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,18 @@ export interface ClientSideServerEventMessage {
32
32
  event: PLATRPCEventKind;
33
33
  data?: unknown;
34
34
  }
35
+ export interface ClientSideServerPeerMessage {
36
+ platcss: 'peer';
37
+ event: string;
38
+ data?: unknown;
39
+ fromPeerId?: string;
40
+ fromServerName?: string;
41
+ }
35
42
  export type ClientSideServerResponse = ClientSideServerSuccessResponse | ClientSideServerErrorResponse;
36
- export type ClientSideServerMessage = ClientSideServerRequest | ClientSideServerResponse | ClientSideServerEventMessage;
43
+ export type ClientSideServerRPCMessage = ClientSideServerRequest | ClientSideServerResponse | ClientSideServerEventMessage;
44
+ export type ClientSideServerMessage = ClientSideServerRPCMessage | ClientSideServerPeerMessage;
45
+ export declare function isClientSideServerPeerMessage(message: ClientSideServerMessage): message is ClientSideServerPeerMessage;
46
+ export declare function isClientSideServerRequestMessage(message: ClientSideServerMessage): message is ClientSideServerRequest;
47
+ export declare function isClientSideServerEventMessage(message: ClientSideServerMessage): message is ClientSideServerEventMessage;
48
+ export declare function isClientSideServerResponseMessage(message: ClientSideServerMessage): message is ClientSideServerResponse;
37
49
  //# sourceMappingURL=protocol.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/client-side-server/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAA;AAE9C,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,KAAK,CAAA;IACd,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,+BAA+B;IAC9C,OAAO,EAAE,KAAK,CAAA;IACd,EAAE,EAAE,MAAM,CAAA;IACV,EAAE,EAAE,IAAI,CAAA;IACR,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,6BAA6B;IAC5C,OAAO,EAAE,KAAK,CAAA;IACd,EAAE,EAAE,MAAM,CAAA;IACV,EAAE,EAAE,KAAK,CAAA;IACT,KAAK,EAAE;QACL,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,MAAM,CAAA;QACf,IAAI,CAAC,EAAE,OAAO,CAAA;KACf,CAAA;CACF;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,KAAK,CAAA;IACd,EAAE,EAAE,MAAM,CAAA;IACV,EAAE,EAAE,IAAI,CAAA;IACR,KAAK,EAAE,gBAAgB,CAAA;IACvB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,MAAM,MAAM,wBAAwB,GAChC,+BAA+B,GAC/B,6BAA6B,CAAA;AAEjC,MAAM,MAAM,uBAAuB,GAC/B,uBAAuB,GACvB,wBAAwB,GACxB,4BAA4B,CAAA"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/client-side-server/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAA;AAE9C,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,KAAK,CAAA;IACd,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,+BAA+B;IAC9C,OAAO,EAAE,KAAK,CAAA;IACd,EAAE,EAAE,MAAM,CAAA;IACV,EAAE,EAAE,IAAI,CAAA;IACR,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,6BAA6B;IAC5C,OAAO,EAAE,KAAK,CAAA;IACd,EAAE,EAAE,MAAM,CAAA;IACV,EAAE,EAAE,KAAK,CAAA;IACT,KAAK,EAAE;QACL,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,MAAM,CAAA;QACf,IAAI,CAAC,EAAE,OAAO,CAAA;KACf,CAAA;CACF;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,KAAK,CAAA;IACd,EAAE,EAAE,MAAM,CAAA;IACV,EAAE,EAAE,IAAI,CAAA;IACR,KAAK,EAAE,gBAAgB,CAAA;IACvB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,MAAM,wBAAwB,GAChC,+BAA+B,GAC/B,6BAA6B,CAAA;AAEjC,MAAM,MAAM,0BAA0B,GAClC,uBAAuB,GACvB,wBAAwB,GACxB,4BAA4B,CAAA;AAEhC,MAAM,MAAM,uBAAuB,GAC/B,0BAA0B,GAC1B,2BAA2B,CAAA;AAE/B,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,IAAI,2BAA2B,CAEtH;AAED,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,IAAI,uBAAuB,CAErH;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,IAAI,4BAA4B,CAExH;AAED,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,uBAAuB,GAC/B,OAAO,IAAI,wBAAwB,CAErC"}
@@ -1,2 +1,13 @@
1
- export {};
1
+ export function isClientSideServerPeerMessage(message) {
2
+ return 'platcss' in message && message.platcss === 'peer';
3
+ }
4
+ export function isClientSideServerRequestMessage(message) {
5
+ return 'jsonrpc' in message && 'method' in message && 'path' in message;
6
+ }
7
+ export function isClientSideServerEventMessage(message) {
8
+ return 'jsonrpc' in message && 'event' in message && message.ok === true;
9
+ }
10
+ export function isClientSideServerResponseMessage(message) {
11
+ return 'jsonrpc' in message && 'ok' in message && !('event' in message) && !('method' in message);
12
+ }
2
13
  //# sourceMappingURL=protocol.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/client-side-server/protocol.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/client-side-server/protocol.ts"],"names":[],"mappings":"AA4DA,MAAM,UAAU,6BAA6B,CAAC,OAAgC;IAC5E,OAAO,SAAS,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,MAAM,CAAA;AAC3D,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,OAAgC;IAC/E,OAAO,SAAS,IAAI,OAAO,IAAI,QAAQ,IAAI,OAAO,IAAI,MAAM,IAAI,OAAO,CAAA;AACzE,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,OAAgC;IAC7E,OAAO,SAAS,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,CAAC,EAAE,KAAK,IAAI,CAAA;AAC1E,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,OAAgC;IAEhC,OAAO,SAAS,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,OAAO,CAAC,CAAA;AACnG,CAAC"}