@lsync/transport 0.0.1 → 0.0.3
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/index.d.mts +214 -183
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +90 -69
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -162,6 +162,7 @@ declare const syncChangesResultSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
162
162
|
}, z.core.$strip>>;
|
|
163
163
|
watermark: z.ZodNumber;
|
|
164
164
|
hasMore: z.ZodBoolean;
|
|
165
|
+
cursors: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
|
|
165
166
|
}, z.core.$strip>, z.ZodObject<{
|
|
166
167
|
type: z.ZodLiteral<"resyncRequired">;
|
|
167
168
|
collections: z.ZodArray<z.ZodString>;
|
|
@@ -308,221 +309,251 @@ declare function compileReadExpression(expression: unknown): ReadPredicate;
|
|
|
308
309
|
declare function matchesReadPredicate(row: unknown, predicate: ReadPredicate | undefined): boolean;
|
|
309
310
|
//#endregion
|
|
310
311
|
//#region src/rpc.d.ts
|
|
311
|
-
declare const
|
|
312
|
-
declare const
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
312
|
+
declare const protocolVersion: 1;
|
|
313
|
+
declare const protocolVersionSchema: z.ZodLiteral<1>;
|
|
314
|
+
declare const requestIdSchema: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
|
|
315
|
+
declare const protocolErrorCodeSchema: z.ZodEnum<{
|
|
316
|
+
AUTH_DENIED: "AUTH_DENIED";
|
|
317
|
+
VALIDATION_FAILED: "VALIDATION_FAILED";
|
|
318
|
+
CONFLICT: "CONFLICT";
|
|
319
|
+
RESYNC_REQUIRED: "RESYNC_REQUIRED";
|
|
320
|
+
RATE_LIMITED: "RATE_LIMITED";
|
|
321
|
+
NOT_FOUND: "NOT_FOUND";
|
|
322
|
+
UNSUPPORTED_OPERATION: "UNSUPPORTED_OPERATION";
|
|
323
|
+
PROTOCOL_ERROR: "PROTOCOL_ERROR";
|
|
324
|
+
INTERNAL_ERROR: "INTERNAL_ERROR";
|
|
325
|
+
}>;
|
|
326
|
+
declare const protocolErrorSchema: z.ZodObject<{
|
|
327
|
+
code: z.ZodEnum<{
|
|
328
|
+
AUTH_DENIED: "AUTH_DENIED";
|
|
329
|
+
VALIDATION_FAILED: "VALIDATION_FAILED";
|
|
330
|
+
CONFLICT: "CONFLICT";
|
|
331
|
+
RESYNC_REQUIRED: "RESYNC_REQUIRED";
|
|
332
|
+
RATE_LIMITED: "RATE_LIMITED";
|
|
333
|
+
NOT_FOUND: "NOT_FOUND";
|
|
334
|
+
UNSUPPORTED_OPERATION: "UNSUPPORTED_OPERATION";
|
|
335
|
+
PROTOCOL_ERROR: "PROTOCOL_ERROR";
|
|
336
|
+
INTERNAL_ERROR: "INTERNAL_ERROR";
|
|
337
|
+
}>;
|
|
338
|
+
message: z.ZodString;
|
|
339
|
+
details: z.ZodOptional<z.ZodUnknown>;
|
|
340
|
+
}, z.core.$strip>;
|
|
341
|
+
declare const clientMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
342
|
+
version: z.ZodLiteral<1>;
|
|
343
|
+
id: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
|
|
344
|
+
type: z.ZodLiteral<"read">;
|
|
345
|
+
input: z.ZodObject<{
|
|
346
|
+
collection: z.ZodString;
|
|
347
|
+
filters: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
348
|
+
field: z.ZodString;
|
|
349
|
+
op: z.ZodDefault<z.ZodEnum<{
|
|
350
|
+
eq: "eq";
|
|
351
|
+
ne: "ne";
|
|
352
|
+
gt: "gt";
|
|
353
|
+
gte: "gte";
|
|
354
|
+
lt: "lt";
|
|
355
|
+
lte: "lte";
|
|
356
|
+
in: "in";
|
|
357
|
+
}>>;
|
|
358
|
+
value: z.ZodUnknown;
|
|
359
|
+
}, z.core.$strip>>>;
|
|
360
|
+
predicate: z.ZodOptional<z.ZodType<ReadPredicate, unknown, z.core.$ZodTypeInternals<ReadPredicate, unknown>>>;
|
|
361
|
+
orderBy: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
362
|
+
field: z.ZodString;
|
|
363
|
+
direction: z.ZodDefault<z.ZodEnum<{
|
|
364
|
+
asc: "asc";
|
|
365
|
+
desc: "desc";
|
|
366
|
+
}>>;
|
|
367
|
+
}, z.core.$strip>>>;
|
|
368
|
+
cursor: z.ZodOptional<z.ZodObject<{
|
|
369
|
+
whereCurrent: z.ZodType<ReadPredicate, unknown, z.core.$ZodTypeInternals<ReadPredicate, unknown>>;
|
|
370
|
+
whereFrom: z.ZodType<ReadPredicate, unknown, z.core.$ZodTypeInternals<ReadPredicate, unknown>>;
|
|
371
|
+
lastKey: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
372
|
+
}, z.core.$strip>>;
|
|
373
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
374
|
+
offset: z.ZodOptional<z.ZodNumber>;
|
|
336
375
|
}, z.core.$strip>;
|
|
337
376
|
}, z.core.$strip>, z.ZodObject<{
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
}, z.core.$strip>>>;
|
|
358
|
-
predicate: z.ZodOptional<z.ZodType<ReadPredicate, unknown, z.core.$ZodTypeInternals<ReadPredicate, unknown>>>;
|
|
359
|
-
orderBy: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
360
|
-
field: z.ZodString;
|
|
361
|
-
direction: z.ZodDefault<z.ZodEnum<{
|
|
362
|
-
asc: "asc";
|
|
363
|
-
desc: "desc";
|
|
364
|
-
}>>;
|
|
365
|
-
}, z.core.$strip>>>;
|
|
366
|
-
cursor: z.ZodOptional<z.ZodObject<{
|
|
367
|
-
whereCurrent: z.ZodType<ReadPredicate, unknown, z.core.$ZodTypeInternals<ReadPredicate, unknown>>;
|
|
368
|
-
whereFrom: z.ZodType<ReadPredicate, unknown, z.core.$ZodTypeInternals<ReadPredicate, unknown>>;
|
|
369
|
-
lastKey: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
370
|
-
}, z.core.$strip>>;
|
|
371
|
-
limit: z.ZodOptional<z.ZodNumber>;
|
|
372
|
-
offset: z.ZodOptional<z.ZodNumber>;
|
|
373
|
-
}, z.core.$strip>;
|
|
374
|
-
}, z.core.$strip>;
|
|
377
|
+
version: z.ZodLiteral<1>;
|
|
378
|
+
id: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
|
|
379
|
+
type: z.ZodLiteral<"push">;
|
|
380
|
+
input: z.ZodObject<{
|
|
381
|
+
updates: z.ZodArray<z.ZodObject<{
|
|
382
|
+
id: z.ZodString;
|
|
383
|
+
collection: z.ZodString;
|
|
384
|
+
path: z.ZodOptional<z.ZodString>;
|
|
385
|
+
key: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
|
|
386
|
+
type: z.ZodEnum<{
|
|
387
|
+
insert: "insert";
|
|
388
|
+
update: "update";
|
|
389
|
+
delete: "delete";
|
|
390
|
+
}>;
|
|
391
|
+
value: z.ZodOptional<z.ZodUnknown>;
|
|
392
|
+
previousValue: z.ZodOptional<z.ZodUnknown>;
|
|
393
|
+
clientId: z.ZodOptional<z.ZodString>;
|
|
394
|
+
createdAt: z.ZodNumber;
|
|
395
|
+
}, z.core.$strip>>;
|
|
375
396
|
}, z.core.$strip>;
|
|
376
397
|
}, z.core.$strip>, z.ZodObject<{
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
collections: z.ZodRecord<z.ZodString, z.ZodNumber>;
|
|
384
|
-
limit: z.ZodOptional<z.ZodNumber>;
|
|
385
|
-
}, z.core.$strip>;
|
|
386
|
-
}, z.core.$strip>;
|
|
398
|
+
version: z.ZodLiteral<1>;
|
|
399
|
+
id: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
|
|
400
|
+
type: z.ZodLiteral<"changes">;
|
|
401
|
+
input: z.ZodObject<{
|
|
402
|
+
collections: z.ZodRecord<z.ZodString, z.ZodNumber>;
|
|
403
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
387
404
|
}, z.core.$strip>;
|
|
388
405
|
}, z.core.$strip>, z.ZodObject<{
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
path: z.ZodString;
|
|
396
|
-
input: z.ZodOptional<z.ZodUnknown>;
|
|
397
|
-
}, z.core.$strip>;
|
|
398
|
-
}, z.core.$strip>;
|
|
406
|
+
version: z.ZodLiteral<1>;
|
|
407
|
+
id: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
|
|
408
|
+
type: z.ZodLiteral<"api">;
|
|
409
|
+
input: z.ZodObject<{
|
|
410
|
+
path: z.ZodString;
|
|
411
|
+
input: z.ZodOptional<z.ZodUnknown>;
|
|
399
412
|
}, z.core.$strip>;
|
|
400
413
|
}, z.core.$strip>, z.ZodObject<{
|
|
401
|
-
|
|
402
|
-
|
|
414
|
+
version: z.ZodLiteral<1>;
|
|
415
|
+
id: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
|
|
416
|
+
type: z.ZodEnum<{
|
|
403
417
|
subscribe: "subscribe";
|
|
404
418
|
unsubscribe: "unsubscribe";
|
|
405
419
|
}>;
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
json: z.ZodObject<{
|
|
409
|
-
collection: z.ZodString;
|
|
410
|
-
}, z.core.$strip>;
|
|
411
|
-
}, z.core.$strip>;
|
|
412
|
-
}, z.core.$strip>;
|
|
413
|
-
}, z.core.$strip>]>;
|
|
414
|
-
declare const rpcResultMessageSchema: z.ZodObject<{
|
|
415
|
-
id: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
|
|
416
|
-
result: z.ZodObject<{
|
|
417
|
-
type: z.ZodLiteral<"data">;
|
|
418
|
-
data: z.ZodObject<{
|
|
419
|
-
json: z.ZodUnknown;
|
|
420
|
-
}, z.core.$strip>;
|
|
420
|
+
input: z.ZodObject<{
|
|
421
|
+
collection: z.ZodString;
|
|
421
422
|
}, z.core.$strip>;
|
|
423
|
+
}, z.core.$strip>], "type">;
|
|
424
|
+
declare const resultMessageSchema: z.ZodObject<{
|
|
425
|
+
version: z.ZodLiteral<1>;
|
|
426
|
+
id: z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
427
|
+
type: z.ZodLiteral<"result">;
|
|
428
|
+
payload: z.ZodUnknown;
|
|
422
429
|
}, z.core.$strip>;
|
|
423
|
-
declare const
|
|
424
|
-
|
|
430
|
+
declare const errorMessageSchema: z.ZodObject<{
|
|
431
|
+
version: z.ZodLiteral<1>;
|
|
432
|
+
id: z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
433
|
+
type: z.ZodLiteral<"error">;
|
|
425
434
|
error: z.ZodObject<{
|
|
435
|
+
code: z.ZodEnum<{
|
|
436
|
+
AUTH_DENIED: "AUTH_DENIED";
|
|
437
|
+
VALIDATION_FAILED: "VALIDATION_FAILED";
|
|
438
|
+
CONFLICT: "CONFLICT";
|
|
439
|
+
RESYNC_REQUIRED: "RESYNC_REQUIRED";
|
|
440
|
+
RATE_LIMITED: "RATE_LIMITED";
|
|
441
|
+
NOT_FOUND: "NOT_FOUND";
|
|
442
|
+
UNSUPPORTED_OPERATION: "UNSUPPORTED_OPERATION";
|
|
443
|
+
PROTOCOL_ERROR: "PROTOCOL_ERROR";
|
|
444
|
+
INTERNAL_ERROR: "INTERNAL_ERROR";
|
|
445
|
+
}>;
|
|
426
446
|
message: z.ZodString;
|
|
447
|
+
details: z.ZodOptional<z.ZodUnknown>;
|
|
427
448
|
}, z.core.$strip>;
|
|
428
449
|
}, z.core.$strip>;
|
|
429
|
-
declare const
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
collection: z.ZodString;
|
|
457
|
-
}, z.core.$strip>>>;
|
|
458
|
-
}, z.core.$strip>;
|
|
459
|
-
}, z.core.$strip>;
|
|
450
|
+
declare const updatesMessageSchema: z.ZodObject<{
|
|
451
|
+
version: z.ZodLiteral<1>;
|
|
452
|
+
type: z.ZodLiteral<"updates">;
|
|
453
|
+
payload: z.ZodObject<{
|
|
454
|
+
type: z.ZodLiteral<"updates">;
|
|
455
|
+
shardId: z.ZodString;
|
|
456
|
+
updates: z.ZodArray<z.ZodObject<{
|
|
457
|
+
id: z.ZodString;
|
|
458
|
+
collection: z.ZodString;
|
|
459
|
+
path: z.ZodOptional<z.ZodString>;
|
|
460
|
+
key: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
|
|
461
|
+
type: z.ZodEnum<{
|
|
462
|
+
insert: "insert";
|
|
463
|
+
update: "update";
|
|
464
|
+
delete: "delete";
|
|
465
|
+
}>;
|
|
466
|
+
value: z.ZodOptional<z.ZodUnknown>;
|
|
467
|
+
previousValue: z.ZodOptional<z.ZodUnknown>;
|
|
468
|
+
clientId: z.ZodOptional<z.ZodString>;
|
|
469
|
+
createdAt: z.ZodNumber;
|
|
470
|
+
sequence: z.ZodNumber;
|
|
471
|
+
serverCreatedAt: z.ZodString;
|
|
472
|
+
}, z.core.$strip>>;
|
|
473
|
+
watermark: z.ZodNumber;
|
|
474
|
+
invalidations: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
475
|
+
collection: z.ZodString;
|
|
476
|
+
}, z.core.$strip>>>;
|
|
460
477
|
}, z.core.$strip>;
|
|
461
478
|
}, z.core.$strip>;
|
|
462
|
-
declare const serverMessageSchema: z.
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
json: z.ZodUnknown;
|
|
468
|
-
}, z.core.$strip>;
|
|
469
|
-
}, z.core.$strip>;
|
|
479
|
+
declare const serverMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
480
|
+
version: z.ZodLiteral<1>;
|
|
481
|
+
id: z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
482
|
+
type: z.ZodLiteral<"result">;
|
|
483
|
+
payload: z.ZodUnknown;
|
|
470
484
|
}, z.core.$strip>, z.ZodObject<{
|
|
471
|
-
|
|
485
|
+
version: z.ZodLiteral<1>;
|
|
486
|
+
id: z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
487
|
+
type: z.ZodLiteral<"error">;
|
|
472
488
|
error: z.ZodObject<{
|
|
489
|
+
code: z.ZodEnum<{
|
|
490
|
+
AUTH_DENIED: "AUTH_DENIED";
|
|
491
|
+
VALIDATION_FAILED: "VALIDATION_FAILED";
|
|
492
|
+
CONFLICT: "CONFLICT";
|
|
493
|
+
RESYNC_REQUIRED: "RESYNC_REQUIRED";
|
|
494
|
+
RATE_LIMITED: "RATE_LIMITED";
|
|
495
|
+
NOT_FOUND: "NOT_FOUND";
|
|
496
|
+
UNSUPPORTED_OPERATION: "UNSUPPORTED_OPERATION";
|
|
497
|
+
PROTOCOL_ERROR: "PROTOCOL_ERROR";
|
|
498
|
+
INTERNAL_ERROR: "INTERNAL_ERROR";
|
|
499
|
+
}>;
|
|
473
500
|
message: z.ZodString;
|
|
501
|
+
details: z.ZodOptional<z.ZodUnknown>;
|
|
474
502
|
}, z.core.$strip>;
|
|
475
503
|
}, z.core.$strip>, z.ZodObject<{
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
collection: z.ZodString;
|
|
503
|
-
}, z.core.$strip>>>;
|
|
504
|
-
}, z.core.$strip>;
|
|
505
|
-
}, z.core.$strip>;
|
|
504
|
+
version: z.ZodLiteral<1>;
|
|
505
|
+
type: z.ZodLiteral<"updates">;
|
|
506
|
+
payload: z.ZodObject<{
|
|
507
|
+
type: z.ZodLiteral<"updates">;
|
|
508
|
+
shardId: z.ZodString;
|
|
509
|
+
updates: z.ZodArray<z.ZodObject<{
|
|
510
|
+
id: z.ZodString;
|
|
511
|
+
collection: z.ZodString;
|
|
512
|
+
path: z.ZodOptional<z.ZodString>;
|
|
513
|
+
key: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
|
|
514
|
+
type: z.ZodEnum<{
|
|
515
|
+
insert: "insert";
|
|
516
|
+
update: "update";
|
|
517
|
+
delete: "delete";
|
|
518
|
+
}>;
|
|
519
|
+
value: z.ZodOptional<z.ZodUnknown>;
|
|
520
|
+
previousValue: z.ZodOptional<z.ZodUnknown>;
|
|
521
|
+
clientId: z.ZodOptional<z.ZodString>;
|
|
522
|
+
createdAt: z.ZodNumber;
|
|
523
|
+
sequence: z.ZodNumber;
|
|
524
|
+
serverCreatedAt: z.ZodString;
|
|
525
|
+
}, z.core.$strip>>;
|
|
526
|
+
watermark: z.ZodNumber;
|
|
527
|
+
invalidations: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
528
|
+
collection: z.ZodString;
|
|
529
|
+
}, z.core.$strip>>>;
|
|
506
530
|
}, z.core.$strip>;
|
|
507
|
-
}, z.core.$strip>]>;
|
|
508
|
-
type
|
|
509
|
-
type
|
|
510
|
-
type
|
|
511
|
-
type
|
|
512
|
-
type
|
|
513
|
-
type
|
|
531
|
+
}, z.core.$strip>], "type">;
|
|
532
|
+
type RequestId = z.infer<typeof requestIdSchema>;
|
|
533
|
+
type ProtocolErrorCode = z.infer<typeof protocolErrorCodeSchema>;
|
|
534
|
+
type ProtocolErrorPayload = z.output<typeof protocolErrorSchema>;
|
|
535
|
+
type ClientMessage = z.input<typeof clientMessageSchema>;
|
|
536
|
+
type ParsedClientMessage = z.output<typeof clientMessageSchema>;
|
|
537
|
+
type ResultMessage = z.output<typeof resultMessageSchema>;
|
|
538
|
+
type ErrorMessage = z.output<typeof errorMessageSchema>;
|
|
539
|
+
type UpdatesMessage = z.output<typeof updatesMessageSchema>;
|
|
514
540
|
type ServerMessage = z.output<typeof serverMessageSchema>;
|
|
541
|
+
declare class ProtocolError extends Error {
|
|
542
|
+
readonly code: ProtocolErrorCode;
|
|
543
|
+
readonly details: unknown;
|
|
544
|
+
constructor(error: ProtocolErrorPayload);
|
|
545
|
+
}
|
|
515
546
|
type TransportPayload = ArrayBuffer | ArrayBufferView | string;
|
|
516
547
|
interface TransportSocket {
|
|
517
548
|
send(data: ArrayBuffer): void;
|
|
518
549
|
}
|
|
519
|
-
declare function
|
|
550
|
+
declare function parseClientMessage(data: TransportPayload): ParsedClientMessage;
|
|
520
551
|
declare function parseServerMessage(data: TransportPayload): ServerMessage;
|
|
521
|
-
declare function
|
|
522
|
-
declare function
|
|
552
|
+
declare function readMessageId(data: TransportPayload): RequestId | null;
|
|
553
|
+
declare function encodeClientMessage(message: ClientMessage): ArrayBuffer;
|
|
523
554
|
declare function encodeServerMessage(message: ServerMessage): ArrayBuffer;
|
|
524
|
-
declare function
|
|
555
|
+
declare function sendClientMessage(socket: TransportSocket, message: ClientMessage): void;
|
|
525
556
|
declare function sendServerMessage(socket: TransportSocket, message: ServerMessage): void;
|
|
526
557
|
//#endregion
|
|
527
|
-
export { type ApiCall, type ApiCallArgs, type ApiCallInput, type ApiContract, type ApiInput, type ApiOutput, type ApiPath, type ApiRoute, type Batch, type Broadcast, type
|
|
558
|
+
export { type ApiCall, type ApiCallArgs, type ApiCallInput, type ApiContract, type ApiInput, type ApiOutput, type ApiPath, type ApiRoute, type Batch, type Broadcast, type ClientMessage, type CollectionInvalidation, type CollectionSubscription, type CollectionSubscriptionInput, type CollectionSubscriptionResult, type ErrorMessage, type FuncExpression, type OperationType, type ParsedClientMessage, ProtocolError, type ProtocolErrorCode, type ProtocolErrorPayload, type PushResult, type ReadCursor, type ReadCursorInput, type ReadExpression, type ReadExpressionField, type ReadExpressionInput, type ReadExpressionRow, type ReadFilter, type ReadFilterInput, type ReadFilterOperator, type ReadOrderBy, type ReadOrderByInput, type ReadPredicate, type ReadQuery, type ReadQueryInput, type ReadResult, type RefExpression, type RequestId, type ResultMessage, type SequencedUpdate, type ServerMessage, type SyncChangesQuery, type SyncChangesQueryInput, type SyncChangesResult, type TransportSocket, type Update, type UpdatesMessage, type ValExpression, type WebSocketAttachment, and, apiCallSchema, batchSchema, broadcastSchema, clientMessageSchema, collectionInvalidationSchema, collectionSubscriptionResultSchema, collectionSubscriptionSchema, compileReadExpression, encodeClientMessage, encodeServerMessage, eq, field, gt, gte, inArray, lt, lte, matchesReadPredicate, ne, not, operationTypeSchema, or, parseClientMessage, parseServerMessage, protocolErrorCodeSchema, protocolErrorSchema, protocolVersion, protocolVersionSchema, pushResultSchema, readCursorSchema, readExpressionReferences, readExpressionRow, readFilterOperatorSchema, readFilterSchema, readMessageId, readOrderBySchema, readPredicateSchema, readQuerySchema, readResultSchema, sendClientMessage, sendServerMessage, sequencedUpdateSchema, serverMessageSchema, syncChangesQuerySchema, syncChangesResultSchema, updateSchema, val, webSocketAttachmentSchema };
|
|
528
559
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/api.ts","../src/expression.ts","../src/predicate-match.ts","../src/rpc.ts"],"mappings":";;;cAEa,mBAAA,EAAmB,CAAA,CAAA,OAAA;;;;;cAEnB,YAAA,EAAY,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;cAYZ,qBAAA,EAAqB,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;cAKrB,WAAA,EAAW,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;cAIX,wBAAA,EAAwB,CAAA,CAAA,OAAA;;;;;;;;;cAExB,gBAAA,EAAgB,CAAA,CAAA,SAAA;;;;;;;;;;;;;KAMjB,aAAA;EAEN,IAAA;EACA,KAAA;EACA,EAAA,EAAI,CAAA,CAAE,KAAA,QAAa,wBAAA;EACnB,KAAA;AAAA;EAGA,IAAA;EACA,UAAA,EAAY,KAAA,CAAM,aAAA;AAAA;AAAA,cAeX,mBAAA,EAAqB,CAAA,CAAE,OAAO,CAAC,aAAA;AAAA,cAI/B,iBAAA,EAAiB,CAAA,CAAA,SAAA;;;;;;;cAKjB,gBAAA,EAAgB,CAAA,CAAA,SAAA;;;;;cAMhB,eAAA,EAAe,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAUf,gBAAA,EAAgB,CAAA,CAAA,SAAA;;;cAIhB,gBAAA,EAAgB,CAAA,CAAA,SAAA;;;;cAKhB,sBAAA,EAAsB,CAAA,CAAA,SAAA;;;;
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/api.ts","../src/expression.ts","../src/predicate-match.ts","../src/rpc.ts"],"mappings":";;;cAEa,mBAAA,EAAmB,CAAA,CAAA,OAAA;;;;;cAEnB,YAAA,EAAY,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;cAYZ,qBAAA,EAAqB,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;cAKrB,WAAA,EAAW,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;cAIX,wBAAA,EAAwB,CAAA,CAAA,OAAA;;;;;;;;;cAExB,gBAAA,EAAgB,CAAA,CAAA,SAAA;;;;;;;;;;;;;KAMjB,aAAA;EAEN,IAAA;EACA,KAAA;EACA,EAAA,EAAI,CAAA,CAAE,KAAA,QAAa,wBAAA;EACnB,KAAA;AAAA;EAGA,IAAA;EACA,UAAA,EAAY,KAAA,CAAM,aAAA;AAAA;AAAA,cAeX,mBAAA,EAAqB,CAAA,CAAE,OAAO,CAAC,aAAA;AAAA,cAI/B,iBAAA,EAAiB,CAAA,CAAA,SAAA;;;;;;;cAKjB,gBAAA,EAAgB,CAAA,CAAA,SAAA;;;;;cAMhB,eAAA,EAAe,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAUf,gBAAA,EAAgB,CAAA,CAAA,SAAA;;;cAIhB,gBAAA,EAAgB,CAAA,CAAA,SAAA;;;;cAKhB,sBAAA,EAAsB,CAAA,CAAA,SAAA;;;;cAmBtB,uBAAA,EAAuB,CAAA,CAAA,qBAAA,EAAA,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;cAKvB,aAAA,EAAa,CAAA,CAAA,SAAA;;;;cAKb,4BAAA,EAA4B,CAAA,CAAA,SAAA;;;cAI5B,kCAAA,EAAkC,CAAA,CAAA,SAAA;;;;cAKlC,4BAAA,EAA4B,CAAA,CAAA,SAAA;;;cAI5B,eAAA,EAAe,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;cAQf,yBAAA,EAAyB,CAAA,CAAA,SAAA;;;;;;KAO1B,aAAA,GAAgB,CAAA,CAAE,KAAK,QAAQ,mBAAA;AAAA,KAC/B,MAAA,GAAS,CAAA,CAAE,KAAK,QAAQ,YAAA;AAAA,KACxB,eAAA,GAAkB,CAAA,CAAE,KAAK,QAAQ,qBAAA;AAAA,KACjC,KAAA,GAAQ,CAAA,CAAE,KAAK,QAAQ,WAAA;AAAA,KACvB,kBAAA,GAAqB,CAAA,CAAE,KAAK,QAAQ,wBAAA;AAAA,KACpC,UAAA,GAAa,CAAA,CAAE,MAAM,QAAQ,gBAAA;AAAA,KAC7B,eAAA,GAAkB,CAAA,CAAE,KAAK,QAAQ,gBAAA;AAAA,KACjC,UAAA,GAAa,CAAA,CAAE,MAAM,QAAQ,gBAAA;AAAA,KAC7B,eAAA,GAAkB,CAAA,CAAE,KAAK,QAAQ,gBAAA;AAAA,KACjC,WAAA,GAAc,CAAA,CAAE,MAAM,QAAQ,iBAAA;AAAA,KAC9B,gBAAA,GAAmB,CAAA,CAAE,KAAK,QAAQ,iBAAA;AAAA,KAClC,OAAA,GAAU,CAAA,CAAE,MAAM,QAAQ,aAAA;AAAA,KAC1B,YAAA,GAAe,CAAA,CAAE,KAAK,QAAQ,aAAA;AAAA,KAC9B,sBAAA,GAAyB,CAAA,CAAE,MAAM,QAAQ,4BAAA;AAAA,KACzC,2BAAA,GAA8B,CAAA,CAAE,KAAK,QAAQ,4BAAA;AAAA,KAC7C,4BAAA,GAA+B,CAAA,CAAE,MAAM,QAAQ,kCAAA;AAAA,KAC/C,sBAAA,GAAyB,CAAA,CAAE,MAAM,QAAQ,4BAAA;AAAA,UAEpC,QAAA;EACf,KAAA,EAAO,MAAA;EACP,MAAA,EAAQ,OAAO;AAAA;AAAA,KAGL,WAAA,GAAc,MAAM,SAAS,QAAA;AAAA,KAC7B,OAAA,cAAqB,WAAA,IAAe,OAAA,OAAc,IAAA;AAAA,KAClD,QAAA,cAAsB,WAAA,gBAA2B,OAAA,CAAQ,IAAA,KAAS,IAAA,CAAK,KAAA;AAAA,KACvE,SAAA,cACG,WAAA,gBACC,OAAA,CAAQ,IAAA,KACpB,IAAA,CAAK,KAAA;AAAA,KACG,WAAA,cAAyB,WAAA,gBAA2B,OAAA,CAAQ,IAAA,uBACpD,QAAA,CAAS,IAAA,EAAM,KAAA,KAC5B,KAAA,GAAQ,QAAA,CAAS,IAAA,EAAM,KAAA,MACvB,KAAA,EAAO,QAAA,CAAS,IAAA,EAAM,KAAA;AAAA,UAEZ,SAAA;EACf,UAAA;EACA,OAAA,GAAU,KAAA,CAAM,UAAA;EAChB,SAAA,GAAY,aAAA;EACZ,OAAA,GAAU,KAAA,CAAM,WAAA;EAChB,MAAA,GAAS,UAAA;EACT,KAAA;EACA,MAAA;AAAA;AAAA,UAEe,cAAA;EACf,UAAA;EACA,OAAA,GAAU,KAAA,CAAM,eAAA;EAChB,SAAA,GAAY,aAAA;EACZ,OAAA,GAAU,KAAA,CAAM,gBAAA;EAChB,MAAA,GAAS,eAAA;EACT,KAAA;EACA,MAAA;AAAA;AAAA,KAEU,UAAA,GAAa,CAAA,CAAE,KAAK,QAAQ,gBAAA;AAAA,KAC5B,gBAAA,GAAmB,CAAA,CAAE,MAAM,QAAQ,sBAAA;AAAA,KACnC,qBAAA,GAAwB,CAAA,CAAE,KAAK,QAAQ,sBAAA;AAAA,KACvC,iBAAA,GAAoB,CAAA,CAAE,KAAK,QAAQ,uBAAA;AAAA,KACnC,SAAA,GAAY,CAAA,CAAE,KAAK,QAAQ,eAAA;AAAA,KAC3B,mBAAA,GAAsB,CAAA,CAAE,KAAK,QAAQ,yBAAA;AAAA,UAEhC,UAAA;EACf,IAAA,EAAM,KAAK,CAAC,CAAA;AAAA;;;KC/MF,cAAA,GACR,cAAA,GACA,aAAA,GACA,aAAA;EACE,UAAA,EAAY,cAAA;AAAA;AAAA,UAGD,cAAA;EACf,IAAA;EACA,IAAA;EACA,IAAA,EAAM,KAAK;AAAA;AAAA,UAGI,aAAA;EACf,IAAA;EACA,MAAA;EACA,IAAA;EACA,IAAA,EAAM,KAAK;AAAA;AAAA,UAGI,aAAA;EACf,IAAA;EACA,KAAK;AAAA;AAAA,KAGK,mBAAA,GAAsB,cAAc;AAAA,KACpC,mBAAA,GAAsB,aAAA,GAAgB,MAAM;AAAA,KAC5C,iBAAA,oBAAqC,MAAA,4CAC1B,CAAA,GAAI,mBAAA;AAAA,iBAGX,iBAAA,oBACK,MAAA,sBAChB,iBAAA,CAAkB,CAAA;AAAA,iBAIP,wBAAA,qBACM,MAAA,mBAAyB,MAAA,SAAe,MAAA,oBAE5D,KAAA,EAAO,KAAA,OAAY,WAAA,oCAEE,WAAA,GAAc,iBAAA,CAAkB,WAAA,CAAY,CAAA;AAAA,iBASnD,KAAA,CAAM,IAAA,WAAe,KAAA,oBAAyB,aAAa;AAAA,iBAQ3D,GAAA,CAAI,KAAA,YAAiB,aAAa;AAAA,iBAIlC,EAAA,CAAG,IAAA,WAAe,KAAA,YAAiB,cAAc;AAAA,iBAIjD,EAAA,CAAG,IAAA,WAAe,KAAA,YAAiB,cAAc;AAAA,iBAIjD,EAAA,CAAG,IAAA,WAAe,KAAA,YAAiB,cAAc;AAAA,iBAIjD,GAAA,CAAI,IAAA,WAAe,KAAA,YAAiB,cAAc;AAAA,iBAIlD,EAAA,CAAG,IAAA,WAAe,KAAA,YAAiB,cAAc;AAAA,iBAIjD,GAAA,CAAI,IAAA,WAAe,KAAA,YAAiB,cAAc;AAAA,iBAIlD,OAAA,CAAQ,IAAA,WAAe,MAAA,YAAkB,cAAc;AAAA,iBAIvD,GAAA,IAAO,WAAA,EAAa,KAAA,YAAiB,cAAc;AAAA,iBAInD,EAAA,IAAM,WAAA,EAAa,KAAA,YAAiB,cAAc;AAAA,iBAIlD,GAAA,CAAI,UAAA,YAAsB,cAAc;AAAA,iBAIxC,qBAAA,CAAsB,UAAA,YAAsB,aAAa;;;iBCvGzD,oBAAA,CAAqB,GAAA,WAAc,SAAA,EAAW,aAAa;;;cCS9D,eAAA;AAAA,cACA,qBAAA,EAAqB,CAAA,CAAA,UAAA;AAAA,cACrB,eAAA,EAAe,CAAA,CAAA,QAAA,WAAA,CAAA,CAAA,SAAA,EAAA,CAAA,CAAA,SAAA;AAAA,cAGf,uBAAA,EAAuB,CAAA,CAAA,OAAA;;;;;;;;;;;cAYvB,mBAAA,EAAmB,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;cAyCnB,mBAAA,EAAmB,CAAA,CAAA,qBAAA,EAAA,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAQ1B,mBAAA,EAAmB,CAAA,CAAA,SAAA;;;;;;cAOnB,kBAAA,EAAkB,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;cAOlB,oBAAA,EAAoB,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAMb,mBAAA,EAAmB,CAAA,CAAA,qBAAA,EAAA,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAMpB,SAAA,GAAY,CAAA,CAAE,KAAK,QAAQ,eAAA;AAAA,KAC3B,iBAAA,GAAoB,CAAA,CAAE,KAAK,QAAQ,uBAAA;AAAA,KACnC,oBAAA,GAAuB,CAAA,CAAE,MAAM,QAAQ,mBAAA;AAAA,KACvC,aAAA,GAAgB,CAAA,CAAE,KAAK,QAAQ,mBAAA;AAAA,KAC/B,mBAAA,GAAsB,CAAA,CAAE,MAAM,QAAQ,mBAAA;AAAA,KACtC,aAAA,GAAgB,CAAA,CAAE,MAAM,QAAQ,mBAAA;AAAA,KAChC,YAAA,GAAe,CAAA,CAAE,MAAM,QAAQ,kBAAA;AAAA,KAC/B,cAAA,GAAiB,CAAA,CAAE,MAAM,QAAQ,oBAAA;AAAA,KACjC,aAAA,GAAgB,CAAA,CAAE,MAAM,QAAQ,mBAAA;AAAA,cAE/B,aAAA,SAAsB,KAAA;EAAA,SACxB,IAAA,EAAM,iBAAA;EAAA,SACN,OAAA;cAEG,KAAA,EAAO,oBAAA;AAAA;AAAA,KAQT,gBAAA,GAAmB,WAAA,GAAc,eAAe;AAAA,UAE3C,eAAA;EACf,IAAA,CAAK,IAAA,EAAM,WAAW;AAAA;AAAA,iBAGR,kBAAA,CAAmB,IAAA,EAAM,gBAAA,GAAmB,mBAAmB;AAAA,iBAI/D,kBAAA,CAAmB,IAAA,EAAM,gBAAA,GAAmB,aAAa;AAAA,iBAIzD,aAAA,CAAc,IAAA,EAAM,gBAAA,GAAmB,SAAS;AAAA,iBAWhD,mBAAA,CAAoB,OAAA,EAAS,aAAA,GAAgB,WAAW;AAAA,iBAIxD,mBAAA,CAAoB,OAAA,EAAS,aAAA,GAAgB,WAAW;AAAA,iBAIxD,iBAAA,CAAkB,MAAA,EAAQ,eAAA,EAAiB,OAAA,EAAS,aAAa;AAAA,iBAIjE,iBAAA,CAAkB,MAAA,EAAQ,eAAA,EAAiB,OAAA,EAAS,aAAa"}
|
package/dist/index.mjs
CHANGED
|
@@ -78,7 +78,8 @@ const syncChangesPageResultSchema = z.object({
|
|
|
78
78
|
type: z.literal("changes"),
|
|
79
79
|
updates: z.array(sequencedUpdateSchema),
|
|
80
80
|
watermark: z.number().int().nonnegative(),
|
|
81
|
-
hasMore: z.boolean()
|
|
81
|
+
hasMore: z.boolean(),
|
|
82
|
+
cursors: z.record(z.string(), z.number().int().nonnegative()).optional()
|
|
82
83
|
});
|
|
83
84
|
const syncChangesResyncRequiredResultSchema = z.object({
|
|
84
85
|
type: z.literal("resyncRequired"),
|
|
@@ -299,97 +300,117 @@ function valueAtPath(row, fieldName) {
|
|
|
299
300
|
}
|
|
300
301
|
//#endregion
|
|
301
302
|
//#region src/rpc.ts
|
|
302
|
-
const
|
|
303
|
-
const
|
|
304
|
-
const
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
303
|
+
const protocolVersion = 1;
|
|
304
|
+
const protocolVersionSchema = z.literal(1);
|
|
305
|
+
const requestIdSchema = z.union([z.string(), z.number()]);
|
|
306
|
+
const nullableRequestIdSchema = requestIdSchema.nullable();
|
|
307
|
+
const protocolErrorCodeSchema = z.enum([
|
|
308
|
+
"AUTH_DENIED",
|
|
309
|
+
"VALIDATION_FAILED",
|
|
310
|
+
"CONFLICT",
|
|
311
|
+
"RESYNC_REQUIRED",
|
|
312
|
+
"RATE_LIMITED",
|
|
313
|
+
"NOT_FOUND",
|
|
314
|
+
"UNSUPPORTED_OPERATION",
|
|
315
|
+
"PROTOCOL_ERROR",
|
|
316
|
+
"INTERNAL_ERROR"
|
|
317
|
+
]);
|
|
318
|
+
const protocolErrorSchema = z.object({
|
|
319
|
+
code: protocolErrorCodeSchema,
|
|
320
|
+
message: z.string(),
|
|
321
|
+
details: z.unknown().optional()
|
|
322
|
+
});
|
|
323
|
+
const readRequestSchema = z.object({
|
|
324
|
+
version: protocolVersionSchema,
|
|
325
|
+
id: requestIdSchema,
|
|
326
|
+
type: z.literal("read"),
|
|
327
|
+
input: readQuerySchema
|
|
311
328
|
});
|
|
312
|
-
const
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
input: z.object({ json: readQuerySchema })
|
|
318
|
-
})
|
|
329
|
+
const pushRequestSchema = z.object({
|
|
330
|
+
version: protocolVersionSchema,
|
|
331
|
+
id: requestIdSchema,
|
|
332
|
+
type: z.literal("push"),
|
|
333
|
+
input: batchSchema
|
|
319
334
|
});
|
|
320
|
-
const
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
input: z.object({ json: syncChangesQuerySchema })
|
|
326
|
-
})
|
|
335
|
+
const changesRequestSchema = z.object({
|
|
336
|
+
version: protocolVersionSchema,
|
|
337
|
+
id: requestIdSchema,
|
|
338
|
+
type: z.literal("changes"),
|
|
339
|
+
input: syncChangesQuerySchema
|
|
327
340
|
});
|
|
328
|
-
const
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
input: z.object({ json: apiCallSchema })
|
|
334
|
-
})
|
|
341
|
+
const apiRequestSchema = z.object({
|
|
342
|
+
version: protocolVersionSchema,
|
|
343
|
+
id: requestIdSchema,
|
|
344
|
+
type: z.literal("api"),
|
|
345
|
+
input: apiCallSchema
|
|
335
346
|
});
|
|
336
|
-
const
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
347
|
+
const subscriptionRequestSchema = z.object({
|
|
348
|
+
version: protocolVersionSchema,
|
|
349
|
+
id: requestIdSchema,
|
|
350
|
+
type: z.enum(["subscribe", "unsubscribe"]),
|
|
351
|
+
input: collectionSubscriptionSchema
|
|
340
352
|
});
|
|
341
|
-
const
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
353
|
+
const clientMessageSchema = z.discriminatedUnion("type", [
|
|
354
|
+
readRequestSchema,
|
|
355
|
+
pushRequestSchema,
|
|
356
|
+
changesRequestSchema,
|
|
357
|
+
apiRequestSchema,
|
|
358
|
+
subscriptionRequestSchema
|
|
347
359
|
]);
|
|
348
|
-
const
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
})
|
|
360
|
+
const resultMessageSchema = z.object({
|
|
361
|
+
version: protocolVersionSchema,
|
|
362
|
+
id: nullableRequestIdSchema,
|
|
363
|
+
type: z.literal("result"),
|
|
364
|
+
payload: z.unknown()
|
|
354
365
|
});
|
|
355
|
-
const
|
|
356
|
-
|
|
357
|
-
|
|
366
|
+
const errorMessageSchema = z.object({
|
|
367
|
+
version: protocolVersionSchema,
|
|
368
|
+
id: nullableRequestIdSchema,
|
|
369
|
+
type: z.literal("error"),
|
|
370
|
+
error: protocolErrorSchema
|
|
358
371
|
});
|
|
359
|
-
const
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
input: z.object({ json: broadcastSchema })
|
|
364
|
-
})
|
|
372
|
+
const updatesMessageSchema = z.object({
|
|
373
|
+
version: protocolVersionSchema,
|
|
374
|
+
type: z.literal("updates"),
|
|
375
|
+
payload: broadcastSchema
|
|
365
376
|
});
|
|
366
|
-
const serverMessageSchema = z.
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
377
|
+
const serverMessageSchema = z.discriminatedUnion("type", [
|
|
378
|
+
resultMessageSchema,
|
|
379
|
+
errorMessageSchema,
|
|
380
|
+
updatesMessageSchema
|
|
370
381
|
]);
|
|
371
|
-
|
|
372
|
-
|
|
382
|
+
var ProtocolError = class extends Error {
|
|
383
|
+
code;
|
|
384
|
+
details;
|
|
385
|
+
constructor(error) {
|
|
386
|
+
super(error.message);
|
|
387
|
+
this.name = "ProtocolError";
|
|
388
|
+
this.code = error.code;
|
|
389
|
+
this.details = error.details;
|
|
390
|
+
}
|
|
391
|
+
};
|
|
392
|
+
function parseClientMessage(data) {
|
|
393
|
+
return clientMessageSchema.parse(decodeMessage(data));
|
|
373
394
|
}
|
|
374
395
|
function parseServerMessage(data) {
|
|
375
396
|
return serverMessageSchema.parse(decodeMessage(data));
|
|
376
397
|
}
|
|
377
|
-
function
|
|
398
|
+
function readMessageId(data) {
|
|
378
399
|
try {
|
|
379
|
-
const message = z.object({ id:
|
|
380
|
-
return message.success ? message.data.id : null;
|
|
400
|
+
const message = z.object({ id: nullableRequestIdSchema.optional() }).safeParse(decodeMessage(data));
|
|
401
|
+
return message.success && message.data.id !== void 0 ? message.data.id : null;
|
|
381
402
|
} catch {
|
|
382
403
|
return null;
|
|
383
404
|
}
|
|
384
405
|
}
|
|
385
|
-
function
|
|
406
|
+
function encodeClientMessage(message) {
|
|
386
407
|
return encodeMessage(message);
|
|
387
408
|
}
|
|
388
409
|
function encodeServerMessage(message) {
|
|
389
410
|
return encodeMessage(message);
|
|
390
411
|
}
|
|
391
|
-
function
|
|
392
|
-
socket.send(
|
|
412
|
+
function sendClientMessage(socket, message) {
|
|
413
|
+
socket.send(encodeClientMessage(message));
|
|
393
414
|
}
|
|
394
415
|
function sendServerMessage(socket, message) {
|
|
395
416
|
socket.send(encodeServerMessage(message));
|
|
@@ -405,6 +426,6 @@ function encodeMessage(message) {
|
|
|
405
426
|
return buffer;
|
|
406
427
|
}
|
|
407
428
|
//#endregion
|
|
408
|
-
export { and, apiCallSchema, batchSchema, broadcastSchema,
|
|
429
|
+
export { ProtocolError, and, apiCallSchema, batchSchema, broadcastSchema, clientMessageSchema, collectionInvalidationSchema, collectionSubscriptionResultSchema, collectionSubscriptionSchema, compileReadExpression, encodeClientMessage, encodeServerMessage, eq, field, gt, gte, inArray, lt, lte, matchesReadPredicate, ne, not, operationTypeSchema, or, parseClientMessage, parseServerMessage, protocolErrorCodeSchema, protocolErrorSchema, protocolVersion, protocolVersionSchema, pushResultSchema, readCursorSchema, readExpressionReferences, readExpressionRow, readFilterOperatorSchema, readFilterSchema, readMessageId, readOrderBySchema, readPredicateSchema, readQuerySchema, readResultSchema, sendClientMessage, sendServerMessage, sequencedUpdateSchema, serverMessageSchema, syncChangesQuerySchema, syncChangesResultSchema, updateSchema, val, webSocketAttachmentSchema };
|
|
409
430
|
|
|
410
431
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../src/api.ts","../src/expression.ts","../src/predicate-match.ts","../src/rpc.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const operationTypeSchema = z.enum([\"insert\", \"update\", \"delete\"]);\n\nexport const updateSchema = z.object({\n id: z.string(),\n collection: z.string(),\n path: z.string().optional(),\n key: z.union([z.string(), z.number()]),\n type: operationTypeSchema,\n value: z.unknown().optional(),\n previousValue: z.unknown().optional(),\n clientId: z.string().optional(),\n createdAt: z.number(),\n});\n\nexport const sequencedUpdateSchema = updateSchema.extend({\n sequence: z.number().int().positive(),\n serverCreatedAt: z.string(),\n});\n\nexport const batchSchema = z.object({\n updates: z.array(updateSchema).min(1),\n});\n\nexport const readFilterOperatorSchema = z.enum([\"eq\", \"ne\", \"gt\", \"gte\", \"lt\", \"lte\", \"in\"]);\n\nexport const readFilterSchema = z.object({\n field: z.string().min(1),\n op: readFilterOperatorSchema.default(\"eq\"),\n value: z.unknown(),\n});\n\nexport type ReadPredicate =\n | {\n type: \"comparison\";\n field: string;\n op: z.infer<typeof readFilterOperatorSchema>;\n value: unknown;\n }\n | {\n type: \"and\" | \"or\";\n predicates: Array<ReadPredicate>;\n };\n\nconst readComparisonPredicateSchema = z.object({\n type: z.literal(\"comparison\"),\n field: z.string().min(1),\n op: readFilterOperatorSchema,\n value: z.unknown(),\n});\n\nconst readCompoundPredicateSchema = z.object({\n type: z.enum([\"and\", \"or\"]),\n predicates: z.array(z.lazy(() => readPredicateSchema)).min(1),\n});\n\nexport const readPredicateSchema: z.ZodType<ReadPredicate> = z.lazy(() =>\n z.discriminatedUnion(\"type\", [readComparisonPredicateSchema, readCompoundPredicateSchema]),\n);\n\nexport const readOrderBySchema = z.object({\n field: z.string().min(1),\n direction: z.enum([\"asc\", \"desc\"]).default(\"asc\"),\n});\n\nexport const readCursorSchema = z.object({\n whereCurrent: readPredicateSchema,\n whereFrom: readPredicateSchema,\n lastKey: z.union([z.string(), z.number()]).optional(),\n});\n\nexport const readQuerySchema = z.object({\n collection: z.string(),\n filters: z.array(readFilterSchema).optional(),\n predicate: readPredicateSchema.optional(),\n orderBy: z.array(readOrderBySchema).optional(),\n cursor: readCursorSchema.optional(),\n limit: z.number().int().positive().max(1000).optional(),\n offset: z.number().int().nonnegative().optional(),\n});\n\nexport const readResultSchema = z.object({\n rows: z.array(z.unknown()),\n});\n\nexport const pushResultSchema = z.object({\n accepted: z.number().int().nonnegative(),\n watermark: z.number().int().nonnegative(),\n});\n\nexport const syncChangesQuerySchema = z.object({\n collections: z.record(z.string(), z.number().int().nonnegative()),\n limit: z.number().int().positive().max(1000).optional(),\n});\n\nconst syncChangesPageResultSchema = z.object({\n type: z.literal(\"changes\"),\n updates: z.array(sequencedUpdateSchema),\n watermark: z.number().int().nonnegative(),\n hasMore: z.boolean(),\n});\n\nconst syncChangesResyncRequiredResultSchema = z.object({\n type: z.literal(\"resyncRequired\"),\n collections: z.array(z.string()),\n watermark: z.number().int().nonnegative(),\n});\n\nexport const syncChangesResultSchema = z.discriminatedUnion(\"type\", [\n syncChangesPageResultSchema,\n syncChangesResyncRequiredResultSchema,\n]);\n\nexport const apiCallSchema = z.object({\n path: z.string().min(1),\n input: z.unknown().optional(),\n});\n\nexport const collectionSubscriptionSchema = z.object({\n collection: z.string().min(1),\n});\n\nexport const collectionSubscriptionResultSchema = z.object({\n collection: z.string(),\n subscriptions: z.array(z.string()),\n});\n\nexport const collectionInvalidationSchema = z.object({\n collection: z.string(),\n});\n\nexport const broadcastSchema = z.object({\n type: z.literal(\"updates\"),\n shardId: z.string(),\n updates: z.array(sequencedUpdateSchema),\n watermark: z.number().int().nonnegative(),\n invalidations: z.array(collectionInvalidationSchema).optional(),\n});\n\nexport const webSocketAttachmentSchema = z.object({\n clientId: z.string(),\n connectedAt: z.number(),\n auth: z.record(z.string(), z.unknown()).optional(),\n subscriptions: z.array(z.string()).default([]),\n});\n\nexport type OperationType = z.infer<typeof operationTypeSchema>;\nexport type Update = z.infer<typeof updateSchema>;\nexport type SequencedUpdate = z.infer<typeof sequencedUpdateSchema>;\nexport type Batch = z.infer<typeof batchSchema>;\nexport type ReadFilterOperator = z.infer<typeof readFilterOperatorSchema>;\nexport type ReadFilter = z.output<typeof readFilterSchema>;\nexport type ReadFilterInput = z.input<typeof readFilterSchema>;\nexport type ReadCursor = z.output<typeof readCursorSchema>;\nexport type ReadCursorInput = z.input<typeof readCursorSchema>;\nexport type ReadOrderBy = z.output<typeof readOrderBySchema>;\nexport type ReadOrderByInput = z.input<typeof readOrderBySchema>;\nexport type ApiCall = z.output<typeof apiCallSchema>;\nexport type ApiCallInput = z.input<typeof apiCallSchema>;\nexport type CollectionSubscription = z.output<typeof collectionSubscriptionSchema>;\nexport type CollectionSubscriptionInput = z.input<typeof collectionSubscriptionSchema>;\nexport type CollectionSubscriptionResult = z.output<typeof collectionSubscriptionResultSchema>;\nexport type CollectionInvalidation = z.output<typeof collectionInvalidationSchema>;\n\nexport interface ApiRoute<TInput = unknown, TOutput = unknown> {\n input: TInput;\n output: TOutput;\n}\n\nexport type ApiContract = Record<string, ApiRoute>;\nexport type ApiPath<TApi extends ApiContract> = Extract<keyof TApi, string>;\nexport type ApiInput<TApi extends ApiContract, TPath extends ApiPath<TApi>> = TApi[TPath][\"input\"];\nexport type ApiOutput<\n TApi extends ApiContract,\n TPath extends ApiPath<TApi>,\n> = TApi[TPath][\"output\"];\nexport type ApiCallArgs<TApi extends ApiContract, TPath extends ApiPath<TApi>> =\n undefined extends ApiInput<TApi, TPath>\n ? [input?: ApiInput<TApi, TPath>]\n : [input: ApiInput<TApi, TPath>];\n\nexport interface ReadQuery {\n collection: string;\n filters?: Array<ReadFilter>;\n predicate?: ReadPredicate;\n orderBy?: Array<ReadOrderBy>;\n cursor?: ReadCursor;\n limit?: number;\n offset?: number;\n}\nexport interface ReadQueryInput {\n collection: string;\n filters?: Array<ReadFilterInput>;\n predicate?: ReadPredicate;\n orderBy?: Array<ReadOrderByInput>;\n cursor?: ReadCursorInput;\n limit?: number;\n offset?: number;\n}\nexport type PushResult = z.infer<typeof pushResultSchema>;\nexport type SyncChangesQuery = z.output<typeof syncChangesQuerySchema>;\nexport type SyncChangesQueryInput = z.input<typeof syncChangesQuerySchema>;\nexport type SyncChangesResult = z.infer<typeof syncChangesResultSchema>;\nexport type Broadcast = z.infer<typeof broadcastSchema>;\nexport type WebSocketAttachment = z.infer<typeof webSocketAttachmentSchema>;\n\nexport interface ReadResult<T = unknown> {\n rows: Array<T>;\n}\n","import type { ReadFilterOperator, ReadPredicate } from \"./api\";\n\nexport type ReadExpression =\n | FuncExpression\n | RefExpression\n | ValExpression\n | { expression: ReadExpression };\ntype ReadExpressionNode = FuncExpression | RefExpression | ValExpression;\n\nexport interface FuncExpression {\n type: \"func\";\n name: string;\n args: Array<unknown>;\n}\n\nexport interface RefExpression {\n type: \"ref\";\n source?: \"row\" | \"reference\";\n name?: string;\n path: Array<string | number>;\n}\n\nexport interface ValExpression {\n type: \"val\";\n value: unknown;\n}\n\nexport type ReadExpressionInput = ReadExpression;\nexport type ReadExpressionField = RefExpression & Record<string, any>;\nexport type ReadExpressionRow<T extends object = Record<string, unknown>> = {\n readonly [K in keyof T]: ReadExpressionField;\n};\n\nexport function readExpressionRow<\n T extends object = Record<string, unknown>,\n>(): ReadExpressionRow<T> {\n return refProxy([], \"row\") as ReadExpressionRow<T>;\n}\n\nexport function readExpressionReferences<\n TReferences extends Record<string, object> = Record<string, Record<string, unknown>>,\n>(\n names: Array<keyof TReferences & string>,\n): {\n readonly [K in keyof TReferences]: ReadExpressionRow<TReferences[K]>;\n} {\n return Object.fromEntries(\n names.map((name) => [name, refProxy([], \"reference\", name)]),\n ) as unknown as {\n readonly [K in keyof TReferences]: ReadExpressionRow<TReferences[K]>;\n };\n}\n\nexport function field(path: string | Array<string | number>): RefExpression {\n return {\n type: \"ref\",\n source: \"row\",\n path: Array.isArray(path) ? path : path.split(\".\"),\n };\n}\n\nexport function val(value: unknown): ValExpression {\n return { type: \"val\", value };\n}\n\nexport function eq(left: unknown, right: unknown): FuncExpression {\n return func(\"eq\", left, right);\n}\n\nexport function ne(left: unknown, right: unknown): FuncExpression {\n return func(\"not_eq\", left, right);\n}\n\nexport function gt(left: unknown, right: unknown): FuncExpression {\n return func(\"gt\", left, right);\n}\n\nexport function gte(left: unknown, right: unknown): FuncExpression {\n return func(\"gte\", left, right);\n}\n\nexport function lt(left: unknown, right: unknown): FuncExpression {\n return func(\"lt\", left, right);\n}\n\nexport function lte(left: unknown, right: unknown): FuncExpression {\n return func(\"lte\", left, right);\n}\n\nexport function inArray(left: unknown, values: unknown): FuncExpression {\n return func(\"in\", left, values);\n}\n\nexport function and(...expressions: Array<unknown>): FuncExpression {\n return func(\"and\", ...expressions);\n}\n\nexport function or(...expressions: Array<unknown>): FuncExpression {\n return func(\"or\", ...expressions);\n}\n\nexport function not(expression: unknown): FuncExpression {\n return func(\"not\", expression);\n}\n\nexport function compileReadExpression(expression: unknown): ReadPredicate {\n const unwrapped = unwrapExpression(expression);\n\n if (!isFuncExpression(unwrapped)) {\n throw new Error(\"Read access expressions must be function expressions\");\n }\n\n if (unwrapped.name === \"and\" || unwrapped.name === \"or\") {\n return {\n type: unwrapped.name,\n predicates: unwrapped.args.map(compileReadExpression),\n };\n }\n\n if (unwrapped.name === \"not\") {\n return negatePredicate(compileReadExpression(unwrapped.args[0]));\n }\n\n const comparison = comparisonFromExpression(unwrapped);\n if (!comparison) {\n throw new Error(`Unsupported read access operator: ${unwrapped.name}`);\n }\n\n return {\n type: \"comparison\",\n ...comparison,\n };\n}\n\nfunction func(name: string, ...args: Array<unknown>): FuncExpression {\n return {\n type: \"func\",\n name,\n args: args.map(toExpressionArg),\n };\n}\n\nfunction toExpressionArg(value: unknown): unknown {\n return isReadExpressionInput(value) ? value : val(value);\n}\n\nfunction comparisonFromExpression(\n expression: FuncExpression,\n): Omit<Extract<ReadPredicate, { type: \"comparison\" }>, \"type\"> | undefined {\n const op = toReadFilterOperator(expression.name);\n const [left, right] = expression.args;\n const leftExpression = unwrapExpression(left);\n const rightExpression = unwrapExpression(right);\n if (!op || !isRefExpression(leftExpression) || !isValExpression(rightExpression)) {\n return undefined;\n }\n\n return {\n field: rowField(leftExpression),\n op,\n value: rightExpression.value,\n };\n}\n\nfunction rowField(expression: RefExpression): string {\n if (expression.source && expression.source !== \"row\") {\n throw new Error(\"Read access expressions must reduce reference refs before compilation\");\n }\n\n return expression.path.join(\".\");\n}\n\nfunction toReadFilterOperator(operator: string): ReadFilterOperator | undefined {\n switch (operator) {\n case \"eq\":\n case \"gt\":\n case \"gte\":\n case \"lt\":\n case \"lte\":\n case \"in\":\n return operator;\n case \"not_eq\":\n return \"ne\";\n default:\n return undefined;\n }\n}\n\nfunction negatePredicate(predicate: ReadPredicate): ReadPredicate {\n if (predicate.type === \"and\" || predicate.type === \"or\") {\n return {\n type: predicate.type === \"and\" ? \"or\" : \"and\",\n predicates: predicate.predicates.map(negatePredicate),\n };\n }\n\n const comparison = predicate as Extract<ReadPredicate, { type: \"comparison\" }>;\n return {\n ...comparison,\n op: negateOperator(comparison.op),\n };\n}\n\nfunction negateOperator(operator: ReadFilterOperator): ReadFilterOperator {\n switch (operator) {\n case \"eq\":\n return \"ne\";\n case \"ne\":\n return \"eq\";\n case \"gt\":\n return \"lte\";\n case \"gte\":\n return \"lt\";\n case \"lt\":\n return \"gte\";\n case \"lte\":\n return \"gt\";\n case \"in\":\n throw new Error(\"Unsupported read access operator: not(in)\");\n }\n}\n\nfunction refProxy(\n path: Array<string | number>,\n source: RefExpression[\"source\"],\n name?: string,\n): ReadExpressionField {\n return new Proxy({ type: \"ref\", source, ...(name ? { name } : {}), path } as RefExpression, {\n get(target, property) {\n if (property in target) {\n return target[property as keyof RefExpression];\n }\n\n if (typeof property === \"symbol\") {\n return undefined;\n }\n\n return refProxy([...path, property], source, name);\n },\n }) as ReadExpressionField;\n}\n\nfunction unwrapExpression(value: unknown): unknown {\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"expression\" in value &&\n isExpressionLike((value as { expression: unknown }).expression)\n ) {\n return (value as { expression: unknown }).expression;\n }\n\n return value;\n}\n\nfunction isReadExpressionInput(value: unknown): value is ReadExpression {\n return (\n isExpressionLike(value) ||\n (typeof value === \"object\" &&\n value !== null &&\n \"expression\" in value &&\n isReadExpressionInput((value as { expression: unknown }).expression))\n );\n}\n\nfunction isExpressionLike(value: unknown): value is ReadExpressionNode {\n return typeof value === \"object\" && value !== null && \"type\" in value;\n}\n\nfunction isFuncExpression(value: unknown): value is FuncExpression {\n return (\n isExpressionLike(value) &&\n value.type === \"func\" &&\n typeof value.name === \"string\" &&\n Array.isArray(value.args)\n );\n}\n\nfunction isRefExpression(value: unknown): value is RefExpression {\n return isExpressionLike(value) && value.type === \"ref\" && Array.isArray(value.path);\n}\n\nfunction isValExpression(value: unknown): value is ValExpression {\n return isExpressionLike(value) && value.type === \"val\";\n}\n","import type { ReadPredicate } from \"./api\";\n\nexport function matchesReadPredicate(row: unknown, predicate: ReadPredicate | undefined): boolean {\n if (!predicate) {\n return true;\n }\n\n if (predicate.type === \"comparison\") {\n return matchesComparison(row, predicate);\n }\n\n if (predicate.type === \"and\") {\n return predicate.predicates.every((child) => matchesReadPredicate(row, child));\n }\n\n return predicate.predicates.some((child) => matchesReadPredicate(row, child));\n}\n\nfunction matchesComparison(\n row: unknown,\n predicate: Extract<ReadPredicate, { type: \"comparison\" }>,\n): boolean {\n const value = valueAtPath(row, predicate.field);\n\n switch (predicate.op) {\n case \"eq\":\n return value === predicate.value;\n case \"ne\":\n return value !== predicate.value;\n case \"gt\":\n return compareValues(value, predicate.value, (left, right) => left > right);\n case \"gte\":\n return compareValues(value, predicate.value, (left, right) => left >= right);\n case \"lt\":\n return compareValues(value, predicate.value, (left, right) => left < right);\n case \"lte\":\n return compareValues(value, predicate.value, (left, right) => left <= right);\n case \"in\":\n return Array.isArray(predicate.value) && predicate.value.includes(value);\n }\n}\n\nfunction compareValues(\n left: unknown,\n right: unknown,\n compare: (left: number | string, right: number | string) => boolean,\n): boolean {\n if (typeof left === \"number\" && typeof right === \"number\") {\n return compare(left, right);\n }\n\n if (typeof left === \"string\" && typeof right === \"string\") {\n return compare(left, right);\n }\n\n return false;\n}\n\nfunction valueAtPath(row: unknown, fieldName: string): unknown {\n return fieldName.split(\".\").reduce<unknown>((value, segment) => {\n if (typeof value !== \"object\" || value === null) {\n return undefined;\n }\n\n return (value as Record<string, unknown>)[segment];\n }, row);\n}\n","import { decode, encode } from \"@msgpack/msgpack\";\nimport { z } from \"zod\";\nimport {\n apiCallSchema,\n batchSchema,\n broadcastSchema,\n collectionSubscriptionSchema,\n readQuerySchema,\n syncChangesQuerySchema,\n} from \"./api\";\n\nexport const rpcIdSchema = z.union([z.string(), z.number()]).nullable().optional();\n\nconst rpcInputSchema = z.object({\n json: z.unknown(),\n});\n\nconst clientRpcMutationRequestSchema = z.object({\n id: rpcIdSchema,\n method: z.literal(\"mutation\"),\n params: z.object({\n path: z.literal(\"push\"),\n input: z.object({\n json: batchSchema,\n }),\n }),\n});\n\nconst clientRpcReadQueryRequestSchema = z.object({\n id: rpcIdSchema,\n method: z.literal(\"query\"),\n params: z.object({\n path: z.literal(\"read\"),\n input: z.object({\n json: readQuerySchema,\n }),\n }),\n});\n\nconst clientRpcChangesQueryRequestSchema = z.object({\n id: rpcIdSchema,\n method: z.literal(\"query\"),\n params: z.object({\n path: z.literal(\"changes\"),\n input: z.object({\n json: syncChangesQuerySchema,\n }),\n }),\n});\n\nconst clientRpcApiCallRequestSchema = z.object({\n id: rpcIdSchema,\n method: z.literal(\"mutation\"),\n params: z.object({\n path: z.literal(\"api\"),\n input: z.object({\n json: apiCallSchema,\n }),\n }),\n});\n\nconst clientRpcSubscriptionRequestSchema = z.object({\n id: rpcIdSchema,\n method: z.enum([\"subscribe\", \"unsubscribe\"]),\n params: z.object({\n input: z.object({\n json: collectionSubscriptionSchema,\n }),\n }),\n});\n\nexport const clientRpcRequestSchema = z.union([\n clientRpcMutationRequestSchema,\n clientRpcReadQueryRequestSchema,\n clientRpcChangesQueryRequestSchema,\n clientRpcApiCallRequestSchema,\n clientRpcSubscriptionRequestSchema,\n]);\n\nexport const rpcResultMessageSchema = z.object({\n id: rpcIdSchema,\n result: z.object({\n type: z.literal(\"data\"),\n data: rpcInputSchema,\n }),\n});\n\nexport const rpcErrorMessageSchema = z.object({\n id: rpcIdSchema,\n error: z.object({\n message: z.string(),\n }),\n});\n\nexport const subscriptionMessageSchema = z.object({\n method: z.literal(\"subscription\"),\n params: z.object({\n path: z.literal(\"updates\"),\n input: z.object({\n json: broadcastSchema,\n }),\n }),\n});\n\nexport const serverMessageSchema = z.union([\n rpcResultMessageSchema,\n rpcErrorMessageSchema,\n subscriptionMessageSchema,\n]);\n\nexport type RpcId = string | number | null | undefined;\nexport type ClientRpcRequest = z.input<typeof clientRpcRequestSchema>;\nexport type ParsedClientRpcRequest = z.output<typeof clientRpcRequestSchema>;\nexport type RpcResultMessage = z.output<typeof rpcResultMessageSchema>;\nexport type RpcErrorMessage = z.output<typeof rpcErrorMessageSchema>;\nexport type SubscriptionMessage = z.output<typeof subscriptionMessageSchema>;\nexport type ServerMessage = z.output<typeof serverMessageSchema>;\n\nexport type TransportPayload = ArrayBuffer | ArrayBufferView | string;\n\nexport interface TransportSocket {\n send(data: ArrayBuffer): void;\n}\n\nexport function parseClientRpcRequest(data: TransportPayload): ParsedClientRpcRequest {\n return clientRpcRequestSchema.parse(decodeMessage(data));\n}\n\nexport function parseServerMessage(data: TransportPayload): ServerMessage {\n return serverMessageSchema.parse(decodeMessage(data));\n}\n\nexport function readRpcId(data: TransportPayload): RpcId {\n try {\n const message = z.object({ id: rpcIdSchema }).safeParse(decodeMessage(data));\n return message.success ? message.data.id : null;\n } catch {\n return null;\n }\n}\n\nexport function encodeClientRpcRequest(message: ClientRpcRequest): ArrayBuffer {\n return encodeMessage(message);\n}\n\nexport function encodeServerMessage(message: ServerMessage): ArrayBuffer {\n return encodeMessage(message);\n}\n\nexport function sendClientRpcRequest(socket: TransportSocket, message: ClientRpcRequest): void {\n socket.send(encodeClientRpcRequest(message));\n}\n\nexport function sendServerMessage(socket: TransportSocket, message: ServerMessage): void {\n socket.send(encodeServerMessage(message));\n}\n\nfunction decodeMessage(data: TransportPayload): unknown {\n if (typeof data === \"string\") {\n return decode(new TextEncoder().encode(data));\n }\n\n return decode(data);\n}\n\nfunction encodeMessage(message: unknown): ArrayBuffer {\n const bytes = encode(message);\n const buffer = new ArrayBuffer(bytes.byteLength);\n new Uint8Array(buffer).set(bytes);\n return buffer;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/api.ts","../src/expression.ts","../src/predicate-match.ts","../src/rpc.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const operationTypeSchema = z.enum([\"insert\", \"update\", \"delete\"]);\n\nexport const updateSchema = z.object({\n id: z.string(),\n collection: z.string(),\n path: z.string().optional(),\n key: z.union([z.string(), z.number()]),\n type: operationTypeSchema,\n value: z.unknown().optional(),\n previousValue: z.unknown().optional(),\n clientId: z.string().optional(),\n createdAt: z.number(),\n});\n\nexport const sequencedUpdateSchema = updateSchema.extend({\n sequence: z.number().int().positive(),\n serverCreatedAt: z.string(),\n});\n\nexport const batchSchema = z.object({\n updates: z.array(updateSchema).min(1),\n});\n\nexport const readFilterOperatorSchema = z.enum([\"eq\", \"ne\", \"gt\", \"gte\", \"lt\", \"lte\", \"in\"]);\n\nexport const readFilterSchema = z.object({\n field: z.string().min(1),\n op: readFilterOperatorSchema.default(\"eq\"),\n value: z.unknown(),\n});\n\nexport type ReadPredicate =\n | {\n type: \"comparison\";\n field: string;\n op: z.infer<typeof readFilterOperatorSchema>;\n value: unknown;\n }\n | {\n type: \"and\" | \"or\";\n predicates: Array<ReadPredicate>;\n };\n\nconst readComparisonPredicateSchema = z.object({\n type: z.literal(\"comparison\"),\n field: z.string().min(1),\n op: readFilterOperatorSchema,\n value: z.unknown(),\n});\n\nconst readCompoundPredicateSchema = z.object({\n type: z.enum([\"and\", \"or\"]),\n predicates: z.array(z.lazy(() => readPredicateSchema)).min(1),\n});\n\nexport const readPredicateSchema: z.ZodType<ReadPredicate> = z.lazy(() =>\n z.discriminatedUnion(\"type\", [readComparisonPredicateSchema, readCompoundPredicateSchema]),\n);\n\nexport const readOrderBySchema = z.object({\n field: z.string().min(1),\n direction: z.enum([\"asc\", \"desc\"]).default(\"asc\"),\n});\n\nexport const readCursorSchema = z.object({\n whereCurrent: readPredicateSchema,\n whereFrom: readPredicateSchema,\n lastKey: z.union([z.string(), z.number()]).optional(),\n});\n\nexport const readQuerySchema = z.object({\n collection: z.string(),\n filters: z.array(readFilterSchema).optional(),\n predicate: readPredicateSchema.optional(),\n orderBy: z.array(readOrderBySchema).optional(),\n cursor: readCursorSchema.optional(),\n limit: z.number().int().positive().max(1000).optional(),\n offset: z.number().int().nonnegative().optional(),\n});\n\nexport const readResultSchema = z.object({\n rows: z.array(z.unknown()),\n});\n\nexport const pushResultSchema = z.object({\n accepted: z.number().int().nonnegative(),\n watermark: z.number().int().nonnegative(),\n});\n\nexport const syncChangesQuerySchema = z.object({\n collections: z.record(z.string(), z.number().int().nonnegative()),\n limit: z.number().int().positive().max(1000).optional(),\n});\n\nconst syncChangesPageResultSchema = z.object({\n type: z.literal(\"changes\"),\n updates: z.array(sequencedUpdateSchema),\n watermark: z.number().int().nonnegative(),\n hasMore: z.boolean(),\n cursors: z.record(z.string(), z.number().int().nonnegative()).optional(),\n});\n\nconst syncChangesResyncRequiredResultSchema = z.object({\n type: z.literal(\"resyncRequired\"),\n collections: z.array(z.string()),\n watermark: z.number().int().nonnegative(),\n});\n\nexport const syncChangesResultSchema = z.discriminatedUnion(\"type\", [\n syncChangesPageResultSchema,\n syncChangesResyncRequiredResultSchema,\n]);\n\nexport const apiCallSchema = z.object({\n path: z.string().min(1),\n input: z.unknown().optional(),\n});\n\nexport const collectionSubscriptionSchema = z.object({\n collection: z.string().min(1),\n});\n\nexport const collectionSubscriptionResultSchema = z.object({\n collection: z.string(),\n subscriptions: z.array(z.string()),\n});\n\nexport const collectionInvalidationSchema = z.object({\n collection: z.string(),\n});\n\nexport const broadcastSchema = z.object({\n type: z.literal(\"updates\"),\n shardId: z.string(),\n updates: z.array(sequencedUpdateSchema),\n watermark: z.number().int().nonnegative(),\n invalidations: z.array(collectionInvalidationSchema).optional(),\n});\n\nexport const webSocketAttachmentSchema = z.object({\n clientId: z.string(),\n connectedAt: z.number(),\n auth: z.record(z.string(), z.unknown()).optional(),\n subscriptions: z.array(z.string()).default([]),\n});\n\nexport type OperationType = z.infer<typeof operationTypeSchema>;\nexport type Update = z.infer<typeof updateSchema>;\nexport type SequencedUpdate = z.infer<typeof sequencedUpdateSchema>;\nexport type Batch = z.infer<typeof batchSchema>;\nexport type ReadFilterOperator = z.infer<typeof readFilterOperatorSchema>;\nexport type ReadFilter = z.output<typeof readFilterSchema>;\nexport type ReadFilterInput = z.input<typeof readFilterSchema>;\nexport type ReadCursor = z.output<typeof readCursorSchema>;\nexport type ReadCursorInput = z.input<typeof readCursorSchema>;\nexport type ReadOrderBy = z.output<typeof readOrderBySchema>;\nexport type ReadOrderByInput = z.input<typeof readOrderBySchema>;\nexport type ApiCall = z.output<typeof apiCallSchema>;\nexport type ApiCallInput = z.input<typeof apiCallSchema>;\nexport type CollectionSubscription = z.output<typeof collectionSubscriptionSchema>;\nexport type CollectionSubscriptionInput = z.input<typeof collectionSubscriptionSchema>;\nexport type CollectionSubscriptionResult = z.output<typeof collectionSubscriptionResultSchema>;\nexport type CollectionInvalidation = z.output<typeof collectionInvalidationSchema>;\n\nexport interface ApiRoute<TInput = unknown, TOutput = unknown> {\n input: TInput;\n output: TOutput;\n}\n\nexport type ApiContract = Record<string, ApiRoute>;\nexport type ApiPath<TApi extends ApiContract> = Extract<keyof TApi, string>;\nexport type ApiInput<TApi extends ApiContract, TPath extends ApiPath<TApi>> = TApi[TPath][\"input\"];\nexport type ApiOutput<\n TApi extends ApiContract,\n TPath extends ApiPath<TApi>,\n> = TApi[TPath][\"output\"];\nexport type ApiCallArgs<TApi extends ApiContract, TPath extends ApiPath<TApi>> =\n undefined extends ApiInput<TApi, TPath>\n ? [input?: ApiInput<TApi, TPath>]\n : [input: ApiInput<TApi, TPath>];\n\nexport interface ReadQuery {\n collection: string;\n filters?: Array<ReadFilter>;\n predicate?: ReadPredicate;\n orderBy?: Array<ReadOrderBy>;\n cursor?: ReadCursor;\n limit?: number;\n offset?: number;\n}\nexport interface ReadQueryInput {\n collection: string;\n filters?: Array<ReadFilterInput>;\n predicate?: ReadPredicate;\n orderBy?: Array<ReadOrderByInput>;\n cursor?: ReadCursorInput;\n limit?: number;\n offset?: number;\n}\nexport type PushResult = z.infer<typeof pushResultSchema>;\nexport type SyncChangesQuery = z.output<typeof syncChangesQuerySchema>;\nexport type SyncChangesQueryInput = z.input<typeof syncChangesQuerySchema>;\nexport type SyncChangesResult = z.infer<typeof syncChangesResultSchema>;\nexport type Broadcast = z.infer<typeof broadcastSchema>;\nexport type WebSocketAttachment = z.infer<typeof webSocketAttachmentSchema>;\n\nexport interface ReadResult<T = unknown> {\n rows: Array<T>;\n}\n","import type { ReadFilterOperator, ReadPredicate } from \"./api\";\n\nexport type ReadExpression =\n | FuncExpression\n | RefExpression\n | ValExpression\n | { expression: ReadExpression };\ntype ReadExpressionNode = FuncExpression | RefExpression | ValExpression;\n\nexport interface FuncExpression {\n type: \"func\";\n name: string;\n args: Array<unknown>;\n}\n\nexport interface RefExpression {\n type: \"ref\";\n source?: \"row\" | \"reference\";\n name?: string;\n path: Array<string | number>;\n}\n\nexport interface ValExpression {\n type: \"val\";\n value: unknown;\n}\n\nexport type ReadExpressionInput = ReadExpression;\nexport type ReadExpressionField = RefExpression & Record<string, any>;\nexport type ReadExpressionRow<T extends object = Record<string, unknown>> = {\n readonly [K in keyof T]: ReadExpressionField;\n};\n\nexport function readExpressionRow<\n T extends object = Record<string, unknown>,\n>(): ReadExpressionRow<T> {\n return refProxy([], \"row\") as ReadExpressionRow<T>;\n}\n\nexport function readExpressionReferences<\n TReferences extends Record<string, object> = Record<string, Record<string, unknown>>,\n>(\n names: Array<keyof TReferences & string>,\n): {\n readonly [K in keyof TReferences]: ReadExpressionRow<TReferences[K]>;\n} {\n return Object.fromEntries(\n names.map((name) => [name, refProxy([], \"reference\", name)]),\n ) as unknown as {\n readonly [K in keyof TReferences]: ReadExpressionRow<TReferences[K]>;\n };\n}\n\nexport function field(path: string | Array<string | number>): RefExpression {\n return {\n type: \"ref\",\n source: \"row\",\n path: Array.isArray(path) ? path : path.split(\".\"),\n };\n}\n\nexport function val(value: unknown): ValExpression {\n return { type: \"val\", value };\n}\n\nexport function eq(left: unknown, right: unknown): FuncExpression {\n return func(\"eq\", left, right);\n}\n\nexport function ne(left: unknown, right: unknown): FuncExpression {\n return func(\"not_eq\", left, right);\n}\n\nexport function gt(left: unknown, right: unknown): FuncExpression {\n return func(\"gt\", left, right);\n}\n\nexport function gte(left: unknown, right: unknown): FuncExpression {\n return func(\"gte\", left, right);\n}\n\nexport function lt(left: unknown, right: unknown): FuncExpression {\n return func(\"lt\", left, right);\n}\n\nexport function lte(left: unknown, right: unknown): FuncExpression {\n return func(\"lte\", left, right);\n}\n\nexport function inArray(left: unknown, values: unknown): FuncExpression {\n return func(\"in\", left, values);\n}\n\nexport function and(...expressions: Array<unknown>): FuncExpression {\n return func(\"and\", ...expressions);\n}\n\nexport function or(...expressions: Array<unknown>): FuncExpression {\n return func(\"or\", ...expressions);\n}\n\nexport function not(expression: unknown): FuncExpression {\n return func(\"not\", expression);\n}\n\nexport function compileReadExpression(expression: unknown): ReadPredicate {\n const unwrapped = unwrapExpression(expression);\n\n if (!isFuncExpression(unwrapped)) {\n throw new Error(\"Read access expressions must be function expressions\");\n }\n\n if (unwrapped.name === \"and\" || unwrapped.name === \"or\") {\n return {\n type: unwrapped.name,\n predicates: unwrapped.args.map(compileReadExpression),\n };\n }\n\n if (unwrapped.name === \"not\") {\n return negatePredicate(compileReadExpression(unwrapped.args[0]));\n }\n\n const comparison = comparisonFromExpression(unwrapped);\n if (!comparison) {\n throw new Error(`Unsupported read access operator: ${unwrapped.name}`);\n }\n\n return {\n type: \"comparison\",\n ...comparison,\n };\n}\n\nfunction func(name: string, ...args: Array<unknown>): FuncExpression {\n return {\n type: \"func\",\n name,\n args: args.map(toExpressionArg),\n };\n}\n\nfunction toExpressionArg(value: unknown): unknown {\n return isReadExpressionInput(value) ? value : val(value);\n}\n\nfunction comparisonFromExpression(\n expression: FuncExpression,\n): Omit<Extract<ReadPredicate, { type: \"comparison\" }>, \"type\"> | undefined {\n const op = toReadFilterOperator(expression.name);\n const [left, right] = expression.args;\n const leftExpression = unwrapExpression(left);\n const rightExpression = unwrapExpression(right);\n if (!op || !isRefExpression(leftExpression) || !isValExpression(rightExpression)) {\n return undefined;\n }\n\n return {\n field: rowField(leftExpression),\n op,\n value: rightExpression.value,\n };\n}\n\nfunction rowField(expression: RefExpression): string {\n if (expression.source && expression.source !== \"row\") {\n throw new Error(\"Read access expressions must reduce reference refs before compilation\");\n }\n\n return expression.path.join(\".\");\n}\n\nfunction toReadFilterOperator(operator: string): ReadFilterOperator | undefined {\n switch (operator) {\n case \"eq\":\n case \"gt\":\n case \"gte\":\n case \"lt\":\n case \"lte\":\n case \"in\":\n return operator;\n case \"not_eq\":\n return \"ne\";\n default:\n return undefined;\n }\n}\n\nfunction negatePredicate(predicate: ReadPredicate): ReadPredicate {\n if (predicate.type === \"and\" || predicate.type === \"or\") {\n return {\n type: predicate.type === \"and\" ? \"or\" : \"and\",\n predicates: predicate.predicates.map(negatePredicate),\n };\n }\n\n const comparison = predicate as Extract<ReadPredicate, { type: \"comparison\" }>;\n return {\n ...comparison,\n op: negateOperator(comparison.op),\n };\n}\n\nfunction negateOperator(operator: ReadFilterOperator): ReadFilterOperator {\n switch (operator) {\n case \"eq\":\n return \"ne\";\n case \"ne\":\n return \"eq\";\n case \"gt\":\n return \"lte\";\n case \"gte\":\n return \"lt\";\n case \"lt\":\n return \"gte\";\n case \"lte\":\n return \"gt\";\n case \"in\":\n throw new Error(\"Unsupported read access operator: not(in)\");\n }\n}\n\nfunction refProxy(\n path: Array<string | number>,\n source: RefExpression[\"source\"],\n name?: string,\n): ReadExpressionField {\n return new Proxy({ type: \"ref\", source, ...(name ? { name } : {}), path } as RefExpression, {\n get(target, property) {\n if (property in target) {\n return target[property as keyof RefExpression];\n }\n\n if (typeof property === \"symbol\") {\n return undefined;\n }\n\n return refProxy([...path, property], source, name);\n },\n }) as ReadExpressionField;\n}\n\nfunction unwrapExpression(value: unknown): unknown {\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"expression\" in value &&\n isExpressionLike((value as { expression: unknown }).expression)\n ) {\n return (value as { expression: unknown }).expression;\n }\n\n return value;\n}\n\nfunction isReadExpressionInput(value: unknown): value is ReadExpression {\n return (\n isExpressionLike(value) ||\n (typeof value === \"object\" &&\n value !== null &&\n \"expression\" in value &&\n isReadExpressionInput((value as { expression: unknown }).expression))\n );\n}\n\nfunction isExpressionLike(value: unknown): value is ReadExpressionNode {\n return typeof value === \"object\" && value !== null && \"type\" in value;\n}\n\nfunction isFuncExpression(value: unknown): value is FuncExpression {\n return (\n isExpressionLike(value) &&\n value.type === \"func\" &&\n typeof value.name === \"string\" &&\n Array.isArray(value.args)\n );\n}\n\nfunction isRefExpression(value: unknown): value is RefExpression {\n return isExpressionLike(value) && value.type === \"ref\" && Array.isArray(value.path);\n}\n\nfunction isValExpression(value: unknown): value is ValExpression {\n return isExpressionLike(value) && value.type === \"val\";\n}\n","import type { ReadPredicate } from \"./api\";\n\nexport function matchesReadPredicate(row: unknown, predicate: ReadPredicate | undefined): boolean {\n if (!predicate) {\n return true;\n }\n\n if (predicate.type === \"comparison\") {\n return matchesComparison(row, predicate);\n }\n\n if (predicate.type === \"and\") {\n return predicate.predicates.every((child) => matchesReadPredicate(row, child));\n }\n\n return predicate.predicates.some((child) => matchesReadPredicate(row, child));\n}\n\nfunction matchesComparison(\n row: unknown,\n predicate: Extract<ReadPredicate, { type: \"comparison\" }>,\n): boolean {\n const value = valueAtPath(row, predicate.field);\n\n switch (predicate.op) {\n case \"eq\":\n return value === predicate.value;\n case \"ne\":\n return value !== predicate.value;\n case \"gt\":\n return compareValues(value, predicate.value, (left, right) => left > right);\n case \"gte\":\n return compareValues(value, predicate.value, (left, right) => left >= right);\n case \"lt\":\n return compareValues(value, predicate.value, (left, right) => left < right);\n case \"lte\":\n return compareValues(value, predicate.value, (left, right) => left <= right);\n case \"in\":\n return Array.isArray(predicate.value) && predicate.value.includes(value);\n }\n}\n\nfunction compareValues(\n left: unknown,\n right: unknown,\n compare: (left: number | string, right: number | string) => boolean,\n): boolean {\n if (typeof left === \"number\" && typeof right === \"number\") {\n return compare(left, right);\n }\n\n if (typeof left === \"string\" && typeof right === \"string\") {\n return compare(left, right);\n }\n\n return false;\n}\n\nfunction valueAtPath(row: unknown, fieldName: string): unknown {\n return fieldName.split(\".\").reduce<unknown>((value, segment) => {\n if (typeof value !== \"object\" || value === null) {\n return undefined;\n }\n\n return (value as Record<string, unknown>)[segment];\n }, row);\n}\n","import { decode, encode } from \"@msgpack/msgpack\";\nimport { z } from \"zod\";\nimport {\n apiCallSchema,\n batchSchema,\n broadcastSchema,\n collectionSubscriptionSchema,\n readQuerySchema,\n syncChangesQuerySchema,\n} from \"./api\";\n\nexport const protocolVersion = 1 as const;\nexport const protocolVersionSchema = z.literal(protocolVersion);\nexport const requestIdSchema = z.union([z.string(), z.number()]);\nexport const nullableRequestIdSchema = requestIdSchema.nullable();\n\nexport const protocolErrorCodeSchema = z.enum([\n \"AUTH_DENIED\",\n \"VALIDATION_FAILED\",\n \"CONFLICT\",\n \"RESYNC_REQUIRED\",\n \"RATE_LIMITED\",\n \"NOT_FOUND\",\n \"UNSUPPORTED_OPERATION\",\n \"PROTOCOL_ERROR\",\n \"INTERNAL_ERROR\",\n]);\n\nexport const protocolErrorSchema = z.object({\n code: protocolErrorCodeSchema,\n message: z.string(),\n details: z.unknown().optional(),\n});\n\nconst readRequestSchema = z.object({\n version: protocolVersionSchema,\n id: requestIdSchema,\n type: z.literal(\"read\"),\n input: readQuerySchema,\n});\n\nconst pushRequestSchema = z.object({\n version: protocolVersionSchema,\n id: requestIdSchema,\n type: z.literal(\"push\"),\n input: batchSchema,\n});\n\nconst changesRequestSchema = z.object({\n version: protocolVersionSchema,\n id: requestIdSchema,\n type: z.literal(\"changes\"),\n input: syncChangesQuerySchema,\n});\n\nconst apiRequestSchema = z.object({\n version: protocolVersionSchema,\n id: requestIdSchema,\n type: z.literal(\"api\"),\n input: apiCallSchema,\n});\n\nconst subscriptionRequestSchema = z.object({\n version: protocolVersionSchema,\n id: requestIdSchema,\n type: z.enum([\"subscribe\", \"unsubscribe\"]),\n input: collectionSubscriptionSchema,\n});\n\nexport const clientMessageSchema = z.discriminatedUnion(\"type\", [\n readRequestSchema,\n pushRequestSchema,\n changesRequestSchema,\n apiRequestSchema,\n subscriptionRequestSchema,\n]);\n\nconst resultMessageSchema = z.object({\n version: protocolVersionSchema,\n id: nullableRequestIdSchema,\n type: z.literal(\"result\"),\n payload: z.unknown(),\n});\n\nconst errorMessageSchema = z.object({\n version: protocolVersionSchema,\n id: nullableRequestIdSchema,\n type: z.literal(\"error\"),\n error: protocolErrorSchema,\n});\n\nconst updatesMessageSchema = z.object({\n version: protocolVersionSchema,\n type: z.literal(\"updates\"),\n payload: broadcastSchema,\n});\n\nexport const serverMessageSchema = z.discriminatedUnion(\"type\", [\n resultMessageSchema,\n errorMessageSchema,\n updatesMessageSchema,\n]);\n\nexport type RequestId = z.infer<typeof requestIdSchema>;\nexport type ProtocolErrorCode = z.infer<typeof protocolErrorCodeSchema>;\nexport type ProtocolErrorPayload = z.output<typeof protocolErrorSchema>;\nexport type ClientMessage = z.input<typeof clientMessageSchema>;\nexport type ParsedClientMessage = z.output<typeof clientMessageSchema>;\nexport type ResultMessage = z.output<typeof resultMessageSchema>;\nexport type ErrorMessage = z.output<typeof errorMessageSchema>;\nexport type UpdatesMessage = z.output<typeof updatesMessageSchema>;\nexport type ServerMessage = z.output<typeof serverMessageSchema>;\n\nexport class ProtocolError extends Error {\n readonly code: ProtocolErrorCode;\n readonly details: unknown;\n\n constructor(error: ProtocolErrorPayload) {\n super(error.message);\n this.name = \"ProtocolError\";\n this.code = error.code;\n this.details = error.details;\n }\n}\n\nexport type TransportPayload = ArrayBuffer | ArrayBufferView | string;\n\nexport interface TransportSocket {\n send(data: ArrayBuffer): void;\n}\n\nexport function parseClientMessage(data: TransportPayload): ParsedClientMessage {\n return clientMessageSchema.parse(decodeMessage(data));\n}\n\nexport function parseServerMessage(data: TransportPayload): ServerMessage {\n return serverMessageSchema.parse(decodeMessage(data));\n}\n\nexport function readMessageId(data: TransportPayload): RequestId | null {\n try {\n const message = z\n .object({ id: nullableRequestIdSchema.optional() })\n .safeParse(decodeMessage(data));\n return message.success && message.data.id !== undefined ? message.data.id : null;\n } catch {\n return null;\n }\n}\n\nexport function encodeClientMessage(message: ClientMessage): ArrayBuffer {\n return encodeMessage(message);\n}\n\nexport function encodeServerMessage(message: ServerMessage): ArrayBuffer {\n return encodeMessage(message);\n}\n\nexport function sendClientMessage(socket: TransportSocket, message: ClientMessage): void {\n socket.send(encodeClientMessage(message));\n}\n\nexport function sendServerMessage(socket: TransportSocket, message: ServerMessage): void {\n socket.send(encodeServerMessage(message));\n}\n\nfunction decodeMessage(data: TransportPayload): unknown {\n if (typeof data === \"string\") {\n return decode(new TextEncoder().encode(data));\n }\n\n return decode(data);\n}\n\nfunction encodeMessage(message: unknown): ArrayBuffer {\n const bytes = encode(message);\n const buffer = new ArrayBuffer(bytes.byteLength);\n new Uint8Array(buffer).set(bytes);\n return buffer;\n}\n"],"mappings":"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"}
|