@zdavison/nestjs-rpc-toolkit 0.0.11 → 0.0.13
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.d.ts +19 -0
- package/dist/bin/bootstrap.d.ts.map +1 -0
- package/dist/bin/bootstrap.js +275 -0
- package/dist/bin/bootstrap.js.map +1 -0
- package/dist/bin/init.js +15 -2
- package/dist/bin/init.js.map +1 -1
- package/dist/decorators/rpc-controller.decorator.d.ts +32 -0
- package/dist/decorators/rpc-controller.decorator.d.ts.map +1 -1
- package/dist/decorators/rpc-controller.decorator.js +56 -0
- package/dist/decorators/rpc-controller.decorator.js.map +1 -1
- package/dist/decorators/rpc-method.decorator.d.ts +22 -2
- package/dist/decorators/rpc-method.decorator.d.ts.map +1 -1
- package/dist/decorators/rpc-method.decorator.js +70 -20
- package/dist/decorators/rpc-method.decorator.js.map +1 -1
- package/dist/generators/rpc-types-generator.d.ts +3 -1
- package/dist/generators/rpc-types-generator.d.ts.map +1 -1
- package/dist/generators/rpc-types-generator.js +259 -25
- package/dist/generators/rpc-types-generator.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/rpc/rpc-client.d.ts +3 -0
- package/dist/rpc/rpc-client.d.ts.map +1 -1
- package/dist/rpc/rpc-client.js +7 -2
- package/dist/rpc/rpc-client.js.map +1 -1
- package/dist/rpc/rpc-registry.d.ts.map +1 -1
- package/dist/rpc/rpc-registry.js +11 -1
- package/dist/rpc/rpc-registry.js.map +1 -1
- package/dist/rpc/typed-message-bus.d.ts +11 -0
- package/dist/rpc/typed-message-bus.d.ts.map +1 -1
- package/dist/rpc/typed-message-bus.js +2 -1
- package/dist/rpc/typed-message-bus.js.map +1 -1
- package/dist/transport/{in-memory.client.d.ts → in-process.client.d.ts} +4 -2
- package/dist/transport/in-process.client.d.ts.map +1 -0
- package/dist/transport/{in-memory.client.js → in-process.client.js} +13 -7
- package/dist/transport/in-process.client.js.map +1 -0
- package/dist/transport/{in-memory.transport.d.ts → in-process.transport.d.ts} +3 -3
- package/dist/transport/in-process.transport.d.ts.map +1 -0
- package/dist/transport/{in-memory.transport.js → in-process.transport.js} +18 -8
- package/dist/transport/in-process.transport.js.map +1 -0
- package/dist/transport/index.d.ts +2 -2
- package/dist/transport/index.d.ts.map +1 -1
- package/dist/transport/index.js +2 -2
- package/dist/transport/index.js.map +1 -1
- package/dist/types/serializable.d.ts +55 -4
- package/dist/types/serializable.d.ts.map +1 -1
- package/dist/types/serializable.js +4 -0
- package/dist/types/serializable.js.map +1 -1
- package/package.json +8 -6
- package/dist/module-base/index.d.ts +0 -15
- package/dist/module-base/index.d.ts.map +0 -1
- package/dist/module-base/index.js +0 -38
- package/dist/module-base/index.js.map +0 -1
- package/dist/test-date-serialization.d.ts +0 -2
- package/dist/test-date-serialization.d.ts.map +0 -1
- package/dist/test-date-serialization.js +0 -12
- package/dist/test-date-serialization.js.map +0 -1
- package/dist/test-type-validation.d.ts +0 -2
- package/dist/test-type-validation.d.ts.map +0 -1
- package/dist/test-type-validation.js +0 -87
- package/dist/test-type-validation.js.map +0 -1
- package/dist/transport/in-memory.client.d.ts.map +0 -1
- package/dist/transport/in-memory.client.js.map +0 -1
- package/dist/transport/in-memory.transport.d.ts.map +0 -1
- package/dist/transport/in-memory.transport.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
declare class RpcPackageInitializer {
|
|
3
|
+
private cwd;
|
|
4
|
+
private rl;
|
|
5
|
+
constructor();
|
|
6
|
+
bootstrap(): 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=bootstrap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/bin/bootstrap.ts"],"names":[],"mappings":";AAYA,cAAM,qBAAqB;IACzB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,EAAE,CAAqB;;IAUzB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;YAelB,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"}
|
|
@@ -0,0 +1,275 @@
|
|
|
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 bootstrap() {
|
|
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.13",
|
|
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.json',
|
|
135
|
+
'tsconfig.base.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.bootstrap().catch((error) => {
|
|
271
|
+
console.error('❌ Error initializing RPC package:', error);
|
|
272
|
+
process.exit(1);
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
//# sourceMappingURL=bootstrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/bin/bootstrap.ts"],"names":[],"mappings":"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"}
|
package/dist/bin/init.js
CHANGED
|
@@ -58,7 +58,7 @@ class RpcPackageInitializer {
|
|
|
58
58
|
console.log('3. Build the package with "npm run build"');
|
|
59
59
|
}
|
|
60
60
|
async promptForConfig() {
|
|
61
|
-
const packagePath = await this.question('Where would you like to create the RPC package? ', 'packages/rpc');
|
|
61
|
+
const packagePath = await this.question('Where would you like to create the RPC package? ', 'packages/lib-rpc');
|
|
62
62
|
const projectName = path.basename(this.cwd);
|
|
63
63
|
const defaultPackageName = `@${projectName}/rpc`;
|
|
64
64
|
const packageName = await this.question('What should the package name be? ', defaultPackageName);
|
|
@@ -83,9 +83,11 @@ class RpcPackageInitializer {
|
|
|
83
83
|
}
|
|
84
84
|
async createRpcPackage(config) {
|
|
85
85
|
const fullPackagePath = path.resolve(this.cwd, config.packagePath);
|
|
86
|
+
// Create directory structure
|
|
86
87
|
await this.ensureDirectory(fullPackagePath);
|
|
87
88
|
await this.ensureDirectory(path.join(fullPackagePath, 'src'));
|
|
88
89
|
await this.ensureDirectory(path.join(fullPackagePath, 'scripts'));
|
|
90
|
+
// Create files
|
|
89
91
|
await this.createPackageJson(fullPackagePath, config);
|
|
90
92
|
await this.createTsConfig(fullPackagePath);
|
|
91
93
|
await this.createRpcConfig(fullPackagePath, config);
|
|
@@ -112,7 +114,7 @@ class RpcPackageInitializer {
|
|
|
112
114
|
"generate:types": "ts-node scripts/generate-all-rpc-types.ts"
|
|
113
115
|
},
|
|
114
116
|
dependencies: {
|
|
115
|
-
"@zdavison/nestjs-rpc-toolkit": "^0.0.
|
|
117
|
+
"@zdavison/nestjs-rpc-toolkit": "^0.0.12",
|
|
116
118
|
"@nestjs/common": "^10.0.0",
|
|
117
119
|
"@nestjs/microservices": "^10.0.0"
|
|
118
120
|
},
|
|
@@ -127,12 +129,15 @@ class RpcPackageInitializer {
|
|
|
127
129
|
fs.writeFileSync(filePath, JSON.stringify(packageJson, null, 2));
|
|
128
130
|
}
|
|
129
131
|
findRootTsConfig() {
|
|
132
|
+
// Search for root tsconfig files starting from repo root
|
|
130
133
|
const possiblePaths = [
|
|
131
134
|
'tsconfig.base.json',
|
|
132
135
|
'tsconfig.json'
|
|
133
136
|
];
|
|
137
|
+
// Find git root or use current working directory
|
|
134
138
|
let searchDir = this.cwd;
|
|
135
139
|
try {
|
|
140
|
+
// Try to find git root by looking for .git directory
|
|
136
141
|
let current = this.cwd;
|
|
137
142
|
while (current !== path.dirname(current)) {
|
|
138
143
|
if (fs.existsSync(path.join(current, '.git'))) {
|
|
@@ -143,6 +148,7 @@ class RpcPackageInitializer {
|
|
|
143
148
|
}
|
|
144
149
|
}
|
|
145
150
|
catch {
|
|
151
|
+
// If git root search fails, use current directory
|
|
146
152
|
}
|
|
147
153
|
for (const tsConfigPath of possiblePaths) {
|
|
148
154
|
const fullPath = path.join(searchDir, tsConfigPath);
|
|
@@ -153,9 +159,11 @@ class RpcPackageInitializer {
|
|
|
153
159
|
return null;
|
|
154
160
|
}
|
|
155
161
|
async createTsConfig(packagePath) {
|
|
162
|
+
// Try to find a root tsconfig to extend from
|
|
156
163
|
const rootTsConfig = this.findRootTsConfig();
|
|
157
164
|
let tsConfig;
|
|
158
165
|
if (rootTsConfig) {
|
|
166
|
+
// Calculate relative path from package to root tsconfig
|
|
159
167
|
const relativePath = path.relative(packagePath, rootTsConfig);
|
|
160
168
|
tsConfig = {
|
|
161
169
|
extends: relativePath,
|
|
@@ -170,6 +178,7 @@ class RpcPackageInitializer {
|
|
|
170
178
|
};
|
|
171
179
|
}
|
|
172
180
|
else {
|
|
181
|
+
// Create a standalone valid tsconfig
|
|
173
182
|
tsConfig = {
|
|
174
183
|
compilerOptions: {
|
|
175
184
|
target: "ES2020",
|
|
@@ -221,10 +230,12 @@ generator.generate();
|
|
|
221
230
|
fs.writeFileSync(filePath, script);
|
|
222
231
|
}
|
|
223
232
|
async createSourceFiles(packagePath) {
|
|
233
|
+
// Create index.ts
|
|
224
234
|
const indexContent = `export * from './all.rpc.gen';
|
|
225
235
|
export * from './typed-message-bus';
|
|
226
236
|
`;
|
|
227
237
|
fs.writeFileSync(path.join(packagePath, 'src', 'index.ts'), indexContent);
|
|
238
|
+
// Create typed-message-bus.ts
|
|
228
239
|
const messageBusContent = `import { MessageBus as BaseMessageBus, IMessageBus } from '@zdavison/nestjs-rpc-toolkit';
|
|
229
240
|
import { AllRpcMethods } from './all.rpc.gen';
|
|
230
241
|
import { Injectable } from '@nestjs/common';
|
|
@@ -241,6 +252,7 @@ export class MessageBus extends BaseMessageBus<AllRpcMethods> implements ITypedM
|
|
|
241
252
|
}
|
|
242
253
|
`;
|
|
243
254
|
fs.writeFileSync(path.join(packagePath, 'src', 'typed-message-bus.ts'), messageBusContent);
|
|
255
|
+
// Create placeholder all.rpc.gen.ts
|
|
244
256
|
const placeholderContent = `// This file will be generated by the RPC types generator
|
|
245
257
|
// Run 'npm run generate:types' to generate the actual types
|
|
246
258
|
|
|
@@ -252,6 +264,7 @@ export interface AllRpcMethods {
|
|
|
252
264
|
}
|
|
253
265
|
}
|
|
254
266
|
exports.RpcPackageInitializer = RpcPackageInitializer;
|
|
267
|
+
// Main execution
|
|
255
268
|
if (require.main === module) {
|
|
256
269
|
const initializer = new RpcPackageInitializer();
|
|
257
270
|
initializer.init().catch((error) => {
|
package/dist/bin/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/bin/init.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,2CAA6B;AAC7B,uCAAyB;AACzB,mDAAqC;AAQrC,MAAM,qBAAqB;IAIzB;QACE,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;YACjC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI;QACR,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QAEnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC5C,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAEpC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAEhB,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,4GAA4G,CAAC,CAAC;QAC1H,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IAC3D,CAAC;IAEO,KAAK,CAAC,eAAe;QAC3B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CACrC,kDAAkD,EAClD,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/bin/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,35 @@
|
|
|
1
1
|
import 'reflect-metadata';
|
|
2
|
+
/**
|
|
3
|
+
* RPC Controller decorator for classes that contain RPC methods.
|
|
4
|
+
* This decorator applies the NestJS @Controller decorator internally
|
|
5
|
+
* and sets metadata for RPC method discovery and pattern generation.
|
|
6
|
+
*
|
|
7
|
+
* @param prefix - Optional module prefix for RPC patterns (e.g., 'user', 'product').
|
|
8
|
+
* If not provided, infers from class name by removing common suffixes:
|
|
9
|
+
* Service, Application, Handler, Repository
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* @RpcController('user')
|
|
13
|
+
* export class UserService {
|
|
14
|
+
* @RpcMethod()
|
|
15
|
+
* async findAll(): Promise<User[]> {
|
|
16
|
+
* // Pattern: auto-generated as 'user.findAll'
|
|
17
|
+
* return this.users;
|
|
18
|
+
* }
|
|
19
|
+
* }
|
|
20
|
+
*
|
|
21
|
+
* @RpcController() // Infers 'user' from UserService
|
|
22
|
+
* export class UserService { ... }
|
|
23
|
+
*
|
|
24
|
+
* @RpcController() // Infers 'product' from ProductApplication
|
|
25
|
+
* export class ProductApplication { ... }
|
|
26
|
+
*
|
|
27
|
+
* @RpcController() // Infers 'order' from OrderHandler
|
|
28
|
+
* export class OrderHandler { ... }
|
|
29
|
+
*
|
|
30
|
+
* @RpcController() // Infers 'customer' from CustomerRepository
|
|
31
|
+
* export class CustomerRepository { ... }
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
2
34
|
export declare function RpcController(prefix?: string): ClassDecorator;
|
|
3
35
|
//# sourceMappingURL=rpc-controller.decorator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-controller.decorator.d.ts","sourceRoot":"","sources":["../../src/decorators/rpc-controller.decorator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rpc-controller.decorator.d.ts","sourceRoot":"","sources":["../../src/decorators/rpc-controller.decorator.ts"],"names":[],"mappings":"AAGA,OAAO,kBAAkB,CAAC;AAE1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,cAAc,CAyC7D"}
|
|
@@ -2,17 +2,73 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RpcController = RpcController;
|
|
4
4
|
const common_1 = require("@nestjs/common");
|
|
5
|
+
const microservices_1 = require("@nestjs/microservices");
|
|
6
|
+
const rpc_registry_1 = require("../rpc/rpc-registry");
|
|
5
7
|
require("reflect-metadata");
|
|
8
|
+
/**
|
|
9
|
+
* RPC Controller decorator for classes that contain RPC methods.
|
|
10
|
+
* This decorator applies the NestJS @Controller decorator internally
|
|
11
|
+
* and sets metadata for RPC method discovery and pattern generation.
|
|
12
|
+
*
|
|
13
|
+
* @param prefix - Optional module prefix for RPC patterns (e.g., 'user', 'product').
|
|
14
|
+
* If not provided, infers from class name by removing common suffixes:
|
|
15
|
+
* Service, Application, Handler, Repository
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* @RpcController('user')
|
|
19
|
+
* export class UserService {
|
|
20
|
+
* @RpcMethod()
|
|
21
|
+
* async findAll(): Promise<User[]> {
|
|
22
|
+
* // Pattern: auto-generated as 'user.findAll'
|
|
23
|
+
* return this.users;
|
|
24
|
+
* }
|
|
25
|
+
* }
|
|
26
|
+
*
|
|
27
|
+
* @RpcController() // Infers 'user' from UserService
|
|
28
|
+
* export class UserService { ... }
|
|
29
|
+
*
|
|
30
|
+
* @RpcController() // Infers 'product' from ProductApplication
|
|
31
|
+
* export class ProductApplication { ... }
|
|
32
|
+
*
|
|
33
|
+
* @RpcController() // Infers 'order' from OrderHandler
|
|
34
|
+
* export class OrderHandler { ... }
|
|
35
|
+
*
|
|
36
|
+
* @RpcController() // Infers 'customer' from CustomerRepository
|
|
37
|
+
* export class CustomerRepository { ... }
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
6
40
|
function RpcController(prefix) {
|
|
7
41
|
return function (target) {
|
|
42
|
+
// Apply the NestJS Controller decorator
|
|
8
43
|
(0, common_1.Controller)()(target);
|
|
44
|
+
// Set RPC-specific metadata for pattern generation
|
|
9
45
|
let modulePrefix = prefix;
|
|
10
46
|
if (!modulePrefix) {
|
|
47
|
+
// Infer from class name: UserService -> 'user', ProductApplication -> 'product', OrderHandler -> 'order'
|
|
11
48
|
modulePrefix = target.name
|
|
12
49
|
.replace(/(Service|Application|Handler|Repository)$/, '')
|
|
13
50
|
.toLowerCase();
|
|
14
51
|
}
|
|
15
52
|
Reflect.defineMetadata('rpc:module', modulePrefix, target);
|
|
53
|
+
// Process any pending @RpcMethod decorators that were applied before @RpcController
|
|
54
|
+
const pendingMethods = Reflect.getMetadata('rpc:pending-methods', target) || [];
|
|
55
|
+
for (const { propertyKey, descriptor } of pendingMethods) {
|
|
56
|
+
const methodName = propertyKey;
|
|
57
|
+
const actualPattern = `${modulePrefix}.${methodName}`;
|
|
58
|
+
// Register in RPC registry
|
|
59
|
+
const metadata = {
|
|
60
|
+
pattern: actualPattern,
|
|
61
|
+
module: modulePrefix,
|
|
62
|
+
methodName,
|
|
63
|
+
target,
|
|
64
|
+
propertyKey,
|
|
65
|
+
};
|
|
66
|
+
rpc_registry_1.rpcRegistry.registerMethod(metadata);
|
|
67
|
+
// Apply the NestJS MessagePattern decorator
|
|
68
|
+
(0, microservices_1.MessagePattern)(actualPattern)(target.prototype, propertyKey, descriptor);
|
|
69
|
+
}
|
|
70
|
+
// Clear the pending methods
|
|
71
|
+
Reflect.deleteMetadata('rpc:pending-methods', target);
|
|
16
72
|
return target;
|
|
17
73
|
};
|
|
18
74
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-controller.decorator.js","sourceRoot":"","sources":["../../src/decorators/rpc-controller.decorator.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"rpc-controller.decorator.js","sourceRoot":"","sources":["../../src/decorators/rpc-controller.decorator.ts"],"names":[],"mappings":";;AAqCA,sCAyCC;AA9ED,2CAA4C;AAC5C,yDAA6E;AAC7E,sDAAqE;AACrE,4BAA0B;AAE1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,SAAgB,aAAa,CAAC,MAAe;IAC3C,OAAO,UAAU,MAAW;QAC1B,wCAAwC;QACxC,IAAA,mBAAU,GAAE,CAAC,MAAM,CAAC,CAAC;QAErB,mDAAmD;QACnD,IAAI,YAAY,GAAG,MAAM,CAAC;QAC1B,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,yGAAyG;YACzG,YAAY,GAAG,MAAM,CAAC,IAAI;iBACvB,OAAO,CAAC,2CAA2C,EAAE,EAAE,CAAC;iBACxD,WAAW,EAAE,CAAC;QACnB,CAAC;QAED,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QAE3D,oFAAoF;QACpF,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,qBAAqB,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QAChF,KAAK,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,cAAc,EAAE,CAAC;YACzD,MAAM,UAAU,GAAG,WAAW,CAAC;YAC/B,MAAM,aAAa,GAAG,GAAG,YAAY,IAAI,UAAU,EAAE,CAAC;YAEtD,2BAA2B;YAC3B,MAAM,QAAQ,GAAsB;gBAClC,OAAO,EAAE,aAAa;gBACtB,MAAM,EAAE,YAAsB;gBAC9B,UAAU;gBACV,MAAM;gBACN,WAAW;aACZ,CAAC;YACF,0BAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAErC,4CAA4C;YAC5C,IAAA,8BAAkB,EAAC,aAAa,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;QAC/E,CAAC;QAED,4BAA4B;QAC5B,OAAO,CAAC,cAAc,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;QAEtD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,24 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ValidateRpcMethod } from '../types/serializable';
|
|
2
2
|
import 'reflect-metadata';
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* RPC Method decorator with compile-time serialization validation.
|
|
5
|
+
* Ensures all parameters and return types are JSON-serializable for TCP transport.
|
|
6
|
+
* Pattern is automatically generated from the class name or @Controller decorator.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* @RpcMethod()
|
|
11
|
+
* async findUser(id: string): Promise<User> {
|
|
12
|
+
* // ✅ Valid: string param, User return type are serializable
|
|
13
|
+
* // Pattern: auto-generated as 'user.findUser' or 'controllerName.findUser'
|
|
14
|
+
* return this.userRepo.findById(id);
|
|
15
|
+
* }
|
|
16
|
+
*
|
|
17
|
+
* @RpcMethod()
|
|
18
|
+
* async invalidMethod(callback: (data: string) => void): Promise<HTMLElement> {
|
|
19
|
+
* // ❌ Error: callback and HTMLElement are not serializable
|
|
20
|
+
* }
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export declare function RpcMethod(): <TMethod extends (...args: any[]) => any>(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor<ValidateRpcMethod<TMethod>>) => void;
|
|
4
24
|
//# sourceMappingURL=rpc-method.decorator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-method.decorator.d.ts","sourceRoot":"","sources":["../../src/decorators/rpc-method.decorator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rpc-method.decorator.d.ts","sourceRoot":"","sources":["../../src/decorators/rpc-method.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,kBAAkB,CAAC;AAE1B;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,SAAS,KACN,OAAO,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EACtD,QAAQ,GAAG,EACX,aAAa,MAAM,EACnB,YAAY,uBAAuB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,KAC9D,IAAI,CAgER"}
|