queue-pilot 0.2.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/LICENSE +21 -0
- package/README.md +177 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +81 -0
- package/dist/index.js.map +1 -0
- package/dist/rabbitmq/client.d.ts +22 -0
- package/dist/rabbitmq/client.d.ts.map +1 -0
- package/dist/rabbitmq/client.js +82 -0
- package/dist/rabbitmq/client.js.map +1 -0
- package/dist/rabbitmq/types.d.ts +55 -0
- package/dist/rabbitmq/types.d.ts.map +1 -0
- package/dist/rabbitmq/types.js +2 -0
- package/dist/rabbitmq/types.js.map +1 -0
- package/dist/schemas/loader.d.ts +3 -0
- package/dist/schemas/loader.d.ts.map +1 -0
- package/dist/schemas/loader.js +37 -0
- package/dist/schemas/loader.js.map +1 -0
- package/dist/schemas/types.d.ts +27 -0
- package/dist/schemas/types.d.ts.map +1 -0
- package/dist/schemas/types.js +2 -0
- package/dist/schemas/types.js.map +1 -0
- package/dist/schemas/validator.d.ts +10 -0
- package/dist/schemas/validator.d.ts.map +1 -0
- package/dist/schemas/validator.js +106 -0
- package/dist/schemas/validator.js.map +1 -0
- package/dist/server.d.ts +10 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +208 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/create-binding.d.ts +15 -0
- package/dist/tools/create-binding.d.ts.map +1 -0
- package/dist/tools/create-binding.js +10 -0
- package/dist/tools/create-binding.js.map +1 -0
- package/dist/tools/create-queue.d.ts +15 -0
- package/dist/tools/create-queue.d.ts.map +1 -0
- package/dist/tools/create-queue.js +13 -0
- package/dist/tools/create-queue.js.map +1 -0
- package/dist/tools/get-schema.d.ts +9 -0
- package/dist/tools/get-schema.d.ts.map +1 -0
- package/dist/tools/get-schema.js +16 -0
- package/dist/tools/get-schema.js.map +1 -0
- package/dist/tools/inspect-queue.d.ts +36 -0
- package/dist/tools/inspect-queue.d.ts.map +1 -0
- package/dist/tools/inspect-queue.js +74 -0
- package/dist/tools/inspect-queue.js.map +1 -0
- package/dist/tools/list-bindings.d.ts +11 -0
- package/dist/tools/list-bindings.d.ts.map +1 -0
- package/dist/tools/list-bindings.js +12 -0
- package/dist/tools/list-bindings.js.map +1 -0
- package/dist/tools/list-exchanges.d.ts +10 -0
- package/dist/tools/list-exchanges.d.ts.map +1 -0
- package/dist/tools/list-exchanges.js +11 -0
- package/dist/tools/list-exchanges.js.map +1 -0
- package/dist/tools/list-queues.d.ts +11 -0
- package/dist/tools/list-queues.d.ts.map +1 -0
- package/dist/tools/list-queues.js +12 -0
- package/dist/tools/list-queues.js.map +1 -0
- package/dist/tools/list-schemas.d.ts +11 -0
- package/dist/tools/list-schemas.d.ts.map +1 -0
- package/dist/tools/list-schemas.js +14 -0
- package/dist/tools/list-schemas.js.map +1 -0
- package/dist/tools/peek-messages.d.ts +19 -0
- package/dist/tools/peek-messages.d.ts.map +1 -0
- package/dist/tools/peek-messages.js +20 -0
- package/dist/tools/peek-messages.js.map +1 -0
- package/dist/tools/publish-message.d.ts +28 -0
- package/dist/tools/publish-message.d.ts.map +1 -0
- package/dist/tools/publish-message.js +80 -0
- package/dist/tools/publish-message.js.map +1 -0
- package/dist/tools/purge-queue.d.ts +7 -0
- package/dist/tools/purge-queue.d.ts.map +1 -0
- package/dist/tools/purge-queue.js +8 -0
- package/dist/tools/purge-queue.js.map +1 -0
- package/dist/tools/validate-message.d.ts +11 -0
- package/dist/tools/validate-message.d.ts.map +1 -0
- package/dist/tools/validate-message.js +20 -0
- package/dist/tools/validate-message.js.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-exchanges.js","sourceRoot":"","sources":["../../src/tools/list-exchanges.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAsB,EACtB,KAAa;IAEb,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAEpD,OAAO;QACL,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/B,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,OAAO,EAAE,CAAC,CAAC,OAAO;SACnB,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { RabbitMQClient } from "../rabbitmq/client.js";
|
|
2
|
+
export interface ListQueuesResult {
|
|
3
|
+
queues: Array<{
|
|
4
|
+
name: string;
|
|
5
|
+
messages_ready: number;
|
|
6
|
+
messages_unacknowledged: number;
|
|
7
|
+
state: string;
|
|
8
|
+
}>;
|
|
9
|
+
}
|
|
10
|
+
export declare function listQueues(client: RabbitMQClient, vhost: string): Promise<ListQueuesResult>;
|
|
11
|
+
//# sourceMappingURL=list-queues.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-queues.d.ts","sourceRoot":"","sources":["../../src/tools/list-queues.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,cAAc,EAAE,MAAM,CAAC;QACvB,uBAAuB,EAAE,MAAM,CAAC;QAChC,KAAK,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;CACJ;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,gBAAgB,CAAC,CAW3B"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export async function listQueues(client, vhost) {
|
|
2
|
+
const queues = await client.listQueues(vhost);
|
|
3
|
+
return {
|
|
4
|
+
queues: queues.map((q) => ({
|
|
5
|
+
name: q.name,
|
|
6
|
+
messages_ready: q.messages_ready,
|
|
7
|
+
messages_unacknowledged: q.messages_unacknowledged,
|
|
8
|
+
state: q.state,
|
|
9
|
+
})),
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=list-queues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-queues.js","sourceRoot":"","sources":["../../src/tools/list-queues.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAsB,EACtB,KAAa;IAEb,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAE9C,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACzB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,cAAc,EAAE,CAAC,CAAC,cAAc;YAChC,uBAAuB,EAAE,CAAC,CAAC,uBAAuB;YAClD,KAAK,EAAE,CAAC,CAAC,KAAK;SACf,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { SchemaValidator } from "../schemas/validator.js";
|
|
2
|
+
export interface ListSchemasResult {
|
|
3
|
+
schemas: Array<{
|
|
4
|
+
name: string;
|
|
5
|
+
version: string;
|
|
6
|
+
title: string;
|
|
7
|
+
description: string;
|
|
8
|
+
}>;
|
|
9
|
+
}
|
|
10
|
+
export declare function listSchemas(validator: SchemaValidator): ListSchemasResult;
|
|
11
|
+
//# sourceMappingURL=list-schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-schemas.d.ts","sourceRoot":"","sources":["../../src/tools/list-schemas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;CACJ;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,eAAe,GAAG,iBAAiB,CAazE"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export function listSchemas(validator) {
|
|
2
|
+
const names = validator.getSchemaNames();
|
|
3
|
+
const schemas = names.map((name) => {
|
|
4
|
+
const entry = validator.getSchema(name);
|
|
5
|
+
return {
|
|
6
|
+
name: entry.name,
|
|
7
|
+
version: entry.version,
|
|
8
|
+
title: entry.title,
|
|
9
|
+
description: entry.description,
|
|
10
|
+
};
|
|
11
|
+
});
|
|
12
|
+
return { schemas };
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=list-schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-schemas.js","sourceRoot":"","sources":["../../src/tools/list-schemas.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,WAAW,CAAC,SAA0B;IACpD,MAAM,KAAK,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACjC,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,CAAE,CAAC;QACzC,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,WAAW,EAAE,KAAK,CAAC,WAAW;SAC/B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { RabbitMQClient } from "../rabbitmq/client.js";
|
|
2
|
+
export interface PeekMessagesResult {
|
|
3
|
+
messages: Array<{
|
|
4
|
+
payload: string;
|
|
5
|
+
properties: {
|
|
6
|
+
correlation_id?: string;
|
|
7
|
+
message_id?: string;
|
|
8
|
+
type?: string;
|
|
9
|
+
timestamp?: number;
|
|
10
|
+
headers?: Record<string, unknown>;
|
|
11
|
+
content_type?: string;
|
|
12
|
+
};
|
|
13
|
+
exchange: string;
|
|
14
|
+
routing_key: string;
|
|
15
|
+
}>;
|
|
16
|
+
count: number;
|
|
17
|
+
}
|
|
18
|
+
export declare function peekMessages(client: RabbitMQClient, vhost: string, queue: string, count: number): Promise<PeekMessagesResult>;
|
|
19
|
+
//# sourceMappingURL=peek-messages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"peek-messages.d.ts","sourceRoot":"","sources":["../../src/tools/peek-messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,KAAK,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE;YACV,cAAc,CAAC,EAAE,MAAM,CAAC;YACxB,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAClC,YAAY,CAAC,EAAE,MAAM,CAAC;SACvB,CAAC;QACF,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;IACH,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,kBAAkB,CAAC,CAmB7B"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export async function peekMessages(client, vhost, queue, count) {
|
|
2
|
+
const messages = await client.peekMessages(vhost, queue, count);
|
|
3
|
+
return {
|
|
4
|
+
messages: messages.map((m) => ({
|
|
5
|
+
payload: m.payload,
|
|
6
|
+
properties: {
|
|
7
|
+
correlation_id: m.properties.correlation_id,
|
|
8
|
+
message_id: m.properties.message_id,
|
|
9
|
+
type: m.properties.type,
|
|
10
|
+
timestamp: m.properties.timestamp,
|
|
11
|
+
headers: m.properties.headers,
|
|
12
|
+
content_type: m.properties.content_type,
|
|
13
|
+
},
|
|
14
|
+
exchange: m.exchange,
|
|
15
|
+
routing_key: m.routing_key,
|
|
16
|
+
})),
|
|
17
|
+
count: messages.length,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=peek-messages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"peek-messages.js","sourceRoot":"","sources":["../../src/tools/peek-messages.ts"],"names":[],"mappings":"AAmBA,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAsB,EACtB,KAAa,EACb,KAAa,EACb,KAAa;IAEb,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAEhE,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7B,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,UAAU,EAAE;gBACV,cAAc,EAAE,CAAC,CAAC,UAAU,CAAC,cAAc;gBAC3C,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,UAAU;gBACnC,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI;gBACvB,SAAS,EAAE,CAAC,CAAC,UAAU,CAAC,SAAS;gBACjC,OAAO,EAAE,CAAC,CAAC,UAAU,CAAC,OAAO;gBAC7B,YAAY,EAAE,CAAC,CAAC,UAAU,CAAC,YAAY;aACxC;YACD,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,WAAW,EAAE,CAAC,CAAC,WAAW;SAC3B,CAAC,CAAC;QACH,KAAK,EAAE,QAAQ,CAAC,MAAM;KACvB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { RabbitMQClient } from "../rabbitmq/client.js";
|
|
2
|
+
import type { SchemaValidator } from "../schemas/validator.js";
|
|
3
|
+
export interface PublishMessageParams {
|
|
4
|
+
exchange: string;
|
|
5
|
+
routing_key: string;
|
|
6
|
+
payload: string;
|
|
7
|
+
message_type?: string;
|
|
8
|
+
headers?: Record<string, unknown>;
|
|
9
|
+
validate: boolean;
|
|
10
|
+
vhost: string;
|
|
11
|
+
}
|
|
12
|
+
export interface PublishMessageResult {
|
|
13
|
+
published: boolean;
|
|
14
|
+
routed: boolean;
|
|
15
|
+
exchange: string;
|
|
16
|
+
routing_key: string;
|
|
17
|
+
validation: {
|
|
18
|
+
validated: boolean;
|
|
19
|
+
schemaName: string | null;
|
|
20
|
+
valid: boolean | null;
|
|
21
|
+
errors: Array<{
|
|
22
|
+
path: string;
|
|
23
|
+
message: string;
|
|
24
|
+
}>;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export declare function publishMessage(client: RabbitMQClient, validator: SchemaValidator, params: PublishMessageParams): Promise<PublishMessageResult>;
|
|
28
|
+
//# sourceMappingURL=publish-message.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish-message.d.ts","sourceRoot":"","sources":["../../src/tools/publish-message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE;QACV,SAAS,EAAE,OAAO,CAAC;QACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;QACtB,MAAM,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAClD,CAAC;CACH;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,eAAe,EAC1B,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,oBAAoB,CAAC,CAyF/B"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
export async function publishMessage(client, validator, params) {
|
|
2
|
+
const { exchange, routing_key, payload, message_type, headers, validate, vhost } = params;
|
|
3
|
+
const baseResult = {
|
|
4
|
+
published: false,
|
|
5
|
+
routed: false,
|
|
6
|
+
exchange,
|
|
7
|
+
routing_key,
|
|
8
|
+
validation: {
|
|
9
|
+
validated: false,
|
|
10
|
+
schemaName: message_type ?? null,
|
|
11
|
+
valid: null,
|
|
12
|
+
errors: [],
|
|
13
|
+
},
|
|
14
|
+
};
|
|
15
|
+
// 1. Always parse payload as JSON. Block publish if invalid.
|
|
16
|
+
let parsedPayload;
|
|
17
|
+
try {
|
|
18
|
+
parsedPayload = JSON.parse(payload);
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return {
|
|
22
|
+
...baseResult,
|
|
23
|
+
validation: {
|
|
24
|
+
...baseResult.validation,
|
|
25
|
+
errors: [{ path: "", message: "Invalid JSON payload" }],
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
// 2. Validate if requested and message_type is provided
|
|
30
|
+
if (validate && message_type) {
|
|
31
|
+
const schemaEntry = validator.getSchema(message_type);
|
|
32
|
+
if (!schemaEntry) {
|
|
33
|
+
return {
|
|
34
|
+
...baseResult,
|
|
35
|
+
validation: {
|
|
36
|
+
...baseResult.validation,
|
|
37
|
+
validated: true,
|
|
38
|
+
valid: false,
|
|
39
|
+
errors: [{ path: "", message: `Schema "${message_type}" not found` }],
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
const validationResult = validator.validate(message_type, parsedPayload);
|
|
44
|
+
if (!validationResult.valid) {
|
|
45
|
+
return {
|
|
46
|
+
...baseResult,
|
|
47
|
+
validation: {
|
|
48
|
+
...baseResult.validation,
|
|
49
|
+
validated: true,
|
|
50
|
+
valid: false,
|
|
51
|
+
errors: validationResult.errors,
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
baseResult.validation.validated = true;
|
|
56
|
+
baseResult.validation.valid = true;
|
|
57
|
+
}
|
|
58
|
+
// 3. Publish via client
|
|
59
|
+
const properties = {
|
|
60
|
+
content_type: "application/json",
|
|
61
|
+
};
|
|
62
|
+
if (message_type) {
|
|
63
|
+
properties.type = message_type;
|
|
64
|
+
}
|
|
65
|
+
if (headers) {
|
|
66
|
+
properties.headers = headers;
|
|
67
|
+
}
|
|
68
|
+
const response = await client.publishMessage(vhost, exchange, {
|
|
69
|
+
routing_key,
|
|
70
|
+
payload,
|
|
71
|
+
payload_encoding: "string",
|
|
72
|
+
properties,
|
|
73
|
+
});
|
|
74
|
+
return {
|
|
75
|
+
...baseResult,
|
|
76
|
+
published: true,
|
|
77
|
+
routed: response.routed,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=publish-message.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish-message.js","sourceRoot":"","sources":["../../src/tools/publish-message.ts"],"names":[],"mappings":"AA0BA,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAsB,EACtB,SAA0B,EAC1B,MAA4B;IAE5B,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IAE1F,MAAM,UAAU,GAAyB;QACvC,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE,KAAK;QACb,QAAQ;QACR,WAAW;QACX,UAAU,EAAE;YACV,SAAS,EAAE,KAAK;YAChB,UAAU,EAAE,YAAY,IAAI,IAAI;YAChC,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,EAAE;SACX;KACF,CAAC;IAEF,6DAA6D;IAC7D,IAAI,aAAsB,CAAC;IAC3B,IAAI,CAAC;QACH,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,GAAG,UAAU;YACb,UAAU,EAAE;gBACV,GAAG,UAAU,CAAC,UAAU;gBACxB,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC;aACxD;SACF,CAAC;IACJ,CAAC;IAED,wDAAwD;IACxD,IAAI,QAAQ,IAAI,YAAY,EAAE,CAAC;QAC7B,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAEtD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO;gBACL,GAAG,UAAU;gBACb,UAAU,EAAE;oBACV,GAAG,UAAU,CAAC,UAAU;oBACxB,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,KAAK;oBACZ,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,YAAY,aAAa,EAAE,CAAC;iBACtE;aACF,CAAC;QACJ,CAAC;QAED,MAAM,gBAAgB,GAAG,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QAEzE,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;YAC5B,OAAO;gBACL,GAAG,UAAU;gBACb,UAAU,EAAE;oBACV,GAAG,UAAU,CAAC,UAAU;oBACxB,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,KAAK;oBACZ,MAAM,EAAE,gBAAgB,CAAC,MAAM;iBAChC;aACF,CAAC;QACJ,CAAC;QAED,UAAU,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC;QACvC,UAAU,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;IACrC,CAAC;IAED,wBAAwB;IACxB,MAAM,UAAU,GAA4B;QAC1C,YAAY,EAAE,kBAAkB;KACjC,CAAC;IAEF,IAAI,YAAY,EAAE,CAAC;QACjB,UAAU,CAAC,IAAI,GAAG,YAAY,CAAC;IACjC,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;IAC/B,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE;QAC5D,WAAW;QACX,OAAO;QACP,gBAAgB,EAAE,QAAQ;QAC1B,UAAU;KACX,CAAC,CAAC;IAEH,OAAO;QACL,GAAG,UAAU;QACb,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,QAAQ,CAAC,MAAM;KACxB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { RabbitMQClient } from "../rabbitmq/client.js";
|
|
2
|
+
export interface PurgeQueueResult {
|
|
3
|
+
queue: string;
|
|
4
|
+
messages_purged: number;
|
|
5
|
+
}
|
|
6
|
+
export declare function purgeQueue(client: RabbitMQClient, vhost: string, queue: string): Promise<PurgeQueueResult>;
|
|
7
|
+
//# sourceMappingURL=purge-queue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"purge-queue.d.ts","sourceRoot":"","sources":["../../src/tools/purge-queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,gBAAgB,CAAC,CAO3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"purge-queue.js","sourceRoot":"","sources":["../../src/tools/purge-queue.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAsB,EACtB,KAAa,EACb,KAAa;IAEb,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAEvD,OAAO;QACL,KAAK;QACL,eAAe,EAAE,QAAQ,CAAC,eAAe;KAC1C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { SchemaValidator } from "../schemas/validator.js";
|
|
2
|
+
export interface ValidateMessageResult {
|
|
3
|
+
schemaName: string;
|
|
4
|
+
valid: boolean;
|
|
5
|
+
errors: Array<{
|
|
6
|
+
path: string;
|
|
7
|
+
message: string;
|
|
8
|
+
}>;
|
|
9
|
+
}
|
|
10
|
+
export declare function validateMessage(validator: SchemaValidator, schemaName: string, messageJson: string): ValidateMessageResult;
|
|
11
|
+
//# sourceMappingURL=validate-message.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-message.d.ts","sourceRoot":"","sources":["../../src/tools/validate-message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClD;AAED,wBAAgB,eAAe,CAC7B,SAAS,EAAE,eAAe,EAC1B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,qBAAqB,CAmBvB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export function validateMessage(validator, schemaName, messageJson) {
|
|
2
|
+
let parsed;
|
|
3
|
+
try {
|
|
4
|
+
parsed = JSON.parse(messageJson);
|
|
5
|
+
}
|
|
6
|
+
catch {
|
|
7
|
+
return {
|
|
8
|
+
schemaName,
|
|
9
|
+
valid: false,
|
|
10
|
+
errors: [{ path: "", message: "Invalid JSON: failed to parse message" }],
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
const result = validator.validate(schemaName, parsed);
|
|
14
|
+
return {
|
|
15
|
+
schemaName,
|
|
16
|
+
valid: result.valid,
|
|
17
|
+
errors: result.errors,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=validate-message.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-message.js","sourceRoot":"","sources":["../../src/tools/validate-message.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,eAAe,CAC7B,SAA0B,EAC1B,UAAkB,EAClB,WAAmB;IAEnB,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,UAAU;YACV,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,uCAAuC,EAAE,CAAC;SACzE,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAqB,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAExE,OAAO;QACL,UAAU;QACV,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC;AACJ,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "queue-pilot",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "MCP server for message queue development — combines RabbitMQ message inspection with JSON Schema validation",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"queue-pilot": "./dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"main": "./dist/index.js",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"default": "./dist/index.js"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"types": "./dist/index.d.ts",
|
|
17
|
+
"files": [
|
|
18
|
+
"dist"
|
|
19
|
+
],
|
|
20
|
+
"scripts": {
|
|
21
|
+
"build": "tsc && shx chmod +x dist/index.js",
|
|
22
|
+
"dev": "tsx src/index.ts",
|
|
23
|
+
"test": "vitest run --exclude src/integration.test.ts",
|
|
24
|
+
"test:watch": "vitest --exclude src/integration.test.ts",
|
|
25
|
+
"test:coverage": "vitest run --coverage --exclude src/integration.test.ts",
|
|
26
|
+
"lint": "tsc --noEmit",
|
|
27
|
+
"test:integration": "vitest run src/integration.test.ts",
|
|
28
|
+
"prepublishOnly": "npm test && npm run build"
|
|
29
|
+
},
|
|
30
|
+
"repository": {
|
|
31
|
+
"type": "git",
|
|
32
|
+
"url": "git+https://github.com/LarsCowe/queue-pilot.git"
|
|
33
|
+
},
|
|
34
|
+
"homepage": "https://github.com/LarsCowe/queue-pilot#readme",
|
|
35
|
+
"bugs": {
|
|
36
|
+
"url": "https://github.com/LarsCowe/queue-pilot/issues"
|
|
37
|
+
},
|
|
38
|
+
"keywords": [
|
|
39
|
+
"mcp",
|
|
40
|
+
"rabbitmq",
|
|
41
|
+
"message-queue",
|
|
42
|
+
"schema-validation",
|
|
43
|
+
"json-schema"
|
|
44
|
+
],
|
|
45
|
+
"author": "Lars",
|
|
46
|
+
"license": "MIT",
|
|
47
|
+
"engines": {
|
|
48
|
+
"node": ">=22.0.0"
|
|
49
|
+
},
|
|
50
|
+
"dependencies": {
|
|
51
|
+
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
52
|
+
"ajv": "^8.17.1",
|
|
53
|
+
"ajv-formats": "^3.0.1",
|
|
54
|
+
"zod": "^3.25.76"
|
|
55
|
+
},
|
|
56
|
+
"devDependencies": {
|
|
57
|
+
"@types/node": "^22.19.11",
|
|
58
|
+
"@vitest/coverage-v8": "^3.2.4",
|
|
59
|
+
"shx": "^0.3.4",
|
|
60
|
+
"tsx": "^4.21.0",
|
|
61
|
+
"typescript": "^5.9.3",
|
|
62
|
+
"vitest": "^3.2.4"
|
|
63
|
+
}
|
|
64
|
+
}
|