@modularizer/plat 0.8.0 → 0.10.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 (99) hide show
  1. package/README.md +75 -0
  2. package/dist/client-entry.d.ts +1 -0
  3. package/dist/client-entry.d.ts.map +1 -1
  4. package/dist/client-entry.js +1 -0
  5. package/dist/client-entry.js.map +1 -1
  6. package/dist/client-server-entry.d.ts +5 -0
  7. package/dist/client-server-entry.d.ts.map +1 -1
  8. package/dist/client-server-entry.js +5 -0
  9. package/dist/client-server-entry.js.map +1 -1
  10. package/dist/client-side-python/runtime.d.ts +1 -0
  11. package/dist/client-side-python/runtime.d.ts.map +1 -1
  12. package/dist/client-side-python/runtime.js +18 -1
  13. package/dist/client-side-python/runtime.js.map +1 -1
  14. package/dist/client-side-server/channel.d.ts +1 -1
  15. package/dist/client-side-server/channel.d.ts.map +1 -1
  16. package/dist/client-side-server/channel.js +113 -4
  17. package/dist/client-side-server/channel.js.map +1 -1
  18. package/dist/client-side-server/identity.d.ts +80 -17
  19. package/dist/client-side-server/identity.d.ts.map +1 -1
  20. package/dist/client-side-server/identity.js +212 -31
  21. package/dist/client-side-server/identity.js.map +1 -1
  22. package/dist/client-side-server/mqtt-webrtc.d.ts +38 -6
  23. package/dist/client-side-server/mqtt-webrtc.d.ts.map +1 -1
  24. package/dist/client-side-server/mqtt-webrtc.js +843 -68
  25. package/dist/client-side-server/mqtt-webrtc.js.map +1 -1
  26. package/dist/client-side-server/plat-bridge.d.ts +40 -0
  27. package/dist/client-side-server/plat-bridge.d.ts.map +1 -0
  28. package/dist/client-side-server/plat-bridge.js +876 -0
  29. package/dist/client-side-server/plat-bridge.js.map +1 -0
  30. package/dist/client-side-server/plat-fetch.d.ts +33 -0
  31. package/dist/client-side-server/plat-fetch.d.ts.map +1 -0
  32. package/dist/client-side-server/plat-fetch.js +199 -0
  33. package/dist/client-side-server/plat-fetch.js.map +1 -0
  34. package/dist/client-side-server/plat-service-worker-client.d.ts +30 -0
  35. package/dist/client-side-server/plat-service-worker-client.d.ts.map +1 -0
  36. package/dist/client-side-server/plat-service-worker-client.js +141 -0
  37. package/dist/client-side-server/plat-service-worker-client.js.map +1 -0
  38. package/dist/client-side-server/plat-service-worker.d.ts +35 -0
  39. package/dist/client-side-server/plat-service-worker.d.ts.map +1 -0
  40. package/dist/client-side-server/plat-service-worker.js +292 -0
  41. package/dist/client-side-server/plat-service-worker.js.map +1 -0
  42. package/dist/client-side-server/protocol.d.ts +90 -3
  43. package/dist/client-side-server/protocol.d.ts.map +1 -1
  44. package/dist/client-side-server/protocol.js +110 -0
  45. package/dist/client-side-server/protocol.js.map +1 -1
  46. package/dist/client-side-server/runtime.d.ts +9 -0
  47. package/dist/client-side-server/runtime.d.ts.map +1 -1
  48. package/dist/client-side-server/runtime.js +44 -13
  49. package/dist/client-side-server/runtime.js.map +1 -1
  50. package/dist/client-side-server/secure-crypto.d.ts +35 -0
  51. package/dist/client-side-server/secure-crypto.d.ts.map +1 -0
  52. package/dist/client-side-server/secure-crypto.js +171 -0
  53. package/dist/client-side-server/secure-crypto.js.map +1 -0
  54. package/dist/client-side-server/server.d.ts +17 -0
  55. package/dist/client-side-server/server.d.ts.map +1 -1
  56. package/dist/client-side-server/server.js +111 -7
  57. package/dist/client-side-server/server.js.map +1 -1
  58. package/dist/client-side-server/signaling.d.ts +1 -0
  59. package/dist/client-side-server/signaling.d.ts.map +1 -1
  60. package/dist/client-side-server/signaling.js.map +1 -1
  61. package/dist/generated/python-browser-sources.js +4 -4
  62. package/dist/generated/python-browser-sources.js.map +1 -1
  63. package/dist/server/authority-server.d.ts +4 -4
  64. package/dist/server/authority-server.d.ts.map +1 -1
  65. package/dist/server/authority-server.js +23 -21
  66. package/dist/server/authority-server.js.map +1 -1
  67. package/dist/server/core.d.ts +8 -0
  68. package/dist/server/core.d.ts.map +1 -1
  69. package/dist/server/core.js +21 -0
  70. package/dist/server/core.js.map +1 -1
  71. package/dist/server/server.d.ts +4 -0
  72. package/dist/server/server.d.ts.map +1 -1
  73. package/dist/server/server.js +81 -2
  74. package/dist/server/server.js.map +1 -1
  75. package/dist/static/file-response.d.ts +42 -0
  76. package/dist/static/file-response.d.ts.map +1 -0
  77. package/dist/static/file-response.js +57 -0
  78. package/dist/static/file-response.js.map +1 -0
  79. package/dist/static/glob-match.d.ts +16 -0
  80. package/dist/static/glob-match.d.ts.map +1 -0
  81. package/dist/static/glob-match.js +48 -0
  82. package/dist/static/glob-match.js.map +1 -0
  83. package/dist/static/index.d.ts +9 -0
  84. package/dist/static/index.d.ts.map +1 -0
  85. package/dist/static/index.js +6 -0
  86. package/dist/static/index.js.map +1 -0
  87. package/dist/static/mime-types.d.ts +6 -0
  88. package/dist/static/mime-types.d.ts.map +1 -0
  89. package/dist/static/mime-types.js +74 -0
  90. package/dist/static/mime-types.js.map +1 -0
  91. package/dist/static/static-folder.d.ts +69 -0
  92. package/dist/static/static-folder.d.ts.map +1 -0
  93. package/dist/static/static-folder.js +206 -0
  94. package/dist/static/static-folder.js.map +1 -0
  95. package/dist/static/virtual-file-system.d.ts +45 -0
  96. package/dist/static/virtual-file-system.d.ts.map +1 -0
  97. package/dist/static/virtual-file-system.js +100 -0
  98. package/dist/static/virtual-file-system.js.map +1 -0
  99. package/package.json +5 -1
