@amqp-contract/contract 0.4.0 → 0.5.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.mts CHANGED
@@ -856,7 +856,7 @@ declare function defineConsumer<TMessage extends MessageDefinition>(queue: Queue
856
856
  */
857
857
  declare function defineContract<TContract extends ContractDefinition>(definition: TContract): TContract;
858
858
  /**
859
- * Publisher-first builder result.
859
+ * Publisher-first builder result for fanout and direct exchanges.
860
860
  *
861
861
  * This type represents a publisher and provides a method to create
862
862
  * a consumer that uses the same message schema with a binding to the exchange.
@@ -883,6 +883,108 @@ type PublisherFirstResult<TMessage extends MessageDefinition, TPublisher extends
883
883
  binding: QueueBindingDefinition;
884
884
  };
885
885
  };
886
+ /**
887
+ * Type-safe routing key that validates basic format.
888
+ *
889
+ * Validates that a routing key follows basic AMQP routing key rules:
890
+ * - Must not contain wildcards (* or #)
891
+ * - Must not be empty
892
+ * - Should contain alphanumeric characters, dots, hyphens, and underscores
893
+ *
894
+ * Note: Full character-by-character validation is not performed to avoid TypeScript
895
+ * recursion depth limits. Runtime validation is still recommended.
896
+ *
897
+ * @public
898
+ * @template S - The routing key string to validate
899
+ * @example
900
+ * ```typescript
901
+ * type Valid = RoutingKey<"order.created">; // "order.created"
902
+ * type Invalid = RoutingKey<"order.*">; // never (contains wildcard)
903
+ * type Invalid2 = RoutingKey<"">; // never (empty string)
904
+ * ```
905
+ */
906
+ type RoutingKey<S extends string> = S extends "" ? never : S extends `${string}*${string}` | `${string}#${string}` ? never : S;
907
+ /**
908
+ * Type-safe binding pattern that validates basic format and wildcards.
909
+ *
910
+ * Validates that a binding pattern follows basic AMQP binding pattern rules:
911
+ * - Can contain wildcards (* for one word, # for zero or more words)
912
+ * - Must not be empty
913
+ * - Should contain alphanumeric characters, dots, hyphens, underscores, and wildcards
914
+ *
915
+ * Note: Full character-by-character validation is not performed to avoid TypeScript
916
+ * recursion depth limits. Runtime validation is still recommended.
917
+ *
918
+ * @public
919
+ * @template S - The binding pattern string to validate
920
+ * @example
921
+ * ```typescript
922
+ * type ValidPattern = BindingPattern<"order.*">; // "order.*"
923
+ * type ValidHash = BindingPattern<"order.#">; // "order.#"
924
+ * type ValidConcrete = BindingPattern<"order.created">; // "order.created"
925
+ * type Invalid = BindingPattern<"">; // never (empty string)
926
+ * ```
927
+ */
928
+ type BindingPattern<S extends string> = S extends "" ? never : S;
929
+ /**
930
+ * Helper type for pattern matching with # in the middle
931
+ * Handles backtracking to match # with zero or more segments
932
+ * @internal
933
+ */
934
+ type MatchesAfterHash<Key extends string, PatternRest$1 extends string> = MatchesPattern<Key, PatternRest$1> extends true ? true : Key extends `${string}.${infer KeyRest}` ? MatchesAfterHash<KeyRest, PatternRest$1> : false;
935
+ /**
936
+ * Check if a routing key matches a binding pattern
937
+ * Implements AMQP topic exchange pattern matching:
938
+ * - * matches exactly one word
939
+ * - # matches zero or more words
940
+ * @internal
941
+ */
942
+ type MatchesPattern<Key extends string, Pattern extends string> = Pattern extends `${infer PatternPart}.${infer PatternRest}` ? PatternPart extends "#" ? MatchesAfterHash<Key, PatternRest> : Key extends `${infer KeyPart}.${infer KeyRest}` ? PatternPart extends "*" ? MatchesPattern<KeyRest, PatternRest> : PatternPart extends KeyPart ? MatchesPattern<KeyRest, PatternRest> : false : false : Pattern extends "#" ? true : Pattern extends "*" ? Key extends `${string}.${string}` ? false : true : Pattern extends Key ? true : false;
943
+ /**
944
+ * Validate that a routing key matches a binding pattern.
945
+ *
946
+ * This is a utility type provided for users who want compile-time validation
947
+ * that a routing key matches a specific pattern. It's not enforced internally
948
+ * in the API to avoid TypeScript recursion depth issues with complex routing keys.
949
+ *
950
+ * Returns the routing key if it's valid and matches the pattern, `never` otherwise.
951
+ *
952
+ * @example
953
+ * ```typescript
954
+ * type ValidKey = MatchingRoutingKey<"order.*", "order.created">; // "order.created"
955
+ * type InvalidKey = MatchingRoutingKey<"order.*", "user.created">; // never
956
+ * ```
957
+ *
958
+ * @template Pattern - The binding pattern (can contain * and # wildcards)
959
+ * @template Key - The routing key to validate
960
+ */
961
+ type MatchingRoutingKey<Pattern extends string, Key extends string> = RoutingKey<Key> extends never ? never : BindingPattern<Pattern> extends never ? never : MatchesPattern<Key, Pattern> extends true ? Key : never;
962
+ /**
963
+ * Publisher-first builder result for topic exchanges.
964
+ *
965
+ * This type represents a publisher with a concrete routing key and provides a method
966
+ * to create consumers that can use routing key patterns matching the publisher's key.
967
+ *
968
+ * @template TMessage - The message definition
969
+ * @template TPublisher - The publisher definition
970
+ * @template TRoutingKey - The literal routing key type from the publisher (for documentation purposes)
971
+ */
972
+ type PublisherFirstResultWithRoutingKey<TMessage extends MessageDefinition, TPublisher extends PublisherDefinition<TMessage>, TRoutingKey extends string> = {
973
+ /** The publisher definition */
974
+ publisher: TPublisher;
975
+ /**
976
+ * Create a consumer that receives messages from this publisher.
977
+ * For topic exchanges, the routing key pattern can be specified for the binding.
978
+ *
979
+ * @param queue - The queue that will consume the messages
980
+ * @param routingKey - Optional routing key pattern for the binding (defaults to publisher's routing key)
981
+ * @returns An object with the consumer definition and binding
982
+ */
983
+ createConsumer: <TConsumerRoutingKey extends string = TRoutingKey>(queue: QueueDefinition, routingKey?: BindingPattern<TConsumerRoutingKey>) => {
984
+ consumer: ConsumerDefinition<TMessage>;
985
+ binding: QueueBindingDefinition;
986
+ };
987
+ };
886
988
  /**
887
989
  * Define a publisher-first relationship for event-oriented messaging.
888
990
  *
@@ -942,7 +1044,7 @@ declare function definePublisherFirst<TMessage extends MessageDefinition>(exchan
942
1044
  exchange: FanoutExchangeDefinition;
943
1045
  }>>;
944
1046
  /**
945
- * Define a publisher-first relationship for event-oriented messaging.
1047
+ * Define a publisher-first relationship for event-oriented messaging with direct exchange.
946
1048
  *
947
1049
  * This builder enforces consistency by:
948
1050
  * 1. Ensuring the publisher and consumer use the same message schema
@@ -951,7 +1053,7 @@ declare function definePublisherFirst<TMessage extends MessageDefinition>(exchan
951
1053
  * Use this pattern for events where publishers don't need to know about queues.
952
1054
  * Multiple consumers can be created for different queues, all using the same message schema.
953
1055
  *
954
- * @param exchange - The exchange to publish to (direct or topic type)
1056
+ * @param exchange - The exchange to publish to (direct type)
955
1057
  * @param message - The message definition (schema and metadata)
956
1058
  * @param options - Binding configuration (routingKey is required)
957
1059
  * @param options.routingKey - The routing key for message routing
@@ -961,6 +1063,61 @@ declare function definePublisherFirst<TMessage extends MessageDefinition>(exchan
961
1063
  * ```typescript
962
1064
  * import { z } from 'zod';
963
1065
  *
1066
+ * const tasksExchange = defineExchange('tasks', 'direct', { durable: true });
1067
+ * const taskMessage = defineMessage(
1068
+ * z.object({
1069
+ * taskId: z.string(),
1070
+ * payload: z.record(z.unknown()),
1071
+ * })
1072
+ * );
1073
+ *
1074
+ * // Create publisher-first relationship with routing key
1075
+ * const taskEvent = definePublisherFirst(
1076
+ * tasksExchange,
1077
+ * taskMessage,
1078
+ * { routingKey: 'task.execute' }
1079
+ * );
1080
+ *
1081
+ * // Use in contract - routing key is consistent across publisher and bindings
1082
+ * const taskQueue = defineQueue('task-queue', { durable: true });
1083
+ * const { consumer, binding } = taskEvent.createConsumer(taskQueue);
1084
+ *
1085
+ * const contract = defineContract({
1086
+ * exchanges: { tasks: tasksExchange },
1087
+ * queues: { taskQueue },
1088
+ * bindings: { taskBinding: binding },
1089
+ * publishers: { executeTask: taskEvent.publisher },
1090
+ * consumers: { processTask: consumer },
1091
+ * });
1092
+ * ```
1093
+ */
1094
+ declare function definePublisherFirst<TMessage extends MessageDefinition, TRoutingKey extends string>(exchange: DirectExchangeDefinition, message: TMessage, options: {
1095
+ routingKey: RoutingKey<TRoutingKey>;
1096
+ arguments?: Record<string, unknown>;
1097
+ }): PublisherFirstResult<TMessage, Extract<PublisherDefinition<TMessage>, {
1098
+ exchange: DirectExchangeDefinition | TopicExchangeDefinition;
1099
+ }>>;
1100
+ /**
1101
+ * Define a publisher-first relationship for event-oriented messaging with topic exchange.
1102
+ *
1103
+ * This builder enforces consistency by:
1104
+ * 1. Ensuring the publisher and consumer use the same message schema
1105
+ * 2. The publisher uses a concrete routing key (e.g., 'order.created')
1106
+ * 3. Consumers can optionally specify routing key patterns (e.g., 'order.*') or use the default
1107
+ *
1108
+ * Use this pattern for events where publishers emit with specific routing keys,
1109
+ * and consumers can subscribe with patterns. This is less common than the consumer-first pattern.
1110
+ *
1111
+ * @param exchange - The exchange to publish to (topic type)
1112
+ * @param message - The message definition (schema and metadata)
1113
+ * @param options - Binding configuration (routingKey is required)
1114
+ * @param options.routingKey - The concrete routing key for the publisher
1115
+ * @returns A publisher-first result with publisher and consumer factory that accepts optional routing key patterns
1116
+ *
1117
+ * @example
1118
+ * ```typescript
1119
+ * import { z } from 'zod';
1120
+ *
964
1121
  * const ordersExchange = defineExchange('orders', 'topic', { durable: true });
965
1122
  * const orderMessage = defineMessage(
966
1123
  * z.object({
@@ -969,43 +1126,46 @@ declare function definePublisherFirst<TMessage extends MessageDefinition>(exchan
969
1126
  * })
970
1127
  * );
971
1128
  *
972
- * // Create publisher-first relationship with routing key (event pattern)
1129
+ * // Create publisher-first relationship with concrete routing key
973
1130
  * const orderCreatedEvent = definePublisherFirst(
974
1131
  * ordersExchange,
975
1132
  * orderMessage,
976
- * { routingKey: 'order.created' }
1133
+ * { routingKey: 'order.created' } // Concrete key
977
1134
  * );
978
1135
  *
979
- * // Multiple queues can consume the same event
1136
+ * // Consumers can use patterns or specific keys
980
1137
  * const orderQueue = defineQueue('order-processing', { durable: true });
981
- * const analyticsQueue = defineQueue('analytics', { durable: true });
1138
+ * const allOrdersQueue = defineQueue('all-orders', { durable: true });
982
1139
  *
983
- * // Use in contract - routing key is consistent across publisher and bindings
984
- * const { consumer: processConsumer, binding: processBinding } = orderCreatedEvent.createConsumer(orderQueue);
985
- * const { consumer: analyticsConsumer, binding: analyticsBinding } = orderCreatedEvent.createConsumer(analyticsQueue);
1140
+ * // Use in contract
1141
+ * const { consumer: processConsumer, binding: processBinding } =
1142
+ * orderCreatedEvent.createConsumer(orderQueue); // Uses 'order.created'
1143
+ * const { consumer: allOrdersConsumer, binding: allOrdersBinding } =
1144
+ * orderCreatedEvent.createConsumer(allOrdersQueue, 'order.*'); // Uses pattern
986
1145
  *
987
1146
  * const contract = defineContract({
988
1147
  * exchanges: { orders: ordersExchange },
989
- * queues: { orderQueue, analyticsQueue },
1148
+ * queues: { orderQueue, allOrdersQueue },
990
1149
  * bindings: {
991
1150
  * orderBinding: processBinding,
992
- * analyticsBinding,
1151
+ * allOrdersBinding,
993
1152
  * },
994
1153
  * publishers: { orderCreated: orderCreatedEvent.publisher },
995
1154
  * consumers: {
996
1155
  * processOrder: processConsumer,
997
- * trackOrder: analyticsConsumer,
1156
+ * trackAllOrders: allOrdersConsumer,
998
1157
  * },
999
1158
  * });
1000
1159
  * ```
1001
1160
  */
1002
- declare function definePublisherFirst<TMessage extends MessageDefinition>(exchange: DirectExchangeDefinition | TopicExchangeDefinition, message: TMessage, options: Omit<Extract<QueueBindingDefinition, {
1003
- exchange: DirectExchangeDefinition | TopicExchangeDefinition;
1004
- }>, "type" | "queue" | "exchange">): PublisherFirstResult<TMessage, Extract<PublisherDefinition<TMessage>, {
1161
+ declare function definePublisherFirst<TMessage extends MessageDefinition, TRoutingKey extends string>(exchange: TopicExchangeDefinition, message: TMessage, options: {
1162
+ routingKey: RoutingKey<TRoutingKey>;
1163
+ arguments?: Record<string, unknown>;
1164
+ }): PublisherFirstResultWithRoutingKey<TMessage, Extract<PublisherDefinition<TMessage>, {
1005
1165
  exchange: DirectExchangeDefinition | TopicExchangeDefinition;
1006
- }>>;
1166
+ }>, TRoutingKey>;
1007
1167
  /**
1008
- * Consumer-first builder result.
1168
+ * Consumer-first builder result for fanout and direct exchanges.
1009
1169
  *
1010
1170
  * This type represents a consumer with its binding and provides a method to create
1011
1171
  * a publisher that uses the same message schema and routing key.
@@ -1025,7 +1185,37 @@ type ConsumerFirstResult<TMessage extends MessageDefinition, TConsumer extends C
1025
1185
  *
1026
1186
  * @returns A publisher definition with the same message type and routing key
1027
1187
  */
1028
- createPublisher: () => PublisherDefinition<TMessage>;
1188
+ createPublisher: () => TBinding["exchange"] extends FanoutExchangeDefinition ? Extract<PublisherDefinition<TMessage>, {
1189
+ exchange: FanoutExchangeDefinition;
1190
+ }> : Extract<PublisherDefinition<TMessage>, {
1191
+ exchange: DirectExchangeDefinition | TopicExchangeDefinition;
1192
+ }>;
1193
+ };
1194
+ /**
1195
+ * Consumer-first builder result for topic exchanges.
1196
+ *
1197
+ * This type represents a consumer with its binding (which may use a pattern) and provides
1198
+ * a method to create a publisher with a concrete routing key that matches the pattern.
1199
+ *
1200
+ * @template TMessage - The message definition
1201
+ * @template TConsumer - The consumer definition
1202
+ * @template TBinding - The queue binding definition
1203
+ */
1204
+ type ConsumerFirstResultWithRoutingKey<TMessage extends MessageDefinition, TConsumer extends ConsumerDefinition<TMessage>, TBinding extends QueueBindingDefinition> = {
1205
+ /** The consumer definition */
1206
+ consumer: TConsumer;
1207
+ /** The binding definition connecting the exchange to the queue */
1208
+ binding: TBinding;
1209
+ /**
1210
+ * Create a publisher that sends messages to this consumer.
1211
+ * For topic exchanges, the routing key can be specified to match the binding pattern.
1212
+ *
1213
+ * @param routingKey - The concrete routing key that matches the binding pattern
1214
+ * @returns A publisher definition with the specified routing key
1215
+ */
1216
+ createPublisher: <TPublisherRoutingKey extends string>(routingKey: RoutingKey<TPublisherRoutingKey>) => Extract<PublisherDefinition<TMessage>, {
1217
+ exchange: DirectExchangeDefinition | TopicExchangeDefinition;
1218
+ }>;
1029
1219
  };
