@jsnw/nestjs-rabbitmq 1.0.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.
@@ -0,0 +1,15 @@
1
+ import { type DynamicModule } from '@nestjs/common';
2
+ import type { RabbitmqForRootParams } from './rabbitmq.types';
3
+ export declare class RabbitmqCoreModule {
4
+ /**
5
+ * @param {RabbitmqForRootParams} params
6
+ * @return {DynamicModule}
7
+ */
8
+ static forRoot(params: RabbitmqForRootParams): DynamicModule;
9
+ /**
10
+ * @param {RabbitmqForRootParams} params
11
+ * @return {FactoryProvider}
12
+ * @private
13
+ */
14
+ private static createInstanceProvider;
15
+ }
@@ -0,0 +1,32 @@
1
+ import { type OnApplicationBootstrap } from '@nestjs/common';
2
+ import { DiscoveryService, MetadataScanner, Reflector } from '@nestjs/core';
3
+ import { RabbitmqInstancesManager } from './rabbitmq-instances-manager';
4
+ export declare class RabbitmqExplorerService implements OnApplicationBootstrap {
5
+ private readonly discoveryService;
6
+ private readonly metadataScanner;
7
+ private readonly reflector;
8
+ private readonly instancesManager;
9
+ private readonly logger;
10
+ constructor(discoveryService: DiscoveryService, metadataScanner: MetadataScanner, reflector: Reflector, instancesManager: RabbitmqInstancesManager);
11
+ /**
12
+ * @return {Promise<void>}
13
+ */
14
+ onApplicationBootstrap(): Promise<void>;
15
+ /**
16
+ * @return {Promise<void>}
17
+ * @private
18
+ */
19
+ private setupInfrastructure;
20
+ /**
21
+ * @return {Promise<void>}
22
+ * @private
23
+ */
24
+ private setupSubscribers;
25
+ /**
26
+ * @param {any} instance
27
+ * @param {string} methodName
28
+ * @return {Promise<void>}
29
+ * @private
30
+ */
31
+ private tryRegisterSubscriber;
32
+ }
@@ -0,0 +1,23 @@
1
+ import { type OnApplicationShutdown } from '@nestjs/common';
2
+ import { Rabbitmq, type RabbitmqConstructorParams } from './rabbitmq';
3
+ export declare class RabbitmqInstancesManager implements OnApplicationShutdown {
4
+ /**
5
+ * @type {Map<string, Rabbitmq>}
6
+ * @private
7
+ */
8
+ private readonly instances;
9
+ addInstance(resolvedToken: string, instance: Rabbitmq): void;
10
+ addInstance(unresolvedToken: RabbitmqConstructorParams, instance: Rabbitmq): void;
11
+ getInstance(resolvedToken: string): Rabbitmq | null;
12
+ getInstance(unresolvedToken: RabbitmqConstructorParams): Rabbitmq | null;
13
+ hasInstance(resolvedToken: string): boolean;
14
+ hasInstance(unresolvedToken: RabbitmqConstructorParams): boolean;
15
+ /**
16
+ * @return {Rabbitmq[]}
17
+ */
18
+ getAllInstances(): Rabbitmq[];
19
+ /**
20
+ * @return {Promise<void>}
21
+ */
22
+ onApplicationShutdown(): Promise<void>;
23
+ }
@@ -0,0 +1,21 @@
1
+ import { type RabbitmqConstructorParams, type RabbitmqExchange, type RabbitmqQueue } from './rabbitmq';
2
+ type Metadata = {
3
+ exchanges: Set<RabbitmqExchange>;
4
+ queues: Set<RabbitmqQueue>;
5
+ };
6
+ type AddMetadataParams = {
7
+ exchanges?: RabbitmqExchange[];
8
+ queues?: RabbitmqQueue[];
9
+ };
10
+ export declare class RabbitmqMetadataStorage {
11
+ /**
12
+ * @type {Map<string, Metadata>}
13
+ * @private
14
+ */
15
+ private static readonly storage;
16
+ static addMetadata(resolvedToken: string, metadata?: AddMetadataParams): void;
17
+ static addMetadata(unresolvedToken: RabbitmqConstructorParams, metadata?: AddMetadataParams): void;
18
+ static getMetadata(resolvedToken: string): Metadata;
19
+ static getMetadata(unresolvedToken: RabbitmqConstructorParams): Metadata;
20
+ }
21
+ export {};
@@ -0,0 +1,3 @@
1
+ export declare const RABBITMQ_INSTANCE_DEFAULT_NAME = "default";
2
+ export declare const RABBITMQ_INSTANCE_TOKEN_PREFIX: "RABBITMQ_INSTANCE_";
3
+ export declare const RABBITMQ_SUBSCRIBE_METADATA_KEY: unique symbol;
@@ -0,0 +1,12 @@
1
+ import type { RabbitmqSubscribeDecoratorParams } from './rabbitmq.types';
2
+ /**
3
+ * @param {string} [instanceName = RABBITMQ_INSTANCE_DEFAULT_NAME]
4
+ * @return {PropertyDecorator & ParameterDecorator}
5
+ * @constructor
6
+ */
7
+ export declare const InjectRabbitmq: (instanceName?: string) => PropertyDecorator & ParameterDecorator;
8
+ /**
9
+ * @return {MethodDecorator}
10
+ * @constructor
11
+ */
12
+ export declare const RabbitmqSubscribe: (params: RabbitmqSubscribeDecoratorParams) => MethodDecorator;
@@ -0,0 +1,5 @@
1
+ import { type RabbitmqConstructorParams } from './rabbitmq';
2
+ export declare function resolveInstanceName(instanceName: string): string;
3
+ export declare function resolveInstanceName(params: RabbitmqConstructorParams): string;
4
+ export declare function getInstanceToken(instanceName: string): string;
5
+ export declare function getInstanceToken(params: RabbitmqConstructorParams): string;
@@ -0,0 +1,14 @@
1
+ import { type DynamicModule } from '@nestjs/common';
2
+ import type { RabbitmqForFeatureParams, RabbitmqForRootParams } from './rabbitmq.types';
3
+ export declare class RabbitmqModule {
4
+ /**
5
+ * @param {RabbitmqForRootParams} params
6
+ * @return {DynamicModule}
7
+ */
8
+ static forRoot(params: RabbitmqForRootParams): DynamicModule;
9
+ /**
10
+ * @param {RabbitmqForFeatureParams} params
11
+ * @return {DynamicModule}
12
+ */
13
+ static forFeature(params: RabbitmqForFeatureParams): DynamicModule;
14
+ }
@@ -0,0 +1,17 @@
1
+ import type { RabbitmqConstructorParams, RabbitmqExchange, RabbitmqQueue, RabbitmqSubscribeParams } from './rabbitmq';
2
+ export type RabbitmqForRootParams = RabbitmqConstructorParams & Omit<RabbitmqForFeatureParams, 'name'> & {
3
+ isDefault?: boolean;
4
+ };
5
+ export type RabbitmqForFeatureParams = {
6
+ name: string;
7
+ exchanges?: RabbitmqExchange[];
8
+ queues?: RabbitmqQueue[];
9
+ };
10
+ export type RabbitmqSubscribeDecoratorParams = RabbitmqSubscribeParams & {
11
+ instanceName?: string;
12
+ };
13
+ export type RabbitmqSubscriptionMetadata = Required<RabbitmqSubscribeParams> & {
14
+ instanceName: string;
15
+ instanceToken: string;
16
+ validation: Required<RabbitmqSubscribeParams['validation']> | null;
17
+ };
package/package.json ADDED
@@ -0,0 +1,55 @@
1
+ {
2
+ "name": "@jsnw/nestjs-rabbitmq",
3
+ "version": "1.0.0",
4
+ "main": "./dist/index.js",
5
+ "types": "./dist/types/index.d.ts",
6
+ "exports": {
7
+ ".": {
8
+ "require": "./dist/index.js",
9
+ "types": "./dist/types/index.d.ts"
10
+ }
11
+ },
12
+ "scripts": {
13
+ "clean": "rimraf ./dist",
14
+ "build": "npm run clean && tsc -p tsconfig.json",
15
+ "test": "jest --passWithNoTests",
16
+ "test:watch": "jest --watch",
17
+ "test:coverage": "jest --coverage",
18
+ "prepublishOnly": "npm run build"
19
+ },
20
+ "files": [
21
+ "./dist",
22
+ "README.md"
23
+ ],
24
+ "repository": {
25
+ "type": "git",
26
+ "url": "git+ssh://git@github.com/pvbaliuk/jsnw-nestjs-rabbitmq"
27
+ },
28
+ "bugs": {
29
+ "url": "https://github.com/pvbaliuk/jsnw-nestjs-rabbitmq/issues"
30
+ },
31
+ "homepage": "https://github.com/pvbaliuk/jsnw-nestjs-rabbitmq#readme",
32
+ "keywords": [],
33
+ "author": {
34
+ "name": "Pavlo Baliuk",
35
+ "email": "jsnow0177@gmail.com"
36
+ },
37
+ "license": "MIT",
38
+ "dependencies": {
39
+ "rabbitmq-client": "^5.0.8",
40
+ "zod": "^4.3.6"
41
+ },
42
+ "peerDependencies": {
43
+ "@nestjs/common": "^11.1.14",
44
+ "@nestjs/core": "^11.1.14"
45
+ },
46
+ "devDependencies": {
47
+ "@nestjs/common": "^11.1.14",
48
+ "@nestjs/core": "^11.1.14",
49
+ "jest": "^30.2.0",
50
+ "rimraf": "^6.1.3",
51
+ "ts-jest": "^29.4.6",
52
+ "type-fest": "^5.4.4",
53
+ "typescript": "^5.9.3"
54
+ }
55
+ }