@zdavison/nestjs-rpc-toolkit 0.0.15 → 0.0.18
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/dist/bin/bootstrap.js +4 -4
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/rpc/rpc.module.d.ts +84 -0
- package/dist/rpc/rpc.module.d.ts.map +1 -0
- package/dist/rpc/rpc.module.js +114 -0
- package/dist/rpc/rpc.module.js.map +1 -0
- package/dist/transport/in-process.client.d.ts +10 -1
- package/dist/transport/in-process.client.d.ts.map +1 -1
- package/dist/transport/in-process.client.js +25 -1
- package/dist/transport/in-process.client.js.map +1 -1
- package/dist/transport/in-process.transport.d.ts +2 -0
- package/dist/transport/in-process.transport.d.ts.map +1 -1
- package/dist/transport/in-process.transport.js +9 -0
- package/dist/transport/in-process.transport.js.map +1 -1
- package/package.json +3 -3
- package/dist/bin/init.d.ts +0 -19
- package/dist/bin/init.d.ts.map +0 -1
- package/dist/bin/init.js +0 -275
- package/dist/bin/init.js.map +0 -1
package/dist/bin/bootstrap.js
CHANGED
|
@@ -114,9 +114,9 @@ class RpcPackageInitializer {
|
|
|
114
114
|
"generate:types": "ts-node scripts/generate-all-rpc-types.ts"
|
|
115
115
|
},
|
|
116
116
|
dependencies: {
|
|
117
|
-
"@zdavison/nestjs-rpc-toolkit": "^0.0.
|
|
118
|
-
"@nestjs/common": "^
|
|
119
|
-
"@nestjs/microservices": "^
|
|
117
|
+
"@zdavison/nestjs-rpc-toolkit": "^0.0.18",
|
|
118
|
+
"@nestjs/common": "^11.0.0",
|
|
119
|
+
"@nestjs/microservices": "^11.0.0"
|
|
120
120
|
},
|
|
121
121
|
devDependencies: {
|
|
122
122
|
"@types/node": "^24.5.1",
|
|
@@ -246,7 +246,7 @@ export interface ITypedMessageBus extends IMessageBus<AllRpcMethods> {}
|
|
|
246
246
|
|
|
247
247
|
@Injectable()
|
|
248
248
|
export class MessageBus extends BaseMessageBus<AllRpcMethods> implements ITypedMessageBus {
|
|
249
|
-
constructor(client: ClientProxy) {
|
|
249
|
+
constructor(client: ClientProxy<any, any>) {
|
|
250
250
|
super(client);
|
|
251
251
|
}
|
|
252
252
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ export * from './decorators/rpc-controller.decorator';
|
|
|
4
4
|
export * from './rpc/typed-message-bus';
|
|
5
5
|
export * from './rpc/rpc-registry';
|
|
6
6
|
export * from './rpc/rpc-client';
|
|
7
|
+
export * from './rpc/rpc.module';
|
|
7
8
|
export * from './transport';
|
|
8
9
|
export * from './generators/rpc-types-generator';
|
|
10
|
+
export { Transport } from '@nestjs/microservices';
|
|
9
11
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,kCAAkC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,kCAAkC,CAAC;AAGjD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -14,12 +14,17 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.Transport = void 0;
|
|
17
18
|
__exportStar(require("./interfaces"), exports);
|
|
18
19
|
__exportStar(require("./decorators/rpc-method.decorator"), exports);
|
|
19
20
|
__exportStar(require("./decorators/rpc-controller.decorator"), exports);
|
|
20
21
|
__exportStar(require("./rpc/typed-message-bus"), exports);
|
|
21
22
|
__exportStar(require("./rpc/rpc-registry"), exports);
|
|
22
23
|
__exportStar(require("./rpc/rpc-client"), exports);
|
|
24
|
+
__exportStar(require("./rpc/rpc.module"), exports);
|
|
23
25
|
__exportStar(require("./transport"), exports);
|
|
24
26
|
__exportStar(require("./generators/rpc-types-generator"), exports);
|
|
27
|
+
// Re-export Transport enum from @nestjs/microservices for convenience
|
|
28
|
+
var microservices_1 = require("@nestjs/microservices");
|
|
29
|
+
Object.defineProperty(exports, "Transport", { enumerable: true, get: function () { return microservices_1.Transport; } });
|
|
25
30
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,oEAAkD;AAClD,wEAAsD;AACtD,0DAAwC;AACxC,qDAAmC;AACnC,mDAAiC;AACjC,mDAAiC;AACjC,8CAA4B;AAC5B,mEAAiD;AAEjD,sEAAsE;AACtE,uDAAkD;AAAzC,0GAAA,SAAS,OAAA"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { DynamicModule, Type } from '@nestjs/common';
|
|
2
|
+
import { ClientProxy, Transport } from '@nestjs/microservices';
|
|
3
|
+
export type RpcModuleOptions = {
|
|
4
|
+
/**
|
|
5
|
+
* The name of the client proxy provider
|
|
6
|
+
* @default 'MICROSERVICE_CLIENT'
|
|
7
|
+
*/
|
|
8
|
+
clientName?: string;
|
|
9
|
+
/**
|
|
10
|
+
* The name of the RPC provider
|
|
11
|
+
* @default 'RPC'
|
|
12
|
+
*/
|
|
13
|
+
rpcProviderName?: string;
|
|
14
|
+
} & ({
|
|
15
|
+
/**
|
|
16
|
+
* Custom ClientProxy class for in-process or custom transport
|
|
17
|
+
* @example InProcessClientProxy
|
|
18
|
+
*/
|
|
19
|
+
clientProxyClass: Type<ClientProxy>;
|
|
20
|
+
} | {
|
|
21
|
+
/**
|
|
22
|
+
* Standard NestJS transport configuration
|
|
23
|
+
* @example { transport: Transport.TCP, options: { host: 'localhost', port: 3000 } }
|
|
24
|
+
*/
|
|
25
|
+
transport: Transport;
|
|
26
|
+
options?: any;
|
|
27
|
+
});
|
|
28
|
+
/**
|
|
29
|
+
* Global RPC module that provides the RPC client to all modules.
|
|
30
|
+
*
|
|
31
|
+
* Architecture:
|
|
32
|
+
* - Import this module ONCE in your top-level application module using forRoot()
|
|
33
|
+
* - The top-level app provides ALL wiring (ClientProxy, RPC client)
|
|
34
|
+
* - Individual service modules just @Inject('RPC') and use it - NO additional wiring needed
|
|
35
|
+
* - Service modules remain clean and decoupled from transport concerns
|
|
36
|
+
*
|
|
37
|
+
* Usage with in-process transport:
|
|
38
|
+
* ```typescript
|
|
39
|
+
* @Module({
|
|
40
|
+
* imports: [
|
|
41
|
+
* RpcModule.forRoot({
|
|
42
|
+
* clientProxyClass: InProcessClientProxy,
|
|
43
|
+
* }),
|
|
44
|
+
* UserModule,
|
|
45
|
+
* AuthModule,
|
|
46
|
+
* ],
|
|
47
|
+
* })
|
|
48
|
+
* export class AppModule {}
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* Usage with TCP transport:
|
|
52
|
+
* ```typescript
|
|
53
|
+
* @Module({
|
|
54
|
+
* imports: [
|
|
55
|
+
* RpcModule.forRoot({
|
|
56
|
+
* transport: Transport.TCP,
|
|
57
|
+
* options: {
|
|
58
|
+
* host: 'localhost',
|
|
59
|
+
* port: 3000,
|
|
60
|
+
* },
|
|
61
|
+
* }),
|
|
62
|
+
* UserModule,
|
|
63
|
+
* AuthModule,
|
|
64
|
+
* ],
|
|
65
|
+
* })
|
|
66
|
+
* export class AppModule {}
|
|
67
|
+
* ```
|
|
68
|
+
*
|
|
69
|
+
* Usage in service modules (same for all transports):
|
|
70
|
+
* ```typescript
|
|
71
|
+
* @Injectable()
|
|
72
|
+
* export class UserService {
|
|
73
|
+
* constructor(@Inject('RPC') private rpc: IRpcClient) {}
|
|
74
|
+
*
|
|
75
|
+
* async findAll() {
|
|
76
|
+
* return this.rpc.user.findAll();
|
|
77
|
+
* }
|
|
78
|
+
* }
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
export declare class RpcModule {
|
|
82
|
+
static forRoot(options: RpcModuleOptions): DynamicModule;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=rpc.module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc.module.d.ts","sourceRoot":"","sources":["../../src/rpc/rpc.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,aAAa,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAiB,WAAW,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAG9E,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,CACA;IACE;;;OAGG;IACH,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;CACrC,GACD;IACE;;;OAGG;IACH,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,GAAG,CAAC;CACf,CACJ,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,qBAEa,SAAS;IACpB,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,aAAa;CA0CzD"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var RpcModule_1;
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.RpcModule = void 0;
|
|
11
|
+
const common_1 = require("@nestjs/common");
|
|
12
|
+
const microservices_1 = require("@nestjs/microservices");
|
|
13
|
+
const rpc_client_1 = require("./rpc-client");
|
|
14
|
+
/**
|
|
15
|
+
* Global RPC module that provides the RPC client to all modules.
|
|
16
|
+
*
|
|
17
|
+
* Architecture:
|
|
18
|
+
* - Import this module ONCE in your top-level application module using forRoot()
|
|
19
|
+
* - The top-level app provides ALL wiring (ClientProxy, RPC client)
|
|
20
|
+
* - Individual service modules just @Inject('RPC') and use it - NO additional wiring needed
|
|
21
|
+
* - Service modules remain clean and decoupled from transport concerns
|
|
22
|
+
*
|
|
23
|
+
* Usage with in-process transport:
|
|
24
|
+
* ```typescript
|
|
25
|
+
* @Module({
|
|
26
|
+
* imports: [
|
|
27
|
+
* RpcModule.forRoot({
|
|
28
|
+
* clientProxyClass: InProcessClientProxy,
|
|
29
|
+
* }),
|
|
30
|
+
* UserModule,
|
|
31
|
+
* AuthModule,
|
|
32
|
+
* ],
|
|
33
|
+
* })
|
|
34
|
+
* export class AppModule {}
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* Usage with TCP transport:
|
|
38
|
+
* ```typescript
|
|
39
|
+
* @Module({
|
|
40
|
+
* imports: [
|
|
41
|
+
* RpcModule.forRoot({
|
|
42
|
+
* transport: Transport.TCP,
|
|
43
|
+
* options: {
|
|
44
|
+
* host: 'localhost',
|
|
45
|
+
* port: 3000,
|
|
46
|
+
* },
|
|
47
|
+
* }),
|
|
48
|
+
* UserModule,
|
|
49
|
+
* AuthModule,
|
|
50
|
+
* ],
|
|
51
|
+
* })
|
|
52
|
+
* export class AppModule {}
|
|
53
|
+
* ```
|
|
54
|
+
*
|
|
55
|
+
* Usage in service modules (same for all transports):
|
|
56
|
+
* ```typescript
|
|
57
|
+
* @Injectable()
|
|
58
|
+
* export class UserService {
|
|
59
|
+
* constructor(@Inject('RPC') private rpc: IRpcClient) {}
|
|
60
|
+
*
|
|
61
|
+
* async findAll() {
|
|
62
|
+
* return this.rpc.user.findAll();
|
|
63
|
+
* }
|
|
64
|
+
* }
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
let RpcModule = RpcModule_1 = class RpcModule {
|
|
68
|
+
static forRoot(options) {
|
|
69
|
+
const clientName = options.clientName || 'MICROSERVICE_CLIENT';
|
|
70
|
+
const rpcProviderName = options.rpcProviderName || 'RPC';
|
|
71
|
+
// Build client configuration based on whether it's a custom class or standard transport
|
|
72
|
+
const clientConfig = {
|
|
73
|
+
name: clientName,
|
|
74
|
+
};
|
|
75
|
+
if ('clientProxyClass' in options) {
|
|
76
|
+
// Custom client proxy class (e.g., InProcessClientProxy)
|
|
77
|
+
clientConfig.customClass = options.clientProxyClass;
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
// Standard transport configuration (e.g., TCP, Redis, etc.)
|
|
81
|
+
clientConfig.transport = options.transport;
|
|
82
|
+
if (options.options) {
|
|
83
|
+
clientConfig.options = options.options;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
module: RpcModule_1,
|
|
88
|
+
imports: [
|
|
89
|
+
microservices_1.ClientsModule.register([clientConfig]),
|
|
90
|
+
],
|
|
91
|
+
providers: [
|
|
92
|
+
{
|
|
93
|
+
provide: rpcProviderName,
|
|
94
|
+
useFactory: (client) => {
|
|
95
|
+
const rpcClient = new rpc_client_1.RpcClient(client);
|
|
96
|
+
return new Proxy({}, {
|
|
97
|
+
get: (_target, domain) => {
|
|
98
|
+
return rpcClient.createDomainProxy(domain);
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
},
|
|
102
|
+
inject: [clientName],
|
|
103
|
+
},
|
|
104
|
+
],
|
|
105
|
+
exports: [rpcProviderName],
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
exports.RpcModule = RpcModule;
|
|
110
|
+
exports.RpcModule = RpcModule = RpcModule_1 = __decorate([
|
|
111
|
+
(0, common_1.Global)(),
|
|
112
|
+
(0, common_1.Module)({})
|
|
113
|
+
], RpcModule);
|
|
114
|
+
//# sourceMappingURL=rpc.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc.module.js","sourceRoot":"","sources":["../../src/rpc/rpc.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAqE;AACrE,yDAA8E;AAC9E,6CAAyC;AAgCzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AAGI,IAAM,SAAS,iBAAf,MAAM,SAAS;IACpB,MAAM,CAAC,OAAO,CAAC,OAAyB;QACtC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,qBAAqB,CAAC;QAC/D,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,KAAK,CAAC;QAEzD,wFAAwF;QACxF,MAAM,YAAY,GAAQ;YACxB,IAAI,EAAE,UAAU;SACjB,CAAC;QAEF,IAAI,kBAAkB,IAAI,OAAO,EAAE,CAAC;YAClC,yDAAyD;YACzD,YAAY,CAAC,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,4DAA4D;YAC5D,YAAY,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YAC3C,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,YAAY,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YACzC,CAAC;QACH,CAAC;QAED,OAAO;YACL,MAAM,EAAE,WAAS;YACjB,OAAO,EAAE;gBACP,6BAAa,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC;aACvC;YACD,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,eAAe;oBACxB,UAAU,EAAE,CAAC,MAAmB,EAAE,EAAE;wBAClC,MAAM,SAAS,GAAG,IAAI,sBAAS,CAAC,MAAM,CAAC,CAAC;wBACxC,OAAO,IAAI,KAAK,CAAC,EAAE,EAAE;4BACnB,GAAG,EAAE,CAAC,OAAO,EAAE,MAAc,EAAE,EAAE;gCAC/B,OAAO,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;4BAC7C,CAAC;yBACF,CAAC,CAAC;oBACL,CAAC;oBACD,MAAM,EAAE,CAAC,UAAU,CAAC;iBACrB;aACF;YACD,OAAO,EAAE,CAAC,eAAe,CAAC;SAC3B,CAAC;IACJ,CAAC;CACF,CAAA;AA3CY,8BAAS;oBAAT,SAAS;IAFrB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,SAAS,CA2CrB"}
|
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
import { ClientProxy, ReadPacket, WritePacket } from '@nestjs/microservices';
|
|
2
|
-
import { Observable } from 'rxjs';
|
|
2
|
+
import { Observable, ReplaySubject } from 'rxjs';
|
|
3
|
+
/**
|
|
4
|
+
* InProcessClientProxy for NestJS v11
|
|
5
|
+
* Includes status tracking, event handling, and unwrap functionality
|
|
6
|
+
*/
|
|
3
7
|
export declare class InProcessClientProxy extends ClientProxy {
|
|
4
8
|
private transport;
|
|
9
|
+
protected _status$: ReplaySubject<string>;
|
|
10
|
+
constructor();
|
|
11
|
+
get status(): Observable<string>;
|
|
12
|
+
on<EventKey extends string = string>(_event: EventKey, _callback: (...args: any[]) => void): void;
|
|
13
|
+
unwrap<T>(): T;
|
|
5
14
|
connect(): Promise<void>;
|
|
6
15
|
close(): void;
|
|
7
16
|
protected dispatchEvent(packet: ReadPacket): Promise<any>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-process.client.d.ts","sourceRoot":"","sources":["../../src/transport/in-process.client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAE7E,OAAO,EAAE,UAAU,EAAe,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"in-process.client.d.ts","sourceRoot":"","sources":["../../src/transport/in-process.client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAE7E,OAAO,EAAE,UAAU,EAAe,aAAa,EAAwB,MAAM,MAAM,CAAC;AAEpF;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,WAAW;IACnD,OAAO,CAAC,SAAS,CAA4C;IAG7D,SAAS,CAAC,QAAQ,wBAAgC;;IASlD,IAAI,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,CAE/B;IAGD,EAAE,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM,EACjC,MAAM,EAAE,QAAQ,EAChB,SAAS,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAClC,IAAI;IAMP,MAAM,CAAC,CAAC,KAAK,CAAC;IAKR,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B,KAAK,IAAI,IAAI;cAKG,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IAM/D,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,GAAG,MAAM,IAAI;IAe1F,IAAI,CAAC,OAAO,GAAG,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC;CAGnF"}
|
|
@@ -4,15 +4,39 @@ exports.InProcessClientProxy = void 0;
|
|
|
4
4
|
const microservices_1 = require("@nestjs/microservices");
|
|
5
5
|
const in_process_transport_1 = require("./in-process.transport");
|
|
6
6
|
const rxjs_1 = require("rxjs");
|
|
7
|
+
/**
|
|
8
|
+
* InProcessClientProxy for NestJS v11
|
|
9
|
+
* Includes status tracking, event handling, and unwrap functionality
|
|
10
|
+
*/
|
|
7
11
|
class InProcessClientProxy extends microservices_1.ClientProxy {
|
|
8
12
|
constructor() {
|
|
9
|
-
super(
|
|
13
|
+
super();
|
|
10
14
|
this.transport = in_process_transport_1.InProcessTransportStrategy.getInstance();
|
|
15
|
+
// Required for NestJS v11 compatibility
|
|
16
|
+
this._status$ = new rxjs_1.ReplaySubject(1);
|
|
17
|
+
// Initialize with 'connected' status for in-memory transport
|
|
18
|
+
this._status$.next('connected');
|
|
19
|
+
}
|
|
20
|
+
// Required for NestJS v11 compatibility
|
|
21
|
+
get status() {
|
|
22
|
+
return this._status$.asObservable().pipe((0, rxjs_1.distinctUntilChanged)());
|
|
23
|
+
}
|
|
24
|
+
// Required for NestJS v11 compatibility
|
|
25
|
+
on(_event, _callback) {
|
|
26
|
+
// In-process transport doesn't emit events, but we implement this for compatibility
|
|
27
|
+
// Subclasses can override if they need event handling
|
|
28
|
+
}
|
|
29
|
+
// Required for NestJS v11 compatibility
|
|
30
|
+
unwrap() {
|
|
31
|
+
// Return the transport strategy as the underlying "client"
|
|
32
|
+
return this.transport;
|
|
11
33
|
}
|
|
12
34
|
async connect() {
|
|
35
|
+
this._status$.next('connected');
|
|
13
36
|
return Promise.resolve();
|
|
14
37
|
}
|
|
15
38
|
close() {
|
|
39
|
+
this._status$.next('disconnected');
|
|
16
40
|
// Nothing to close for in-memory transport
|
|
17
41
|
}
|
|
18
42
|
async dispatchEvent(packet) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-process.client.js","sourceRoot":"","sources":["../../src/transport/in-process.client.ts"],"names":[],"mappings":";;;AAAA,yDAA6E;AAC7E,iEAAoE;AACpE,+
|
|
1
|
+
{"version":3,"file":"in-process.client.js","sourceRoot":"","sources":["../../src/transport/in-process.client.ts"],"names":[],"mappings":";;;AAAA,yDAA6E;AAC7E,iEAAoE;AACpE,+BAAoF;AAEpF;;;GAGG;AACH,MAAa,oBAAqB,SAAQ,2BAAW;IAMnD;QACE,KAAK,EAAE,CAAC;QANF,cAAS,GAAG,iDAA0B,CAAC,WAAW,EAAE,CAAC;QAE7D,wCAAwC;QAC9B,aAAQ,GAAG,IAAI,oBAAa,CAAS,CAAC,CAAC,CAAC;QAIhD,6DAA6D;QAC7D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC;IAED,wCAAwC;IACxC,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,IAAA,2BAAoB,GAAE,CAAC,CAAC;IACnE,CAAC;IAED,wCAAwC;IACxC,EAAE,CACA,MAAgB,EAChB,SAAmC;QAEnC,oFAAoF;QACpF,sDAAsD;IACxD,CAAC;IAED,wCAAwC;IACxC,MAAM;QACJ,2DAA2D;QAC3D,OAAO,IAAI,CAAC,SAAyB,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACnC,2CAA2C;IAC7C,CAAC;IAES,KAAK,CAAC,aAAa,CAAC,MAAkB;QAC9C,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;QACjC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAiB,EAAE,IAAI,CAAC,CAAC;QAClD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAES,OAAO,CAAC,MAAkB,EAAE,QAAuC;QAC3E,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;QAEjC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,OAAiB,EAAE,IAAI,CAAC;aAChD,IAAI,CAAC,MAAM,CAAC,EAAE;YACb,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QACjC,CAAC,CAAC;aACD,KAAK,CAAC,KAAK,CAAC,EAAE;YACb,QAAQ,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEL,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,gDAAgD;IACnE,CAAC;IAED,gDAAgD;IAChD,IAAI,CAA8B,OAAY,EAAE,IAAY;QAC1D,OAAO,IAAA,YAAK,EAAC,GAAG,EAAE,CAAC,IAAA,WAAI,EAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,OAAiB,EAAE,IAAI,CAAC,CAAC,CAAwB,CAAC;IACvG,CAAC;CACF;AAlED,oDAkEC"}
|
|
@@ -2,6 +2,8 @@ import { CustomTransportStrategy, Server, ReadPacket, BaseRpcContext } from '@ne
|
|
|
2
2
|
export declare class InProcessTransportStrategy extends Server implements CustomTransportStrategy {
|
|
3
3
|
private static instance;
|
|
4
4
|
static getInstance(): InProcessTransportStrategy;
|
|
5
|
+
on<EventKey extends string = string, EventCallback extends Function = Function>(_event: EventKey, _callback: EventCallback): any;
|
|
6
|
+
unwrap<T>(): T;
|
|
5
7
|
listen(callback: () => void): void;
|
|
6
8
|
close(): void;
|
|
7
9
|
handleMessage(pattern: string, packet: ReadPacket, context: BaseRpcContext): Promise<any>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-process.transport.d.ts","sourceRoot":"","sources":["../../src/transport/in-process.transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEpG,qBAAa,0BAA2B,SAAQ,MAAO,YAAW,uBAAuB;IACvF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA6B;IAEpD,MAAM,CAAC,WAAW,IAAI,0BAA0B;
|
|
1
|
+
{"version":3,"file":"in-process.transport.d.ts","sourceRoot":"","sources":["../../src/transport/in-process.transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEpG,qBAAa,0BAA2B,SAAQ,MAAO,YAAW,uBAAuB;IACvF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA6B;IAEpD,MAAM,CAAC,WAAW,IAAI,0BAA0B;IAQhD,EAAE,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM,EAAE,aAAa,SAAS,QAAQ,GAAG,QAAQ,EAC5E,MAAM,EAAE,QAAQ,EAChB,SAAS,EAAE,aAAa,GACvB,GAAG;IAKN,MAAM,CAAC,CAAC,KAAK,CAAC;IAKd,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAIlC,KAAK,IAAI,IAAI;IAIP,aAAa,CACjB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,GAAG,CAAC;IAkBT,WAAW,CACf,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,GAAG,CAAC;IAYT,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAO3D,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI;CAK5C"}
|
|
@@ -9,6 +9,15 @@ class InProcessTransportStrategy extends microservices_1.Server {
|
|
|
9
9
|
}
|
|
10
10
|
return InProcessTransportStrategy.instance;
|
|
11
11
|
}
|
|
12
|
+
// Required for NestJS v11 compatibility
|
|
13
|
+
on(_event, _callback) {
|
|
14
|
+
// In-process transport doesn't emit events, but we implement this for compatibility
|
|
15
|
+
}
|
|
16
|
+
// Required for NestJS v11 compatibility
|
|
17
|
+
unwrap() {
|
|
18
|
+
// Return this instance as the underlying "server"
|
|
19
|
+
return this;
|
|
20
|
+
}
|
|
12
21
|
listen(callback) {
|
|
13
22
|
callback();
|
|
14
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-process.transport.js","sourceRoot":"","sources":["../../src/transport/in-process.transport.ts"],"names":[],"mappings":";;;AAAA,yDAAoG;AAEpG,MAAa,0BAA2B,SAAQ,sBAAM;IAGpD,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,CAAC;YACzC,0BAA0B,CAAC,QAAQ,GAAG,IAAI,0BAA0B,EAAE,CAAC;QACzE,CAAC;QACD,OAAO,0BAA0B,CAAC,QAAQ,CAAC;IAC7C,CAAC;IAED,MAAM,CAAC,QAAoB;QACzB,QAAQ,EAAE,CAAC;IACb,CAAC;IAED,KAAK;QACH,qBAAqB;IACvB,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,OAAe,EACf,MAAkB,EAClB,OAAuB;QAEvB,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAEnD,0FAA0F;QAC1F,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,YAAY,IAAI,MAAM,EAAE,CAAC;YACnE,0DAA0D;YAC1D,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;YAC3C,OAAO,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,WAAW,CACf,OAAe,EACf,MAAkB,EAClB,OAAuB;QAEvB,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACtC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,OAAO,GAAG,EAAE,KAAK,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,KAAK,CAAC,WAAW,CAAC,OAAe,EAAE,IAAS;QAC1C,MAAM,MAAM,GAAe,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,IAAI,8BAAc,CAAC,EAAE,CAAC,CAAC;QACvC,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED,iCAAiC;IACjC,SAAS,CAAC,OAAe,EAAE,IAAS;QAClC,MAAM,MAAM,GAAe,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,IAAI,8BAAc,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"in-process.transport.js","sourceRoot":"","sources":["../../src/transport/in-process.transport.ts"],"names":[],"mappings":";;;AAAA,yDAAoG;AAEpG,MAAa,0BAA2B,SAAQ,sBAAM;IAGpD,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,CAAC;YACzC,0BAA0B,CAAC,QAAQ,GAAG,IAAI,0BAA0B,EAAE,CAAC;QACzE,CAAC;QACD,OAAO,0BAA0B,CAAC,QAAQ,CAAC;IAC7C,CAAC;IAED,wCAAwC;IACxC,EAAE,CACA,MAAgB,EAChB,SAAwB;QAExB,oFAAoF;IACtF,CAAC;IAED,wCAAwC;IACxC,MAAM;QACJ,kDAAkD;QAClD,OAAO,IAAoB,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,QAAoB;QACzB,QAAQ,EAAE,CAAC;IACb,CAAC;IAED,KAAK;QACH,qBAAqB;IACvB,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,OAAe,EACf,MAAkB,EAClB,OAAuB;QAEvB,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAEnD,0FAA0F;QAC1F,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,YAAY,IAAI,MAAM,EAAE,CAAC;YACnE,0DAA0D;YAC1D,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;YAC3C,OAAO,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,WAAW,CACf,OAAe,EACf,MAAkB,EAClB,OAAuB;QAEvB,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACtC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,OAAO,GAAG,EAAE,KAAK,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,KAAK,CAAC,WAAW,CAAC,OAAe,EAAE,IAAS;QAC1C,MAAM,MAAM,GAAe,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,IAAI,8BAAc,CAAC,EAAE,CAAC,CAAC;QACvC,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED,iCAAiC;IACjC,SAAS,CAAC,OAAe,EAAE,IAAS;QAClC,MAAM,MAAM,GAAe,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,IAAI,8BAAc,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;CACF;AAlFD,gEAkFC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zdavison/nestjs-rpc-toolkit",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.18",
|
|
4
4
|
"description": "Toolkit for type-safe RPC calls in NestJS monorepos.",
|
|
5
5
|
"private": false,
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -12,14 +12,14 @@
|
|
|
12
12
|
"bootstrap": "dist/bin/bootstrap.js"
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@nestjs/common": "^10.0.0",
|
|
16
|
-
"@nestjs/microservices": "^10.0.0",
|
|
17
15
|
"glob": "^10.0.0",
|
|
18
16
|
"rxjs": "^7.8.0",
|
|
19
17
|
"ts-morph": "^20.0.0",
|
|
20
18
|
"type-fest": "^5.0.1"
|
|
21
19
|
},
|
|
22
20
|
"devDependencies": {
|
|
21
|
+
"@nestjs/common": "^10.0.0",
|
|
22
|
+
"@nestjs/microservices": "^10.0.0",
|
|
23
23
|
"@types/node": "^20.0.0",
|
|
24
24
|
"typescript": "^5.0.0"
|
|
25
25
|
},
|
package/dist/bin/init.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
declare class RpcPackageInitializer {
|
|
3
|
-
private cwd;
|
|
4
|
-
private rl;
|
|
5
|
-
constructor();
|
|
6
|
-
init(): Promise<void>;
|
|
7
|
-
private promptForConfig;
|
|
8
|
-
private question;
|
|
9
|
-
private createRpcPackage;
|
|
10
|
-
private ensureDirectory;
|
|
11
|
-
private createPackageJson;
|
|
12
|
-
private findRootTsConfig;
|
|
13
|
-
private createTsConfig;
|
|
14
|
-
private createRpcConfig;
|
|
15
|
-
private createGenerateScript;
|
|
16
|
-
private createSourceFiles;
|
|
17
|
-
}
|
|
18
|
-
export { RpcPackageInitializer };
|
|
19
|
-
//# sourceMappingURL=init.d.ts.map
|
package/dist/bin/init.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/bin/init.ts"],"names":[],"mappings":";AAYA,cAAM,qBAAqB;IACzB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,EAAE,CAAqB;;IAUzB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAeb,eAAe;YA8Bf,QAAQ;YAUR,gBAAgB;YAkBhB,eAAe;YAMf,iBAAiB;IA8B/B,OAAO,CAAC,gBAAgB;YAiCV,cAAc;YAiDd,eAAe;YAUf,oBAAoB;YAoBpB,iBAAiB;CAmChC;AAWD,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
|
package/dist/bin/init.js
DELETED
|
@@ -1,275 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
"use strict";
|
|
3
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
-
if (k2 === undefined) k2 = k;
|
|
5
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
-
}
|
|
9
|
-
Object.defineProperty(o, k2, desc);
|
|
10
|
-
}) : (function(o, m, k, k2) {
|
|
11
|
-
if (k2 === undefined) k2 = k;
|
|
12
|
-
o[k2] = m[k];
|
|
13
|
-
}));
|
|
14
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
-
}) : function(o, v) {
|
|
17
|
-
o["default"] = v;
|
|
18
|
-
});
|
|
19
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
-
var ownKeys = function(o) {
|
|
21
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
-
var ar = [];
|
|
23
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
-
return ar;
|
|
25
|
-
};
|
|
26
|
-
return ownKeys(o);
|
|
27
|
-
};
|
|
28
|
-
return function (mod) {
|
|
29
|
-
if (mod && mod.__esModule) return mod;
|
|
30
|
-
var result = {};
|
|
31
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
-
__setModuleDefault(result, mod);
|
|
33
|
-
return result;
|
|
34
|
-
};
|
|
35
|
-
})();
|
|
36
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
-
exports.RpcPackageInitializer = void 0;
|
|
38
|
-
const path = __importStar(require("path"));
|
|
39
|
-
const fs = __importStar(require("fs"));
|
|
40
|
-
const readline = __importStar(require("readline"));
|
|
41
|
-
class RpcPackageInitializer {
|
|
42
|
-
constructor() {
|
|
43
|
-
this.cwd = process.cwd();
|
|
44
|
-
this.rl = readline.createInterface({
|
|
45
|
-
input: process.stdin,
|
|
46
|
-
output: process.stdout
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
async init() {
|
|
50
|
-
console.log('🚀 NestJS RPC Package Initializer\n');
|
|
51
|
-
const config = await this.promptForConfig();
|
|
52
|
-
await this.createRpcPackage(config);
|
|
53
|
-
this.rl.close();
|
|
54
|
-
console.log('\n✅ RPC package initialized successfully!');
|
|
55
|
-
console.log('\nNext steps:');
|
|
56
|
-
console.log('1. Update module packages in nestjs-rpc-toolkit.config.json (supports wildcards like "packages/modules/*")');
|
|
57
|
-
console.log('2. Run "npm run generate:types" to generate RPC types');
|
|
58
|
-
console.log('3. Build the package with "npm run build"');
|
|
59
|
-
}
|
|
60
|
-
async promptForConfig() {
|
|
61
|
-
const packagePath = await this.question('Where would you like to create the RPC package? ', 'packages/lib-rpc');
|
|
62
|
-
const projectName = path.basename(this.cwd);
|
|
63
|
-
const defaultPackageName = `@${projectName}/rpc`;
|
|
64
|
-
const packageName = await this.question('What should the package name be? ', defaultPackageName);
|
|
65
|
-
const modulePackagesInput = await this.question('Enter module packages to scan for RPC methods (comma-separated, supports wildcards): ', 'packages/modules/*');
|
|
66
|
-
const modulePackages = modulePackagesInput
|
|
67
|
-
.split(',')
|
|
68
|
-
.map(p => p.trim())
|
|
69
|
-
.filter(p => p.length > 0);
|
|
70
|
-
return {
|
|
71
|
-
packagePath: packagePath.trim(),
|
|
72
|
-
packageName: packageName.trim(),
|
|
73
|
-
modulePackages
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
async question(prompt, defaultValue) {
|
|
77
|
-
const displayPrompt = defaultValue ? `${prompt}(${defaultValue}) ` : prompt;
|
|
78
|
-
return new Promise((resolve) => {
|
|
79
|
-
this.rl.question(displayPrompt, (answer) => {
|
|
80
|
-
resolve(answer.trim() || defaultValue || '');
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
async createRpcPackage(config) {
|
|
85
|
-
const fullPackagePath = path.resolve(this.cwd, config.packagePath);
|
|
86
|
-
// Create directory structure
|
|
87
|
-
await this.ensureDirectory(fullPackagePath);
|
|
88
|
-
await this.ensureDirectory(path.join(fullPackagePath, 'src'));
|
|
89
|
-
await this.ensureDirectory(path.join(fullPackagePath, 'scripts'));
|
|
90
|
-
// Create files
|
|
91
|
-
await this.createPackageJson(fullPackagePath, config);
|
|
92
|
-
await this.createTsConfig(fullPackagePath);
|
|
93
|
-
await this.createRpcConfig(fullPackagePath, config);
|
|
94
|
-
await this.createGenerateScript(fullPackagePath);
|
|
95
|
-
await this.createSourceFiles(fullPackagePath);
|
|
96
|
-
console.log(`📦 Created RPC package at: ${config.packagePath}`);
|
|
97
|
-
}
|
|
98
|
-
async ensureDirectory(dirPath) {
|
|
99
|
-
if (!fs.existsSync(dirPath)) {
|
|
100
|
-
fs.mkdirSync(dirPath, { recursive: true });
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
async createPackageJson(packagePath, config) {
|
|
104
|
-
const packageJson = {
|
|
105
|
-
name: config.packageName,
|
|
106
|
-
version: "1.0.0",
|
|
107
|
-
description: "Package containing shared types for RPC calls in this monorepo (generated by @zdavison/nestjs-rpc-toolkit)",
|
|
108
|
-
main: "dist/index.js",
|
|
109
|
-
types: "dist/index.d.ts",
|
|
110
|
-
scripts: {
|
|
111
|
-
build: "npm run generate:types && tsc",
|
|
112
|
-
clean: "rm -rf dist",
|
|
113
|
-
dev: "tsc --watch",
|
|
114
|
-
"generate:types": "ts-node scripts/generate-all-rpc-types.ts"
|
|
115
|
-
},
|
|
116
|
-
dependencies: {
|
|
117
|
-
"@zdavison/nestjs-rpc-toolkit": "^0.0.12",
|
|
118
|
-
"@nestjs/common": "^10.0.0",
|
|
119
|
-
"@nestjs/microservices": "^10.0.0"
|
|
120
|
-
},
|
|
121
|
-
devDependencies: {
|
|
122
|
-
"@types/node": "^24.5.1",
|
|
123
|
-
typescript: "^5.0.0",
|
|
124
|
-
"ts-node": "^10.9.0",
|
|
125
|
-
"ts-morph": "^20.0.0"
|
|
126
|
-
}
|
|
127
|
-
};
|
|
128
|
-
const filePath = path.join(packagePath, 'package.json');
|
|
129
|
-
fs.writeFileSync(filePath, JSON.stringify(packageJson, null, 2));
|
|
130
|
-
}
|
|
131
|
-
findRootTsConfig() {
|
|
132
|
-
// Search for root tsconfig files starting from repo root
|
|
133
|
-
const possiblePaths = [
|
|
134
|
-
'tsconfig.base.json',
|
|
135
|
-
'tsconfig.json'
|
|
136
|
-
];
|
|
137
|
-
// Find git root or use current working directory
|
|
138
|
-
let searchDir = this.cwd;
|
|
139
|
-
try {
|
|
140
|
-
// Try to find git root by looking for .git directory
|
|
141
|
-
let current = this.cwd;
|
|
142
|
-
while (current !== path.dirname(current)) {
|
|
143
|
-
if (fs.existsSync(path.join(current, '.git'))) {
|
|
144
|
-
searchDir = current;
|
|
145
|
-
break;
|
|
146
|
-
}
|
|
147
|
-
current = path.dirname(current);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
catch {
|
|
151
|
-
// If git root search fails, use current directory
|
|
152
|
-
}
|
|
153
|
-
for (const tsConfigPath of possiblePaths) {
|
|
154
|
-
const fullPath = path.join(searchDir, tsConfigPath);
|
|
155
|
-
if (fs.existsSync(fullPath)) {
|
|
156
|
-
return fullPath;
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
return null;
|
|
160
|
-
}
|
|
161
|
-
async createTsConfig(packagePath) {
|
|
162
|
-
// Try to find a root tsconfig to extend from
|
|
163
|
-
const rootTsConfig = this.findRootTsConfig();
|
|
164
|
-
let tsConfig;
|
|
165
|
-
if (rootTsConfig) {
|
|
166
|
-
// Calculate relative path from package to root tsconfig
|
|
167
|
-
const relativePath = path.relative(packagePath, rootTsConfig);
|
|
168
|
-
tsConfig = {
|
|
169
|
-
extends: relativePath,
|
|
170
|
-
compilerOptions: {
|
|
171
|
-
outDir: "./dist",
|
|
172
|
-
declaration: true,
|
|
173
|
-
declarationMap: true,
|
|
174
|
-
sourceMap: true
|
|
175
|
-
},
|
|
176
|
-
include: ["src/**/*"],
|
|
177
|
-
exclude: ["node_modules", "dist", "**/*.spec.ts", "**/*.test.ts"]
|
|
178
|
-
};
|
|
179
|
-
}
|
|
180
|
-
else {
|
|
181
|
-
// Create a standalone valid tsconfig
|
|
182
|
-
tsConfig = {
|
|
183
|
-
compilerOptions: {
|
|
184
|
-
target: "ES2020",
|
|
185
|
-
module: "commonjs",
|
|
186
|
-
lib: ["ES2020"],
|
|
187
|
-
outDir: "./dist",
|
|
188
|
-
rootDir: "./src",
|
|
189
|
-
strict: true,
|
|
190
|
-
esModuleInterop: true,
|
|
191
|
-
skipLibCheck: true,
|
|
192
|
-
forceConsistentCasingInFileNames: true,
|
|
193
|
-
declaration: true,
|
|
194
|
-
declarationMap: true,
|
|
195
|
-
sourceMap: true,
|
|
196
|
-
experimentalDecorators: true,
|
|
197
|
-
emitDecoratorMetadata: true
|
|
198
|
-
},
|
|
199
|
-
include: ["src/**/*"],
|
|
200
|
-
exclude: ["node_modules", "dist", "**/*.spec.ts", "**/*.test.ts"]
|
|
201
|
-
};
|
|
202
|
-
}
|
|
203
|
-
const filePath = path.join(packagePath, 'tsconfig.json');
|
|
204
|
-
fs.writeFileSync(filePath, JSON.stringify(tsConfig, null, 2));
|
|
205
|
-
}
|
|
206
|
-
async createRpcConfig(packagePath, config) {
|
|
207
|
-
const rpcConfig = {
|
|
208
|
-
packages: config.modulePackages,
|
|
209
|
-
outputDir: path.join(config.packagePath, 'src')
|
|
210
|
-
};
|
|
211
|
-
const filePath = path.join(packagePath, 'nestjs-rpc-toolkit.config.json');
|
|
212
|
-
fs.writeFileSync(filePath, JSON.stringify(rpcConfig, null, 2));
|
|
213
|
-
}
|
|
214
|
-
async createGenerateScript(packagePath) {
|
|
215
|
-
const script = `import { RpcTypesGenerator } from '@zdavison/nestjs-rpc-toolkit';
|
|
216
|
-
import * as path from 'path';
|
|
217
|
-
|
|
218
|
-
// Run the generator - we're in ${path.basename(packagePath)}/scripts
|
|
219
|
-
const rootDir = path.join(__dirname, '../../../');
|
|
220
|
-
const configPath = path.join(__dirname, '../nestjs-rpc-toolkit.config.json');
|
|
221
|
-
|
|
222
|
-
const generator = new RpcTypesGenerator({
|
|
223
|
-
rootDir,
|
|
224
|
-
configPath,
|
|
225
|
-
});
|
|
226
|
-
|
|
227
|
-
generator.generate();
|
|
228
|
-
`;
|
|
229
|
-
const filePath = path.join(packagePath, 'scripts', 'generate-all-rpc-types.ts');
|
|
230
|
-
fs.writeFileSync(filePath, script);
|
|
231
|
-
}
|
|
232
|
-
async createSourceFiles(packagePath) {
|
|
233
|
-
// Create index.ts
|
|
234
|
-
const indexContent = `export * from './all.rpc.gen';
|
|
235
|
-
export * from './typed-message-bus';
|
|
236
|
-
`;
|
|
237
|
-
fs.writeFileSync(path.join(packagePath, 'src', 'index.ts'), indexContent);
|
|
238
|
-
// Create typed-message-bus.ts
|
|
239
|
-
const messageBusContent = `import { MessageBus as BaseMessageBus, IMessageBus } from '@zdavison/nestjs-rpc-toolkit';
|
|
240
|
-
import { AllRpcMethods } from './all.rpc.gen';
|
|
241
|
-
import { Injectable } from '@nestjs/common';
|
|
242
|
-
import { ClientProxy } from '@nestjs/microservices';
|
|
243
|
-
|
|
244
|
-
// Typed version of MessageBus with generated types
|
|
245
|
-
export interface ITypedMessageBus extends IMessageBus<AllRpcMethods> {}
|
|
246
|
-
|
|
247
|
-
@Injectable()
|
|
248
|
-
export class MessageBus extends BaseMessageBus<AllRpcMethods> implements ITypedMessageBus {
|
|
249
|
-
constructor(client: ClientProxy) {
|
|
250
|
-
super(client);
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
`;
|
|
254
|
-
fs.writeFileSync(path.join(packagePath, 'src', 'typed-message-bus.ts'), messageBusContent);
|
|
255
|
-
// Create placeholder all.rpc.gen.ts
|
|
256
|
-
const placeholderContent = `// This file will be generated by the RPC types generator
|
|
257
|
-
// Run 'npm run generate:types' to generate the actual types
|
|
258
|
-
|
|
259
|
-
export interface AllRpcMethods {
|
|
260
|
-
// Generated RPC method types will appear here
|
|
261
|
-
}
|
|
262
|
-
`;
|
|
263
|
-
fs.writeFileSync(path.join(packagePath, 'src', 'all.rpc.gen.ts'), placeholderContent);
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
exports.RpcPackageInitializer = RpcPackageInitializer;
|
|
267
|
-
// Main execution
|
|
268
|
-
if (require.main === module) {
|
|
269
|
-
const initializer = new RpcPackageInitializer();
|
|
270
|
-
initializer.init().catch((error) => {
|
|
271
|
-
console.error('❌ Error initializing RPC package:', error);
|
|
272
|
-
process.exit(1);
|
|
273
|
-
});
|
|
274
|
-
}
|
|
275
|
-
//# sourceMappingURL=init.js.map
|
package/dist/bin/init.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/bin/init.ts"],"names":[],"mappings":"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"}
|