@hatchet-dev/typescript-sdk 1.35.1 → 1.37.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 (34) hide show
  1. package/clients/rest/generated/Api.d.ts +85 -1
  2. package/clients/rest/generated/Api.js +30 -0
  3. package/clients/rest/generated/data-contracts.d.ts +11 -0
  4. package/package.json +1 -1
  5. package/protoc/dispatcher/dispatcher.d.ts +4 -0
  6. package/protoc/dispatcher/dispatcher.js +42 -2
  7. package/protoc/v1/streams.d.ts +34 -0
  8. package/protoc/v1/streams.js +279 -5
  9. package/protoc-es/dispatcher/dispatcher_pb.d.ts +12 -0
  10. package/protoc-es/dispatcher/dispatcher_pb.js +1 -1
  11. package/protoc-es/v1/streams_pb.d.ts +79 -0
  12. package/protoc-es/v1/streams_pb.js +12 -2
  13. package/v1/client/duration.js +3 -3
  14. package/v1/client/features/streams.d.ts +22 -0
  15. package/v1/client/features/streams.js +93 -13
  16. package/v1/client/worker/engine-version.d.ts +2 -0
  17. package/v1/client/worker/engine-version.js +7 -0
  18. package/v1/client/worker/worker-internal.d.ts +2 -0
  19. package/v1/client/worker/worker-internal.js +20 -1
  20. package/v1/examples/durable-streams/benchmark.d.ts +34 -0
  21. package/v1/examples/durable-streams/benchmark.js +120 -0
  22. package/v1/examples/e2e-worker.js +52 -49
  23. package/v1/examples/retry_after/run.d.ts +1 -0
  24. package/v1/examples/retry_after/run.js +21 -0
  25. package/v1/examples/retry_after/worker.d.ts +1 -0
  26. package/v1/examples/retry_after/worker.js +24 -0
  27. package/v1/examples/retry_after/workflow.d.ts +9 -0
  28. package/v1/examples/retry_after/workflow.js +40 -0
  29. package/v1/task.d.ts +13 -0
  30. package/v1/task.js +14 -1
  31. package/version.d.ts +1 -1
  32. package/version.js +1 -1
  33. package/v1/examples/durable-streams/publish-latency.d.ts +0 -15
  34. package/v1/examples/durable-streams/publish-latency.js +0 -50
@@ -5,13 +5,20 @@
5
5
  // protoc v3.19.1
6
6
  // source: v1/streams.proto
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.V1StreamsDefinition = exports.StreamEntry = exports.StreamMessage = exports.SubscribeStreamRequest = exports.PublishStreamMessageResponse = exports.PublishStreamMessageRequest = exports.protobufPackage = void 0;
8
+ exports.V1StreamsDefinition = exports.StreamTopicMetadata = exports.GetStreamTopicMetadataRequest = exports.StreamEntry = exports.StreamMessage = exports.SubscribeStreamRequest = exports.PublishStreamMessageResponse = exports.PublishStreamMessageRequest = exports.protobufPackage = void 0;
9
9
  /* eslint-disable */
10
10
  const wire_1 = require("@bufbuild/protobuf/wire");
11
11
  const timestamp_1 = require("../google/protobuf/timestamp");
12
12
  exports.protobufPackage = 'v1';
13
13
  function createBasePublishStreamMessageRequest() {
14
- return { namespace: '', topic: '', payload: new Uint8Array(0), producerId: '', producerSeq: 0 };
14
+ return {
15
+ namespace: '',
16
+ topic: '',
17
+ payload: new Uint8Array(0),
18
+ producerId: '',
19
+ producerSeq: 0,
20
+ payloadRef: '',
21
+ };
15
22
  }
