nestjs-trpc 1.1.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 +22 -0
- package/README.md +93 -0
- package/dist/decorators/__tests__/context.decorator.spec.d.ts +1 -0
- package/dist/decorators/__tests__/context.decorator.spec.js +72 -0
- package/dist/decorators/__tests__/context.decorator.spec.js.map +1 -0
- package/dist/decorators/__tests__/input.decorator.spec.d.ts +1 -0
- package/dist/decorators/__tests__/input.decorator.spec.js +71 -0
- package/dist/decorators/__tests__/input.decorator.spec.js.map +1 -0
- package/dist/decorators/__tests__/middlewares.decorator.spec.d.ts +1 -0
- package/dist/decorators/__tests__/middlewares.decorator.spec.js +76 -0
- package/dist/decorators/__tests__/middlewares.decorator.spec.js.map +1 -0
- package/dist/decorators/__tests__/mutation.decorator.spec.d.ts +1 -0
- package/dist/decorators/__tests__/mutation.decorator.spec.js +88 -0
- package/dist/decorators/__tests__/mutation.decorator.spec.js.map +1 -0
- package/dist/decorators/__tests__/options.decorator.spec.d.ts +1 -0
- package/dist/decorators/__tests__/options.decorator.spec.js +68 -0
- package/dist/decorators/__tests__/options.decorator.spec.js.map +1 -0
- package/dist/decorators/__tests__/path.decorator.spec.d.ts +1 -0
- package/dist/decorators/__tests__/path.decorator.spec.js +68 -0
- package/dist/decorators/__tests__/path.decorator.spec.js.map +1 -0
- package/dist/decorators/__tests__/query.decorator.spec.d.ts +1 -0
- package/dist/decorators/__tests__/query.decorator.spec.js +88 -0
- package/dist/decorators/__tests__/query.decorator.spec.js.map +1 -0
- package/dist/decorators/__tests__/raw-input.decorator.spec.d.ts +1 -0
- package/dist/decorators/__tests__/raw-input.decorator.spec.js +68 -0
- package/dist/decorators/__tests__/raw-input.decorator.spec.js.map +1 -0
- package/dist/decorators/__tests__/router.decorator.spec.d.ts +1 -0
- package/dist/decorators/__tests__/router.decorator.spec.js +59 -0
- package/dist/decorators/__tests__/router.decorator.spec.js.map +1 -0
- package/dist/decorators/__tests__/type.decorator.spec.d.ts +1 -0
- package/dist/decorators/__tests__/type.decorator.spec.js +68 -0
- package/dist/decorators/__tests__/type.decorator.spec.js.map +1 -0
- package/dist/decorators/context.decorator.d.ts +1 -0
- package/dist/decorators/context.decorator.js +21 -0
- package/dist/decorators/context.decorator.js.map +1 -0
- package/dist/decorators/context.decorator.spec.d.ts +1 -0
- package/dist/decorators/context.decorator.spec.js +73 -0
- package/dist/decorators/context.decorator.spec.js.map +1 -0
- package/dist/decorators/index.d.ts +10 -0
- package/dist/decorators/index.js +27 -0
- package/dist/decorators/index.js.map +1 -0
- package/dist/decorators/input.decorator.d.ts +1 -0
- package/dist/decorators/input.decorator.js +22 -0
- package/dist/decorators/input.decorator.js.map +1 -0
- package/dist/decorators/input.decorator.spec.d.ts +1 -0
- package/dist/decorators/input.decorator.spec.js +71 -0
- package/dist/decorators/input.decorator.spec.js.map +1 -0
- package/dist/decorators/middlewares.decorator.d.ts +2 -0
- package/dist/decorators/middlewares.decorator.js +23 -0
- package/dist/decorators/middlewares.decorator.js.map +1 -0
- package/dist/decorators/middlewares.decorator.spec.d.ts +1 -0
- package/dist/decorators/middlewares.decorator.spec.js +76 -0
- package/dist/decorators/middlewares.decorator.spec.js.map +1 -0
- package/dist/decorators/mutation.decorator.d.ts +5 -0
- package/dist/decorators/mutation.decorator.js +14 -0
- package/dist/decorators/mutation.decorator.js.map +1 -0
- package/dist/decorators/mutation.decorator.spec.d.ts +1 -0
- package/dist/decorators/mutation.decorator.spec.js +88 -0
- package/dist/decorators/mutation.decorator.spec.js.map +1 -0
- package/dist/decorators/options.decorator.d.ts +1 -0
- package/dist/decorators/options.decorator.js +21 -0
- package/dist/decorators/options.decorator.js.map +1 -0
- package/dist/decorators/options.decorator.spec.d.ts +1 -0
- package/dist/decorators/options.decorator.spec.js +68 -0
- package/dist/decorators/options.decorator.spec.js.map +1 -0
- package/dist/decorators/path.decorator.d.ts +1 -0
- package/dist/decorators/path.decorator.js +21 -0
- package/dist/decorators/path.decorator.js.map +1 -0
- package/dist/decorators/query.decorator.d.ts +5 -0
- package/dist/decorators/query.decorator.js +14 -0
- package/dist/decorators/query.decorator.js.map +1 -0
- package/dist/decorators/raw-input.decorator.d.ts +1 -0
- package/dist/decorators/raw-input.decorator.js +21 -0
- package/dist/decorators/raw-input.decorator.js.map +1 -0
- package/dist/decorators/router.decorator.d.ts +3 -0
- package/dist/decorators/router.decorator.js +10 -0
- package/dist/decorators/router.decorator.js.map +1 -0
- package/dist/decorators/type.decorator.d.ts +1 -0
- package/dist/decorators/type.decorator.js +21 -0
- package/dist/decorators/type.decorator.js.map +1 -0
- package/dist/factories/__tests__/middleware.factory.spec.d.ts +1 -0
- package/dist/factories/__tests__/middleware.factory.spec.js +66 -0
- package/dist/factories/__tests__/middleware.factory.spec.js.map +1 -0
- package/dist/factories/__tests__/procedure.factory.spec.d.ts +1 -0
- package/dist/factories/__tests__/procedure.factory.spec.js +179 -0
- package/dist/factories/__tests__/procedure.factory.spec.js.map +1 -0
- package/dist/factories/__tests__/router.factory.spec.d.ts +1 -0
- package/dist/factories/__tests__/router.factory.spec.js +223 -0
- package/dist/factories/__tests__/router.factory.spec.js.map +1 -0
- package/dist/factories/__tests__/trpc.factory.spec.d.ts +1 -0
- package/dist/factories/__tests__/trpc.factory.spec.js +60 -0
- package/dist/factories/__tests__/trpc.factory.spec.js.map +1 -0
- package/dist/factories/middleware.factory.d.ts +7 -0
- package/dist/factories/middleware.factory.js +42 -0
- package/dist/factories/middleware.factory.js.map +1 -0
- package/dist/factories/procedure.factory.d.ts +17 -0
- package/dist/factories/procedure.factory.js +123 -0
- package/dist/factories/procedure.factory.js.map +1 -0
- package/dist/factories/router.factory.d.ts +9 -0
- package/dist/factories/router.factory.js +71 -0
- package/dist/factories/router.factory.js.map +1 -0
- package/dist/factories/trpc.factory.d.ts +10 -0
- package/dist/factories/trpc.factory.js +39 -0
- package/dist/factories/trpc.factory.js.map +1 -0
- package/dist/generators/__tests__/context.generator.spec.d.ts +1 -0
- package/dist/generators/__tests__/context.generator.spec.js +70 -0
- package/dist/generators/__tests__/context.generator.spec.js.map +1 -0
- package/dist/generators/__tests__/decorator.generator.spec.d.ts +1 -0
- package/dist/generators/__tests__/decorator.generator.spec.js +84 -0
- package/dist/generators/__tests__/decorator.generator.spec.js.map +1 -0
- package/dist/generators/__tests__/middleware.generator.spec.d.ts +1 -0
- package/dist/generators/__tests__/middleware.generator.spec.js +71 -0
- package/dist/generators/__tests__/middleware.generator.spec.js.map +1 -0
- package/dist/generators/__tests__/router.generator.spec.d.ts +1 -0
- package/dist/generators/__tests__/router.generator.spec.js +172 -0
- package/dist/generators/__tests__/router.generator.spec.js.map +1 -0
- package/dist/generators/__tests__/trpc.generator.spec.d.ts +1 -0
- package/dist/generators/__tests__/trpc.generator.spec.js +170 -0
- package/dist/generators/__tests__/trpc.generator.spec.js.map +1 -0
- package/dist/generators/context.generator.d.ts +9 -0
- package/dist/generators/context.generator.js +89 -0
- package/dist/generators/context.generator.js.map +1 -0
- package/dist/generators/context.handler.d.ts +9 -0
- package/dist/generators/context.handler.js +89 -0
- package/dist/generators/context.handler.js.map +1 -0
- package/dist/generators/decorator.generator.d.ts +7 -0
- package/dist/generators/decorator.generator.js +74 -0
- package/dist/generators/decorator.generator.js.map +1 -0
- package/dist/generators/decorator.handler.d.ts +11 -0
- package/dist/generators/decorator.handler.js +80 -0
- package/dist/generators/decorator.handler.js.map +1 -0
- package/dist/generators/middleware.generator.d.ts +12 -0
- package/dist/generators/middleware.generator.js +108 -0
- package/dist/generators/middleware.generator.js.map +1 -0
- package/dist/generators/middleware.handler.d.ts +12 -0
- package/dist/generators/middleware.handler.js +105 -0
- package/dist/generators/middleware.handler.js.map +1 -0
- package/dist/generators/router.generator.d.ts +9 -0
- package/dist/generators/router.generator.js +84 -0
- package/dist/generators/router.generator.js.map +1 -0
- package/dist/generators/serializer.handler.d.ts +11 -0
- package/dist/generators/serializer.handler.js +87 -0
- package/dist/generators/serializer.handler.js.map +1 -0
- package/dist/generators/trpc.generator.d.ts +19 -0
- package/dist/generators/trpc.generator.js +139 -0
- package/dist/generators/trpc.generator.js.map +1 -0
- package/dist/generators/types/index.ts +1 -0
- package/dist/handlers/context.handler.d.ts +9 -0
- package/dist/handlers/context.handler.js +89 -0
- package/dist/handlers/context.handler.js.map +1 -0
- package/dist/handlers/decorator.handler.d.ts +11 -0
- package/dist/handlers/decorator.handler.js +80 -0
- package/dist/handlers/decorator.handler.js.map +1 -0
- package/dist/handlers/middleware.handler.d.ts +12 -0
- package/dist/handlers/middleware.handler.js +105 -0
- package/dist/handlers/middleware.handler.js.map +1 -0
- package/dist/handlers/serializer.handler.d.ts +11 -0
- package/dist/handlers/serializer.handler.js +87 -0
- package/dist/handlers/serializer.handler.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/context.interface.d.ts +5 -0
- package/dist/interfaces/context.interface.js +3 -0
- package/dist/interfaces/context.interface.js.map +1 -0
- package/dist/interfaces/factory.interface.d.ts +59 -0
- package/dist/interfaces/factory.interface.js +13 -0
- package/dist/interfaces/factory.interface.js.map +1 -0
- package/dist/interfaces/generator.interface.d.ts +21 -0
- package/dist/interfaces/generator.interface.js +3 -0
- package/dist/interfaces/generator.interface.js.map +1 -0
- package/dist/interfaces/index.d.ts +4 -0
- package/dist/interfaces/index.js +21 -0
- package/dist/interfaces/index.js.map +1 -0
- package/dist/interfaces/middleware.interface.d.ts +19 -0
- package/dist/interfaces/middleware.interface.js +3 -0
- package/dist/interfaces/middleware.interface.js.map +1 -0
- package/dist/interfaces/module-options.interface.d.ts +14 -0
- package/dist/interfaces/module-options.interface.js +3 -0
- package/dist/interfaces/module-options.interface.js.map +1 -0
- package/dist/interfaces/procedure-options.interface.d.ts +7 -0
- package/dist/interfaces/procedure-options.interface.js +3 -0
- package/dist/interfaces/procedure-options.interface.js.map +1 -0
- package/dist/trpc.constants.d.ts +7 -0
- package/dist/trpc.constants.js +11 -0
- package/dist/trpc.constants.js.map +1 -0
- package/dist/trpc.driver.d.ts +14 -0
- package/dist/trpc.driver.js +85 -0
- package/dist/trpc.driver.js.map +1 -0
- package/dist/trpc.enum.d.ts +4 -0
- package/dist/trpc.enum.js +9 -0
- package/dist/trpc.enum.js.map +1 -0
- package/dist/trpc.generator.d.ts +24 -0
- package/dist/trpc.generator.js +114 -0
- package/dist/trpc.generator.js.map +1 -0
- package/dist/trpc.module.d.ts +10 -0
- package/dist/trpc.module.js +93 -0
- package/dist/trpc.module.js.map +1 -0
- package/dist/types/index.ts +5 -0
- package/dist/utils/__tests__/file.util.spec.d.ts +1 -0
- package/dist/utils/__tests__/file.util.spec.js +73 -0
- package/dist/utils/__tests__/file.util.spec.js.map +1 -0
- package/dist/utils/file.util.d.ts +5 -0
- package/dist/utils/file.util.js +61 -0
- package/dist/utils/file.util.js.map +1 -0
- package/dist/utils/type.util.d.ts +5 -0
- package/dist/utils/type.util.js +72 -0
- package/dist/utils/type.util.js.map +1 -0
- package/dist/utils/validate-each.util.d.ts +8 -0
- package/dist/utils/validate-each.util.js +26 -0
- package/dist/utils/validate-each.util.js.map +1 -0
- package/package.json +103 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { OnModuleInit } from '@nestjs/common';
|
|
2
|
+
import { TRPCContext } from '../interfaces';
|
|
3
|
+
import type { Class } from 'type-fest';
|
|
4
|
+
export declare class TRPCGenerator implements OnModuleInit {
|
|
5
|
+
private project;
|
|
6
|
+
private readonly APP_ROUTER_OUTPUT_FILE;
|
|
7
|
+
private readonly HELPER_TYPES_OUTPUT_FILE;
|
|
8
|
+
private readonly HELPER_TYPES_OUTPUT_PATH;
|
|
9
|
+
private readonly consoleLogger;
|
|
10
|
+
private readonly middlewareHandler;
|
|
11
|
+
private readonly contextHandler;
|
|
12
|
+
private readonly serializerHandler;
|
|
13
|
+
private readonly routerFactory;
|
|
14
|
+
private readonly procedureFactory;
|
|
15
|
+
private readonly middlewareFactory;
|
|
16
|
+
onModuleInit(): void;
|
|
17
|
+
generateSchemaFile(outputDirPath: string): Promise<void>;
|
|
18
|
+
generateHelpersFile(context?: Class<TRPCContext>): Promise<void>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,139 @@
|
|
|
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 __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
12
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
13
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
14
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
15
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
16
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
17
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
exports.TRPCGenerator = void 0;
|
|
22
|
+
const path = require("node:path");
|
|
23
|
+
const common_1 = require("@nestjs/common");
|
|
24
|
+
const ts_morph_1 = require("ts-morph");
|
|
25
|
+
const file_util_1 = require("../utils/file.util");
|
|
26
|
+
const router_generator_1 = require("./router.generator");
|
|
27
|
+
const middleware_generator_1 = require("./middleware.generator");
|
|
28
|
+
const context_generator_1 = require("./context.generator");
|
|
29
|
+
const router_factory_1 = require("../factories/router.factory");
|
|
30
|
+
const middleware_factory_1 = require("../factories/middleware.factory");
|
|
31
|
+
const procedure_factory_1 = require("../factories/procedure.factory");
|
|
32
|
+
let TRPCGenerator = class TRPCGenerator {
|
|
33
|
+
constructor() {
|
|
34
|
+
this.APP_ROUTER_OUTPUT_FILE = 'server.ts';
|
|
35
|
+
this.HELPER_TYPES_OUTPUT_FILE = 'index.ts';
|
|
36
|
+
this.HELPER_TYPES_OUTPUT_PATH = path.join(__dirname, 'types');
|
|
37
|
+
}
|
|
38
|
+
onModuleInit() {
|
|
39
|
+
const defaultCompilerOptions = {
|
|
40
|
+
target: ts_morph_1.ScriptTarget.ES2019,
|
|
41
|
+
module: ts_morph_1.ModuleKind.CommonJS,
|
|
42
|
+
emitDecoratorMetadata: true,
|
|
43
|
+
experimentalDecorators: true,
|
|
44
|
+
esModuleInterop: true,
|
|
45
|
+
};
|
|
46
|
+
this.project = new ts_morph_1.Project({ compilerOptions: defaultCompilerOptions });
|
|
47
|
+
}
|
|
48
|
+
generateSchemaFile(outputDirPath) {
|
|
49
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
+
try {
|
|
51
|
+
const routers = this.routerFactory.getRouters();
|
|
52
|
+
const mappedRoutesAndProcedures = routers.map((route) => {
|
|
53
|
+
const { instance, name, alias } = route;
|
|
54
|
+
const prototype = Object.getPrototypeOf(instance);
|
|
55
|
+
const procedures = this.procedureFactory.getProcedures(instance, prototype);
|
|
56
|
+
return { name, alias, instance: Object.assign({}, route), procedures };
|
|
57
|
+
});
|
|
58
|
+
const appRouterSourceFile = this.project.createSourceFile(path.resolve(outputDirPath, this.APP_ROUTER_OUTPUT_FILE), undefined, { overwrite: true });
|
|
59
|
+
(0, file_util_1.generateStaticDeclaration)(appRouterSourceFile);
|
|
60
|
+
const routersMetadata = yield this.serializerHandler.serializeRouters(mappedRoutesAndProcedures, this.project);
|
|
61
|
+
const routersStringDeclarations = this.serializerHandler.generateRoutersStringFromMetadata(routersMetadata);
|
|
62
|
+
appRouterSourceFile.addStatements(`
|
|
63
|
+
const appRouter = t.router({${routersStringDeclarations}});
|
|
64
|
+
export type AppRouter = typeof appRouter;
|
|
65
|
+
`);
|
|
66
|
+
yield (0, file_util_1.saveOrOverrideFile)(appRouterSourceFile);
|
|
67
|
+
this.consoleLogger.log(`AppRouter has been updated successfully at "${outputDirPath}/${this.APP_ROUTER_OUTPUT_FILE}".`, 'TRPC Generator');
|
|
68
|
+
}
|
|
69
|
+
catch (e) {
|
|
70
|
+
this.consoleLogger.warn('TRPC Generator encountered an error.', e);
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
generateHelpersFile(context) {
|
|
75
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
76
|
+
try {
|
|
77
|
+
const middlewares = this.middlewareFactory.getMiddlewares();
|
|
78
|
+
const helperTypesSourceFile = this.project.createSourceFile(path.resolve(this.HELPER_TYPES_OUTPUT_PATH, this.HELPER_TYPES_OUTPUT_FILE), undefined, { overwrite: true });
|
|
79
|
+
if (context != null) {
|
|
80
|
+
const contextType = yield this.contextHandler.getContextInterface(context, this.project);
|
|
81
|
+
helperTypesSourceFile.addTypeAlias({
|
|
82
|
+
isExported: true,
|
|
83
|
+
name: 'Context',
|
|
84
|
+
type: contextType !== null && contextType !== void 0 ? contextType : '{}',
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
for (const middleware of middlewares) {
|
|
88
|
+
const middlewareInterface = yield this.middlewareHandler.getMiddlewareInterface(middleware, this.project);
|
|
89
|
+
if (middlewareInterface != null) {
|
|
90
|
+
helperTypesSourceFile.addInterface({
|
|
91
|
+
isExported: true,
|
|
92
|
+
name: `${middlewareInterface.name}Context`,
|
|
93
|
+
extends: ['Context'],
|
|
94
|
+
properties: middlewareInterface.properties,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
yield (0, file_util_1.saveOrOverrideFile)(helperTypesSourceFile);
|
|
99
|
+
this.consoleLogger.log(`Helper types has been updated successfully at "nestjs-trpc/types".`, 'TRPC Generator');
|
|
100
|
+
}
|
|
101
|
+
catch (e) {
|
|
102
|
+
this.consoleLogger.warn('TRPC Generator encountered an error.', e);
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
__decorate([
|
|
108
|
+
(0, common_1.Inject)(common_1.ConsoleLogger),
|
|
109
|
+
__metadata("design:type", common_1.ConsoleLogger)
|
|
110
|
+
], TRPCGenerator.prototype, "consoleLogger", void 0);
|
|
111
|
+
__decorate([
|
|
112
|
+
(0, common_1.Inject)(middleware_generator_1.MiddlewareGenerator),
|
|
113
|
+
__metadata("design:type", middleware_generator_1.MiddlewareGenerator)
|
|
114
|
+
], TRPCGenerator.prototype, "middlewareHandler", void 0);
|
|
115
|
+
__decorate([
|
|
116
|
+
(0, common_1.Inject)(context_generator_1.ContextGenerator),
|
|
117
|
+
__metadata("design:type", context_generator_1.ContextGenerator)
|
|
118
|
+
], TRPCGenerator.prototype, "contextHandler", void 0);
|
|
119
|
+
__decorate([
|
|
120
|
+
(0, common_1.Inject)(router_generator_1.RouterGenerator),
|
|
121
|
+
__metadata("design:type", router_generator_1.RouterGenerator)
|
|
122
|
+
], TRPCGenerator.prototype, "serializerHandler", void 0);
|
|
123
|
+
__decorate([
|
|
124
|
+
(0, common_1.Inject)(router_factory_1.RouterFactory),
|
|
125
|
+
__metadata("design:type", router_factory_1.RouterFactory)
|
|
126
|
+
], TRPCGenerator.prototype, "routerFactory", void 0);
|
|
127
|
+
__decorate([
|
|
128
|
+
(0, common_1.Inject)(procedure_factory_1.ProcedureFactory),
|
|
129
|
+
__metadata("design:type", procedure_factory_1.ProcedureFactory)
|
|
130
|
+
], TRPCGenerator.prototype, "procedureFactory", void 0);
|
|
131
|
+
__decorate([
|
|
132
|
+
(0, common_1.Inject)(middleware_factory_1.MiddlewareFactory),
|
|
133
|
+
__metadata("design:type", middleware_factory_1.MiddlewareFactory)
|
|
134
|
+
], TRPCGenerator.prototype, "middlewareFactory", void 0);
|
|
135
|
+
TRPCGenerator = __decorate([
|
|
136
|
+
(0, common_1.Injectable)()
|
|
137
|
+
], TRPCGenerator);
|
|
138
|
+
exports.TRPCGenerator = TRPCGenerator;
|
|
139
|
+
//# sourceMappingURL=trpc.generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trpc.generator.js","sourceRoot":"","sources":["../../src/generators/trpc.generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Project } from 'ts-morph';
|
|
2
|
+
import type { TRPCContext } from '../interfaces';
|
|
3
|
+
import type { Class } from 'type-fest';
|
|
4
|
+
export declare class ContextHandler {
|
|
5
|
+
getContextInterface(context: Class<TRPCContext>, project: Project): Promise<string | null>;
|
|
6
|
+
private extractReturnTypeFromCreateMethod;
|
|
7
|
+
private isPromiseType;
|
|
8
|
+
private getClassDeclaration;
|
|
9
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
9
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
10
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
11
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
12
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
13
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
14
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
15
|
+
});
|
|
16
|
+
};
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.ContextHandler = void 0;
|
|
19
|
+
const ts_morph_1 = require("ts-morph");
|
|
20
|
+
const common_1 = require("@nestjs/common");
|
|
21
|
+
const func_loc_1 = require("func-loc");
|
|
22
|
+
let ContextHandler = class ContextHandler {
|
|
23
|
+
getContextInterface(context, project) {
|
|
24
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
const className = context === null || context === void 0 ? void 0 : context.name;
|
|
26
|
+
if (!className) {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
const contextInstance = new context();
|
|
30
|
+
if (typeof contextInstance.create !== 'function') {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
const contextFileLocation = yield (0, func_loc_1.locate)(contextInstance.create, {
|
|
34
|
+
sourceMap: true,
|
|
35
|
+
});
|
|
36
|
+
const contextSourceFile = project.addSourceFileAtPath(contextFileLocation.path);
|
|
37
|
+
const classDeclaration = this.getClassDeclaration(contextSourceFile, context.name);
|
|
38
|
+
if (!classDeclaration) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
const createMethod = classDeclaration.getMethod('create');
|
|
42
|
+
if (!createMethod) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
const ctxType = this.extractReturnTypeFromCreateMethod(createMethod);
|
|
46
|
+
if (!ctxType) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
return ctxType.getText();
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
extractReturnTypeFromCreateMethod(createMethod) {
|
|
53
|
+
const body = createMethod.getBody();
|
|
54
|
+
if (!body)
|
|
55
|
+
return null;
|
|
56
|
+
const returnStatement = body
|
|
57
|
+
.getDescendantsOfKind(ts_morph_1.SyntaxKind.ReturnStatement)
|
|
58
|
+
.find((statement) => statement.getExpression() !== undefined);
|
|
59
|
+
if (!returnStatement)
|
|
60
|
+
return null;
|
|
61
|
+
const returnExpression = returnStatement.getExpression();
|
|
62
|
+
if (!returnExpression)
|
|
63
|
+
return null;
|
|
64
|
+
const returnType = returnExpression.getType();
|
|
65
|
+
if (this.isPromiseType(returnType)) {
|
|
66
|
+
const typeArguments = returnType.getTypeArguments();
|
|
67
|
+
return typeArguments.length > 0 ? typeArguments[0] : null;
|
|
68
|
+
}
|
|
69
|
+
return returnType;
|
|
70
|
+
}
|
|
71
|
+
isPromiseType(type) {
|
|
72
|
+
var _a, _b;
|
|
73
|
+
return (((_a = type.getSymbol()) === null || _a === void 0 ? void 0 : _a.getName()) === 'Promise' ||
|
|
74
|
+
((_b = type.getSymbol()) === null || _b === void 0 ? void 0 : _b.getName()) === '__global.Promise' ||
|
|
75
|
+
type.getText().startsWith('Promise<'));
|
|
76
|
+
}
|
|
77
|
+
getClassDeclaration(sourceFile, className) {
|
|
78
|
+
const classDeclaration = sourceFile.getClass(className);
|
|
79
|
+
if (classDeclaration) {
|
|
80
|
+
return classDeclaration;
|
|
81
|
+
}
|
|
82
|
+
return undefined;
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
ContextHandler = __decorate([
|
|
86
|
+
(0, common_1.Injectable)()
|
|
87
|
+
], ContextHandler);
|
|
88
|
+
exports.ContextHandler = ContextHandler;
|
|
89
|
+
//# sourceMappingURL=context.handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.handler.js","sourceRoot":"","sources":["../../src/handlers/context.handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Decorator, SourceFile, Project } from 'ts-morph';
|
|
2
|
+
import { DecoratorGeneratorMetadata } from '../interfaces/generator.interface';
|
|
3
|
+
import { ConsoleLogger } from '@nestjs/common';
|
|
4
|
+
import { TRPCModuleOptions } from '../interfaces';
|
|
5
|
+
export declare class DecoratorHandler {
|
|
6
|
+
private readonly consoleLogger;
|
|
7
|
+
private readonly options;
|
|
8
|
+
constructor(consoleLogger: ConsoleLogger, options: TRPCModuleOptions);
|
|
9
|
+
serializeProcedureDecorators(decorators: Decorator[], sourceFile: SourceFile, project: Project): DecoratorGeneratorMetadata[];
|
|
10
|
+
private buildSourceFileImportsMap;
|
|
11
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
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 __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.DecoratorHandler = void 0;
|
|
16
|
+
const file_util_1 = require("../utils/file.util");
|
|
17
|
+
const common_1 = require("@nestjs/common");
|
|
18
|
+
const path = require("node:path");
|
|
19
|
+
const trpc_constants_1 = require("../trpc.constants");
|
|
20
|
+
let DecoratorHandler = class DecoratorHandler {
|
|
21
|
+
constructor(consoleLogger, options) {
|
|
22
|
+
this.consoleLogger = consoleLogger;
|
|
23
|
+
this.options = options;
|
|
24
|
+
}
|
|
25
|
+
serializeProcedureDecorators(decorators, sourceFile, project) {
|
|
26
|
+
const sourceFileImportsMap = this.buildSourceFileImportsMap(sourceFile, project);
|
|
27
|
+
return decorators.reduce((array, decorator) => {
|
|
28
|
+
const decoratorName = decorator.getName();
|
|
29
|
+
if (decoratorName === 'Query' || decoratorName === 'Mutation') {
|
|
30
|
+
const input = (0, file_util_1.getDecoratorPropertyValue)(decorator, 'input', sourceFile, sourceFileImportsMap);
|
|
31
|
+
const output = (0, file_util_1.getDecoratorPropertyValue)(decorator, 'output', sourceFile, sourceFileImportsMap);
|
|
32
|
+
array.push({
|
|
33
|
+
name: decoratorName,
|
|
34
|
+
arguments: Object.assign(Object.assign({}, (input ? { input } : {})), (output ? { output } : {})),
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
else if (decoratorName === 'Middlewares') {
|
|
38
|
+
return array;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
this.consoleLogger.warn(`Decorator ${decoratorName}, not supported.`);
|
|
42
|
+
}
|
|
43
|
+
return array;
|
|
44
|
+
}, []);
|
|
45
|
+
}
|
|
46
|
+
buildSourceFileImportsMap(sourceFile, project) {
|
|
47
|
+
const sourceFileImportsMap = new Map();
|
|
48
|
+
const importDeclarations = sourceFile.getImportDeclarations();
|
|
49
|
+
for (const importDeclaration of importDeclarations) {
|
|
50
|
+
const namedImports = importDeclaration.getNamedImports();
|
|
51
|
+
for (const namedImport of namedImports) {
|
|
52
|
+
const name = namedImport.getName();
|
|
53
|
+
const moduleSpecifier = importDeclaration.getModuleSpecifierValue();
|
|
54
|
+
const resolvedPath = path.resolve(path.dirname(sourceFile.getFilePath()), moduleSpecifier + '.ts');
|
|
55
|
+
const importedSourceFile = project.addSourceFileAtPathIfExists(resolvedPath);
|
|
56
|
+
if (!importedSourceFile)
|
|
57
|
+
continue;
|
|
58
|
+
const schemaVariable = importedSourceFile.getVariableDeclaration(name);
|
|
59
|
+
if (schemaVariable) {
|
|
60
|
+
const initializer = schemaVariable.getInitializer();
|
|
61
|
+
if (initializer) {
|
|
62
|
+
sourceFileImportsMap.set(name, {
|
|
63
|
+
initializer,
|
|
64
|
+
sourceFile: importedSourceFile,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return sourceFileImportsMap;
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
DecoratorHandler = __decorate([
|
|
74
|
+
(0, common_1.Injectable)(),
|
|
75
|
+
__param(0, (0, common_1.Inject)(common_1.ConsoleLogger)),
|
|
76
|
+
__param(1, (0, common_1.Inject)(trpc_constants_1.TRPC_MODULE_OPTIONS)),
|
|
77
|
+
__metadata("design:paramtypes", [common_1.ConsoleLogger, Object])
|
|
78
|
+
], DecoratorHandler);
|
|
79
|
+
exports.DecoratorHandler = DecoratorHandler;
|
|
80
|
+
//# sourceMappingURL=decorator.handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorator.handler.js","sourceRoot":"","sources":["../../src/handlers/decorator.handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Project, OptionalKind, PropertySignatureStructure } from 'ts-morph';
|
|
2
|
+
import { TRPCMiddleware } from '../interfaces';
|
|
3
|
+
import type { Class } from 'type-fest';
|
|
4
|
+
export declare class MiddlewareHandler {
|
|
5
|
+
getMiddlewareInterface(middleware: Class<TRPCMiddleware>, project: Project): Promise<{
|
|
6
|
+
name: string;
|
|
7
|
+
properties: Array<OptionalKind<PropertySignatureStructure>>;
|
|
8
|
+
} | null>;
|
|
9
|
+
private extractCtxTypeFromUseMethod;
|
|
10
|
+
private getClassDeclaration;
|
|
11
|
+
private typeToProperties;
|
|
12
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
9
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
10
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
11
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
12
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
13
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
14
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
15
|
+
});
|
|
16
|
+
};
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.MiddlewareHandler = void 0;
|
|
19
|
+
const ts_morph_1 = require("ts-morph");
|
|
20
|
+
const common_1 = require("@nestjs/common");
|
|
21
|
+
const func_loc_1 = require("func-loc");
|
|
22
|
+
let MiddlewareHandler = class MiddlewareHandler {
|
|
23
|
+
getMiddlewareInterface(middleware, project) {
|
|
24
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
const className = middleware.name;
|
|
26
|
+
if (!className) {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
const middlewareInstance = new middleware();
|
|
30
|
+
if (typeof middlewareInstance.use !== 'function') {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
const contextFileLocation = yield (0, func_loc_1.locate)(middlewareInstance.use, {
|
|
34
|
+
sourceMap: true,
|
|
35
|
+
});
|
|
36
|
+
const contextSourceFile = project.addSourceFileAtPath(contextFileLocation.path);
|
|
37
|
+
const classDeclaration = this.getClassDeclaration(contextSourceFile, middleware.name);
|
|
38
|
+
if (!classDeclaration) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
const useMethod = classDeclaration.getMethod('use');
|
|
42
|
+
if (!useMethod) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
const ctxType = this.extractCtxTypeFromUseMethod(useMethod);
|
|
46
|
+
if (!ctxType) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
name: className,
|
|
51
|
+
properties: this.typeToProperties(ctxType),
|
|
52
|
+
};
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
extractCtxTypeFromUseMethod(useMethod) {
|
|
56
|
+
var _a;
|
|
57
|
+
const body = useMethod.getBody();
|
|
58
|
+
if (!body)
|
|
59
|
+
return null;
|
|
60
|
+
const nextCall = body
|
|
61
|
+
.getDescendantsOfKind(ts_morph_1.SyntaxKind.CallExpression)
|
|
62
|
+
.find((call) => {
|
|
63
|
+
const expression = call.getExpression();
|
|
64
|
+
return (ts_morph_1.Node.isPropertyAccessExpression(expression) &&
|
|
65
|
+
expression.getName() === 'next' &&
|
|
66
|
+
ts_morph_1.Node.isIdentifier(expression.getExpression()) &&
|
|
67
|
+
expression.getExpression().getText() === 'opts');
|
|
68
|
+
});
|
|
69
|
+
if (!nextCall)
|
|
70
|
+
return null;
|
|
71
|
+
const nextArg = nextCall.getArguments()[0];
|
|
72
|
+
if (!ts_morph_1.Node.isObjectLiteralExpression(nextArg))
|
|
73
|
+
return null;
|
|
74
|
+
const ctxProperty = nextArg
|
|
75
|
+
.getProperties()
|
|
76
|
+
.find((prop) => ts_morph_1.Node.isPropertyAssignment(prop) && prop.getName() === 'ctx');
|
|
77
|
+
if (!ts_morph_1.Node.isPropertyAssignment(ctxProperty))
|
|
78
|
+
return null;
|
|
79
|
+
return ((_a = ctxProperty.getInitializer()) === null || _a === void 0 ? void 0 : _a.getType()) || null;
|
|
80
|
+
}
|
|
81
|
+
getClassDeclaration(sourceFile, className) {
|
|
82
|
+
const classDeclaration = sourceFile.getClass(className);
|
|
83
|
+
if (classDeclaration) {
|
|
84
|
+
return classDeclaration;
|
|
85
|
+
}
|
|
86
|
+
return undefined;
|
|
87
|
+
}
|
|
88
|
+
typeToProperties(type) {
|
|
89
|
+
const properties = [];
|
|
90
|
+
if (type.isObject()) {
|
|
91
|
+
type.getProperties().forEach((prop) => {
|
|
92
|
+
properties.push({
|
|
93
|
+
name: prop.getName(),
|
|
94
|
+
type: prop.getTypeAtLocation(prop.getValueDeclaration()).getText(),
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
return properties;
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
MiddlewareHandler = __decorate([
|
|
102
|
+
(0, common_1.Injectable)()
|
|
103
|
+
], MiddlewareHandler);
|
|
104
|
+
exports.MiddlewareHandler = MiddlewareHandler;
|
|
105
|
+
//# sourceMappingURL=middleware.handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware.handler.js","sourceRoot":"","sources":["../../src/handlers/middleware.handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Project } from 'ts-morph';
|
|
2
|
+
import { RouterGeneratorMetadata } from '../interfaces/generator.interface';
|
|
3
|
+
import { RoutersFactoryMetadata } from '../interfaces/factory.interface';
|
|
4
|
+
import { DecoratorHandler } from './decorator.handler';
|
|
5
|
+
export declare class SerializerHandler {
|
|
6
|
+
private readonly decoratorHandler;
|
|
7
|
+
constructor(decoratorHandler: DecoratorHandler);
|
|
8
|
+
serializeRouters(routers: RoutersFactoryMetadata[], project: Project): Promise<RouterGeneratorMetadata[]>;
|
|
9
|
+
private serializeRouterProcedures;
|
|
10
|
+
generateRoutersStringFromMetadata(routers: RouterGeneratorMetadata[]): string;
|
|
11
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
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 __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
15
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
16
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
17
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
18
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
19
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
20
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
exports.SerializerHandler = void 0;
|
|
25
|
+
const func_loc_1 = require("func-loc");
|
|
26
|
+
const decorator_handler_1 = require("./decorator.handler");
|
|
27
|
+
const type_util_1 = require("../utils/type.util");
|
|
28
|
+
const common_1 = require("@nestjs/common");
|
|
29
|
+
const lodash_1 = require("lodash");
|
|
30
|
+
let SerializerHandler = class SerializerHandler {
|
|
31
|
+
constructor(decoratorHandler) {
|
|
32
|
+
this.decoratorHandler = decoratorHandler;
|
|
33
|
+
}
|
|
34
|
+
serializeRouters(routers, project) {
|
|
35
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
36
|
+
return Promise.all(routers.map((router) => __awaiter(this, void 0, void 0, function* () {
|
|
37
|
+
const proceduresMetadata = yield Promise.all(router.procedures.map((procedure) => __awaiter(this, void 0, void 0, function* () { return this.serializeRouterProcedures(procedure, router.name, project); })));
|
|
38
|
+
return {
|
|
39
|
+
name: router.name,
|
|
40
|
+
alias: router.alias,
|
|
41
|
+
procedures: proceduresMetadata,
|
|
42
|
+
};
|
|
43
|
+
})));
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
serializeRouterProcedures(procedure, routerName, project) {
|
|
47
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
48
|
+
const location = yield (0, func_loc_1.locate)(procedure.implementation, {
|
|
49
|
+
sourceMap: true,
|
|
50
|
+
});
|
|
51
|
+
const sourceFile = project.addSourceFileAtPath(location.path);
|
|
52
|
+
const classDeclaration = sourceFile.getClass(routerName);
|
|
53
|
+
if (!classDeclaration) {
|
|
54
|
+
throw new Error(`Could not find router ${routerName}, class declaration.`);
|
|
55
|
+
}
|
|
56
|
+
const methodDeclaration = classDeclaration.getMethod(procedure.name);
|
|
57
|
+
if (!methodDeclaration) {
|
|
58
|
+
throw new Error(`Could not find ${routerName}, method declarations.`);
|
|
59
|
+
}
|
|
60
|
+
const decorators = methodDeclaration.getDecorators();
|
|
61
|
+
if (!decorators) {
|
|
62
|
+
throw new Error(`could not find ${methodDeclaration.getName()}, method decorators.`);
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
name: procedure.name,
|
|
66
|
+
decorators: this.decoratorHandler.serializeProcedureDecorators(decorators, sourceFile, project),
|
|
67
|
+
};
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
generateRoutersStringFromMetadata(routers) {
|
|
71
|
+
return routers
|
|
72
|
+
.map((router) => {
|
|
73
|
+
const { name, procedures, alias } = router;
|
|
74
|
+
return `${alias !== null && alias !== void 0 ? alias : (0, lodash_1.camelCase)(name)}: { ${procedures
|
|
75
|
+
.map(type_util_1.generateProcedureString)
|
|
76
|
+
.join(',\n')} }`;
|
|
77
|
+
})
|
|
78
|
+
.join(',\n');
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
SerializerHandler = __decorate([
|
|
82
|
+
(0, common_1.Injectable)(),
|
|
83
|
+
__param(0, (0, common_1.Inject)(decorator_handler_1.DecoratorHandler)),
|
|
84
|
+
__metadata("design:paramtypes", [decorator_handler_1.DecoratorHandler])
|
|
85
|
+
], SerializerHandler);
|
|
86
|
+
exports.SerializerHandler = SerializerHandler;
|
|
87
|
+
//# sourceMappingURL=serializer.handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializer.handler.js","sourceRoot":"","sources":["../../src/handlers/serializer.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAkC;AAUlC,2DAAuD;AACvD,kDAA6D;AAC7D,2CAAoD;AACpD,mCAAmC;AAEnC,IACa,iBAAiB,GAD9B,MACa,iBAAiB;IAC5B,YAEmB,gBAAkC;QAAlC,qBAAgB,GAAhB,gBAAgB,CAAkB;IAClD,CAAC;IAES,gBAAgB,CAC3B,OAAiC,EACjC,OAAgB;;YAEhB,OAAO,OAAO,CAAC,GAAG,CAChB,OAAO,CAAC,GAAG,CAAC,CAAO,MAAM,EAAE,EAAE;gBAC3B,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,GAAG,CAC1C,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAO,SAAS,EAAE,EAAE,gDACxC,OAAA,IAAI,CAAC,yBAAyB,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA,GAAA,CAChE,CACF,CAAC;gBAEF,OAAO;oBACL,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,UAAU,EAAE,kBAAkB;iBAC/B,CAAC;YACJ,CAAC,CAAA,CAAC,CACH,CAAC;QACJ,CAAC;KAAA;IAEa,yBAAyB,CACrC,SAAmC,EACnC,UAAkB,EAClB,OAAgB;;YAEhB,MAAM,QAAQ,GAAG,MAAM,IAAA,iBAAM,EAAC,SAAS,CAAC,cAAc,EAAE;gBACtD,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;YACH,MAAM,UAAU,GAAG,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC9D,MAAM,gBAAgB,GAAG,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAEzD,IAAI,CAAC,gBAAgB,EAAE;gBACrB,MAAM,IAAI,KAAK,CACb,yBAAyB,UAAU,sBAAsB,CAC1D,CAAC;aACH;YAED,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAErE,IAAI,CAAC,iBAAiB,EAAE;gBACtB,MAAM,IAAI,KAAK,CAAC,kBAAkB,UAAU,wBAAwB,CAAC,CAAC;aACvE;YAED,MAAM,UAAU,GAAG,iBAAiB,CAAC,aAAa,EAAE,CAAC;YAErD,IAAI,CAAC,UAAU,EAAE;gBACf,MAAM,IAAI,KAAK,CACb,kBAAkB,iBAAiB,CAAC,OAAO,EAAE,sBAAsB,CACpE,CAAC;aACH;YAED,OAAO;gBACL,IAAI,EAAE,SAAS,CAAC,IAAI;gBACpB,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,4BAA4B,CAC5D,UAAU,EACV,UAAU,EACV,OAAO,CACR;aACF,CAAC;QACJ,CAAC;KAAA;IAEM,iCAAiC,CACtC,OAAkC;QAElC,OAAO,OAAO;aACX,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACd,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;YAC3C,OAAO,GAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,IAAA,kBAAS,EAAC,IAAI,CAAC,OAAO,UAAU;iBAChD,GAAG,CAAC,mCAAuB,CAAC;iBAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QACrB,CAAC,CAAC;aACD,IAAI,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;CACF,CAAA;AAhFY,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,eAAM,EAAC,oCAAgB,CAAC,CAAA;qCACU,oCAAgB;GAH1C,iBAAiB,CAgF7B;AAhFY,8CAAiB"}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./trpc.module"), exports);
|
|
18
|
+
__exportStar(require("./interfaces"), exports);
|
|
19
|
+
__exportStar(require("./decorators"), exports);
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,+CAA6B;AAC7B,+CAA6B"}
|