@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.
- package/README.md +194 -0
- package/dist/index.js +23 -0
- package/dist/rabbitmq/index.js +9 -0
- package/dist/rabbitmq/rabbitmq-exchange.js +20 -0
- package/dist/rabbitmq/rabbitmq-queue.js +36 -0
- package/dist/rabbitmq/rabbitmq.js +235 -0
- package/dist/rabbitmq-core.module.js +116 -0
- package/dist/rabbitmq-explorer.service.js +143 -0
- package/dist/rabbitmq-instances-manager.js +100 -0
- package/dist/rabbitmq-metadata-storage.js +38 -0
- package/dist/rabbitmq.consts.js +6 -0
- package/dist/rabbitmq.decorators.js +38 -0
- package/dist/rabbitmq.helpers.js +27 -0
- package/dist/rabbitmq.module.js +93 -0
- package/dist/rabbitmq.types.js +2 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/rabbitmq/index.d.ts +3 -0
- package/dist/types/rabbitmq/rabbitmq-exchange.d.ts +18 -0
- package/dist/types/rabbitmq/rabbitmq-queue.d.ts +49 -0
- package/dist/types/rabbitmq/rabbitmq.d.ts +123 -0
- package/dist/types/rabbitmq-core.module.d.ts +15 -0
- package/dist/types/rabbitmq-explorer.service.d.ts +32 -0
- package/dist/types/rabbitmq-instances-manager.d.ts +23 -0
- package/dist/types/rabbitmq-metadata-storage.d.ts +21 -0
- package/dist/types/rabbitmq.consts.d.ts +3 -0
- package/dist/types/rabbitmq.decorators.d.ts +12 -0
- package/dist/types/rabbitmq.helpers.d.ts +5 -0
- package/dist/types/rabbitmq.module.d.ts +14 -0
- package/dist/types/rabbitmq.types.d.ts +17 -0
- package/package.json +55 -0
|
@@ -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,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
|
+
}
|