16
23
  exports.PublishStreamMessageRequest = {
17
24
  encode(message, writer = new wire_1.BinaryWriter()) {
@@ -30,6 +37,9 @@ exports.PublishStreamMessageRequest = {
30
37
  if (message.producerSeq !== 0) {
31
38
  writer.uint32(40).int64(message.producerSeq);
32
39
  }
40
+ if (message.payloadRef !== '') {
41
+ writer.uint32(50).string(message.payloadRef);
42
+ }
33
43
  return writer;
34
44
  },
35
45
  decode(input, length) {
@@ -74,6 +84,13 @@ exports.PublishStreamMessageRequest = {
74
84
  message.producerSeq = longToNumber(reader.int64());
75
85
  continue;
76
86
  }
87
+ case 6: {
88
+ if (tag !== 50) {
89
+ break;
90
+ }
91
+ message.payloadRef = reader.string();
92
+ continue;
93
+ }
77
94
  }
78
95
  if ((tag & 7) === 4 || tag === 0) {
79
96
  break;
@@ -97,6 +114,11 @@ exports.PublishStreamMessageRequest = {
97
114
  : isSet(object.producer_seq)
98
115
  ? globalThis.Number(object.producer_seq)
99
116
  : 0,
117
+ payloadRef: isSet(object.payloadRef)
118
+ ? globalThis.String(object.payloadRef)
119
+ : isSet(object.payload_ref)
120
+ ? globalThis.String(object.payload_ref)
121
+ : '',
100
122
  };
101
123
  },
102
124
  toJSON(message) {
@@ -116,19 +138,23 @@ exports.PublishStreamMessageRequest = {
116
138
  if (message.producerSeq !== 0) {
117
139
  obj.producerSeq = Math.round(message.producerSeq);
118
140
  }
141
+ if (message.payloadRef !== '') {
142
+ obj.payloadRef = message.payloadRef;
143
+ }
119
144
  return obj;
120
145
  },
121
146
  create(base) {
122
147
  return exports.PublishStreamMessageRequest.fromPartial(base !== null && base !== void 0 ? base : {});
123
148
  },
124
149
  fromPartial(object) {
125
- var _a, _b, _c, _d, _e;
150
+ var _a, _b, _c, _d, _e, _f;
126
151
  const message = createBasePublishStreamMessageRequest();
127
152
  message.namespace = (_a = object.namespace) !== null && _a !== void 0 ? _a : '';
128
153
  message.topic = (_b = object.topic) !== null && _b !== void 0 ? _b : '';
129
154
  message.payload = (_c = object.payload) !== null && _c !== void 0 ? _c : new Uint8Array(0);
130
155
  message.producerId = (_d = object.producerId) !== null && _d !== void 0 ? _d : '';
131
156
  message.producerSeq = (_e = object.producerSeq) !== null && _e !== void 0 ? _e : 0;
157
+ message.payloadRef = (_f = object.payloadRef) !== null && _f !== void 0 ? _f : '';
132
158
  return message;
133
159
  },
134
160
  };
@@ -341,7 +367,7 @@ exports.StreamMessage = {
341
367
  },
342
368
  };
343
369
  function createBaseStreamEntry() {
344
- return { payload: new Uint8Array(0), cursor: '', createdAt: undefined };
370
+ return { payload: new Uint8Array(0), cursor: '', createdAt: undefined, payloadRef: '' };
345
371
  }
346
372
  exports.StreamEntry = {
347
373
  encode(message, writer = new wire_1.BinaryWriter()) {
@@ -354,6 +380,9 @@ exports.StreamEntry = {
354
380
  if (message.createdAt !== undefined) {
355
381
  timestamp_1.Timestamp.encode(toTimestamp(message.createdAt), writer.uint32(26).fork()).join();
356
382
  }
383
+ if (message.payloadRef !== '') {
384
+ writer.uint32(34).string(message.payloadRef);
385
+ }
357
386
  return writer;
358
387
  },
359
388
  decode(input, length) {
@@ -384,6 +413,13 @@ exports.StreamEntry = {
384
413
  message.createdAt = fromTimestamp(timestamp_1.Timestamp.decode(reader, reader.uint32()));
385
414
  continue;
386
415
  }
416
+ case 4: {
417
+ if (tag !== 34) {
418
+ break;
419
+ }
420
+ message.payloadRef = reader.string();
421
+ continue;
422
+ }
387
423
  }
388
424
  if ((tag & 7) === 4 || tag === 0) {
389
425
  break;
@@ -401,6 +437,11 @@ exports.StreamEntry = {
401
437
  : isSet(object.created_at)
402
438
  ? fromJsonTimestamp(object.created_at)
403
439
  : undefined,
440
+ payloadRef: isSet(object.payloadRef)
441
+ ? globalThis.String(object.payloadRef)
442
+ : isSet(object.payload_ref)
443
+ ? globalThis.String(object.payload_ref)
444
+ : '',
404
445
  };
405
446
  },
406
447
  toJSON(message) {
@@ -414,17 +455,242 @@ exports.StreamEntry = {
414
455
  if (message.createdAt !== undefined) {
415
456
  obj.createdAt = message.createdAt.toISOString();
416
457
  }
458
+ if (message.payloadRef !== '') {
459
+ obj.payloadRef = message.payloadRef;
460
+ }
417
461
  return obj;
418
462
  },
419
463
  create(base) {
420
464
  return exports.StreamEntry.fromPartial(base !== null && base !== void 0 ? base : {});
421
465
  },
422
466
  fromPartial(object) {
423
- var _a, _b, _c;
467
+ var _a, _b, _c, _d;
424
468
  const message = createBaseStreamEntry();
425
469
  message.payload = (_a = object.payload) !== null && _a !== void 0 ? _a : new Uint8Array(0);
426
470
  message.cursor = (_b = object.cursor) !== null && _b !== void 0 ? _b : '';
427
471
  message.createdAt = (_c = object.createdAt) !== null && _c !== void 0 ? _c : undefined;
472
+ message.payloadRef = (_d = object.payloadRef) !== null && _d !== void 0 ? _d : '';
473
+ return message;
474
+ },
475
+ };
476
+ function createBaseGetStreamTopicMetadataRequest() {
477
+ return { namespace: '', topic: '' };
478
+ }
479
+ exports.GetStreamTopicMetadataRequest = {
480
+ encode(message, writer = new wire_1.BinaryWriter()) {
481
+ if (message.namespace !== '') {
482
+ writer.uint32(10).string(message.namespace);
483
+ }
484
+ if (message.topic !== '') {
485
+ writer.uint32(18).string(message.topic);
486
+ }
487
+ return writer;
488
+ },
489
+ decode(input, length) {
490
+ const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);
491
+ const end = length === undefined ? reader.len : reader.pos + length;
492
+ const message = createBaseGetStreamTopicMetadataRequest();
493
+ while (reader.pos < end) {
494
+ const tag = reader.uint32();
495
+ switch (tag >>> 3) {
496
+ case 1: {
497
+ if (tag !== 10) {
498
+ break;
499
+ }
500
+ message.namespace = reader.string();
501
+ continue;
502
+ }
503
+ case 2: {
504
+ if (tag !== 18) {
505
+ break;
506
+ }
507
+ message.topic = reader.string();
508
+ continue;
509
+ }
510
+ }
511
+ if ((tag & 7) === 4 || tag === 0) {
512
+ break;
513
+ }
514
+ reader.skip(tag & 7);
515
+ }
516
+ return message;
517
+ },
518
+ fromJSON(object) {
519
+ return {
520
+ namespace: isSet(object.namespace) ? globalThis.String(object.namespace) : '',
521
+ topic: isSet(object.topic) ? globalThis.String(object.topic) : '',
522
+ };
523
+ },
524
+ toJSON(message) {
525
+ const obj = {};
526
+ if (message.namespace !== '') {
527
+ obj.namespace = message.namespace;
528
+ }
529
+ if (message.topic !== '') {
530
+ obj.topic = message.topic;
531
+ }
532
+ return obj;
533
+ },
534
+ create(base) {
535
+ return exports.GetStreamTopicMetadataRequest.fromPartial(base !== null && base !== void 0 ? base : {});
536
+ },
537
+ fromPartial(object) {
538
+ var _a, _b;
539
+ const message = createBaseGetStreamTopicMetadataRequest();
540
+ message.namespace = (_a = object.namespace) !== null && _a !== void 0 ? _a : '';
541
+ message.topic = (_b = object.topic) !== null && _b !== void 0 ? _b : '';
542
+ return message;
543
+ },
544
+ };
545
+ function createBaseStreamTopicMetadata() {
546
+ return {
547
+ namespace: '',
548
+ topic: '',
549
+ tenantId: '',
550
+ latestCursor: undefined,
551
+ messageCount: 0,
552
+ lastPublishedAt: undefined,
553
+ };
554
+ }
555
+ exports.StreamTopicMetadata = {
556
+ encode(message, writer = new wire_1.BinaryWriter()) {
557
+ if (message.namespace !== '') {
558
+ writer.uint32(10).string(message.namespace);
559
+ }
560
+ if (message.topic !== '') {
561
+ writer.uint32(18).string(message.topic);
562
+ }
563
+ if (message.tenantId !== '') {
564
+ writer.uint32(26).string(message.tenantId);
565
+ }
566
+ if (message.latestCursor !== undefined) {
567
+ writer.uint32(34).string(message.latestCursor);
568
+ }
569
+ if (message.messageCount !== 0) {
570
+ writer.uint32(40).int64(message.messageCount);
571
+ }
572
+ if (message.lastPublishedAt !== undefined) {
573
+ timestamp_1.Timestamp.encode(toTimestamp(message.lastPublishedAt), writer.uint32(50).fork()).join();
574
+ }
575
+ return writer;
576
+ },
577
+ decode(input, length) {
578
+ const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);
579
+ const end = length === undefined ? reader.len : reader.pos + length;
580
+ const message = createBaseStreamTopicMetadata();
581
+ while (reader.pos < end) {
582
+ const tag = reader.uint32();
583
+ switch (tag >>> 3) {
584
+ case 1: {
585
+ if (tag !== 10) {
586
+ break;
587
+ }
588
+ message.namespace = reader.string();
589
+ continue;
590
+ }
591
+ case 2: {
592
+ if (tag !== 18) {
593
+ break;
594
+ }
595
+ message.topic = reader.string();
596
+ continue;
597
+ }
598
+ case 3: {
599
+ if (tag !== 26) {
600
+ break;
601
+ }
602
+ message.tenantId = reader.string();
603
+ continue;
604
+ }
605
+ case 4: {
606
+ if (tag !== 34) {
607
+ break;
608
+ }
609
+ message.latestCursor = reader.string();
610
+ continue;
611
+ }
612
+ case 5: {
613
+ if (tag !== 40) {
614
+ break;
615
+ }
616
+ message.messageCount = longToNumber(reader.int64());
617
+ continue;
618
+ }
619
+ case 6: {
620
+ if (tag !== 50) {
621
+ break;
622
+ }
623
+ message.lastPublishedAt = fromTimestamp(timestamp_1.Timestamp.decode(reader, reader.uint32()));
624
+ continue;
625
+ }
626
+ }
627
+ if ((tag & 7) === 4 || tag === 0) {
628
+ break;
629
+ }
630
+ reader.skip(tag & 7);
631
+ }
632
+ return message;
633
+ },
634
+ fromJSON(object) {
635
+ return {
636
+ namespace: isSet(object.namespace) ? globalThis.String(object.namespace) : '',
637
+ topic: isSet(object.topic) ? globalThis.String(object.topic) : '',
638
+ tenantId: isSet(object.tenantId)
639
+ ? globalThis.String(object.tenantId)
640
+ : isSet(object.tenant_id)
641
+ ? globalThis.String(object.tenant_id)
642
+ : '',
643
+ latestCursor: isSet(object.latestCursor)
644
+ ? globalThis.String(object.latestCursor)
645
+ : isSet(object.latest_cursor)
646
+ ? globalThis.String(object.latest_cursor)
647
+ : undefined,
648
+ messageCount: isSet(object.messageCount)
649
+ ? globalThis.Number(object.messageCount)
650
+ : isSet(object.message_count)
651
+ ? globalThis.Number(object.message_count)
652
+ : 0,
653
+ lastPublishedAt: isSet(object.lastPublishedAt)
654
+ ? fromJsonTimestamp(object.lastPublishedAt)
655
+ : isSet(object.last_published_at)
656
+ ? fromJsonTimestamp(object.last_published_at)
657
+ : undefined,
658
+ };
659
+ },
660
+ toJSON(message) {
661
+ const obj = {};
662
+ if (message.namespace !== '') {
663
+ obj.namespace = message.namespace;
664
+ }
665
+ if (message.topic !== '') {
666
+ obj.topic = message.topic;
667
+ }
668
+ if (message.tenantId !== '') {
669
+ obj.tenantId = message.tenantId;
670
+ }
671
+ if (message.latestCursor !== undefined) {
672
+ obj.latestCursor = message.latestCursor;
673
+ }
674
+ if (message.messageCount !== 0) {
675
+ obj.messageCount = Math.round(message.messageCount);
676
+ }
677
+ if (message.lastPublishedAt !== undefined) {
678
+ obj.lastPublishedAt = message.lastPublishedAt.toISOString();
679
+ }
680
+ return obj;
681
+ },
682
+ create(base) {
683
+ return exports.StreamTopicMetadata.fromPartial(base !== null && base !== void 0 ? base : {});
684
+ },
685
+ fromPartial(object) {
686
+ var _a, _b, _c, _d, _e, _f;
687
+ const message = createBaseStreamTopicMetadata();
688
+ message.namespace = (_a = object.namespace) !== null && _a !== void 0 ? _a : '';
689
+ message.topic = (_b = object.topic) !== null && _b !== void 0 ? _b : '';
690
+ message.tenantId = (_c = object.tenantId) !== null && _c !== void 0 ? _c : '';
691
+ message.latestCursor = (_d = object.latestCursor) !== null && _d !== void 0 ? _d : undefined;
692
+ message.messageCount = (_e = object.messageCount) !== null && _e !== void 0 ? _e : 0;
693
+ message.lastPublishedAt = (_f = object.lastPublishedAt) !== null && _f !== void 0 ? _f : undefined;
428
694
  return message;
429
695
  },
430
696
  };
@@ -448,6 +714,14 @@ exports.V1StreamsDefinition = {
448
714
  responseStream: true,
449
715
  options: {},
450
716
  },
717
+ getTopicMetadata: {
718
+ name: 'GetTopicMetadata',
719
+ requestType: exports.GetStreamTopicMetadataRequest,
720
+ requestStream: false,
721
+ responseType: exports.StreamTopicMetadata,
722
+ responseStream: false,
723
+ options: {},
724
+ },
451
725
  },
452
726
  };
453
727
  function bytesFromBase64(b64) {
@@ -568,6 +568,12 @@ export type StepActionEvent = Message<"StepActionEvent"> & {
568
568
  * @generated from field: optional bool should_not_retry = 11;
569
569
  */
570
570
  shouldNotRetry?: boolean | undefined;
571
+ /**
572
+ * the delay in milliseconds before the next attempt (FAILED only)
573
+ *
574
+ * @generated from field: optional int64 retry_after_ms = 12;
575
+ */
576
+ retryAfterMs?: bigint | undefined;
571
577
  };
572
578
  /**
573
579
  * Describes the message StepActionEvent.
@@ -602,6 +608,12 @@ export type BatchActionEventItem = Message<"BatchActionEventItem"> & {
602
608
  * @generated from field: optional bool should_not_retry = 4;
603
609
  */
604
610
  shouldNotRetry?: boolean | undefined;
611
+ /**
612
+ * the delay in milliseconds before the next attempt (FAILED only)
613
+ *
614
+ * @generated from field: optional int64 retry_after_ms = 5;
615
+ */
616
+ retryAfterMs?: bigint | undefined;
605
617
  };
606
618
  /**
607
619
  * Describes the message BatchActionEventItem.
@@ -9,7 +9,7 @@ const wkt_1 = require("@bufbuild/protobuf/wkt");
9
9
  /**
10
10
  * Describes the file dispatcher/dispatcher.proto.
11
11
  */