@@ -0,0 +1,292 @@
1
+ /**
2
+ * plat-service-worker: Universal HTTP interception via Service Worker
3
+ *
4
+ * Registers a Service Worker that intercepts ALL fetch events (fetch, XHR,
5
+ * resource elements, forms, everything) and routes them through the plat channel.
6
+ *
7
+ * This is the lowest-level interception point in the browser and eliminates the
8
+ * need for monkey-patching fetch, XHR, EventSource, Worker, forms, etc.
9
+ */
10
+ /**
11
+ * Install the plat bridge via Service Worker.
12
+ * This is the recommended approach—it intercepts all HTTP requests at the
13
+ * browser's network layer.
14
+ *
15
+ * Requires the Service Worker to be available as a static file or via a server endpoint.
16
+ * Returns a handle to unregister the Service Worker.
17
+ * Throws if Service Workers are not supported or registration fails.
18
+ */
19
+ export async function installServiceWorkerBridge(_channel, options) {
20
+ if (!navigator.serviceWorker) {
21
+ throw new Error('Service Workers not supported in this browser. ' +
22
+ 'Ensure HTTPS or localhost is enabled.');
23
+ }
24
+ const scope = options?.scope ?? '/';
25
+ const workerUrl = options?.workerUrl ?? '/plat-service-worker.js';
26
+ try {
27
+ const registration = await navigator.serviceWorker.register(workerUrl, { scope });
28
+ if (registration.waiting) {
29
+ registration.waiting.postMessage({ type: 'PLAT_SKIP_WAITING' });
30
+ }
31
+ await navigator.serviceWorker.ready;
32
+ if (!navigator.serviceWorker.controller) {
33
+ await waitForController(1200);
34
+ }
35
+ return {
36
+ async unregister() {
37
+ await registration.unregister();
38
+ },
39
+ };
40
+ }
41
+ catch (err) {
42
+ throw new Error(`Failed to register Service Worker at ${workerUrl}: ` +
43
+ (err instanceof Error ? err.message : String(err)));
44
+ }
45
+ }
46
+ /**
47
+ * Generate the complete Service Worker code as a string.
48
+ * This is what you'd serve as /plat-service-worker.js or similar.
49
+ *
50
+ * The worker communicates with the main thread via postMessage to fetch requests.
51
+ */
52
+ export function generateServiceWorkerCode() {
53
+ return `(${serviceWorkerRuntime.toString()})()`;
54
+ }
55
+ function waitForController(timeoutMs) {
56
+ if (navigator.serviceWorker.controller)
57
+ return Promise.resolve();
58
+ return new Promise((resolve) => {
59
+ let done = false;
60
+ const complete = () => {
61
+ if (done)
62
+ return;
63
+ done = true;
64
+ navigator.serviceWorker.removeEventListener('controllerchange', onChange);
65
+ clearTimeout(timer);
66
+ resolve();
67
+ };
68
+ const onChange = () => complete();
69
+ const timer = setTimeout(() => complete(), timeoutMs);
70
+ navigator.serviceWorker.addEventListener('controllerchange', onChange);
71
+ });
72
+ }
73
+ /**
74
+ * The Service Worker runtime—runs in the worker context.
75
+ * Must be self-contained (no external dependencies).
76
+ * Communicates with main thread via postMessage to route requests through platFetch.
77
+ */
78
+ function serviceWorkerRuntime() {
79
+ // Interception logic (matches main thread)
80
+ function shouldIntercept(url) {
81
+ if (url.startsWith('data:') || url.startsWith('blob:') || url.startsWith('javascript:'))
82
+ return false;
83
+ if (url.startsWith('css://'))
84
+ return true;
85
+ try {
86
+ const parsed = new URL(url, self.location.href);
87
+ return parsed.origin === self.location.origin;
88
+ }
89
+ catch {
90
+ return false;
91
+ }
92
+ }
93
+ function normalizePath(url) {
94
+ if (url.startsWith('css://')) {
95
+ try {
96
+ const parsed = new URL(url.replace('css://', 'http://'));
97
+ return `${parsed.pathname}${parsed.search}`;
98
+ }
99
+ catch {
100
+ return url;
101
+ }
102
+ }
103
+ if (url.startsWith('/'))
104
+ return url;
105
+ try {
106
+ const parsed = new URL(url, self.location.href);
107
+ return `${parsed.pathname}${parsed.search}`;
108
+ }
109
+ catch {
110
+ return '/' + url;
111
+ }
112
+ }
113
+ // Map request IDs to pending responses
114
+ const pending = new Map();
115
+ function randomId() {
116
+ return `sw-${Date.now()}-${Math.random().toString(36).slice(2, 10)}`;
117
+ }
118
+ function bytesToBase64(bytes) {
119
+ const chunk = 0x8000;
120
+ let binary = '';
121
+ for (let i = 0; i < bytes.length; i += chunk) {
122
+ binary += String.fromCharCode(...bytes.subarray(i, i + chunk));
123
+ }
124
+ return btoa(binary);
125
+ }
126
+ async function readRequestBodyAsBase64(req) {
127
+ if (req.method === 'GET' || req.method === 'HEAD')
128
+ return undefined;
129
+ const buf = await req.arrayBuffer();
130
+ if (buf.byteLength === 0)
131
+ return undefined;
132
+ return bytesToBase64(new Uint8Array(buf));
133
+ }
134
+ function fromBridgeBody(msg) {
135
+ if (msg.bodyEncoding === 'none')
136
+ return msg.body ?? null;
137
+ if (!msg.body)
138
+ return null;
139
+ const binaryStr = atob(msg.body);
140
+ const bytes = new Uint8Array(binaryStr.length);
141
+ for (let i = 0; i < binaryStr.length; i++)
142
+ bytes[i] = binaryStr.charCodeAt(i);
143
+ return bytes;
144
+ }
145
+ async function resolveClientForRequest(clientId) {
146
+ // @ts-ignore - Service Worker clients API
147
+ if (clientId) {
148
+ // @ts-ignore - Service Worker clients API
149
+ const target = await self.clients.get(clientId);
150
+ if (target)
151
+ return target;
152
+ }
153
+ // @ts-ignore - Service Worker clients API
154
+ const all = await self.clients.matchAll({ type: 'window', includeUncontrolled: true });
155
+ return all[0];
156
+ }
157
+ // Listen for responses from main thread
158
+ // @ts-ignore - Service Worker event
159
+ self.addEventListener('message', (event) => {
160
+ if (event.data?.type === 'PLAT_SKIP_WAITING') {
161
+ // @ts-ignore - Service Worker global API
162
+ self.skipWaiting();
163
+ return;
164
+ }
165
+ const msg = event.data;
166
+ if (msg.type === 'PLAT_RESPONSE') {
167
+ const p = pending.get(msg.id);
168
+ if (p) {
169
+ pending.delete(msg.id);
170
+ if (msg.error) {
171
+ p.reject(new Error(msg.error));
172
+ }
173
+ else {
174
+ p.resolve(msg);
175
+ }
176
+ }
177
+ }
178
+ });
179
+ // Intercept all fetch events
180
+ // @ts-ignore - Service Worker event
181
+ self.addEventListener('fetch', (event) => {
182
+ const url = event.request.url;
183
+ if (!shouldIntercept(url))
184
+ return;
185
+ const path = normalizePath(url);
186
+ const method = event.request.method;
187
+ const headers = {};
188
+ event.request.headers.forEach((value, key) => {
189
+ headers[key.toLowerCase()] = value;
190
+ });
191
+ event.respondWith((async () => {
192
+ try {
193
+ const body = await readRequestBodyAsBase64(event.request.clone());
194
+ // Send request to main thread and wait for response
195
+ const id = randomId();
196
+ const target = await resolveClientForRequest(event.clientId);
197
+ if (!target) {
198
+ throw new Error('No client available to handle request');
199
+ }
200
+ const responsePromise = new Promise((resolve, reject) => {
201
+ pending.set(id, { resolve, reject });
202
+ });
203
+ const msg = {
204
+ type: 'PLAT_REQUEST',
205
+ id,
206
+ clientId: event.clientId,
207
+ method,
208
+ path,
209
+ headers,
210
+ bodyEncoding: body ? 'base64' : 'none',
211
+ body,
212
+ };
213
+ target.postMessage(msg);
214
+ // Wait for response with timeout
215
+ const responseData = (await Promise.race([
216
+ responsePromise,
217
+ new Promise((_, reject) => setTimeout(() => reject(new Error('Service Worker request timeout')), 30000)),
218
+ ]).finally(() => {
219
+ pending.delete(id);
220
+ }));
221
+ if (responseData.error) {
222
+ throw new Error(responseData.error);
223
+ }
224
+ const responseBody = fromBridgeBody(responseData);
225
+ return new Response(responseBody, {
226
+ status: responseData.status,
227
+ statusText: responseData.statusText,
228
+ headers: new Headers(responseData.headers),
229
+ });
230
+ }
231
+ catch (err) {
232
+ // Clear any orphaned pending entries if this request failed before response.
233
+ // No-op if already removed.
234
+ // (request ids are unique per request)
235
+ const message = err instanceof Error ? err.message : String(err);
236
+ return new Response(`[Service Worker] ${message}`, {
237
+ status: 500,
238
+ statusText: 'Internal Server Error',
239
+ headers: { 'content-type': 'text/plain' },
240
+ });
241
+ }
242
+ })());
243
+ });
244
+ // Claim all clients
245
+ // @ts-ignore - Service Worker event
246
+ self.addEventListener('activate', (event) => {
247
+ // @ts-ignore - Service Worker clients API
248
+ event.waitUntil(self.clients.claim());
249
+ });
250
+ // @ts-ignore - Service Worker event
251
+ self.addEventListener('install', () => {
252
+ // @ts-ignore - Service Worker global API
253
+ self.skipWaiting();
254
+ });
255
+ }
256
+ // ── Shared helpers ───────────────────────────────────────────────────────────
257
+ function shouldIntercept(url) {
258
+ if (url.startsWith('data:') || url.startsWith('blob:') || url.startsWith('javascript:'))
259
+ return false;
260
+ if (url.startsWith('/') || !url.includes('://'))
261
+ return true;
262
+ if (url.startsWith('css://'))
263
+ return true;
264
+ try {
265
+ const parsed = new URL(url, window.location.href);
266
+ return parsed.origin === window.location.origin;
267
+ }
268
+ catch {
269
+ return false;
270
+ }
271
+ }
272
+ function normalizePath(url) {
273
+ if (url.startsWith('css://')) {
274
+ try {
275
+ const parsed = new URL(url.replace('css://', 'http://'));
276
+ return `${parsed.pathname}${parsed.search}`;
277
+ }
278
+ catch {
279
+ return url;
280
+ }
281
+ }
282
+ if (url.startsWith('/'))
283
+ return url;
284
+ try {
285
+ const parsed = new URL(url, typeof window !== 'undefined' ? window.location.href : 'http://localhost/');
286
+ return `${parsed.pathname}${parsed.search}`;
287
+ }
288
+ catch {
289
+ return '/' + url;
290
+ }
291
+ }
292
+ //# sourceMappingURL=plat-service-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plat-service-worker.js","sourceRoot":"","sources":["../../src/client-side-server/plat-service-worker.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { PLATRPCEventKind } from '../rpc';
2
+ import type { ClientSideServerPublicIdentity, ClientSideServerSignedAuthorityRecord, ClientSideServerSignedAuthorityRecordV2 } from './identity';
2
3
  /**
3
4
  * Version and identity metadata that a server publishes about itself.
4
5
  * All fields are optional — servers populate what they know.
@@ -19,6 +20,90 @@ export interface ClientSideServerInstanceInfo {
19
20
  /** Unix timestamp (ms) when this server instance started (auto-set on start). */
