@amqp-contract/contract 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -13,21 +13,32 @@ pnpm add @amqp-contract/contract
13
13
  ## Usage
14
14
 
15
15
  ```typescript
16
- import { defineContract, defineExchange, defineQueue, defineBinding, definePublisher, defineConsumer } from '@amqp-contract/contract';
16
+ import { defineContract, defineExchange, defineQueue, defineBinding, defineExchangeBinding, definePublisher, defineConsumer } from '@amqp-contract/contract';
17
17
  import { z } from 'zod';
18
18
 
19
19
  // Define your contract
20
20
  const contract = defineContract({
21
21
  exchanges: {
22
22
  orders: defineExchange('orders', 'topic', { durable: true }),
23
+ analytics: defineExchange('analytics', 'topic', { durable: true }),
23
24
  },
24
25
  queues: {
25
26
  orderProcessing: defineQueue('order-processing', { durable: true }),
27
+ analyticsProcessing: defineQueue('analytics-processing', { durable: true }),
26
28
  },
27
29
  bindings: {
30
+ // Queue-to-exchange binding
28
31
  orderBinding: defineBinding('order-processing', 'orders', {
29
32
  routingKey: 'order.created',
30
33
  }),
34
+ // Exchange-to-exchange binding
35
+ analyticsBinding: defineExchangeBinding('analytics', 'orders', {
36
+ routingKey: 'order.#',
37
+ }),
38
+ // Queue receives from analytics exchange
39
+ analyticsQueueBinding: defineBinding('analytics-processing', 'analytics', {
40
+ routingKey: 'order.#',
41
+ }),
31
42
  },
32
43
  publishers: {
33
44
  orderCreated: definePublisher('orders', z.object({
@@ -44,6 +55,10 @@ const contract = defineContract({
44
55
  }), {
45
56
  prefetch: 10,
46
57
  }),
58
+ processAnalytics: defineConsumer('analytics-processing', z.object({
59
+ orderId: z.string(),
60
+ amount: z.number(),
61
+ })),
47
62
  },
48
63
  });
49
64
  ```
@@ -62,6 +77,10 @@ Define an AMQP queue.
62
77
 
63
78
  Define a binding between a queue and an exchange.
64
79
 
80
+ ### `defineExchangeBinding(destination, source, options?)`
81
+
82
+ Define a binding between two exchanges (source → destination). Messages published to the source exchange will be routed to the destination exchange based on the routing key pattern.
83
+
65
84
  ### `definePublisher(exchange, messageSchema, options?)`
66
85
 
67
86
  Define a message publisher with validation schema.