12
- exports.file_dispatcher_dispatcher = (0, codegenv2_1.fileDesc)("ChtkaXNwYXRjaGVyL2Rpc3BhdGNoZXIucHJvdG8iWgoMV29ya2VyTGFiZWxzEhYKCXN0cl92YWx1ZRgBIAEoCUgAiAEBEhYKCWludF92YWx1ZRgCIAEoBUgBiAEBQgwKCl9zdHJfdmFsdWVCDAoKX2ludF92YWx1ZSLMAQoLUnVudGltZUluZm8SGAoLc2RrX3ZlcnNpb24YASABKAlIAIgBARIcCghsYW5ndWFnZRgCIAEoDjIFLlNES1NIAYgBARIdChBsYW5ndWFnZV92ZXJzaW9uGAMgASgJSAKIAQESDwoCb3MYBCABKAlIA4gBARISCgVleHRyYRgFIAEoCUgEiAEBQg4KDF9zZGtfdmVyc2lvbkILCglfbGFuZ3VhZ2VCEwoRX2xhbmd1YWdlX3ZlcnNpb25CBQoDX29zQggKBl9leHRyYSKxAwoVV29ya2VyUmVnaXN0ZXJSZXF1ZXN0EhMKC3dvcmtlcl9uYW1lGAEgASgJEg8KB2FjdGlvbnMYAiADKAkSEAoIc2VydmljZXMYAyADKAkSEgoFc2xvdHMYBCABKAVIAIgBARIyCgZsYWJlbHMYBSADKAsyIi5Xb3JrZXJSZWdpc3RlclJlcXVlc3QuTGFiZWxzRW50cnkSFwoKd2ViaG9va19pZBgGIAEoCUgBiAEBEicKDHJ1bnRpbWVfaW5mbxgHIAEoCzIMLlJ1bnRpbWVJbmZvSAKIAQESOwoLc2xvdF9jb25maWcYCSADKAsyJi5Xb3JrZXJSZWdpc3RlclJlcXVlc3QuU2xvdENvbmZpZ0VudHJ5GjwKC0xhYmVsc0VudHJ5EgsKA2tleRgBIAEoCRIcCgV2YWx1ZRgCIAEoCzINLldvcmtlckxhYmVsczoCOAEaMQoPU2xvdENvbmZpZ0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoBToCOAFCCAoGX3Nsb3RzQg0KC193ZWJob29rX2lkQg8KDV9ydW50aW1lX2luZm8iUwoWV29ya2VyUmVnaXN0ZXJSZXNwb25zZRIRCgl0ZW5hbnRfaWQYASABKAkSEQoJd29ya2VyX2lkGAIgASgJEhMKC3dvcmtlcl9uYW1lGAMgASgJIqQBChlVcHNlcnRXb3JrZXJMYWJlbHNSZXF1ZXN0EhEKCXdvcmtlcl9pZBgBIAEoCRI2CgZsYWJlbHMYAiADKAsyJi5VcHNlcnRXb3JrZXJMYWJlbHNSZXF1ZXN0LkxhYmVsc0VudHJ5GjwKC0xhYmVsc0VudHJ5EgsKA2tleRgBIAEoCRIcCgV2YWx1ZRgCIAEoCzINLldvcmtlckxhYmVsczoCOAEiQgoaVXBzZXJ0V29ya2VyTGFiZWxzUmVzcG9uc2USEQoJdGVuYW50X2lkGAEgASgJEhEKCXdvcmtlcl9pZBgCIAEoCSKcCQoOQXNzaWduZWRBY3Rpb24SEQoJdGVuYW50X2lkGAEgASgJEhcKD3dvcmtmbG93X3J1bl9pZBgCIAEoCRIcChRnZXRfZ3JvdXBfa2V5X3J1bl9pZBgDIAEoCRIOCgZqb2JfaWQYBCABKAkSEAoIam9iX25hbWUYBSABKAkSEgoKam9iX3J1bl9pZBgGIAEoCRIPCgd0YXNrX2lkGAcgASgJEhwKFHRhc2tfcnVuX2V4dGVybmFsX2lkGAggASgJEhEKCWFjdGlvbl9pZBgJIAEoCRIgCgthY3Rpb25fdHlwZRgKIAEoDjILLkFjdGlvblR5cGUSFgoOYWN0aW9uX3BheWxvYWQYCyABKAkSEQoJdGFza19uYW1lGAwgASgJEhMKC3JldHJ5X2NvdW50GA0gASgFEiAKE2FkZGl0aW9uYWxfbWV0YWRhdGEYDiABKAlIAIgBARIhChRjaGlsZF93b3JrZmxvd19pbmRleBgPIAEoBUgBiAEBEh8KEmNoaWxkX3dvcmtmbG93X2tleRgQIAEoCUgCiAEBEiMKFnBhcmVudF93b3JrZmxvd19ydW5faWQYESABKAlIA4gBARIQCghwcmlvcml0eRgSIAEoBRIYCgt3b3JrZmxvd19pZBgTIAEoCUgEiAEBEiAKE3dvcmtmbG93X3ZlcnNpb25faWQYFCABKAlIBYgBARIqCh1kdXJhYmxlX3Rhc2tfaW52b2NhdGlvbl9jb3VudBgVIAEoBUgGiAEBEikKHHRyaWdnZXJpbmdfZXZlbnRfZXh0ZXJuYWxfaWQYFiABKAlIB4gBARIhChR0cmlnZ2VyaW5nX2V2ZW50X2tleRgXIAEoCUgIiAEBEhQKB2JhdGNoSWQYGCABKAlICYgBARIWCgliYXRjaFNpemUYGSABKAVICogBARIXCgpiYXRjaEluZGV4GBogASgFSAuIAQESMgoRYmF0Y2hTdGFydFBheWxvYWQYGyABKAsyEi5CYXRjaFN0YXJ0UGF5bG9hZEgMiAEBEhUKCGJhdGNoS2V5GBwgASgJSA2IAQESOQoQdGFza19pbnNlcnRlZF9hdBgdIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIDogBAUIWChRfYWRkaXRpb25hbF9tZXRhZGF0YUIXChVfY2hpbGRfd29ya2Zsb3dfaW5kZXhCFQoTX2NoaWxkX3dvcmtmbG93X2tleUIZChdfcGFyZW50X3dvcmtmbG93X3J1bl9pZEIOCgxfd29ya2Zsb3dfaWRCFgoUX3dvcmtmbG93X3ZlcnNpb25faWRCIAoeX2R1cmFibGVfdGFza19pbnZvY2F0aW9uX2NvdW50Qh8KHV90cmlnZ2VyaW5nX2V2ZW50X2V4dGVybmFsX2lkQhcKFV90cmlnZ2VyaW5nX2V2ZW50X2tleUIKCghfYmF0Y2hJZEIMCgpfYmF0Y2hTaXplQg0KC19iYXRjaEluZGV4QhQKEl9iYXRjaFN0YXJ0UGF5bG9hZEILCglfYmF0Y2hLZXlCEwoRX3Rhc2tfaW5zZXJ0ZWRfYXQicQoRQmF0Y2hTdGFydFBheWxvYWQSFQoNdHJpZ2dlclJlYXNvbhgBIAEoCRIvCgt0cmlnZ2VyVGltZRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFAoMZXhwZWN0ZWRTaXplGAMgASgFIigKE1dvcmtlckxpc3RlblJlcXVlc3QSEQoJd29ya2VyX2lkGAEgASgJIi0KGFdvcmtlclVuc3Vic2NyaWJlUmVxdWVzdBIRCgl3b3JrZXJfaWQYASABKAkiQQoZV29ya2VyVW5zdWJzY3JpYmVSZXNwb25zZRIRCgl0ZW5hbnRfaWQYASABKAkSEQoJd29ya2VyX2lkGAIgASgJIuwBChNHcm91cEtleUFjdGlvbkV2ZW50EhEKCXdvcmtlcl9pZBgBIAEoCRIXCg93b3JrZmxvd19ydW5faWQYAiABKAkSHAoUZ2V0X2dyb3VwX2tleV9ydW5faWQYAyABKAkSEQoJYWN0aW9uX2lkGAQgASgJEjMKD2V2ZW50X3RpbWVzdGFtcBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLAoKZXZlbnRfdHlwZRgGIAEoDjIYLkdyb3VwS2V5QWN0aW9uRXZlbnRUeXBlEhUKDWV2ZW50X3BheWxvYWQYByABKAki3gIKD1N0ZXBBY3Rpb25FdmVudBIRCgl3b3JrZXJfaWQYASABKAkSDgoGam9iX2lkGAIgASgJEhIKCmpvYl9ydW5faWQYAyABKAkSDwoHdGFza19pZBgEIAEoCRIcChR0YXNrX3J1bl9leHRlcm5hbF9pZBgFIAEoCRIRCglhY3Rpb25faWQYBiABKAkSMwoPZXZlbnRfdGltZXN0YW1wGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIoCgpldmVudF90eXBlGAggASgOMhQuU3RlcEFjdGlvbkV2ZW50VHlwZRIVCg1ldmVudF9wYXlsb2FkGAkgASgJEhgKC3JldHJ5X2NvdW50GAogASgFSACIAQESHQoQc2hvdWxkX25vdF9yZXRyeRgLIAEoCEgBiAEBQg4KDF9yZXRyeV9jb3VudEITChFfc2hvdWxkX25vdF9yZXRyeSKpAQoUQmF0Y2hBY3Rpb25FdmVudEl0ZW0SHAoUdGFza19ydW5fZXh0ZXJuYWxfaWQYASABKAkSFQoNZXZlbnRfcGF5bG9hZBgCIAEoCRIYCgtyZXRyeV9jb3VudBgDIAEoBUgAiAEBEh0KEHNob3VsZF9ub3RfcmV0cnkYBCABKAhIAYgBAUIOCgxfcmV0cnlfY291bnRCEwoRX3Nob3VsZF9ub3RfcmV0cnki8QEKEEJhdGNoQWN0aW9uRXZlbnQSEQoJd29ya2VyX2lkGAEgASgJEg4KBmpvYl9pZBgCIAEoCRIRCglhY3Rpb25faWQYAyABKAkSFQoIYmF0Y2hfaWQYBCABKAlIAIgBARIzCg9ldmVudF90aW1lc3RhbXAYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEigKCmV2ZW50X3R5cGUYBiABKA4yFC5TdGVwQWN0aW9uRXZlbnRUeXBlEiQKBWl0ZW1zGAcgAygLMhUuQmF0Y2hBY3Rpb25FdmVudEl0ZW1CCwoJX2JhdGNoX2lkIjsKE0FjdGlvbkV2ZW50UmVzcG9uc2USEQoJdGVuYW50X2lkGAEgASgJEhEKCXdvcmtlcl9pZBgCIAEoCSLMAQogU3Vic2NyaWJlVG9Xb3JrZmxvd0V2ZW50c1JlcXVlc3QSHAoPd29ya2Zsb3dfcnVuX2lkGAEgASgJSACIAQESIAoTYWRkaXRpb25hbF9tZXRhX2tleRgCIAEoCUgBiAEBEiIKFWFkZGl0aW9uYWxfbWV0YV92YWx1ZRgDIAEoCUgCiAEBQhIKEF93b3JrZmxvd19ydW5faWRCFgoUX2FkZGl0aW9uYWxfbWV0YV9rZXlCGAoWX2FkZGl0aW9uYWxfbWV0YV92YWx1ZSI5Ch5TdWJzY3JpYmVUb1dvcmtmbG93UnVuc1JlcXVlc3QSFwoPd29ya2Zsb3dfcnVuX2lkGAEgASgJIucCCg1Xb3JrZmxvd0V2ZW50EhcKD3dvcmtmbG93X3J1bl9pZBgBIAEoCRIkCg1yZXNvdXJjZV90eXBlGAIgASgOMg0uUmVzb3VyY2VUeXBlEiYKCmV2ZW50X3R5cGUYAyABKA4yEi5SZXNvdXJjZUV2ZW50VHlwZRITCgtyZXNvdXJjZV9pZBgEIAEoCRIzCg9ldmVudF90aW1lc3RhbXAYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhUKDWV2ZW50X3BheWxvYWQYBiABKAkSDgoGaGFuZ3VwGAcgASgIEhkKDHRhc2tfcmV0cmllcxgIIAEoBUgAiAEBEhgKC3JldHJ5X2NvdW50GAkgASgFSAGIAQESGAoLZXZlbnRfaW5kZXgYCiABKANIAogBAUIPCg1fdGFza19yZXRyaWVzQg4KDF9yZXRyeV9jb3VudEIOCgxfZXZlbnRfaW5kZXgirAEKEFdvcmtmbG93UnVuRXZlbnQSFwoPd29ya2Zsb3dfcnVuX2lkGAEgASgJEikKCmV2ZW50X3R5cGUYAiABKA4yFS5Xb3JrZmxvd1J1bkV2ZW50VHlwZRIzCg9ldmVudF90aW1lc3RhbXAYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEh8KB3Jlc3VsdHMYBCADKAsyDi5TdGVwUnVuUmVzdWx0IpIBCg1TdGVwUnVuUmVzdWx0EhwKFHRhc2tfcnVuX2V4dGVybmFsX2lkGAEgASgJEhEKCXRhc2tfbmFtZRgCIAEoCRISCgpqb2JfcnVuX2lkGAMgASgJEhIKBWVycm9yGAQgASgJSACIAQESEwoGb3V0cHV0GAUgASgJSAGIAQFCCAoGX2Vycm9yQgkKB19vdXRwdXQiYwoNT3ZlcnJpZGVzRGF0YRIcChR0YXNrX3J1bl9leHRlcm5hbF9pZBgBIAEoCRIMCgRwYXRoGAIgASgJEg0KBXZhbHVlGAMgASgJEhcKD2NhbGxlcl9maWxlbmFtZRgEIAEoCSIXChVPdmVycmlkZXNEYXRhUmVzcG9uc2UiVwoQSGVhcnRiZWF0UmVxdWVzdBIRCgl3b3JrZXJfaWQYASABKAkSMAoMaGVhcnRiZWF0X2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCITChFIZWFydGJlYXRSZXNwb25zZSJTChVSZWZyZXNoVGltZW91dFJlcXVlc3QSHAoUdGFza19ydW5fZXh0ZXJuYWxfaWQYASABKAkSHAoUaW5jcmVtZW50X3RpbWVvdXRfYnkYAiABKAkiSAoWUmVmcmVzaFRpbWVvdXRSZXNwb25zZRIuCgp0aW1lb3V0X2F0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCIyChJSZWxlYXNlU2xvdFJlcXVlc3QSHAoUdGFza19ydW5fZXh0ZXJuYWxfaWQYASABKAkiFQoTUmVsZWFzZVNsb3RSZXNwb25zZSI5ChlSZXN0b3JlRXZpY3RlZFRhc2tSZXF1ZXN0EhwKFHRhc2tfcnVuX2V4dGVybmFsX2lkGAEgASgJIi4KGlJlc3RvcmVFdmljdGVkVGFza1Jlc3BvbnNlEhAKCHJlcXVldWVkGAEgASgIIhMKEUdldFZlcnNpb25SZXF1ZXN0IiUKEkdldFZlcnNpb25SZXNwb25zZRIPCgd2ZXJzaW9uGAEgASgJKkEKBFNES1MSCwoHVU5LTk9XThAAEgYKAkdPEAESCgoGUFlUSE9OEAISDgoKVFlQRVNDUklQVBADEggKBFJVQlkQBCpfCgpBY3Rpb25UeXBlEhIKDlNUQVJUX1NURVBfUlVOEAASEwoPQ0FOQ0VMX1NURVBfUlVOEAESFwoTU1RBUlRfR0VUX0dST1VQX0tFWRACEg8KC1NUQVJUX0JBVENIEAMqogEKF0dyb3VwS2V5QWN0aW9uRXZlbnRUeXBlEiAKHEdST1VQX0tFWV9FVkVOVF9UWVBFX1VOS05PV04QABIgChxHUk9VUF9LRVlfRVZFTlRfVFlQRV9TVEFSVEVEEAESIgoeR1JPVVBfS0VZX0VWRU5UX1RZUEVfQ09NUExFVEVEEAISHwobR1JPVVBfS0VZX0VWRU5UX1RZUEVfRkFJTEVEEAMqywEKE1N0ZXBBY3Rpb25FdmVudFR5cGUSGwoXU1RFUF9FVkVOVF9UWVBFX1VOS05PV04QABIbChdTVEVQX0VWRU5UX1RZUEVfU1RBUlRFRBABEh0KGVNURVBfRVZFTlRfVFlQRV9DT01QTEVURUQQAhIaChZTVEVQX0VWRU5UX1RZUEVfRkFJTEVEEAMSIAocU1RFUF9FVkVOVF9UWVBFX0FDS05PV0xFREdFRBAEEh0KGVNURVBfRVZFTlRfVFlQRV9DQU5DRUxMRUQQBSplCgxSZXNvdXJjZVR5cGUSGQoVUkVTT1VSQ0VfVFlQRV9VTktOT1dOEAASGgoWUkVTT1VSQ0VfVFlQRV9TVEVQX1JVThABEh4KGlJFU09VUkNFX1RZUEVfV09SS0ZMT1dfUlVOEAIq/gEKEVJlc291cmNlRXZlbnRUeXBlEh8KG1JFU09VUkNFX0VWRU5UX1RZUEVfVU5LTk9XThAAEh8KG1JFU09VUkNFX0VWRU5UX1RZUEVfU1RBUlRFRBABEiEKHVJFU09VUkNFX0VWRU5UX1RZUEVfQ09NUExFVEVEEAISHgoaUkVTT1VSQ0VfRVZFTlRfVFlQRV9GQUlMRUQQAxIhCh1SRVNPVVJDRV9FVkVOVF9UWVBFX0NBTkNFTExFRBAEEiEKHVJFU09VUkNFX0VWRU5UX1RZUEVfVElNRURfT1VUEAUSHgoaUkVTT1VSQ0VfRVZFTlRfVFlQRV9TVFJFQU0QBio8ChRXb3JrZmxvd1J1bkV2ZW50VHlwZRIkCiBXT1JLRkxPV19SVU5fRVZFTlRfVFlQRV9GSU5JU0hFRBAAMsUICgpEaXNwYXRjaGVyEj0KCFJlZ2lzdGVyEhYuV29ya2VyUmVnaXN0ZXJSZXF1ZXN0GhcuV29ya2VyUmVnaXN0ZXJSZXNwb25zZSIAEjMKBkxpc3RlbhIULldvcmtlckxpc3RlblJlcXVlc3QaDy5Bc3NpZ25lZEFjdGlvbiIAMAESNQoITGlzdGVuVjISFC5Xb3JrZXJMaXN0ZW5SZXF1ZXN0Gg8uQXNzaWduZWRBY3Rpb24iADABEjQKCUhlYXJ0YmVhdBIRLkhlYXJ0YmVhdFJlcXVlc3QaEi5IZWFydGJlYXRSZXNwb25zZSIAElIKGVN1YnNjcmliZVRvV29ya2Zsb3dFdmVudHMSIS5TdWJzY3JpYmVUb1dvcmtmbG93RXZlbnRzUmVxdWVzdBoOLldvcmtmbG93RXZlbnQiADABElMKF1N1YnNjcmliZVRvV29ya2Zsb3dSdW5zEh8uU3Vic2NyaWJlVG9Xb3JrZmxvd1J1bnNSZXF1ZXN0GhEuV29ya2Zsb3dSdW5FdmVudCIAKAEwARI/ChNTZW5kU3RlcEFjdGlvbkV2ZW50EhAuU3RlcEFjdGlvbkV2ZW50GhQuQWN0aW9uRXZlbnRSZXNwb25zZSIAEkEKFFNlbmRCYXRjaEFjdGlvbkV2ZW50EhEuQmF0Y2hBY3Rpb25FdmVudBoULkFjdGlvbkV2ZW50UmVzcG9uc2UiABJHChdTZW5kR3JvdXBLZXlBY3Rpb25FdmVudBIULkdyb3VwS2V5QWN0aW9uRXZlbnQaFC5BY3Rpb25FdmVudFJlc3BvbnNlIgASPAoQUHV0T3ZlcnJpZGVzRGF0YRIOLk92ZXJyaWRlc0RhdGEaFi5PdmVycmlkZXNEYXRhUmVzcG9uc2UiABJGCgtVbnN1YnNjcmliZRIZLldvcmtlclVuc3Vic2NyaWJlUmVxdWVzdBoaLldvcmtlclVuc3Vic2NyaWJlUmVzcG9uc2UiABJDCg5SZWZyZXNoVGltZW91dBIWLlJlZnJlc2hUaW1lb3V0UmVxdWVzdBoXLlJlZnJlc2hUaW1lb3V0UmVzcG9uc2UiABI6CgtSZWxlYXNlU2xvdBITLlJlbGVhc2VTbG90UmVxdWVzdBoULlJlbGVhc2VTbG90UmVzcG9uc2UiABJPChJSZXN0b3JlRXZpY3RlZFRhc2sSGi5SZXN0b3JlRXZpY3RlZFRhc2tSZXF1ZXN0GhsuUmVzdG9yZUV2aWN0ZWRUYXNrUmVzcG9uc2UiABJPChJVcHNlcnRXb3JrZXJMYWJlbHMSGi5VcHNlcnRXb3JrZXJMYWJlbHNSZXF1ZXN0GhsuVXBzZXJ0V29ya2VyTGFiZWxzUmVzcG9uc2UiABI3CgpHZXRWZXJzaW9uEhIuR2V0VmVyc2lvblJlcXVlc3QaEy5HZXRWZXJzaW9uUmVzcG9uc2UiAEJHWkVnaXRodWIuY29tL2hhdGNoZXQtZGV2L2hhdGNoZXQvaW50ZXJuYWwvc2VydmljZXMvZGlzcGF0Y2hlci9jb250cmFjdHNiBnByb3RvMw", [wkt_1.file_google_protobuf_timestamp]);
12
+ exports.file_dispatcher_dispatcher = (0, codegenv2_1.fileDesc)("ChtkaXNwYXRjaGVyL2Rpc3BhdGNoZXIucHJvdG8iWgoMV29ya2VyTGFiZWxzEhYKCXN0cl92YWx1ZRgBIAEoCUgAiAEBEhYKCWludF92YWx1ZRgCIAEoBUgBiAEBQgwKCl9zdHJfdmFsdWVCDAoKX2ludF92YWx1ZSLMAQoLUnVudGltZUluZm8SGAoLc2RrX3ZlcnNpb24YASABKAlIAIgBARIcCghsYW5ndWFnZRgCIAEoDjIFLlNES1NIAYgBARIdChBsYW5ndWFnZV92ZXJzaW9uGAMgASgJSAKIAQESDwoCb3MYBCABKAlIA4gBARISCgVleHRyYRgFIAEoCUgEiAEBQg4KDF9zZGtfdmVyc2lvbkILCglfbGFuZ3VhZ2VCEwoRX2xhbmd1YWdlX3ZlcnNpb25CBQoDX29zQggKBl9leHRyYSKxAwoVV29ya2VyUmVnaXN0ZXJSZXF1ZXN0EhMKC3dvcmtlcl9uYW1lGAEgASgJEg8KB2FjdGlvbnMYAiADKAkSEAoIc2VydmljZXMYAyADKAkSEgoFc2xvdHMYBCABKAVIAIgBARIyCgZsYWJlbHMYBSADKAsyIi5Xb3JrZXJSZWdpc3RlclJlcXVlc3QuTGFiZWxzRW50cnkSFwoKd2ViaG9va19pZBgGIAEoCUgBiAEBEicKDHJ1bnRpbWVfaW5mbxgHIAEoCzIMLlJ1bnRpbWVJbmZvSAKIAQESOwoLc2xvdF9jb25maWcYCSADKAsyJi5Xb3JrZXJSZWdpc3RlclJlcXVlc3QuU2xvdENvbmZpZ0VudHJ5GjwKC0xhYmVsc0VudHJ5EgsKA2tleRgBIAEoCRIcCgV2YWx1ZRgCIAEoCzINLldvcmtlckxhYmVsczoCOAEaMQoPU2xvdENvbmZpZ0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoBToCOAFCCAoGX3Nsb3RzQg0KC193ZWJob29rX2lkQg8KDV9ydW50aW1lX2luZm8iUwoWV29ya2VyUmVnaXN0ZXJSZXNwb25zZRIRCgl0ZW5hbnRfaWQYASABKAkSEQoJd29ya2VyX2lkGAIgASgJEhMKC3dvcmtlcl9uYW1lGAMgASgJIqQBChlVcHNlcnRXb3JrZXJMYWJlbHNSZXF1ZXN0EhEKCXdvcmtlcl9pZBgBIAEoCRI2CgZsYWJlbHMYAiADKAsyJi5VcHNlcnRXb3JrZXJMYWJlbHNSZXF1ZXN0LkxhYmVsc0VudHJ5GjwKC0xhYmVsc0VudHJ5EgsKA2tleRgBIAEoCRIcCgV2YWx1ZRgCIAEoCzINLldvcmtlckxhYmVsczoCOAEiQgoaVXBzZXJ0V29ya2VyTGFiZWxzUmVzcG9uc2USEQoJdGVuYW50X2lkGAEgASgJEhEKCXdvcmtlcl9pZBgCIAEoCSKcCQoOQXNzaWduZWRBY3Rpb24SEQoJdGVuYW50X2lkGAEgASgJEhcKD3dvcmtmbG93X3J1bl9pZBgCIAEoCRIcChRnZXRfZ3JvdXBfa2V5X3J1bl9pZBgDIAEoCRIOCgZqb2JfaWQYBCABKAkSEAoIam9iX25hbWUYBSABKAkSEgoKam9iX3J1bl9pZBgGIAEoCRIPCgd0YXNrX2lkGAcgASgJEhwKFHRhc2tfcnVuX2V4dGVybmFsX2lkGAggASgJEhEKCWFjdGlvbl9pZBgJIAEoCRIgCgthY3Rpb25fdHlwZRgKIAEoDjILLkFjdGlvblR5cGUSFgoOYWN0aW9uX3BheWxvYWQYCyABKAkSEQoJdGFza19uYW1lGAwgASgJEhMKC3JldHJ5X2NvdW50GA0gASgFEiAKE2FkZGl0aW9uYWxfbWV0YWRhdGEYDiABKAlIAIgBARIhChRjaGlsZF93b3JrZmxvd19pbmRleBgPIAEoBUgBiAEBEh8KEmNoaWxkX3dvcmtmbG93X2tleRgQIAEoCUgCiAEBEiMKFnBhcmVudF93b3JrZmxvd19ydW5faWQYESABKAlIA4gBARIQCghwcmlvcml0eRgSIAEoBRIYCgt3b3JrZmxvd19pZBgTIAEoCUgEiAEBEiAKE3dvcmtmbG93X3ZlcnNpb25faWQYFCABKAlIBYgBARIqCh1kdXJhYmxlX3Rhc2tfaW52b2NhdGlvbl9jb3VudBgVIAEoBUgGiAEBEikKHHRyaWdnZXJpbmdfZXZlbnRfZXh0ZXJuYWxfaWQYFiABKAlIB4gBARIhChR0cmlnZ2VyaW5nX2V2ZW50X2tleRgXIAEoCUgIiAEBEhQKB2JhdGNoSWQYGCABKAlICYgBARIWCgliYXRjaFNpemUYGSABKAVICogBARIXCgpiYXRjaEluZGV4GBogASgFSAuIAQESMgoRYmF0Y2hTdGFydFBheWxvYWQYGyABKAsyEi5CYXRjaFN0YXJ0UGF5bG9hZEgMiAEBEhUKCGJhdGNoS2V5GBwgASgJSA2IAQESOQoQdGFza19pbnNlcnRlZF9hdBgdIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIDogBAUIWChRfYWRkaXRpb25hbF9tZXRhZGF0YUIXChVfY2hpbGRfd29ya2Zsb3dfaW5kZXhCFQoTX2NoaWxkX3dvcmtmbG93X2tleUIZChdfcGFyZW50X3dvcmtmbG93X3J1bl9pZEIOCgxfd29ya2Zsb3dfaWRCFgoUX3dvcmtmbG93X3ZlcnNpb25faWRCIAoeX2R1cmFibGVfdGFza19pbnZvY2F0aW9uX2NvdW50Qh8KHV90cmlnZ2VyaW5nX2V2ZW50X2V4dGVybmFsX2lkQhcKFV90cmlnZ2VyaW5nX2V2ZW50X2tleUIKCghfYmF0Y2hJZEIMCgpfYmF0Y2hTaXplQg0KC19iYXRjaEluZGV4QhQKEl9iYXRjaFN0YXJ0UGF5bG9hZEILCglfYmF0Y2hLZXlCEwoRX3Rhc2tfaW5zZXJ0ZWRfYXQicQoRQmF0Y2hTdGFydFBheWxvYWQSFQoNdHJpZ2dlclJlYXNvbhgBIAEoCRIvCgt0cmlnZ2VyVGltZRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFAoMZXhwZWN0ZWRTaXplGAMgASgFIigKE1dvcmtlckxpc3RlblJlcXVlc3QSEQoJd29ya2VyX2lkGAEgASgJIi0KGFdvcmtlclVuc3Vic2NyaWJlUmVxdWVzdBIRCgl3b3JrZXJfaWQYASABKAkiQQoZV29ya2VyVW5zdWJzY3JpYmVSZXNwb25zZRIRCgl0ZW5hbnRfaWQYASABKAkSEQoJd29ya2VyX2lkGAIgASgJIuwBChNHcm91cEtleUFjdGlvbkV2ZW50EhEKCXdvcmtlcl9pZBgBIAEoCRIXCg93b3JrZmxvd19ydW5faWQYAiABKAkSHAoUZ2V0X2dyb3VwX2tleV9ydW5faWQYAyABKAkSEQoJYWN0aW9uX2lkGAQgASgJEjMKD2V2ZW50X3RpbWVzdGFtcBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLAoKZXZlbnRfdHlwZRgGIAEoDjIYLkdyb3VwS2V5QWN0aW9uRXZlbnRUeXBlEhUKDWV2ZW50X3BheWxvYWQYByABKAkijgMKD1N0ZXBBY3Rpb25FdmVudBIRCgl3b3JrZXJfaWQYASABKAkSDgoGam9iX2lkGAIgASgJEhIKCmpvYl9ydW5faWQYAyABKAkSDwoHdGFza19pZBgEIAEoCRIcChR0YXNrX3J1bl9leHRlcm5hbF9pZBgFIAEoCRIRCglhY3Rpb25faWQYBiABKAkSMwoPZXZlbnRfdGltZXN0YW1wGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIoCgpldmVudF90eXBlGAggASgOMhQuU3RlcEFjdGlvbkV2ZW50VHlwZRIVCg1ldmVudF9wYXlsb2FkGAkgASgJEhgKC3JldHJ5X2NvdW50GAogASgFSACIAQESHQoQc2hvdWxkX25vdF9yZXRyeRgLIAEoCEgBiAEBEhsKDnJldHJ5X2FmdGVyX21zGAwgASgDSAKIAQFCDgoMX3JldHJ5X2NvdW50QhMKEV9zaG91bGRfbm90X3JldHJ5QhEKD19yZXRyeV9hZnRlcl9tcyLZAQoUQmF0Y2hBY3Rpb25FdmVudEl0ZW0SHAoUdGFza19ydW5fZXh0ZXJuYWxfaWQYASABKAkSFQoNZXZlbnRfcGF5bG9hZBgCIAEoCRIYCgtyZXRyeV9jb3VudBgDIAEoBUgAiAEBEh0KEHNob3VsZF9ub3RfcmV0cnkYBCABKAhIAYgBARIbCg5yZXRyeV9hZnRlcl9tcxgFIAEoA0gCiAEBQg4KDF9yZXRyeV9jb3VudEITChFfc2hvdWxkX25vdF9yZXRyeUIRCg9fcmV0cnlfYWZ0ZXJfbXMi8QEKEEJhdGNoQWN0aW9uRXZlbnQSEQoJd29ya2VyX2lkGAEgASgJEg4KBmpvYl9pZBgCIAEoCRIRCglhY3Rpb25faWQYAyABKAkSFQoIYmF0Y2hfaWQYBCABKAlIAIgBARIzCg9ldmVudF90aW1lc3RhbXAYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEigKCmV2ZW50X3R5cGUYBiABKA4yFC5TdGVwQWN0aW9uRXZlbnRUeXBlEiQKBWl0ZW1zGAcgAygLMhUuQmF0Y2hBY3Rpb25FdmVudEl0ZW1CCwoJX2JhdGNoX2lkIjsKE0FjdGlvbkV2ZW50UmVzcG9uc2USEQoJdGVuYW50X2lkGAEgASgJEhEKCXdvcmtlcl9pZBgCIAEoCSLMAQogU3Vic2NyaWJlVG9Xb3JrZmxvd0V2ZW50c1JlcXVlc3QSHAoPd29ya2Zsb3dfcnVuX2lkGAEgASgJSACIAQESIAoTYWRkaXRpb25hbF9tZXRhX2tleRgCIAEoCUgBiAEBEiIKFWFkZGl0aW9uYWxfbWV0YV92YWx1ZRgDIAEoCUgCiAEBQhIKEF93b3JrZmxvd19ydW5faWRCFgoUX2FkZGl0aW9uYWxfbWV0YV9rZXlCGAoWX2FkZGl0aW9uYWxfbWV0YV92YWx1ZSI5Ch5TdWJzY3JpYmVUb1dvcmtmbG93UnVuc1JlcXVlc3QSFwoPd29ya2Zsb3dfcnVuX2lkGAEgASgJIucCCg1Xb3JrZmxvd0V2ZW50EhcKD3dvcmtmbG93X3J1bl9pZBgBIAEoCRIkCg1yZXNvdXJjZV90eXBlGAIgASgOMg0uUmVzb3VyY2VUeXBlEiYKCmV2ZW50X3R5cGUYAyABKA4yEi5SZXNvdXJjZUV2ZW50VHlwZRITCgtyZXNvdXJjZV9pZBgEIAEoCRIzCg9ldmVudF90aW1lc3RhbXAYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhUKDWV2ZW50X3BheWxvYWQYBiABKAkSDgoGaGFuZ3VwGAcgASgIEhkKDHRhc2tfcmV0cmllcxgIIAEoBUgAiAEBEhgKC3JldHJ5X2NvdW50GAkgASgFSAGIAQESGAoLZXZlbnRfaW5kZXgYCiABKANIAogBAUIPCg1fdGFza19yZXRyaWVzQg4KDF9yZXRyeV9jb3VudEIOCgxfZXZlbnRfaW5kZXgirAEKEFdvcmtmbG93UnVuRXZlbnQSFwoPd29ya2Zsb3dfcnVuX2lkGAEgASgJEikKCmV2ZW50X3R5cGUYAiABKA4yFS5Xb3JrZmxvd1J1bkV2ZW50VHlwZRIzCg9ldmVudF90aW1lc3RhbXAYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEh8KB3Jlc3VsdHMYBCADKAsyDi5TdGVwUnVuUmVzdWx0IpIBCg1TdGVwUnVuUmVzdWx0EhwKFHRhc2tfcnVuX2V4dGVybmFsX2lkGAEgASgJEhEKCXRhc2tfbmFtZRgCIAEoCRISCgpqb2JfcnVuX2lkGAMgASgJEhIKBWVycm9yGAQgASgJSACIAQESEwoGb3V0cHV0GAUgASgJSAGIAQFCCAoGX2Vycm9yQgkKB19vdXRwdXQiYwoNT3ZlcnJpZGVzRGF0YRIcChR0YXNrX3J1bl9leHRlcm5hbF9pZBgBIAEoCRIMCgRwYXRoGAIgASgJEg0KBXZhbHVlGAMgASgJEhcKD2NhbGxlcl9maWxlbmFtZRgEIAEoCSIXChVPdmVycmlkZXNEYXRhUmVzcG9uc2UiVwoQSGVhcnRiZWF0UmVxdWVzdBIRCgl3b3JrZXJfaWQYASABKAkSMAoMaGVhcnRiZWF0X2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCITChFIZWFydGJlYXRSZXNwb25zZSJTChVSZWZyZXNoVGltZW91dFJlcXVlc3QSHAoUdGFza19ydW5fZXh0ZXJuYWxfaWQYASABKAkSHAoUaW5jcmVtZW50X3RpbWVvdXRfYnkYAiABKAkiSAoWUmVmcmVzaFRpbWVvdXRSZXNwb25zZRIuCgp0aW1lb3V0X2F0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCIyChJSZWxlYXNlU2xvdFJlcXVlc3QSHAoUdGFza19ydW5fZXh0ZXJuYWxfaWQYASABKAkiFQoTUmVsZWFzZVNsb3RSZXNwb25zZSI5ChlSZXN0b3JlRXZpY3RlZFRhc2tSZXF1ZXN0EhwKFHRhc2tfcnVuX2V4dGVybmFsX2lkGAEgASgJIi4KGlJlc3RvcmVFdmljdGVkVGFza1Jlc3BvbnNlEhAKCHJlcXVldWVkGAEgASgIIhMKEUdldFZlcnNpb25SZXF1ZXN0IiUKEkdldFZlcnNpb25SZXNwb25zZRIPCgd2ZXJzaW9uGAEgASgJKkEKBFNES1MSCwoHVU5LTk9XThAAEgYKAkdPEAESCgoGUFlUSE9OEAISDgoKVFlQRVNDUklQVBADEggKBFJVQlkQBCpfCgpBY3Rpb25UeXBlEhIKDlNUQVJUX1NURVBfUlVOEAASEwoPQ0FOQ0VMX1NURVBfUlVOEAESFwoTU1RBUlRfR0VUX0dST1VQX0tFWRACEg8KC1NUQVJUX0JBVENIEAMqogEKF0dyb3VwS2V5QWN0aW9uRXZlbnRUeXBlEiAKHEdST1VQX0tFWV9FVkVOVF9UWVBFX1VOS05PV04QABIgChxHUk9VUF9LRVlfRVZFTlRfVFlQRV9TVEFSVEVEEAESIgoeR1JPVVBfS0VZX0VWRU5UX1RZUEVfQ09NUExFVEVEEAISHwobR1JPVVBfS0VZX0VWRU5UX1RZUEVfRkFJTEVEEAMqywEKE1N0ZXBBY3Rpb25FdmVudFR5cGUSGwoXU1RFUF9FVkVOVF9UWVBFX1VOS05PV04QABIbChdTVEVQX0VWRU5UX1RZUEVfU1RBUlRFRBABEh0KGVNURVBfRVZFTlRfVFlQRV9DT01QTEVURUQQAhIaChZTVEVQX0VWRU5UX1RZUEVfRkFJTEVEEAMSIAocU1RFUF9FVkVOVF9UWVBFX0FDS05PV0xFREdFRBAEEh0KGVNURVBfRVZFTlRfVFlQRV9DQU5DRUxMRUQQBSplCgxSZXNvdXJjZVR5cGUSGQoVUkVTT1VSQ0VfVFlQRV9VTktOT1dOEAASGgoWUkVTT1VSQ0VfVFlQRV9TVEVQX1JVThABEh4KGlJFU09VUkNFX1RZUEVfV09SS0ZMT1dfUlVOEAIq/gEKEVJlc291cmNlRXZlbnRUeXBlEh8KG1JFU09VUkNFX0VWRU5UX1RZUEVfVU5LTk9XThAAEh8KG1JFU09VUkNFX0VWRU5UX1RZUEVfU1RBUlRFRBABEiEKHVJFU09VUkNFX0VWRU5UX1RZUEVfQ09NUExFVEVEEAISHgoaUkVTT1VSQ0VfRVZFTlRfVFlQRV9GQUlMRUQQAxIhCh1SRVNPVVJDRV9FVkVOVF9UWVBFX0NBTkNFTExFRBAEEiEKHVJFU09VUkNFX0VWRU5UX1RZUEVfVElNRURfT1VUEAUSHgoaUkVTT1VSQ0VfRVZFTlRfVFlQRV9TVFJFQU0QBio8ChRXb3JrZmxvd1J1bkV2ZW50VHlwZRIkCiBXT1JLRkxPV19SVU5fRVZFTlRfVFlQRV9GSU5JU0hFRBAAMsUICgpEaXNwYXRjaGVyEj0KCFJlZ2lzdGVyEhYuV29ya2VyUmVnaXN0ZXJSZXF1ZXN0GhcuV29ya2VyUmVnaXN0ZXJSZXNwb25zZSIAEjMKBkxpc3RlbhIULldvcmtlckxpc3RlblJlcXVlc3QaDy5Bc3NpZ25lZEFjdGlvbiIAMAESNQoITGlzdGVuVjISFC5Xb3JrZXJMaXN0ZW5SZXF1ZXN0Gg8uQXNzaWduZWRBY3Rpb24iADABEjQKCUhlYXJ0YmVhdBIRLkhlYXJ0YmVhdFJlcXVlc3QaEi5IZWFydGJlYXRSZXNwb25zZSIAElIKGVN1YnNjcmliZVRvV29ya2Zsb3dFdmVudHMSIS5TdWJzY3JpYmVUb1dvcmtmbG93RXZlbnRzUmVxdWVzdBoOLldvcmtmbG93RXZlbnQiADABElMKF1N1YnNjcmliZVRvV29ya2Zsb3dSdW5zEh8uU3Vic2NyaWJlVG9Xb3JrZmxvd1J1bnNSZXF1ZXN0GhEuV29ya2Zsb3dSdW5FdmVudCIAKAEwARI/ChNTZW5kU3RlcEFjdGlvbkV2ZW50EhAuU3RlcEFjdGlvbkV2ZW50GhQuQWN0aW9uRXZlbnRSZXNwb25zZSIAEkEKFFNlbmRCYXRjaEFjdGlvbkV2ZW50EhEuQmF0Y2hBY3Rpb25FdmVudBoULkFjdGlvbkV2ZW50UmVzcG9uc2UiABJHChdTZW5kR3JvdXBLZXlBY3Rpb25FdmVudBIULkdyb3VwS2V5QWN0aW9uRXZlbnQaFC5BY3Rpb25FdmVudFJlc3BvbnNlIgASPAoQUHV0T3ZlcnJpZGVzRGF0YRIOLk92ZXJyaWRlc0RhdGEaFi5PdmVycmlkZXNEYXRhUmVzcG9uc2UiABJGCgtVbnN1YnNjcmliZRIZLldvcmtlclVuc3Vic2NyaWJlUmVxdWVzdBoaLldvcmtlclVuc3Vic2NyaWJlUmVzcG9uc2UiABJDCg5SZWZyZXNoVGltZW91dBIWLlJlZnJlc2hUaW1lb3V0UmVxdWVzdBoXLlJlZnJlc2hUaW1lb3V0UmVzcG9uc2UiABI6CgtSZWxlYXNlU2xvdBITLlJlbGVhc2VTbG90UmVxdWVzdBoULlJlbGVhc2VTbG90UmVzcG9uc2UiABJPChJSZXN0b3JlRXZpY3RlZFRhc2sSGi5SZXN0b3JlRXZpY3RlZFRhc2tSZXF1ZXN0GhsuUmVzdG9yZUV2aWN0ZWRUYXNrUmVzcG9uc2UiABJPChJVcHNlcnRXb3JrZXJMYWJlbHMSGi5VcHNlcnRXb3JrZXJMYWJlbHNSZXF1ZXN0GhsuVXBzZXJ0V29ya2VyTGFiZWxzUmVzcG9uc2UiABI3CgpHZXRWZXJzaW9uEhIuR2V0VmVyc2lvblJlcXVlc3QaEy5HZXRWZXJzaW9uUmVzcG9uc2UiAEJHWkVnaXRodWIuY29tL2hhdGNoZXQtZGV2L2hhdGNoZXQvaW50ZXJuYWwvc2VydmljZXMvZGlzcGF0Y2hlci9jb250cmFjdHNiBnByb3RvMw", [wkt_1.file_google_protobuf_timestamp]);
13
13
  /**
14
14
  * Describes the message WorkerLabels.
15
15
  * Use `create(WorkerLabelsSchema)` to create a new message.
@@ -29,6 +29,13 @@ export type PublishStreamMessageRequest = Message<"v1.PublishStreamMessageReques
29
29
  * @generated from field: int64 producer_seq = 5;
30
30
  */