1030
1220
  /**
1031
1221
  * Define a consumer-first relationship between a consumer and publisher.
@@ -1091,7 +1281,7 @@ declare function defineConsumerFirst<TMessage extends MessageDefinition>(queue:
1091
1281
  * send messages with the correct type and routing key.
1092
1282
  *
1093
1283
  * @param queue - The queue to consume from
1094
- * @param exchange - The exchange that routes to the queue (direct or topic type)
1284
+ * @param exchange - The exchange that routes to the queue (direct type)
1095
1285
  * @param message - The message definition (schema and metadata)
1096
1286
  * @param options - Binding configuration (routingKey is required)
1097
1287
  * @param options.routingKey - The routing key for message routing
@@ -1128,11 +1318,70 @@ declare function defineConsumerFirst<TMessage extends MessageDefinition>(queue:
1128
1318
  * });
1129
1319
  * ```
1130
1320
  */
1131
- declare function defineConsumerFirst<TMessage extends MessageDefinition>(queue: QueueDefinition, exchange: DirectExchangeDefinition | TopicExchangeDefinition, message: TMessage, options: Omit<Extract<QueueBindingDefinition, {
1132
- exchange: DirectExchangeDefinition | TopicExchangeDefinition;
1133
- }>, "type" | "queue" | "exchange">): ConsumerFirstResult<TMessage, ConsumerDefinition<TMessage>, Extract<QueueBindingDefinition, {
1134
- exchange: DirectExchangeDefinition | TopicExchangeDefinition;
1321
+ declare function defineConsumerFirst<TMessage extends MessageDefinition, TRoutingKey extends string>(queue: QueueDefinition, exchange: DirectExchangeDefinition, message: TMessage, options: {
1322
+ routingKey: RoutingKey<TRoutingKey>;
1323
+ arguments?: Record<string, unknown>;
1324
+ }): ConsumerFirstResult<TMessage, ConsumerDefinition<TMessage>, Extract<QueueBindingDefinition, {
1325
+ exchange: DirectExchangeDefinition;
1326
+ }>>;
1327
+ /**
1328
+ * Define a consumer-first relationship between a consumer and publisher with topic exchange.
1329
+ *
1330
+ * This builder enforces consistency by:
1331
+ * 1. Ensuring the consumer and publisher use the same message schema
1332
+ * 2. The binding uses a routing key pattern (e.g., 'order.*')
1333
+ * 3. The publisher factory accepts a concrete routing key that matches the pattern (e.g., 'order.created')
1334
+ *
1335
+ * Use this when you want to start with a consumer that uses a routing key pattern,
1336
+ * and allow publishers to specify concrete routing keys that match that pattern.
1337
+ *
1338
+ * @param queue - The queue to consume from
1339
+ * @param exchange - The exchange that routes to the queue (topic type)
1340
+ * @param message - The message definition (schema and metadata)
1341
+ * @param options - Binding configuration (routingKey is required)
1342
+ * @param options.routingKey - The routing key pattern for the binding (can use wildcards)
1343
+ * @returns A consumer-first result with consumer, binding, and publisher factory that accepts a routing key
1344
+ *
1345
+ * @example
1346
+ * ```typescript
1347
+ * import { z } from 'zod';
1348
+ *
1349
+ * const orderQueue = defineQueue('order-processing', { durable: true });
1350
+ * const ordersExchange = defineExchange('orders', 'topic', { durable: true });
1351
+ * const orderMessage = defineMessage(
1352
+ * z.object({
1353
+ * orderId: z.string(),
1354
+ * amount: z.number(),
1355
+ * })
1356
+ * );
1357
+ *
1358
+ * // Create consumer-first relationship with pattern
1359
+ * const orderConsumerFirst = defineConsumerFirst(
1360
+ * orderQueue,
1361
+ * ordersExchange,
1362
+ * orderMessage,
1363
+ * { routingKey: 'order.*' } // Pattern in binding
1364
+ * );
1365
+ *
1366
+ * // Use in contract - publisher can specify concrete routing key
1367
+ * const contract = defineContract({
1368
+ * exchanges: { orders: ordersExchange },
1369
+ * queues: { orderQueue },
1370
+ * bindings: { orderBinding: orderConsumerFirst.binding },
1371
+ * publishers: {
1372
+ * orderCreated: orderConsumerFirst.createPublisher('order.created'), // Concrete key
1373
+ * orderUpdated: orderConsumerFirst.createPublisher('order.updated'), // Concrete key
1374
+ * },
1375
+ * consumers: { processOrder: orderConsumerFirst.consumer },
1376
+ * });
1377
+ * ```
1378
+ */
1379
+ declare function defineConsumerFirst<TMessage extends MessageDefinition, TRoutingKey extends string>(queue: QueueDefinition, exchange: TopicExchangeDefinition, message: TMessage, options: {
1380
+ routingKey: BindingPattern<TRoutingKey>;
1381
+ arguments?: Record<string, unknown>;
1382
+ }): ConsumerFirstResultWithRoutingKey<TMessage, ConsumerDefinition<TMessage>, Extract<QueueBindingDefinition, {
1383
+ exchange: TopicExchangeDefinition;
1135
1384
  }>>;
1136
1385
  //#endregion
1137
- export { type AnySchema, type BaseExchangeDefinition, type BindingDefinition, type ConsumerDefinition, type ConsumerFirstResult, type ContractDefinition, type DirectExchangeDefinition, type ExchangeBindingDefinition, type ExchangeDefinition, type FanoutExchangeDefinition, type InferConsumerNames, type InferPublisherNames, type MessageDefinition, type PublisherDefinition, type PublisherFirstResult, type QueueBindingDefinition, type QueueDefinition, type TopicExchangeDefinition, defineConsumer, defineConsumerFirst, defineContract, defineExchange, defineExchangeBinding, defineMessage, definePublisher, definePublisherFirst, defineQueue, defineQueueBinding };
1386
+ export { type AnySchema, type BaseExchangeDefinition, type BindingDefinition, type BindingPattern, type ConsumerDefinition, type ConsumerFirstResult, type ConsumerFirstResultWithRoutingKey, type ContractDefinition, type DirectExchangeDefinition, type ExchangeBindingDefinition, type ExchangeDefinition, type FanoutExchangeDefinition, type InferConsumerNames, type InferPublisherNames, type MatchingRoutingKey, type MessageDefinition, type PublisherDefinition, type PublisherFirstResult, type PublisherFirstResultWithRoutingKey, type QueueBindingDefinition, type QueueDefinition, type RoutingKey, type TopicExchangeDefinition, defineConsumer, defineConsumerFirst, defineContract, defineExchange, defineExchangeBinding, defineMessage, definePublisher, definePublisherFirst, defineQueue, defineQueueBinding };
1138
1387
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/types.ts","../src/builder.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/types.ts","../src/builder.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -310,6 +310,22 @@ function callDefineQueueBinding(queue, exchange, options) {
310
310
  */
311
311
  function definePublisherFirst(exchange, message, options) {
312
312
  const publisher = callDefinePublisher(exchange, message, options);
313
+ if (exchange.type === "topic") {
314
+ const createConsumer$1 = (queue, routingKey) => {
315
+ const binding = callDefineQueueBinding(queue, exchange, routingKey ? {
316
+ ...options,
317
+ routingKey
318
+ } : options);
319
+ return {
320
+ consumer: defineConsumer(queue, message),
321
+ binding
322
+ };
323
+ };
324
+ return {
325
+ publisher,
326
+ createConsumer: createConsumer$1
327
+ };
328
+ }
313
329
  const createConsumer = (queue) => {
314
330
  const binding = callDefineQueueBinding(queue, exchange, options);
315
331
  return {
@@ -329,6 +345,19 @@ function definePublisherFirst(exchange, message, options) {
329
345
  function defineConsumerFirst(queue, exchange, message, options) {
330
346
  const consumer = defineConsumer(queue, message);
331
347
  const binding = callDefineQueueBinding(queue, exchange, options);
348
+ if (exchange.type === "topic") {
349
+ const createPublisher$1 = (routingKey) => {
350
+ return callDefinePublisher(exchange, message, {
351
+ ...options,
352
+ routingKey
353
+ });
354
+ };
355
+ return {
356
+ consumer,
357
+ binding,
358
+ createPublisher: createPublisher$1
359
+ };
360
+ }
332
361
  const createPublisher = () => {
333
362
  return callDefinePublisher(exchange, message, options);
334
363
  };