@horizon-republic/nestjs-jetstream 2.7.0 → 2.8.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.
package/dist/index.d.cts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { ModuleMetadata, FactoryProvider, Type, Logger, OnApplicationShutdown, DynamicModule } from '@nestjs/common';
2
- import { MsgHdrs, StreamConfig, ConsumerConfig, ConsumeOptions, DeliverPolicy, ReplayPolicy, ConnectionOptions, NatsConnection, Status, JetStreamManager, JetStreamClient, ConsumerInfo, JsMsg, Msg } from 'nats';
2
+ import { MsgHdrs, ConnectionOptions, NatsConnection, Status, Msg } from '@nats-io/transport-node';
3
+ import { StreamConfig, ConsumerConfig, ConsumeOptions, DeliverPolicy, ReplayPolicy, JetStreamManager, JetStreamClient, ConsumerInfo, JsMsg } from '@nats-io/jetstream';
3
4
  import { MessageHandler, Server, CustomTransportStrategy, ClientProxy, ReadPacket, WritePacket, BaseRpcContext } from '@nestjs/microservices';
4
5
  import { Observable } from 'rxjs';
5
6
 
@@ -346,6 +347,19 @@ declare enum StreamKind {
346
347
  Broadcast = "broadcast",
347
348
  Ordered = "ordered"
348
349
  }
350
+ /**
351
+ * Subset of {@link StreamKind} used for direct subject building.
352
+ *
353
+ * Excludes `Broadcast` because broadcast subjects use a different
354
+ * naming convention (`broadcast.{pattern}` instead of `{service}.{kind}.{pattern}`).
355
+ */
356
+ type SubjectKind = Exclude<StreamKind, StreamKind.Broadcast>;
357
+
358
+ /** Options for one-shot delayed delivery via NATS 2.12 message scheduling. */
359
+ interface ScheduleRecordOptions {
360
+ /** When to deliver the message. Must be in the future. */
361
+ at: Date;
362
+ }
349
363
 
350
364
  /** @internal Grouped pattern lists by stream kind, used for stream/consumer setup. */