31
31
  producerSeq: bigint;
32
+ /**
33
+ * instead of payload: a ref returned by the stream payload upload endpoint,
34
+ * for payloads too large for one gRPC message
35
+ *
36
+ * @generated from field: string payload_ref = 6;
37
+ */
38
+ payloadRef: string;
32
39
  };
33
40
  /**
34
41
  * Describes the message v1.PublishStreamMessageRequest.
@@ -104,12 +111,76 @@ export type StreamEntry = Message<"v1.StreamEntry"> & {
104
111
  * @generated from field: google.protobuf.Timestamp created_at = 3;
105
112
  */
106
113
  createdAt?: Timestamp | undefined;
114
+ /**
115
+ * instead of payload: fetch it from the stream payload endpoint by this ref
116
+ *
117
+ * @generated from field: string payload_ref = 4;
118
+ */
119
+ payloadRef: string;
107
120
  };
108
121
  /**
109
122
  * Describes the message v1.StreamEntry.
110
123
  * Use `create(StreamEntrySchema)` to create a new message.
111
124
  */
112
125
  export declare const StreamEntrySchema: GenMessage<StreamEntry>;
126
+ /**
127
+ * @generated from message v1.GetStreamTopicMetadataRequest
128
+ */
129
+ export type GetStreamTopicMetadataRequest = Message<"v1.GetStreamTopicMetadataRequest"> & {
130
+ /**
131
+ * @generated from field: string namespace = 1;
132
+ */
133
+ namespace: string;
134
+ /**
135
+ * @generated from field: string topic = 2;
136
+ */
137
+ topic: string;
138
+ };
139
+ /**
140
+ * Describes the message v1.GetStreamTopicMetadataRequest.
141
+ * Use `create(GetStreamTopicMetadataRequestSchema)` to create a new message.
142
+ */
143
+ export declare const GetStreamTopicMetadataRequestSchema: GenMessage<GetStreamTopicMetadataRequest>;
144
+ /**
145
+ * Counts and the latest message cover only what's within the tenant's retention.
146
+ *
147
+ * @generated from message v1.StreamTopicMetadata
148
+ */
149
+ export type StreamTopicMetadata = Message<"v1.StreamTopicMetadata"> & {
150
+ /**
151
+ * @generated from field: string namespace = 1;
152
+ */
153
+ namespace: string;
154
+ /**
155
+ * @generated from field: string topic = 2;
156
+ */
157
+ topic: string;
158
+ /**
159
+ * @generated from field: string tenant_id = 3;
160
+ */
161
+ tenantId: string;
162
+ /**
163
+ * resumes a subscription after the newest retained message; unset when none is retained
164
+ *
165
+ * @generated from field: optional string latest_cursor = 4;
166
+ */
167
+ latestCursor?: string | undefined;
168
+ /**
169
+ * @generated from field: int64 message_count = 5;
170
+ */
171
+ messageCount: bigint;
172
+ /**
173
+ * when the newest retained message was stored; unset when none is retained
174
+ *
175
+ * @generated from field: google.protobuf.Timestamp last_published_at = 6;
176
+ */
177
+ lastPublishedAt?: Timestamp | undefined;
178
+ };
179
+ /**
180
+ * Describes the message v1.StreamTopicMetadata.
181
+ * Use `create(StreamTopicMetadataSchema)` to create a new message.
182
+ */
183
+ export declare const StreamTopicMetadataSchema: GenMessage<StreamTopicMetadata>;
113
184
  /**
114
185
  * @generated from service v1.V1Streams
115
186
  */