package/dist/index.cjs CHANGED
@@ -34,12 +34,24 @@ function defineQueue(name, options) {
34
34
  */
35
35
  function defineBinding(queue, exchange, options) {
36
36
  return {
37
+ type: "queue",
37
38
  queue,
38
39
  exchange,
39
40
  ...options
40
41
  };
41
42
  }
42
43
  /**
44
+ * Define a binding between exchange and exchange (source -> destination)
45
+ */
46
+ function defineExchangeBinding(destination, source, options) {
47
+ return {
48
+ type: "exchange",
49
+ source,
50
+ destination,
51
+ ...options
52
+ };
53
+ }
54
+ /**
43
55
  * Define a message publisher
44
56
  */
45
57
  function definePublisher(exchange, message, options) {
@@ -71,6 +83,7 @@ exports.defineBinding = defineBinding;
71
83
  exports.defineConsumer = defineConsumer;
72
84
  exports.defineContract = defineContract;
73
85
  exports.defineExchange = defineExchange;
86
+ exports.defineExchangeBinding = defineExchangeBinding;
74
87
  exports.defineMessage = defineMessage;
75
88
  exports.definePublisher = definePublisher;
76
89
  exports.defineQueue = defineQueue;
package/dist/index.d.cts CHANGED
@@ -34,12 +34,27 @@ interface QueueDefinition {
34
34
  /**
35
35
  * Binding between queue and exchange
36
36
  */
37
- interface BindingDefinition {
37
+ interface QueueBindingDefinition {
38
+ type: "queue";
38
39
  queue: string;
39
40
  exchange: string;
40
41
  routingKey?: string;
41
42
  arguments?: Record<string, unknown>;
42
43
  }
44
+ /**
45
+ * Binding between exchange and exchange
46
+ */
47
+ interface ExchangeBindingDefinition {
48
+ type: "exchange";
49
+ source: string;
50
+ destination: string;
51
+ routingKey?: string;
52
+ arguments?: Record<string, unknown>;
53
+ }
54
+ /**
55
+ * Binding definition - can be either queue-to-exchange or exchange-to-exchange
56
+ */
57
+ type BindingDefinition = QueueBindingDefinition | ExchangeBindingDefinition;
43
58
  /**
44
59
  * Definition of a message publisher
45
60
  */
@@ -163,7 +178,11 @@ declare function defineQueue(name: string, options?: Omit<QueueDefinition, "name
163
178
  /**
164
179
  * Define a binding between queue and exchange
165
180
  */
166
- declare function defineBinding(queue: string, exchange: string, options?: Omit<BindingDefinition, "queue" | "exchange">): BindingDefinition;
181
+ declare function defineBinding(queue: string, exchange: string, options?: Omit<QueueBindingDefinition, "type" | "queue" | "exchange">): QueueBindingDefinition;
182
+ /**
183
+ * Define a binding between exchange and exchange (source -> destination)
184
+ */
185
+ declare function defineExchangeBinding(destination: string, source: string, options?: Omit<ExchangeBindingDefinition, "type" | "source" | "destination">): ExchangeBindingDefinition;
167
186
  /**
168
187
  * Define a message publisher
169
188
  */
@@ -177,5 +196,5 @@ declare function defineConsumer<TMessageSchema extends AnySchema, THandlerResult
177
196
  */
178
197
  declare function defineContract<TContract extends ContractDefinition<TExchanges, TQueues, TBindings, TPublishers, TConsumers>, TExchanges extends Record<string, ExchangeDefinition> = Record<string, ExchangeDefinition>, TQueues extends Record<string, QueueDefinition> = Record<string, QueueDefinition>, TBindings extends Record<string, BindingDefinition> = Record<string, BindingDefinition>, TPublishers extends Record<string, PublisherDefinition> = Record<string, PublisherDefinition>, TConsumers extends Record<string, ConsumerDefinition> = Record<string, ConsumerDefinition>>(definition: TContract): TContract;
179
198
  //#endregion
180
- export { type AnySchema, type BindingDefinition, type ClientInferPublisherInput, type ConsumerDefinition, type ConsumerHandler, type ConsumerInferHandlerResult, type ConsumerInferInput, type ContractDefinition, type ExchangeDefinition, type ExchangeType, type InferConsumer, type InferConsumerNames, type InferConsumers, type InferPublisher, type InferPublisherNames, type InferPublishers, type InferSchemaInput, type InferSchemaOutput, type MessageSchema, type PublisherDefinition, type PublisherInferInput, type QueueDefinition, type WorkerInferConsumerHandler, type WorkerInferConsumerHandlerResult, type WorkerInferConsumerHandlers, type WorkerInferConsumerInput, defineBinding, defineConsumer, defineContract, defineExchange, defineMessage, definePublisher, defineQueue };
199
+ export { type AnySchema, type BindingDefinition, type ClientInferPublisherInput, type ConsumerDefinition, type ConsumerHandler, type ConsumerInferHandlerResult, type ConsumerInferInput, type ContractDefinition, type ExchangeBindingDefinition, type ExchangeDefinition, type ExchangeType, type InferConsumer, type InferConsumerNames, type InferConsumers, type InferPublisher, type InferPublisherNames, type InferPublishers, type InferSchemaInput, type InferSchemaOutput, type MessageSchema, type PublisherDefinition, type PublisherInferInput, type QueueBindingDefinition, type QueueDefinition, type WorkerInferConsumerHandler, type WorkerInferConsumerHandlerResult, type WorkerInferConsumerHandlers, type WorkerInferConsumerInput, defineBinding, defineConsumer, defineContract, defineExchange, defineExchangeBinding, defineMessage, definePublisher, defineQueue };
181
200
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/types.ts","../src/builder.ts"],"sourcesContent":[],"mappings":"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A,EC4BpE,kBD5BoE,CC4BjD,cD5BiD,EC4BjC,oBD5BiC,CAAA;;;;AACI,iBCsC3D,cDtC2D,CAAA,kBCuCvD,kBDvCuD,CCuCpC,UDvCoC,ECuCxB,ODvCwB,ECuCf,SDvCe,ECuCJ,WDvCI,ECuCS,UDvCT,CAAA,EAAA,mBCwCtD,MDxCsD,CAAA,MAAA,ECwCvC,kBDxCuC,CAAA,GCwCjB,MDxCiB,CAAA,MAAA,ECwCF,kBDxCE,CAAA,EAAA,gBCyCzD,MDzCyD,CAAA,MAAA,ECyC1C,eDzC0C,CAAA,GCyCvB,MDzCuB,CAAA,MAAA,ECyCR,eDzCQ,CAAA,EAAA,kBC0CvD,MD1CuD,CAAA,MAAA,EC0CxC,iBD1CwC,CAAA,GC0CnB,MD1CmB,CAAA,MAAA,EC0CJ,iBD1CI,CAAA,EAAA,oBC2CrD,MD3CqD,CAAA,MAAA,EC2CtC,mBD3CsC,CAAA,GC2Cf,MD3Ce,CAAA,MAAA,EC2CA,mBD3CA,CAAA,EAAA,mBC4CtD,MD5CsD,CAAA,MAAA,EC4CvC,kBD5CuC,CAAA,GC4CjB,MD5CiB,CAAA,MAAA,EC4CF,kBD5CE,CAAA,CAAA,CAAA,UAAA,EC6C7D,SD7C6D,CAAA,EC6CjD,SD7CiD"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/types.ts","../src/builder.ts"],"sourcesContent":[],"mappings":";;;;;;AAKA;AAKY,KALA,SAAA,GAAY,gBAKA;AAKxB;AAYA;AAWA;AAWiB,KAvCL,YAAA,GAuCK,QAAyB,GAAA,QAK5B,GAAA,OAAM,GAAA,SAAA;AAMpB;AAKA;;AAAwE,UAlDvD,kBAAA,CAkDuD;EAG7D,IAAA,EAAA,MAAA;EAAc,IAAA,EAnDjB,YAmDiB;EAMR,OAAA,CAAA,EAAA,OAAA;EACQ,UAAA,CAAA,EAAA,OAAA;EAAY,QAAA,CAAA,EAAA,OAAA;EACN,SAAA,CAAA,EAvDjB,MAuDiB,CAAA,MAAA,EAAA,OAAA,CAAA;;;;;AAYd,UA7DA,eAAA,CA6DkB;EACC,IAAA,EAAA,MAAA;EAAf,OAAA,CAAA,EAAA,OAAA;EAAoD,SAAA,CAAA,EAAA,OAAA;EAAf,UAAA,CAAA,EAAA,OAAA;EACzB,SAAA,CAAA,EA1DnB,MA0DmB,CAAA,MAAA,EAAA,OAAA,CAAA;;;;;AACb,UArDH,sBAAA,CAqDG;EAAmD,IAAA,EAAA,OAAA;EAAf,KAAA,EAAA,MAAA;EACnB,QAAA,EAAA,MAAA;EAAf,UAAA,CAAA,EAAA,MAAA;EAAqD,SAAA,CAAA,EAjD7D,MAiD6D,CAAA,MAAA,EAAA,OAAA,CAAA;;;;;AACjB,UA5CzC,yBAAA,CA4CyC;EAE5C,IAAA,EAAA,UAAA;EACH,MAAA,EAAA,MAAA;EACE,WAAA,EAAA,MAAA;EACE,UAAA,CAAA,EAAA,MAAA;EACD,SAAA,CAAA,EA7CA,MA6CA,CAAA,MAAA,EAAA,OAAA,CAAA;;AAMd;;;AACkB,KA9CN,iBAAA,GAAoB,sBA8Cd,GA9CuC,yBA8CvC;;AAKlB;;AACE,UA/Ce,mBA+Cf,CAAA,uBA/C0D,SA+C1D,GA/CsE,SA+CtE,CAAA,CAAA;EAAgB,QAAA,EAAA,MAAA;EAAgB,UAAA,CAAA,EAAA,MAAA;EAKtB,OAAA,EAjDD,cAiDoB;;;;;AAOnB,UAlDK,kBAkDa,CAAA,uBAjDL,SAiDK,GAjDO,SAiDP,EAAA,6BAhDC,SAgDD,GAhDa,SAgDb,CAAA,CAAA;EAAmB,KAAA,EAAA,MAAA;EAC/C,OAAA,EA9CS,cA8CT;EADqE,aAAA,CAAA,EA5CrD,oBA4CqD;EAAgB,QAAA,CAAA,EAAA,MAAA;EAO3E,KAAA,CAAA,EAAA,OAAA;;;;;AAEN,UA7CW,kBA6CX,CAAA,mBA5Ce,MA4Cf,CAAA,MAAA,EA5C8B,kBA4C9B,CAAA,GA5CoD,MA4CpD,CAAA,MAAA,EA5CmE,kBA4CnE,CAAA,EAAA,gBA3CY,MA2CZ,CAAA,MAAA,EA3C2B,eA2C3B,CAAA,GA3C8C,MA2C9C,CAAA,MAAA,EA3C6D,eA2C7D,CAAA,EAAA,kBA1Cc,MA0Cd,CAAA,MAAA,EA1C6B,iBA0C7B,CAAA,GA1CkD,MA0ClD,CAAA,MAAA,EA1CiE,iBA0CjE,CAAA,EAAA,oBAzCgB,MAyChB,CAAA,MAAA,EAzC+B,mBAyC/B,CAAA,GAzCsD,MAyCtD,CAAA,MAAA,EAzCqE,mBAyCrE,CAAA,EAAA,mBAxCe,MAwCf,CAAA,MAAA,EAxC8B,kBAwC9B,CAAA,GAxCoD,MAwCpD,CAAA,MAAA,EAxCmE,kBAwCnE,CAAA,CAAA,CAAA;EAAiB,SAAA,CAAA,EAtCT,UAsCS;EAQX,MAAA,CAAA,EA7CD,OA6CC;EAAkC,QAAA,CAAA,EA5CjC,SA4CiC;EAChB,UAAA,CAAA,EA5Cf,WA4Ce;EAAnB,SAAA,CAAA,EA3CG,UA2CH;;;;;AAMC,KA3CA,gBA2Ce,CAAA,gBA3CkB,SA2ClB,CAAA,GA1CzB,OA0CyB,SA1CT,gBA0CS,CAAA,KAAA,OAAA,CAAA,GAAA,MAAA,GAAA,KAAA;;;;AAAoD,KArCnE,iBAqCmE,CAAA,gBArCjC,SAqCiC,CAAA,GApC7E,OAoC6E,SApC7D,gBAoC6D,CAAA,OAAA,EAAA,KAAA,QAAA,CAAA,GAAA,OAAA,GAAA,KAAA;AAO/E;;;AAAmE,KAtCvD,mBAsCuD,CAAA,mBAtChB,mBAsCgB,CAAA,GAtCO,gBAsCP,CArCjE,UAqCiE,CAAA,SAAA,CAAA,CAAA;;AAOnE;;AACwB,KAvCZ,kBAuCY,CAAA,kBAvCyB,kBAuCzB,CAAA,GAvC+C,gBAuC/C,CAtCtB,SAsCsB,CAAA,SAAA,CAAA,CAAA;;;AAKxB;AAAiD,KArCrC,0BAqCqC,CAAA,kBArCQ,kBAqCR,CAAA,GApC/C,SAoC+C,CAAA,eAAA,CAAA,SApCZ,SAoCY,GAnC3C,iBAmC2C,CAnCzB,SAmCyB,CAAA,eAAA,CAAA,CAAA,GAAA,IAAA;;;;AAMjD;;AAEoC,KAnCxB,eAmCwB,CAAA,kBAnCU,kBAmCV,CAAA,GAAA,CAAA,OAAA,EAlCzB,kBAkCyB,CAlCN,SAkCM,CAAA,EAAA,GAjC/B,OAiC+B,CAjCvB,0BAiCuB,CAjCI,SAiCJ,CAAA,CAAA;;;;AACL,KA7BnB,eA6BmB,CAAA,kBA7Be,kBA6Bf,CAAA,GA7BqC,WA6BrC,CA5B7B,SA4B6B,CAAA,YAAA,CAAA,CAAA;;AAK/B;;AAEmC,KA7BvB,cA6BuB,CAAA,kBA7BU,kBA6BV,CAAA,GA7BgC,WA6BhC,CA5BjC,SA4BiC,CAAA,WAAA,CAAA,CAAA;;;;AACL,KAvBlB,mBAuBkB,CAAA,kBAvBoB,kBAuBpB,CAAA,GAAA,MAtBtB,eAsBsB,CAtBN,SAsBM,CAAA;;AAK9B;;AAEoC,KAxBxB,kBAwBwB,CAAA,kBAxBa,kBAwBb,CAAA,GAAA,MAvB5B,cAuB4B,CAvBb,SAuBa,CAAA;;;;AACZ,KAnBZ,cAmBY,CAAA,kBAlBJ,kBAkBI,EAAA,cAjBR,mBAiBQ,CAjBY,SAiBZ,CAAA,CAAA,GAhBpB,eAgBoB,CAhBJ,SAgBI,CAAA,CAhBO,KAgBP,CAAA;;;AAKxB;AACoB,KAjBR,aAiBQ,CAAA,kBAhBA,kBAgBA,EAAA,cAfJ,kBAeI,CAfe,SAef,CAAA,CAAA,GAdhB,cAcgB,CAdD,SAcC,CAAA,CAdU,KAcV,CAAA;;;;AAE4B,KAXpC,yBAWoC,CAAA,kBAV5B,kBAU4B,EAAA,cAThC,mBASgC,CATZ,SASY,CAAA,CAAA,GAR5C,mBAQ4C,CARxB,cAQwB,CART,SAQS,EARE,KAQF,CAAA,CAAA;;;;AAKpC,KARA,wBAQA,CAAA,kBAPQ,kBAOwB,EAAA,cAN5B,kBAM4B,CANT,SAMS,CAAA,CAAA,GALxC,kBAKwC,CALrB,aAKqB,CALP,SAKO,EALI,KAKJ,CAAA,CAAA;;;;AAGC,KAHjC,gCAGiC,CAAA,kBAFzB,kBAEyB,EAAA,cAD7B,kBAC6B,CADV,SACU,CAAA,CAAA,GAAzC,0BAAyC,CAAd,aAAc,CAAA,SAAA,EAAW,KAAX,CAAA,CAAA;;;;AAAf,KAKlB,0BALkB,CAAA,kBAMV,kBANU,EAAA,cAOd,kBAPc,CAOK,SAPL,CAAA,CAAA,GAQ1B,eAR0B,CAQV,aARU,CAQI,SARJ,EAQe,KARf,CAAA,CAAA;AAK9B;;;AAEgB,KAMJ,2BANI,CAAA,kBAM0C,kBAN1C,CAAA,GAAA,QAOR,kBAN0B,CAMP,SANO,CAAA,GAMM,0BANN,CAMiC,SANjC,EAM4C,CAN5C,CAAA,EAAW;;;;;AApN7C;AAKY,UCMK,aDNO,CAAA,gBCMuB,SDNvB,GCMmC,SDNnC,CAAA,SCMsD,SDNtD,CAAA;EAKP,SAAA,IAAA,EAAA,MAAkB;EAYlB,SAAA,MAAA,ECTE,ODSa;EAWf,SAAA,WAAA,ECnBO,ODmBe,CAAA,WAKzB,CAAA;AAMd;AAWA;AAKA;;AAAwE,iBCxCxD,aDwCwD,CAAA,gBCxC1B,SDwC0B,CAAA,CAAA,IAAA,EAAA,MAAA,EAAA,MAAA,ECtC9D,ODsC8D,CAAA,ECrCrE,aDqCqE,CCrCvD,ODqCuD,CAAA;;;AASxE;AACyB,iBCpCT,cAAA,CDoCS,IAAA,EAAA,MAAA,EAAA,IAAA,EClCjB,YDkCiB,EAAA,OAAA,CAAA,ECjCb,IDiCa,CCjCR,kBDiCQ,EAAA,MAAA,GAAA,MAAA,CAAA,CAAA,EChCtB,kBDgCsB;;;;AAId,iBCzBK,WAAA,CDyBL,IAAA,EAAA,MAAA,EAAA,OAAA,CAAA,ECvBC,IDuBD,CCvBM,eDuBN,EAAA,MAAA,CAAA,CAAA,ECtBR,eDsBQ;;;AASX;AACoC,iBCtBpB,aAAA,CDsBoB,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,CAAA,ECnBxB,IDmBwB,CCnBnB,sBDmBmB,EAAA,MAAA,GAAA,OAAA,GAAA,UAAA,CAAA,CAAA,EClBjC,sBDkBiC;;;;AACH,iBCPjB,qBAAA,CDOiB,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,ECJrB,IDIqB,CCJhB,yBDIgB,EAAA,MAAA,GAAA,QAAA,GAAA,aAAA,CAAA,CAAA,ECH9B,yBDG8B;;;;AACE,iBCQnB,eDRmB,CAAA,uBCQoB,SDRpB,CAAA,CAAA,QAAA,EAAA,MAAA,EAAA,OAAA,ECUxB,cDVwB,EAAA,OAAA,CAAA,ECWvB,IDXuB,CCWlB,mBDXkB,CCWE,cDXF,CAAA,EAAA,UAAA,GAAA,SAAA,CAAA,CAAA,ECYhC,mBDZgC,CCYZ,cDZY,CAAA;;;;AACE,iBCsBrB,cDtBqB,CAAA,uBCuBZ,SDvBY,EAAA,6BCwBN,SDxBM,GCwBM,SDxBN,CAAA,CAAA,KAAA,EAAA,MAAA,EAAA,OAAA,EC2B1B,cD3B0B,EAAA,OAAA,CAAA,EC4BzB,ID5ByB,CC4BpB,kBD5BoB,CC4BD,cD5BC,EC4Be,oBD5Bf,CAAA,EAAA,OAAA,GAAA,SAAA,CAAA,CAAA,EC6BlC,kBD7BkC,CC6Bf,cD7Be,EC6BC,oBD7BD,CAAA;;;;AACD,iBCuCpB,cDvCoB,CAAA,kBCwChB,kBDxCgB,CCwCG,UDxCH,ECwCe,ODxCf,ECwCwB,SDxCxB,ECwCmC,WDxCnC,ECwCgD,UDxChD,CAAA,EAAA,mBCyCf,MDzCe,CAAA,MAAA,ECyCA,kBDzCA,CAAA,GCyCsB,MDzCtB,CAAA,MAAA,ECyCqC,kBDzCrC,CAAA,EAAA,gBC0ClB,MD1CkB,CAAA,MAAA,EC0CH,eD1CG,CAAA,GC0CgB,MD1ChB,CAAA,MAAA,EC0C+B,eD1C/B,CAAA,EAAA,kBC2ChB,MD3CgB,CAAA,MAAA,EC2CD,iBD3CC,CAAA,GC2CoB,MD3CpB,CAAA,MAAA,EC2CmC,iBD3CnC,CAAA,EAAA,oBC4Cd,MD5Cc,CAAA,MAAA,EC4CC,mBD5CD,CAAA,GC4CwB,MD5CxB,CAAA,MAAA,EC4CuC,mBD5CvC,CAAA,EAAA,mBC6Cf,MD7Ce,CAAA,MAAA,EC6CA,kBD7CA,CAAA,GC6CsB,MD7CtB,CAAA,MAAA,EC6CqC,kBD7CrC,CAAA,CAAA,CAAA,UAAA,EC8CtB,SD9CsB,CAAA,EC8CV,SD9CU"}
package/dist/index.d.mts CHANGED
@@ -34,12 +34,27 @@ interface QueueDefinition {
34
34
  /**
35
35
  * Binding between queue and exchange
36
36
  */
37
- interface BindingDefinition {
37
+ interface QueueBindingDefinition {
38
+ type: "queue";
38
39
  queue: string;
39
40
  exchange: string;
40
41
  routingKey?: string;
41
42
  arguments?: Record<string, unknown>;
42
43
  }
44
+ /**
45
+ * Binding between exchange and exchange
46
+ */
47
+ interface ExchangeBindingDefinition {
48
+ type: "exchange";
49
+ source: string;
50
+ destination: string;
51
+ routingKey?: string;
52
+ arguments?: Record<string, unknown>;
53
+ }
54
+ /**
55
+ * Binding definition - can be either queue-to-exchange or exchange-to-exchange
56
+ */
57
+ type BindingDefinition = QueueBindingDefinition | ExchangeBindingDefinition;
43
58
  /**
44
59
  * Definition of a message publisher
45
60
  */
@@ -163,7 +178,11 @@ declare function defineQueue(name: string, options?: Omit<QueueDefinition, "name
163
178
  /**
164
179
  * Define a binding between queue and exchange
165
180
  */
166
- declare function defineBinding(queue: string, exchange: string, options?: Omit<BindingDefinition, "queue" | "exchange">): BindingDefinition;
181
+ declare function defineBinding(queue: string, exchange: string, options?: Omit<QueueBindingDefinition, "type" | "queue" | "exchange">): QueueBindingDefinition;
182
+ /**
183
+ * Define a binding between exchange and exchange (source -> destination)
184
+ */
185
+ declare function defineExchangeBinding(destination: string, source: string, options?: Omit<ExchangeBindingDefinition, "type" | "source" | "destination">): ExchangeBindingDefinition;
167
186
  /**
168
187
  * Define a message publisher
169
188
  */
@@ -177,5 +196,5 @@ declare function defineConsumer<TMessageSchema extends AnySchema, THandlerResult
177
196
  */
178
197
  declare function defineContract<TContract extends ContractDefinition<TExchanges, TQueues, TBindings, TPublishers, TConsumers>, TExchanges extends Record<string, ExchangeDefinition> = Record<string, ExchangeDefinition>, TQueues extends Record<string, QueueDefinition> = Record<string, QueueDefinition>, TBindings extends Record<string, BindingDefinition> = Record<string, BindingDefinition>, TPublishers extends Record<string, PublisherDefinition> = Record<string, PublisherDefinition>, TConsumers extends Record<string, ConsumerDefinition> = Record<string, ConsumerDefinition>>(definition: TContract): TContract;
179
198
  //#endregion
180
- export { type AnySchema, type BindingDefinition, type ClientInferPublisherInput, type ConsumerDefinition, type ConsumerHandler, type ConsumerInferHandlerResult, type ConsumerInferInput, type ContractDefinition, type ExchangeDefinition, type ExchangeType, type InferConsumer, type InferConsumerNames, type InferConsumers, type InferPublisher, type InferPublisherNames, type InferPublishers, type InferSchemaInput, type InferSchemaOutput, type MessageSchema, type PublisherDefinition, type PublisherInferInput, type QueueDefinition, type WorkerInferConsumerHandler, type WorkerInferConsumerHandlerResult, type WorkerInferConsumerHandlers, type WorkerInferConsumerInput, defineBinding, defineConsumer, defineContract, defineExchange, defineMessage, definePublisher, defineQueue };
199
+ export { type AnySchema, type BindingDefinition, type ClientInferPublisherInput, type ConsumerDefinition, type ConsumerHandler, type ConsumerInferHandlerResult, type ConsumerInferInput, type ContractDefinition, type ExchangeBindingDefinition, type ExchangeDefinition, type ExchangeType, type InferConsumer, type InferConsumerNames, type InferConsumers, type InferPublisher, type InferPublisherNames, type InferPublishers, type InferSchemaInput, type InferSchemaOutput, type MessageSchema, type PublisherDefinition, type PublisherInferInput, type QueueBindingDefinition, type QueueDefinition, type WorkerInferConsumerHandler, type WorkerInferConsumerHandlerResult, type WorkerInferConsumerHandlers, type WorkerInferConsumerInput, defineBinding, defineConsumer, defineContract, defineExchange, defineExchangeBinding, defineMessage, definePublisher, defineQueue };
181
200
  //# 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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A,EC4BpE,kBD5BoE,CC4BjD,cD5BiD,EC4BjC,oBD5BiC,CAAA;;;;AACI,iBCsC3D,cDtC2D,CAAA,kBCuCvD,kBDvCuD,CCuCpC,UDvCoC,ECuCxB,ODvCwB,ECuCf,SDvCe,ECuCJ,WDvCI,ECuCS,UDvCT,CAAA,EAAA,mBCwCtD,MDxCsD,CAAA,MAAA,ECwCvC,kBDxCuC,CAAA,GCwCjB,MDxCiB,CAAA,MAAA,ECwCF,kBDxCE,CAAA,EAAA,gBCyCzD,MDzCyD,CAAA,MAAA,ECyC1C,eDzC0C,CAAA,GCyCvB,MDzCuB,CAAA,MAAA,ECyCR,eDzCQ,CAAA,EAAA,kBC0CvD,MD1CuD,CAAA,MAAA,EC0CxC,iBD1CwC,CAAA,GC0CnB,MD1CmB,CAAA,MAAA,EC0CJ,iBD1CI,CAAA,EAAA,oBC2CrD,MD3CqD,CAAA,MAAA,EC2CtC,mBD3CsC,CAAA,GC2Cf,MD3Ce,CAAA,MAAA,EC2CA,mBD3CA,CAAA,EAAA,mBC4CtD,MD5CsD,CAAA,MAAA,EC4CvC,kBD5CuC,CAAA,GC4CjB,MD5CiB,CAAA,MAAA,EC4CF,kBD5CE,CAAA,CAAA,CAAA,UAAA,EC6C7D,SD7C6D,CAAA,EC6CjD,SD7CiD"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/types.ts","../src/builder.ts"],"sourcesContent":[],"mappings":"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AAA,ECH9B,yBDG8B;;;;AACE,iBCQnB,eDRmB,CAAA,uBCQoB,SDRpB,CAAA,CAAA,QAAA,EAAA,MAAA,EAAA,OAAA,ECUxB,cDVwB,EAAA,OAAA,CAAA,ECWvB,IDXuB,CCWlB,mBDXkB,CCWE,cDXF,CAAA,EAAA,UAAA,GAAA,SAAA,CAAA,CAAA,ECYhC,mBDZgC,CCYZ,cDZY,CAAA;;;;AACE,iBCsBrB,cDtBqB,CAAA,uBCuBZ,SDvBY,EAAA,6BCwBN,SDxBM,GCwBM,SDxBN,CAAA,CAAA,KAAA,EAAA,MAAA,EAAA,OAAA,EC2B1B,cD3B0B,EAAA,OAAA,CAAA,EC4BzB,ID5ByB,CC4BpB,kBD5BoB,CC4BD,cD5BC,EC4Be,oBD5Bf,CAAA,EAAA,OAAA,GAAA,SAAA,CAAA,CAAA,EC6BlC,kBD7BkC,CC6Bf,cD7Be,EC6BC,oBD7BD,CAAA;;;;AACD,iBCuCpB,cDvCoB,CAAA,kBCwChB,kBDxCgB,CCwCG,UDxCH,ECwCe,ODxCf,ECwCwB,SDxCxB,ECwCmC,WDxCnC,ECwCgD,UDxChD,CAAA,EAAA,mBCyCf,MDzCe,CAAA,MAAA,ECyCA,kBDzCA,CAAA,GCyCsB,MDzCtB,CAAA,MAAA,ECyCqC,kBDzCrC,CAAA,EAAA,gBC0ClB,MD1CkB,CAAA,MAAA,EC0CH,eD1CG,CAAA,GC0CgB,MD1ChB,CAAA,MAAA,EC0C+B,eD1C/B,CAAA,EAAA,kBC2ChB,MD3CgB,CAAA,MAAA,EC2CD,iBD3CC,CAAA,GC2CoB,MD3CpB,CAAA,MAAA,EC2CmC,iBD3CnC,CAAA,EAAA,oBC4Cd,MD5Cc,CAAA,MAAA,EC4CC,mBD5CD,CAAA,GC4CwB,MD5CxB,CAAA,MAAA,EC4CuC,mBD5CvC,CAAA,EAAA,mBC6Cf,MD7Ce,CAAA,MAAA,EC6CA,kBD7CA,CAAA,GC6CsB,MD7CtB,CAAA,MAAA,EC6CqC,kBD7CrC,CAAA,CAAA,CAAA,UAAA,EC8CtB,SD9CsB,CAAA,EC8CV,SD9CU"}
package/dist/index.mjs CHANGED
@@ -33,12 +33,24 @@ function defineQueue(name, options) {
33
33
  */
34
34
  function defineBinding(queue, exchange, options) {
35
35
  return {
36
+ type: "queue",
36
37
  queue,
37
38
  exchange,
38
39
  ...options
39
40
  };
40
41
  }
41
42
  /**
43
+ * Define a binding between exchange and exchange (source -> destination)
44
+ */
45
+ function defineExchangeBinding(destination, source, options) {
46
+ return {
47
+ type: "exchange",
48
+ source,
49
+ destination,
50
+ ...options
51
+ };
52
+ }
53
+ /**
42
54
  * Define a message publisher
43
55
  */
44
56
  function definePublisher(exchange, message, options) {
@@ -66,5 +78,5 @@ function defineContract(definition) {
66
78
  }
67
79
 
68
80
  //#endregion
69
- export { defineBinding, defineConsumer, defineContract, defineExchange, defineMessage, definePublisher, defineQueue };
81
+ export { defineBinding, defineConsumer, defineContract, defineExchange, defineExchangeBinding, defineMessage, definePublisher, defineQueue };
70
82
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../src/builder.ts"],"sourcesContent":["import type {\n AnySchema,\n BindingDefinition,\n ConsumerDefinition,\n ContractDefinition,\n ExchangeDefinition,\n ExchangeType,\n PublisherDefinition,\n QueueDefinition,\n} from \"./types.js\";\n\n/**\n * Message schema with metadata\n */\nexport interface MessageSchema<TSchema extends AnySchema = AnySchema> extends AnySchema {\n readonly name: string;\n readonly schema: TSchema;\n readonly \"~standard\": TSchema[\"~standard\"];\n}\n\n/**\n * Define a message schema with metadata\n */\nexport function defineMessage<TSchema extends AnySchema>(\n name: string,\n schema: TSchema,\n): MessageSchema<TSchema> {\n return {\n name,\n schema,\n \"~standard\": schema[\"~standard\"],\n };\n}\n\n/**\n * Define an AMQP exchange\n */\nexport function defineExchange(\n name: string,\n type: ExchangeType,\n options?: Omit<ExchangeDefinition, \"name\" | \"type\">,\n): ExchangeDefinition {\n return {\n name,\n type,\n ...options,\n };\n}\n\n/**\n * Define an AMQP queue\n */\nexport function defineQueue(\n name: string,\n options?: Omit<QueueDefinition, \"name\">,\n): QueueDefinition {\n return {\n name,\n ...options,\n };\n}\n\n/**\n * Define a binding between queue and exchange\n */\nexport function defineBinding(\n queue: string,\n exchange: string,\n options?: Omit<BindingDefinition, \"queue\" | \"exchange\">,\n): BindingDefinition {\n return {\n queue,\n exchange,\n ...options,\n };\n}\n\n/**\n * Define a message publisher\n */\nexport function definePublisher<TMessageSchema extends AnySchema>(\n exchange: string,\n message: TMessageSchema,\n options?: Omit<PublisherDefinition<TMessageSchema>, \"exchange\" | \"message\">,\n): PublisherDefinition<TMessageSchema> {\n return {\n exchange,\n message,\n ...options,\n };\n}\n\n/**\n * Define a message consumer\n */\nexport function defineConsumer<\n TMessageSchema extends AnySchema,\n THandlerResultSchema extends AnySchema = AnySchema,\n>(\n queue: string,\n message: TMessageSchema,\n options?: Omit<ConsumerDefinition<TMessageSchema, THandlerResultSchema>, \"queue\" | \"message\">,\n): ConsumerDefinition<TMessageSchema, THandlerResultSchema> {\n return {\n queue,\n message,\n ...options,\n };\n}\n\n/**\n * Define an AMQP contract\n */\nexport function defineContract<\n TContract extends ContractDefinition<TExchanges, TQueues, TBindings, TPublishers, TConsumers>,\n TExchanges extends Record<string, ExchangeDefinition> = Record<string, ExchangeDefinition>,\n TQueues extends Record<string, QueueDefinition> = Record<string, QueueDefinition>,\n TBindings extends Record<string, BindingDefinition> = Record<string, BindingDefinition>,\n TPublishers extends Record<string, PublisherDefinition> = Record<string, PublisherDefinition>,\n TConsumers extends Record<string, ConsumerDefinition> = Record<string, ConsumerDefinition>,\n>(definition: TContract): TContract {\n return definition;\n}\n"],"mappings":";;;;AAuBA,SAAgB,cACd,MACA,QACwB;AACxB,QAAO;EACL;EACA;EACA,aAAa,OAAO;EACrB;;;;;AAMH,SAAgB,eACd,MACA,MACA,SACoB;AACpB,QAAO;EACL;EACA;EACA,GAAG;EACJ;;;;;AAMH,SAAgB,YACd,MACA,SACiB;AACjB,QAAO;EACL;EACA,GAAG;EACJ;;;;;AAMH,SAAgB,cACd,OACA,UACA,SACmB;AACnB,QAAO;EACL;EACA;EACA,GAAG;EACJ;;;;;AAMH,SAAgB,gBACd,UACA,SACA,SACqC;AACrC,QAAO;EACL;EACA;EACA,GAAG;EACJ;;;;;AAMH,SAAgB,eAId,OACA,SACA,SAC0D;AAC1D,QAAO;EACL;EACA;EACA,GAAG;EACJ;;;;;AAMH,SAAgB,eAOd,YAAkC;AAClC,QAAO"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../src/builder.ts"],"sourcesContent":["import type {\n AnySchema,\n BindingDefinition,\n QueueBindingDefinition,\n ExchangeBindingDefinition,\n ConsumerDefinition,\n ContractDefinition,\n ExchangeDefinition,\n ExchangeType,\n PublisherDefinition,\n QueueDefinition,\n} from \"./types.js\";\n\n/**\n * Message schema with metadata\n */\nexport interface MessageSchema<TSchema extends AnySchema = AnySchema> extends AnySchema {\n readonly name: string;\n readonly schema: TSchema;\n readonly \"~standard\": TSchema[\"~standard\"];\n}\n\n/**\n * Define a message schema with metadata\n */\nexport function defineMessage<TSchema extends AnySchema>(\n name: string,\n schema: TSchema,\n): MessageSchema<TSchema> {\n return {\n name,\n schema,\n \"~standard\": schema[\"~standard\"],\n };\n}\n\n/**\n * Define an AMQP exchange\n */\nexport function defineExchange(\n name: string,\n type: ExchangeType,\n options?: Omit<ExchangeDefinition, \"name\" | \"type\">,\n): ExchangeDefinition {\n return {\n name,\n type,\n ...options,\n };\n}\n\n/**\n * Define an AMQP queue\n */\nexport function defineQueue(\n name: string,\n options?: Omit<QueueDefinition, \"name\">,\n): QueueDefinition {\n return {\n name,\n ...options,\n };\n}\n\n/**\n * Define a binding between queue and exchange\n */\nexport function defineBinding(\n queue: string,\n exchange: string,\n options?: Omit<QueueBindingDefinition, \"type\" | \"queue\" | \"exchange\">,\n): QueueBindingDefinition {\n return {\n type: \"queue\",\n queue,\n exchange,\n ...options,\n };\n}\n\n/**\n * Define a binding between exchange and exchange (source -> destination)\n */\nexport function defineExchangeBinding(\n destination: string,\n source: string,\n options?: Omit<ExchangeBindingDefinition, \"type\" | \"source\" | \"destination\">,\n): ExchangeBindingDefinition {\n return {\n type: \"exchange\",\n source,\n destination,\n ...options,\n };\n}\n\n/**\n * Define a message publisher\n */\nexport function definePublisher<TMessageSchema extends AnySchema>(\n exchange: string,\n message: TMessageSchema,\n options?: Omit<PublisherDefinition<TMessageSchema>, \"exchange\" | \"message\">,\n): PublisherDefinition<TMessageSchema> {\n return {\n exchange,\n message,\n ...options,\n };\n}\n\n/**\n * Define a message consumer\n */\nexport function defineConsumer<\n TMessageSchema extends AnySchema,\n THandlerResultSchema extends AnySchema = AnySchema,\n>(\n queue: string,\n message: TMessageSchema,\n options?: Omit<ConsumerDefinition<TMessageSchema, THandlerResultSchema>, \"queue\" | \"message\">,\n): ConsumerDefinition<TMessageSchema, THandlerResultSchema> {\n return {\n queue,\n message,\n ...options,\n };\n}\n\n/**\n * Define an AMQP contract\n */\nexport function defineContract<\n TContract extends ContractDefinition<TExchanges, TQueues, TBindings, TPublishers, TConsumers>,\n TExchanges extends Record<string, ExchangeDefinition> = Record<string, ExchangeDefinition>,\n TQueues extends Record<string, QueueDefinition> = Record<string, QueueDefinition>,\n TBindings extends Record<string, BindingDefinition> = Record<string, BindingDefinition>,\n TPublishers extends Record<string, PublisherDefinition> = Record<string, PublisherDefinition>,\n TConsumers extends Record<string, ConsumerDefinition> = Record<string, ConsumerDefinition>,\n>(definition: TContract): TContract {\n return definition;\n}\n"],"mappings":";;;;AAyBA,SAAgB,cACd,MACA,QACwB;AACxB,QAAO;EACL;EACA;EACA,aAAa,OAAO;EACrB;;;;;AAMH,SAAgB,eACd,MACA,MACA,SACoB;AACpB,QAAO;EACL;EACA;EACA,GAAG;EACJ;;;;;AAMH,SAAgB,YACd,MACA,SACiB;AACjB,QAAO;EACL;EACA,GAAG;EACJ;;;;;AAMH,SAAgB,cACd,OACA,UACA,SACwB;AACxB,QAAO;EACL,MAAM;EACN;EACA;EACA,GAAG;EACJ;;;;;AAMH,SAAgB,sBACd,aACA,QACA,SAC2B;AAC3B,QAAO;EACL,MAAM;EACN;EACA;EACA,GAAG;EACJ;;;;;AAMH,SAAgB,gBACd,UACA,SACA,SACqC;AACrC,QAAO;EACL;EACA;EACA,GAAG;EACJ;;;;;AAMH,SAAgB,eAId,OACA,SACA,SAC0D;AAC1D,QAAO;EACL;EACA;EACA,GAAG;EACJ;;;;;AAMH,SAAgB,eAOd,YAAkC;AAClC,QAAO"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amqp-contract/contract",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "Contract builder for amqp-contract",
5
5
  "keywords": [
6
6
  "amqp",