351
365
  interface PatternsByKind {
@@ -478,6 +492,7 @@ declare class ConnectionProvider {
478
492
  * Sequence: drain → wait for close. Falls back to force-close on error.
479
493
  */
480
494
  shutdown(): Promise<void>;
495
+ private initJetStreamManager;
481
496
  /** Internal: establish the physical connection with reconnect monitoring. */
482
497
  private establish;
483
498
  /** Subscribe to connection status events and emit hooks. */
@@ -585,6 +600,8 @@ declare class StreamProvider {
585
600
  private buildConfig;
586
601
  /** Get default config for a stream kind. */
587
602
  private getDefaults;
603
+ /** Check if scheduling is enabled for a stream kind via `allow_msg_schedules` override. */
604
+ private isSchedulingEnabled;
588
605
  /** Get user-provided overrides for a stream kind. */
589
606
  private getOverrides;
590
607
  }
@@ -990,7 +1007,9 @@ declare class JetstreamClient extends ClientProxy {
990
1007
  * Publish a fire-and-forget event to JetStream.
991
1008
  *
992
1009
  * Events are published to either the workqueue stream or broadcast stream
993
- * depending on the subject prefix.
1010
+ * depending on the subject prefix. When a schedule is present the message
1011
+ * is published to a `_sch` subject within the same stream, with the target
1012
+ * set to the original event subject.
994
1013
  */
995
1014
  protected dispatchEvent<T = unknown>(packet: ReadPacket): Promise<T>;
996
1015
  /**
@@ -1016,8 +1035,20 @@ declare class JetstreamClient extends ClientProxy {
1016
1035
  private buildEventSubject;
1017
1036
  /** Build NATS headers merging custom headers with transport headers. */
1018
1037
  private buildHeaders;
1019
- /** Extract data, headers, and timeout from raw packet data or JetstreamRecord. */
1038
+ /** Extract data, headers, timeout, and schedule from raw packet data or JetstreamRecord. */
1020
1039
  private extractRecordData;
1040
+ /**
1041
+ * Build a schedule-holder subject for NATS message scheduling.
1042
+ *
1043
+ * The schedule-holder subject resides in the same stream as the target but
1044
+ * uses a separate `_sch` namespace that is NOT matched by any consumer filter.
1045
+ * NATS holds the message and publishes it to the target subject after the delay.
1046
+ *
1047
+ * Examples:
1048
+ * - `{svc}__microservice.ev.order.reminder` → `{svc}__microservice._sch.order.reminder`
1049
+ * - `broadcast.config.updated` → `broadcast._sch.config.updated`
1050
+ */
1051
+ private buildScheduleSubject;
1021
1052
  private getRpcTimeout;
1022
1053
  }
1023
1054
 
@@ -1046,6 +1077,8 @@ declare class JetstreamRecord<TData = unknown> {
1046
1077
  readonly timeout?: number | undefined;
1047
1078
  /** Custom message ID for JetStream deduplication. */
1048
1079
  readonly messageId?: string | undefined;
1080
+ /** Schedule options for delayed delivery. */
1081
+ readonly schedule?: ScheduleRecordOptions | undefined;
1049
1082
  constructor(
1050
1083
  /** Message payload. */
1051
1084
  data: TData,
@@ -1054,7 +1087,9 @@ declare class JetstreamRecord<TData = unknown> {
1054
1087
  /** Per-request RPC timeout override in ms. */
1055
1088
  timeout?: number | undefined,
1056
1089
  /** Custom message ID for JetStream deduplication. */
1057
- messageId?: string | undefined);
1090
+ messageId?: string | undefined,
1091
+ /** Schedule options for delayed delivery. */
1092
+ schedule?: ScheduleRecordOptions | undefined);
1058
1093
  }
1059
1094
  /**
1060
1095
  * Fluent builder for constructing JetstreamRecord instances.
@@ -1067,6 +1102,7 @@ declare class JetstreamRecordBuilder<TData = unknown> {
1067
1102
  private readonly headers;
1068
1103
  private timeout;
1069
1104
  private messageId;
1105
+ private scheduleOptions;
1070
1106
  constructor(data?: TData);
1071
1107
  /**
1072
1108
  * Set the message payload.
@@ -1114,6 +1150,20 @@ declare class JetstreamRecordBuilder<TData = unknown> {
1114
1150
  * @param ms - Timeout in milliseconds. Overrides the global RPC timeout for this request only.
1115
1151
  */
1116
1152
  setTimeout(ms: number): this;
1153
+ /**
1154
+ * Schedule one-shot delayed delivery.
1155
+ *
1156
+ * The message is held by NATS and delivered to the event consumer
1157
+ * at the specified time. Requires NATS >= 2.12 and `allow_msg_schedules: true`
1158
+ * on the event stream (via `events: { stream: { allow_msg_schedules: true } }`).
1159
+ *
1160
+ * Only meaningful for events (`client.emit()`). If used with RPC
1161
+ * (`client.send()`), a warning is logged and the schedule is ignored.
1162
+ *
1163
+ * @param date - Delivery time. Must be in the future.
1164
+ * @throws Error if the date is not in the future.
1165
+ */
1166
+ scheduleAt(date: Date): this;
1117
1167
  /**
1118
1168
  * Build the immutable {@link JetstreamRecord}.
1119
1169
  *
@@ -1125,10 +1175,10 @@ declare class JetstreamRecordBuilder<TData = unknown> {
1125
1175
  }
1126
1176
 
1127
1177
  /**
1128
- * Default JSON codec wrapping the nats.js JSONCodec.
1178
+ * Default JSON codec using native `TextEncoder`/`TextDecoder`.
1129
1179
  *
1130
- * Serializes to/from JSON using the native NATS implementation
1131
- * which handles `TextEncoder`/`TextDecoder` internally.
1180
+ * Serializes values to JSON via `JSON.stringify` and encodes the
1181
+ * resulting string into a `Uint8Array`. Decoding reverses the process.
1132
1182
  *
1133
1183
  * @example
1134
1184
  * ```typescript
@@ -1138,7 +1188,6 @@ declare class JetstreamRecordBuilder<TData = unknown> {
1138
1188
  * ```
1139
1189
  */
1140
1190
  declare class JsonCodec implements Codec {
1141
- private readonly inner;
1142
1191
  encode(data: unknown): Uint8Array;
1143
1192
  decode(data: Uint8Array): unknown;
1144
1193
  }
@@ -1347,6 +1396,38 @@ declare enum JetstreamHeader {
1347
1396
  /** Set to `'true'` on error responses so the client can distinguish success from failure. */
1348
1397
  Error = "x-error"
1349
1398
  }
1399
+ /**
1400
+ * Build the internal service name with microservice suffix.
1401
+ *
1402
+ * @param name - Service name from `forRoot({ name })`.
1403
+ * @returns `{name}__microservice`
1404
+ */
1405
+ declare const internalName: (name: string) => string;
1406
+ /**
1407
+ * Build a fully-qualified NATS subject for workqueue events, RPC commands, or ordered events.
1408
+ *
1409
+ * @param serviceName - Target service name.
1410
+ * @param kind - Subject kind ({@link StreamKind.Event}, {@link StreamKind.Command}, or {@link StreamKind.Ordered}).
1411
+ * @param pattern - The message pattern (e.g. `'user.created'`).
1412
+ * @returns `{serviceName}__microservice.{kind}.{pattern}`
1413
+ */
1414
+ declare const buildSubject: (serviceName: string, kind: SubjectKind, pattern: string) => string;
1415
+ /**
1416
+ * Build the JetStream stream name for a given service and kind.
1417
+ *
1418
+ * @param serviceName - Service name from `forRoot({ name })`.
1419
+ * @param kind - Stream kind ({@link StreamKind}).
1420
+ * @returns Stream name (e.g. `orders__microservice_ev-stream` or `broadcast-stream`).
1421
+ */
1422
+ declare const streamName: (serviceName: string, kind: StreamKind) => string;
1423
+ /**
1424
+ * Build the JetStream consumer name for a given service and kind.
1425
+ *
1426
+ * @param serviceName - Service name from `forRoot({ name })`.
1427
+ * @param kind - Stream kind ({@link StreamKind}).
1428
+ * @returns Consumer name (e.g. `orders__microservice_ev-consumer`).
1429
+ */
1430
+ declare const consumerName: (serviceName: string, kind: StreamKind) => string;
1350
1431
  /**
1351
1432
  * Prefixes used in event patterns to route to specific stream types.
1352
1433
  * Applied by the user when emitting events (e.g. `client.emit('broadcast:config.updated', data)`).
@@ -1362,4 +1443,4 @@ declare const isJetStreamRpcMode: (rpc: RpcConfig | undefined) => boolean;
1362
1443
  /** Check if the RPC config specifies Core mode (default). */
1363
1444
  declare const isCoreRpcMode: (rpc: RpcConfig | undefined) => boolean;
1364
1445
 
1365
- export { type Codec, type DeadLetterInfo, EventBus, JETSTREAM_CODEC, JETSTREAM_CONNECTION, JETSTREAM_EVENT_BUS, JETSTREAM_OPTIONS, JetstreamClient, type JetstreamFeatureOptions, JetstreamHeader, JetstreamHealthIndicator, type JetstreamHealthStatus, JetstreamModule, type JetstreamModuleAsyncOptions, type JetstreamModuleOptions, JetstreamRecord, JetstreamRecordBuilder, JetstreamStrategy, JsonCodec, MessageKind, type OrderedEventOverrides, PatternPrefix, type RpcConfig, RpcContext, type StreamConsumerOverrides, StreamKind, TransportEvent, type TransportHooks, getClientToken, isCoreRpcMode, isJetStreamRpcMode, toNanos };
1446
+ export { type Codec, type DeadLetterInfo, EventBus, JETSTREAM_CODEC, JETSTREAM_CONNECTION, JETSTREAM_EVENT_BUS, JETSTREAM_OPTIONS, JetstreamClient, type JetstreamFeatureOptions, JetstreamHeader, JetstreamHealthIndicator, type JetstreamHealthStatus, JetstreamModule, type JetstreamModuleAsyncOptions, type JetstreamModuleOptions, JetstreamRecord, JetstreamRecordBuilder, JetstreamStrategy, JsonCodec, MessageKind, type OrderedEventOverrides, PatternPrefix, type RpcConfig, RpcContext, type ScheduleRecordOptions, type StreamConsumerOverrides, StreamKind, TransportEvent, type TransportHooks, buildSubject, consumerName, getClientToken, internalName, isCoreRpcMode, isJetStreamRpcMode, streamName, toNanos };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { ModuleMetadata, FactoryProvider, Type, Logger, OnApplicationShutdown, DynamicModule } from '@nestjs/common';
2
- import { MsgHdrs, StreamConfig, ConsumerConfig, ConsumeOptions, DeliverPolicy, ReplayPolicy, ConnectionOptions, NatsConnection, Status, JetStreamManager, JetStreamClient, ConsumerInfo, JsMsg, Msg } from 'nats';
2
+ import { MsgHdrs, ConnectionOptions, NatsConnection, Status, Msg } from '@nats-io/transport-node';
3
+ import { StreamConfig, ConsumerConfig, ConsumeOptions, DeliverPolicy, ReplayPolicy, JetStreamManager, JetStreamClient, ConsumerInfo, JsMsg } from '@nats-io/jetstream';
3
4
  import { MessageHandler, Server, CustomTransportStrategy, ClientProxy, ReadPacket, WritePacket, BaseRpcContext } from '@nestjs/microservices';
4
5
  import { Observable } from 'rxjs';
5
6
 
@@ -346,6 +347,19 @@ declare enum StreamKind {
346
347
  Broadcast = "broadcast",
347
348
  Ordered = "ordered"
348
349
  }
350
+ /**
351
+ * Subset of {@link StreamKind} used for direct subject building.
352
+ *
353
+ * Excludes `Broadcast` because broadcast subjects use a different
354
+ * naming convention (`broadcast.{pattern}` instead of `{service}.{kind}.{pattern}`).
355
+ */
356
+ type SubjectKind = Exclude<StreamKind, StreamKind.Broadcast>;
357
+
358
+ /** Options for one-shot delayed delivery via NATS 2.12 message scheduling. */
359
+ interface ScheduleRecordOptions {
360
+ /** When to deliver the message. Must be in the future. */
361
+ at: Date;
362
+ }
349
363
 
350
364
  /** @internal Grouped pattern lists by stream kind, used for stream/consumer setup. */
351
365
  interface PatternsByKind {
@@ -478,6 +492,7 @@ declare class ConnectionProvider {
478
492
  * Sequence: drain → wait for close. Falls back to force-close on error.
479
493
  */
480
494
  shutdown(): Promise<void>;
495
+ private initJetStreamManager;
481
496
  /** Internal: establish the physical connection with reconnect monitoring. */
482
497
  private establish;
483
498
  /** Subscribe to connection status events and emit hooks. */
@@ -585,6 +600,8 @@ declare class StreamProvider {
585
600
  private buildConfig;
586
601
  /** Get default config for a stream kind. */
587
602
  private getDefaults;
603
+ /** Check if scheduling is enabled for a stream kind via `allow_msg_schedules` override. */
604
+ private isSchedulingEnabled;
588
605
  /** Get user-provided overrides for a stream kind. */
589
606
  private getOverrides;
590
607
  }
@@ -990,7 +1007,9 @@ declare class JetstreamClient extends ClientProxy {
990
1007
  * Publish a fire-and-forget event to JetStream.
991
1008
  *
992
1009
  * Events are published to either the workqueue stream or broadcast stream
993
- * depending on the subject prefix.
1010
+ * depending on the subject prefix. When a schedule is present the message
1011
+ * is published to a `_sch` subject within the same stream, with the target
1012
+ * set to the original event subject.
994
1013
  */
995
1014
  protected dispatchEvent<T = unknown>(packet: ReadPacket): Promise<T>;
996
1015
  /**
@@ -1016,8 +1035,20 @@ declare class JetstreamClient extends ClientProxy {
1016
1035
  private buildEventSubject;
1017
1036
  /** Build NATS headers merging custom headers with transport headers. */
1018
1037
  private buildHeaders;
1019
- /** Extract data, headers, and timeout from raw packet data or JetstreamRecord. */
1038
+ /** Extract data, headers, timeout, and schedule from raw packet data or JetstreamRecord. */
1020
1039
  private extractRecordData;
1040
+ /**
1041
+ * Build a schedule-holder subject for NATS message scheduling.
1042
+ *
1043
+ * The schedule-holder subject resides in the same stream as the target but
1044
+ * uses a separate `_sch` namespace that is NOT matched by any consumer filter.
1045
+ * NATS holds the message and publishes it to the target subject after the delay.
1046
+ *
1047
+ * Examples:
1048
+ * - `{svc}__microservice.ev.order.reminder` → `{svc}__microservice._sch.order.reminder`
1049
+ * - `broadcast.config.updated` → `broadcast._sch.config.updated`
1050
+ */
1051
+ private buildScheduleSubject;
1021
1052
  private getRpcTimeout;
1022
1053
  }
1023
1054
 
@@ -1046,6 +1077,8 @@ declare class JetstreamRecord<TData = unknown> {
1046
1077
  readonly timeout?: number | undefined;
1047
1078
  /** Custom message ID for JetStream deduplication. */
1048
1079
  readonly messageId?: string | undefined;
1080
+ /** Schedule options for delayed delivery. */
1081
+ readonly schedule?: ScheduleRecordOptions | undefined;
1049
1082
  constructor(
1050
1083
  /** Message payload. */
1051
1084
  data: TData,
@@ -1054,7 +1087,9 @@ declare class JetstreamRecord<TData = unknown> {
1054
1087
  /** Per-request RPC timeout override in ms. */
1055
1088
  timeout?: number | undefined,
1056
1089
  /** Custom message ID for JetStream deduplication. */
1057
- messageId?: string | undefined);
1090
+ messageId?: string | undefined,
1091
+ /** Schedule options for delayed delivery. */
1092
+ schedule?: ScheduleRecordOptions | undefined);
1058
1093
  }
1059
1094
  /**
1060
1095
  * Fluent builder for constructing JetstreamRecord instances.
@@ -1067,6 +1102,7 @@ declare class JetstreamRecordBuilder<TData = unknown> {
1067
1102
  private readonly headers;
1068
1103
  private timeout;
1069
1104
  private messageId;
1105
+ private scheduleOptions;
1070
1106
  constructor(data?: TData);
1071
1107
  /**
1072
1108
  * Set the message payload.
@@ -1114,6 +1150,20 @@ declare class JetstreamRecordBuilder<TData = unknown> {
1114
1150
  * @param ms - Timeout in milliseconds. Overrides the global RPC timeout for this request only.
1115
1151
  */
1116
1152
  setTimeout(ms: number): this;
1153
+ /**
1154
+ * Schedule one-shot delayed delivery.
1155
+ *
1156
+ * The message is held by NATS and delivered to the event consumer
1157
+ * at the specified time. Requires NATS >= 2.12 and `allow_msg_schedules: true`
1158
+ * on the event stream (via `events: { stream: { allow_msg_schedules: true } }`).
1159
+ *
1160
+ * Only meaningful for events (`client.emit()`). If used with RPC
1161
+ * (`client.send()`), a warning is logged and the schedule is ignored.
1162
+ *
1163
+ * @param date - Delivery time. Must be in the future.
1164
+ * @throws Error if the date is not in the future.
1165
+ */
1166
+ scheduleAt(date: Date): this;
1117
1167
  /**
1118
1168
  * Build the immutable {@link JetstreamRecord}.
1119
1169
  *
@@ -1125,10 +1175,10 @@ declare class JetstreamRecordBuilder<TData = unknown> {
1125
1175
  }
1126
1176
 
1127
1177
  /**
1128
- * Default JSON codec wrapping the nats.js JSONCodec.
1178
+ * Default JSON codec using native `TextEncoder`/`TextDecoder`.
1129
1179
  *
1130
- * Serializes to/from JSON using the native NATS implementation
1131
- * which handles `TextEncoder`/`TextDecoder` internally.
1180
+ * Serializes values to JSON via `JSON.stringify` and encodes the
1181
+ * resulting string into a `Uint8Array`. Decoding reverses the process.
1132
1182
  *
1133
1183
  * @example
1134
1184
  * ```typescript
@@ -1138,7 +1188,6 @@ declare class JetstreamRecordBuilder<TData = unknown> {
1138
1188
  * ```
1139
1189
  */
1140
1190
  declare class JsonCodec implements Codec {
1141
- private readonly inner;
1142
1191
  encode(data: unknown): Uint8Array;
1143
1192
  decode(data: Uint8Array): unknown;
1144
1193
  }
@@ -1347,6 +1396,38 @@ declare enum JetstreamHeader {
1347
1396
  /** Set to `'true'` on error responses so the client can distinguish success from failure. */
1348
1397
  Error = "x-error"
1349
1398
  }
1399
+ /**
1400
+ * Build the internal service name with microservice suffix.
1401
+ *
1402
+ * @param name - Service name from `forRoot({ name })`.
1403
+ * @returns `{name}__microservice`
1404
+ */
1405
+ declare const internalName: (name: string) => string;
1406
+ /**
1407
+ * Build a fully-qualified NATS subject for workqueue events, RPC commands, or ordered events.
1408
+ *
1409
+ * @param serviceName - Target service name.
1410
+ * @param kind - Subject kind ({@link StreamKind.Event}, {@link StreamKind.Command}, or {@link StreamKind.Ordered}).
1411
+ * @param pattern - The message pattern (e.g. `'user.created'`).
1412
+ * @returns `{serviceName}__microservice.{kind}.{pattern}`
1413
+ */
1414
+ declare const buildSubject: (serviceName: string, kind: SubjectKind, pattern: string) => string;
1415
+ /**
1416
+ * Build the JetStream stream name for a given service and kind.
1417
+ *
1418
+ * @param serviceName - Service name from `forRoot({ name })`.
1419
+ * @param kind - Stream kind ({@link StreamKind}).
1420
+ * @returns Stream name (e.g. `orders__microservice_ev-stream` or `broadcast-stream`).
1421
+ */
1422
+ declare const streamName: (serviceName: string, kind: StreamKind) => string;
1423
+ /**
1424
+ * Build the JetStream consumer name for a given service and kind.
1425
+ *
1426
+ * @param serviceName - Service name from `forRoot({ name })`.
1427
+ * @param kind - Stream kind ({@link StreamKind}).
1428
+ * @returns Consumer name (e.g. `orders__microservice_ev-consumer`).
1429
+ */
1430
+ declare const consumerName: (serviceName: string, kind: StreamKind) => string;
1350
1431
  /**
1351
1432
  * Prefixes used in event patterns to route to specific stream types.
1352
1433
  * Applied by the user when emitting events (e.g. `client.emit('broadcast:config.updated', data)`).
@@ -1362,4 +1443,4 @@ declare const isJetStreamRpcMode: (rpc: RpcConfig | undefined) => boolean;
1362
1443
  /** Check if the RPC config specifies Core mode (default). */
1363
1444
  declare const isCoreRpcMode: (rpc: RpcConfig | undefined) => boolean;
1364
1445
 
1365
- export { type Codec, type DeadLetterInfo, EventBus, JETSTREAM_CODEC, JETSTREAM_CONNECTION, JETSTREAM_EVENT_BUS, JETSTREAM_OPTIONS, JetstreamClient, type JetstreamFeatureOptions, JetstreamHeader, JetstreamHealthIndicator, type JetstreamHealthStatus, JetstreamModule, type JetstreamModuleAsyncOptions, type JetstreamModuleOptions, JetstreamRecord, JetstreamRecordBuilder, JetstreamStrategy, JsonCodec, MessageKind, type OrderedEventOverrides, PatternPrefix, type RpcConfig, RpcContext, type StreamConsumerOverrides, StreamKind, TransportEvent, type TransportHooks, getClientToken, isCoreRpcMode, isJetStreamRpcMode, toNanos };
1446
+ export { type Codec, type DeadLetterInfo, EventBus, JETSTREAM_CODEC, JETSTREAM_CONNECTION, JETSTREAM_EVENT_BUS, JETSTREAM_OPTIONS, JetstreamClient, type JetstreamFeatureOptions, JetstreamHeader, JetstreamHealthIndicator, type JetstreamHealthStatus, JetstreamModule, type JetstreamModuleAsyncOptions, type JetstreamModuleOptions, JetstreamRecord, JetstreamRecordBuilder, JetstreamStrategy, JsonCodec, MessageKind, type OrderedEventOverrides, PatternPrefix, type RpcConfig, RpcContext, type ScheduleRecordOptions, type StreamConsumerOverrides, StreamKind, TransportEvent, type TransportHooks, buildSubject, consumerName, getClientToken, internalName, isCoreRpcMode, isJetStreamRpcMode, streamName, toNanos };