@@ -130,4 +201,12 @@ export declare const V1Streams: GenService<{
130
201
  input: typeof SubscribeStreamRequestSchema;
131
202
  output: typeof StreamMessageSchema;
132
203
  };
204
+ /**
205
+ * @generated from rpc v1.V1Streams.GetTopicMetadata
206
+ */
207
+ getTopicMetadata: {
208
+ methodKind: "unary";
209
+ input: typeof GetStreamTopicMetadataRequestSchema;
210
+ output: typeof StreamTopicMetadataSchema;
211
+ };
133
212
  }>;
@@ -3,13 +3,13 @@
3
3
  // @generated from file v1/streams.proto (package v1, syntax proto3)
4
4
  /* eslint-disable */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.V1Streams = exports.StreamEntrySchema = exports.StreamMessageSchema = exports.SubscribeStreamRequestSchema = exports.PublishStreamMessageResponseSchema = exports.PublishStreamMessageRequestSchema = exports.file_v1_streams = void 0;
6
+ exports.V1Streams = exports.StreamTopicMetadataSchema = exports.GetStreamTopicMetadataRequestSchema = exports.StreamEntrySchema = exports.StreamMessageSchema = exports.SubscribeStreamRequestSchema = exports.PublishStreamMessageResponseSchema = exports.PublishStreamMessageRequestSchema = exports.file_v1_streams = void 0;
7
7
  const codegenv2_1 = require("@bufbuild/protobuf/codegenv2");