20
21
  serverStartedAt?: number;
21
22
  }
23
+ export interface ClientSideServerSealedEnvelope {
24
+ platcss: 'sealed';
25
+ version: 1;
26
+ senderId: string;
27
+ at: number;
28
+ nonce: string;
29
+ clientEphemeralPublicKeyJwk: JsonWebKey;
30
+ ciphertext: string;
31
+ }
32
+ export interface ClientSideServerSealedDiscoverPayload {
33
+ type: 'discover';
34
+ connectionId: string;
35
+ serverName: string;
36
+ challengeNonce?: string;
37
+ requirePrivateChallenge?: boolean;
38
+ clientIdentity?: ClientSideServerPublicIdentity;
39
+ auth?: {
40
+ username: string;
41
+ password: string;
42
+ };
43
+ at: number;
44
+ }
45
+ export interface ClientSideServerSealedOfferPayload {
46
+ type: 'offer';
47
+ connectionId: string;
48
+ serverName: string;
49
+ description: RTCSessionDescriptionInit;
50
+ challengeNonce?: string;
51
+ requirePrivateChallenge?: boolean;
52
+ clientIdentity?: ClientSideServerPublicIdentity;
53
+ auth?: {
54
+ username: string;
55
+ password: string;
56
+ };
57
+ at: number;
58
+ }
59
+ export interface ClientSideServerSealedAnswerPayload {
60
+ type: 'answer';
61
+ connectionId: string;
62
+ serverName: string;
63
+ description: RTCSessionDescriptionInit;
64
+ identity?: ClientSideServerPublicIdentity;
65
+ authorityRecord?: ClientSideServerSignedAuthorityRecord | ClientSideServerSignedAuthorityRecordV2;
66
+ challengeNonce?: string;
67
+ challengeSignature?: string;
68
+ at: number;
69
+ }
70
+ export interface ClientSideServerSealedIcePayload {
71
+ type: 'ice';
72
+ connectionId: string;
73
+ serverName: string;
74
+ candidate: RTCIceCandidateInit;
75
+ at: number;
76
+ }
77
+ export interface ClientSideServerSealedRejectPayload {
78
+ type: 'reject';
79
+ connectionId: string;
80
+ serverName: string;
81
+ reason: 'auth-required' | 'auth-failed' | 'server-not-accepting' | 'bad-message' | 'timeout';
82
+ at: number;
83
+ }
84
+ export type ClientSideServerSealedPayload = ClientSideServerSealedDiscoverPayload | ClientSideServerSealedOfferPayload | ClientSideServerSealedAnswerPayload | ClientSideServerSealedIcePayload | ClientSideServerSealedRejectPayload;
85
+ export type ServiceWorkerBridgeBodyEncoding = 'none' | 'base64';
86
+ export interface ServiceWorkerBridgeRequestMessage {
87
+ type: 'PLAT_REQUEST';
88
+ id: string;
89
+ clientId?: string;
90
+ method: string;
91
+ path: string;
92
+ headers: Record<string, string>;
93
+ bodyEncoding: ServiceWorkerBridgeBodyEncoding;
94
+ body?: string;
95
+ }
96
+ export interface ServiceWorkerBridgeResponseMessage {
97
+ type: 'PLAT_RESPONSE';
98
+ id: string;
99
+ status: number;
100
+ statusText: string;
101
+ headers: Record<string, string>;
102
+ bodyEncoding: ServiceWorkerBridgeBodyEncoding;
103
+ body?: string;
104
+ error?: string;
105
+ errorCode?: 'timeout' | 'no-client' | 'upstream-failed' | 'bad-response';
106
+ }
22
107
  export interface ClientSideServerRequest {
23
108
  jsonrpc: '2.0';
24
109
  id: string;
@@ -73,14 +158,14 @@ export interface ClientSideServerDrainMessage {
73
158
  export interface ClientSideServerPrivateChallengeRequest {
74
159
  platcss: 'private-challenge';
75
160
  challengeNonce: string;
76
- clientIdentity?: import('./identity').ClientSideServerPublicIdentity;
161
+ clientIdentity?: ClientSideServerPublicIdentity;
77
162
  }
78
163
  export interface ClientSideServerPrivateChallengeResponse {
79
164
  platcss: 'private-challenge-response';
80
165
  challengeNonce: string;
81
166
  challengeSignature: string;
82
- identity: import('./identity').ClientSideServerPublicIdentity;
83
- authorityRecord?: import('./identity').ClientSideServerSignedAuthorityRecord;
167
+ identity: ClientSideServerPublicIdentity;
168
+ authorityRecord?: ClientSideServerSignedAuthorityRecord | ClientSideServerSignedAuthorityRecordV2;
84
169
  }
85
170
  export type ClientSideServerControlMessage = ClientSideServerPingMessage | ClientSideServerPongMessage | ClientSideServerDrainMessage | ClientSideServerPrivateChallengeRequest | ClientSideServerPrivateChallengeResponse;
86
171
  export type ClientSideServerResponse = ClientSideServerSuccessResponse | ClientSideServerErrorResponse;
@@ -91,4 +176,6 @@ export declare function isClientSideServerControlMessage(message: ClientSideServ
91
176
  export declare function isClientSideServerRequestMessage(message: ClientSideServerMessage): message is ClientSideServerRequest;
92
177
  export declare function isClientSideServerEventMessage(message: ClientSideServerMessage): message is ClientSideServerEventMessage;
93
178
  export declare function isClientSideServerResponseMessage(message: ClientSideServerMessage): message is ClientSideServerResponse;
179
+ export declare function isClientSideServerSealedEnvelope(value: unknown): value is ClientSideServerSealedEnvelope;
180
+ export declare function isClientSideServerSealedPayload(value: unknown): value is ClientSideServerSealedPayload;
94
181
  //# sourceMappingURL=protocol.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/client-side-server/protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/client-side-server/protocol.ts"],"names":[],"mappings":"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"}
@@ -17,4 +17,114 @@ export function isClientSideServerEventMessage(message) {
17
17
  export function isClientSideServerResponseMessage(message) {
18
18
  return 'jsonrpc' in message && 'ok' in message && !('event' in message) && !('method' in message);
19
19
  }
20
+ export function isClientSideServerSealedEnvelope(value) {
21
+ if (!isObject(value))
22
+ return false;
23
+ return value.platcss === 'sealed'
24
+ && value.version === 1
25
+ && typeof value.senderId === 'string'
26
+ && typeof value.at === 'number'
27
+ && Number.isFinite(value.at)
28
+ && typeof value.nonce === 'string'
29
+ && isPlainJsonWebKey(value.clientEphemeralPublicKeyJwk)
30
+ && typeof value.ciphertext === 'string';
31
+ }
32
+ export function isClientSideServerSealedPayload(value) {
33
+ if (!isObject(value))
34
+ return false;
35
+ if (typeof value.connectionId !== 'string' || typeof value.serverName !== 'string')
36
+ return false;
37
+ if (typeof value.at !== 'number' || !Number.isFinite(value.at))
38
+ return false;
39
+ if (!isOptionalString(value.challengeNonce))
40
+ return false;
41
+ if (!isOptionalBoolean(value.requirePrivateChallenge))
42
+ return false;
43
+ if (!isOptionalClientSideServerPublicIdentity(value.clientIdentity))
44
+ return false;
45
+ if (!isOptionalAuthObject(value.auth))
46
+ return false;
47
+ switch (value.type) {
48
+ case 'discover':
49
+ return true;
50
+ case 'offer':
51
+ return isRtcSessionDescriptionInit(value.description);
52
+ case 'answer':
53
+ return isRtcSessionDescriptionInit(value.description)
54
+ && isOptionalClientSideServerPublicIdentity(value.identity)
55
+ && isOptionalAuthorityRecord(value.authorityRecord)
56
+ && isOptionalString(value.challengeSignature);
57
+ case 'ice':
58
+ return isRtcIceCandidateInit(value.candidate);
59
+ case 'reject':
60
+ return value.reason === 'auth-required'
61
+ || value.reason === 'auth-failed'
62
+ || value.reason === 'server-not-accepting'
63
+ || value.reason === 'bad-message'
64
+ || value.reason === 'timeout';
65
+ default:
66
+ return false;
67
+ }
68
+ }
69
+ function isObject(value) {
70
+ return !!value && typeof value === 'object' && !Array.isArray(value);
71
+ }
72
+ function isPlainJsonWebKey(value) {
73
+ return isObject(value);
74
+ }
75
+ function isOptionalString(value) {
76
+ return value === undefined || typeof value === 'string';
77
+ }
78
+ function isOptionalBoolean(value) {
79
+ return value === undefined || typeof value === 'boolean';
80
+ }
81
+ function isRtcSessionDescriptionInit(value) {
82
+ return isObject(value)
83
+ && (value.type === 'offer' || value.type === 'pranswer' || value.type === 'answer' || value.type === 'rollback')
84
+ && isOptionalString(value.sdp);
85
+ }
86
+ function isRtcIceCandidateInit(value) {
87
+ return isObject(value)
88
+ && isOptionalString(value.candidate)
89
+ && (value.sdpMid === undefined || value.sdpMid === null || typeof value.sdpMid === 'string')
90
+ && (value.sdpMLineIndex === undefined || value.sdpMLineIndex === null || typeof value.sdpMLineIndex === 'number')
91
+ && (value.usernameFragment === undefined || value.usernameFragment === null || typeof value.usernameFragment === 'string');
92
+ }
93
+ function isClientSideServerPublicIdentityLike(value) {
94
+ return isObject(value)
95
+ && value.algorithm === 'ECDSA-P256'
96
+ && isPlainJsonWebKey(value.publicKeyJwk)
97
+ && typeof value.keyId === 'string'
98
+ && typeof value.fingerprint === 'string'
99
+ && (value.createdAt === undefined || typeof value.createdAt === 'number');
100
+ }
101
+ function isOptionalClientSideServerPublicIdentity(value) {
102
+ return value === undefined || isClientSideServerPublicIdentityLike(value);
103
+ }
104
+ function isAuthorityRecord(value) {
105
+ if (!isObject(value) || typeof value.serverName !== 'string' || typeof value.issuedAt !== 'number' || typeof value.signature !== 'string') {
106
+ return false;
107
+ }
108
+ if (value.protocol === 'plat-css-authority-v1') {
109
+ return isPlainJsonWebKey(value.publicKeyJwk)
110
+ && (value.keyId === undefined || typeof value.keyId === 'string')
111
+ && (value.authorityName === undefined || typeof value.authorityName === 'string');
112
+ }
113
+ if (value.protocol === 'plat-css-authority-v2') {
114
+ return isPlainJsonWebKey(value.signingPublicKeyJwk)
115
+ && isPlainJsonWebKey(value.encryptionPublicKeyJwk)
116
+ && (value.signingKeyId === undefined || typeof value.signingKeyId === 'string')
117
+ && (value.encryptionKeyId === undefined || typeof value.encryptionKeyId === 'string')
118
+ && (value.authorityName === undefined || typeof value.authorityName === 'string');
119
+ }
120
+ return false;
121
+ }
122
+ function isOptionalAuthorityRecord(value) {
123
+ return value === undefined || isAuthorityRecord(value);
124
+ }
125
+ function isOptionalAuthObject(value) {
126
+ return value === undefined || (isObject(value)
127
+ && typeof value.username === 'string'
128
+ && typeof value.password === 'string');
129
+ }
20
130
  //# sourceMappingURL=protocol.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/client-side-server/protocol.ts"],"names":[],"mappings":"AAqHA,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,IAAI,CAAC,CAAC,SAAS,IAAI,OAAO,CAAC;QAAE,OAAO,KAAK,CAAA;IACzC,MAAM,IAAI,GAAI,OAAe,CAAC,OAAO,CAAA;IACrC,OAAO,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,OAAO;WACxD,IAAI,KAAK,mBAAmB,IAAI,IAAI,KAAK,4BAA4B,CAAA;AAC5E,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"}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/client-side-server/protocol.ts"],"names":[],"mappings":"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"}
@@ -70,6 +70,8 @@ export declare function runClientSideServer(source: Record<string, string>, opti
70
70
  export declare const runClientSideServerFromSource: typeof runClientSideServer;
71
71
  export declare function startClientSideServerFromSource(options: StartClientSideServerFromSourceOptions): Promise<StartedClientSideServer>;
72
72
  export declare function serveClientSideServer(serverName: string, controllers: ControllerClass[]): ClientSideServerDefinition;
73
+ /** Server-style alias for defining a client-side server module. */
74
+ export declare const serveServer: typeof serveClientSideServer;
73
75
  export interface ConnectClientSideServerOptions extends ClientSideServerMQTTWebRTCOptions {
74
76
  baseUrl: string;
75
77
  }
@@ -77,6 +79,13 @@ export declare function connectClientSideServer(options: ConnectClientSideServer
77
79
  client: OpenAPIClient;
78
80
  openapi: OpenAPISpec;
79
81
  }>;
82
+ /** Server-style alias for connecting to a server endpoint (css:// or http(s)://). */
83
+ export declare const connectServer: typeof connectClientSideServer;
84
+ /**
85
+ * Server-style alias for starting a client-side server from source.
86
+ * Mirrors the common `startServer(...)` naming across runtimes.
87
+ */
88
+ export declare const startServer: typeof runClientSideServer;
80
89
  export interface RetryLoopOptions {
81
90
  initialDelayMs?: number;
82
91
  maxDelayMs?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/client-side-server/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/client-side-server/runtime.ts"],"names":[],"mappings":"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"}