@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 +20 -1
- package/dist/index.cjs +13 -0
- package/dist/index.d.cts +22 -3
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +22 -3
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +13 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
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
|
|
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<
|
|
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
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;
|
|
1
|
+
{"version":3,"file":"index.d.cts","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.d.mts
CHANGED
|
@@ -34,12 +34,27 @@ interface QueueDefinition {
|
|
|
34
34
|
/**
|
|
35
35
|
* Binding between queue and exchange
|
|
36
36
|
*/
|
|
37
|
-
interface
|
|
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<
|
|
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
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/types.ts","../src/builder.ts"],"sourcesContent":[],"mappings":";;;;;;AAKA;AAKY,KALA,SAAA,GAAY,gBAKA;AAKxB;AAYA;AAWA;
|
|
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
|
package/dist/index.mjs.map
CHANGED
|
@@ -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<
|
|
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"}
|