8
8
  const wkt_1 = require("@bufbuild/protobuf/wkt");
9
9
  /**
10
10
  * Describes the file v1/streams.proto.
11
11
  */
12
- exports.file_v1_streams = (0, codegenv2_1.fileDesc)("ChB2MS9zdHJlYW1zLnByb3RvEgJ2MSJ7ChtQdWJsaXNoU3RyZWFtTWVzc2FnZVJlcXVlc3QSEQoJbmFtZXNwYWNlGAEgASgJEg0KBXRvcGljGAIgASgJEg8KB3BheWxvYWQYAyABKAwSEwoLcHJvZHVjZXJfaWQYBCABKAkSFAoMcHJvZHVjZXJfc2VxGAUgASgDIh4KHFB1Ymxpc2hTdHJlYW1NZXNzYWdlUmVzcG9uc2UiWgoWU3Vic2NyaWJlU3RyZWFtUmVxdWVzdBIRCgluYW1lc3BhY2UYASABKAkSDQoFdG9waWMYAiABKAkSEwoGY3Vyc29yGAMgASgJSACIAQFCCQoHX2N1cnNvciJRCg1TdHJlYW1NZXNzYWdlEiAKB2VudHJpZXMYASADKAsyDy52MS5TdHJlYW1FbnRyeRIOCgZoYW5ndXAYAiABKAgSDgoGY3Vyc29yGAMgASgJIl4KC1N0cmVhbUVudHJ5Eg8KB3BheWxvYWQYASABKAwSDgoGY3Vyc29yGAIgASgJEi4KCmNyZWF0ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wMpsBCglWMVN0cmVhbXMSTgoHUHVibGlzaBIfLnYxLlB1Ymxpc2hTdHJlYW1NZXNzYWdlUmVxdWVzdBogLnYxLlB1Ymxpc2hTdHJlYW1NZXNzYWdlUmVzcG9uc2UiABI+CglTdWJzY3JpYmUSGi52MS5TdWJzY3JpYmVTdHJlYW1SZXF1ZXN0GhEudjEuU3RyZWFtTWVzc2FnZSIAMAFCQlpAZ2l0aHViLmNvbS9oYXRjaGV0LWRldi9oYXRjaGV0L2ludGVybmFsL3NlcnZpY2VzL3NoYXJlZC9wcm90by92MWIGcHJvdG8z", [wkt_1.file_google_protobuf_timestamp]);
12
+ exports.file_v1_streams = (0, codegenv2_1.fileDesc)("ChB2MS9zdHJlYW1zLnByb3RvEgJ2MSKQAQobUHVibGlzaFN0cmVhbU1lc3NhZ2VSZXF1ZXN0EhEKCW5hbWVzcGFjZRgBIAEoCRINCgV0b3BpYxgCIAEoCRIPCgdwYXlsb2FkGAMgASgMEhMKC3Byb2R1Y2VyX2lkGAQgASgJEhQKDHByb2R1Y2VyX3NlcRgFIAEoAxITCgtwYXlsb2FkX3JlZhgGIAEoCSIeChxQdWJsaXNoU3RyZWFtTWVzc2FnZVJlc3BvbnNlIloKFlN1YnNjcmliZVN0cmVhbVJlcXVlc3QSEQoJbmFtZXNwYWNlGAEgASgJEg0KBXRvcGljGAIgASgJEhMKBmN1cnNvchgDIAEoCUgAiAEBQgkKB19jdXJzb3IiUQoNU3RyZWFtTWVzc2FnZRIgCgdlbnRyaWVzGAEgAygLMg8udjEuU3RyZWFtRW50cnkSDgoGaGFuZ3VwGAIgASgIEg4KBmN1cnNvchgDIAEoCSJzCgtTdHJlYW1FbnRyeRIPCgdwYXlsb2FkGAEgASgMEg4KBmN1cnNvchgCIAEoCRIuCgpjcmVhdGVkX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBITCgtwYXlsb2FkX3JlZhgEIAEoCSJBCh1HZXRTdHJlYW1Ub3BpY01ldGFkYXRhUmVxdWVzdBIRCgluYW1lc3BhY2UYASABKAkSDQoFdG9waWMYAiABKAkixgEKE1N0cmVhbVRvcGljTWV0YWRhdGESEQoJbmFtZXNwYWNlGAEgASgJEg0KBXRvcGljGAIgASgJEhEKCXRlbmFudF9pZBgDIAEoCRIaCg1sYXRlc3RfY3Vyc29yGAQgASgJSACIAQESFQoNbWVzc2FnZV9jb3VudBgFIAEoAxI1ChFsYXN0X3B1Ymxpc2hlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCEAoOX2xhdGVzdF9jdXJzb3Iy7QEKCVYxU3RyZWFtcxJOCgdQdWJsaXNoEh8udjEuUHVibGlzaFN0cmVhbU1lc3NhZ2VSZXF1ZXN0GiAudjEuUHVibGlzaFN0cmVhbU1lc3NhZ2VSZXNwb25zZSIAEj4KCVN1YnNjcmliZRIaLnYxLlN1YnNjcmliZVN0cmVhbVJlcXVlc3QaES52MS5TdHJlYW1NZXNzYWdlIgAwARJQChBHZXRUb3BpY01ldGFkYXRhEiEudjEuR2V0U3RyZWFtVG9waWNNZXRhZGF0YVJlcXVlc3QaFy52MS5TdHJlYW1Ub3BpY01ldGFkYXRhIgBCQlpAZ2l0aHViLmNvbS9oYXRjaGV0LWRldi9oYXRjaGV0L2ludGVybmFsL3NlcnZpY2VzL3NoYXJlZC9wcm90by92MWIGcHJvdG8z", [wkt_1.file_google_protobuf_timestamp]);
13
13
  /**
14
14
  * Describes the message v1.PublishStreamMessageRequest.
15
15
  * Use `create(PublishStreamMessageRequestSchema)` to create a new message.
@@ -35,6 +35,16 @@ exports.StreamMessageSchema = (0, codegenv2_1.messageDesc)(exports.file_v1_strea
35
35
  * Use `create(StreamEntrySchema)` to create a new message.
36
36
  */
37
37
  exports.StreamEntrySchema = (0, codegenv2_1.messageDesc)(exports.file_v1_streams, 4);
38
+ /**
39
+ * Describes the message v1.GetStreamTopicMetadataRequest.
40
+ * Use `create(GetStreamTopicMetadataRequestSchema)` to create a new message.
41
+ */
42
+ exports.GetStreamTopicMetadataRequestSchema = (0, codegenv2_1.messageDesc)(exports.file_v1_streams, 5);
43
+ /**
44
+ * Describes the message v1.StreamTopicMetadata.
45
+ * Use `create(StreamTopicMetadataSchema)` to create a new message.
46
+ */
47
+ exports.StreamTopicMetadataSchema = (0, codegenv2_1.messageDesc)(exports.file_v1_streams, 6);
38
48
  /**
39
49
  * @generated from service v1.V1Streams
40
50
  */
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.durationToString = durationToString;
4
4
  exports.durationToMs = durationToMs;
5
- const DURATION_RE = /^(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?$/;
5
+ const DURATION_RE = /^(?:(\d*\.?\d+)h)?(?:(\d*\.?\d+)m)?(?:(\d*\.?\d+)s)?$/;
6
6
  /** Normalizes a Duration to Go-style string format (e.g. "1h30m5s"). */
7
7
  function durationToString(d) {
8
8
  if (typeof d === 'string')
@@ -39,8 +39,8 @@ function durationToMs(d) {
39
39
  }
40
40
  const match = d.match(DURATION_RE);
41
41
  if (!match) {
42
- throw new Error(`Invalid duration string: "${d}". Expected format like "1h30m5s", "10m", "30s".`);
42
+ throw new Error(`Invalid duration string: "${d}". Expected format like "1h30m5s", "10m", "30s", "0.5s".`);
43
43
  }
44
44
  const [, h, m, s] = match;
45
- return ((parseInt(h !== null && h !== void 0 ? h : '0', 10) * 3600 + parseInt(m !== null && m !== void 0 ? m : '0', 10) * 60 + parseInt(s !== null && s !== void 0 ? s : '0', 10)) * 1000);
45
+ return Math.round(parseFloat(h !== null && h !== void 0 ? h : '0') * 3600000 + parseFloat(m !== null && m !== void 0 ? m : '0') * 60000 + parseFloat(s !== null && s !== void 0 ? s : '0') * 1000);
46
46
  }
@@ -7,6 +7,17 @@ export type StreamEvent = {
7
7
  /** when the message was stored */
8
8
  createdAt?: Date;
9
9
  };
10
+ /** Covers only messages within the tenant's retention. */
11
+ export type StreamTopicMetadata = {
12
+ namespace: string;
13
+ topic: string;
14
+ tenantId: string;
15
+ messageCount: number;
16
+ /** resumes events() after the newest retained message; undefined when none is retained */
17
+ latestCursor?: string;
18
+ /** when the newest retained message was stored; undefined when none is retained */
19
+ lastPublishedAt?: Date;
20
+ };
10
21
  export type StreamCallOptions = {
11
22
  namespace?: string;
12
23
  cursor?: string;
@@ -20,11 +31,15 @@ export type StreamCallOptions = {
20
31
  */
21
32
  export declare class StreamsClient {
22
33
  private _config;
34
+ private _client;
23
35
  private _grpc;
24
36
  private producers;
25
37
  private publishChains;
26
38
  constructor(client: HatchetClient);
27
39
  private get grpc();
40
+ private static withRetries;
41
+ private uploadPayload;
42
+ private fetchPayload;
28
43
  private publishOrdered;
29
44
  /**
30
45
  * Resolves once the message is stored. A client's messages to a topic are
@@ -34,6 +49,13 @@ export declare class StreamsClient {
34
49
  * @param options - optional namespace override
35
50
  */
36
51
  publish(topic: string, message: Uint8Array | string, options?: StreamCallOptions): Promise<void>;
52
+ /**
53
+ * Describes topic's retained messages. Rejects with a NOT_FOUND gRPC error
54
+ * for a topic nothing was published to.
55
+ * @param topic - the topic to describe
56
+ * @param options - optional namespace override
57
+ */
58
+ topicMetadata(topic: string, options?: Pick<StreamCallOptions, 'namespace'>): Promise<StreamTopicMetadata>;
37
59
  /**
38
60
  * Yields topic's messages after options.cursor, or from the oldest retained.
39
61
  * If the connection drops, it resubscribes from the last message yielded, so