@buildvision/nest-sdk-generator 1.2.2 → 2.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/.eslintrc.js +63 -0
- package/README.md +2 -2
- package/build/analyzer/classdeps.js +1 -1
- package/build/analyzer/controller.d.ts +4 -4
- package/build/analyzer/controller.js +3 -3
- package/build/analyzer/controllers.d.ts +1 -1
- package/build/analyzer/controllers.js +10 -2
- package/build/analyzer/decorator.d.ts +2 -2
- package/build/analyzer/decorator.js +19 -19
- package/build/analyzer/extractor.d.ts +4 -4
- package/build/analyzer/extractor.js +6 -17
- package/build/analyzer/index.d.ts +1 -1
- package/build/analyzer/index.js +2 -2
- package/build/analyzer/methods.d.ts +7 -7
- package/build/analyzer/methods.js +6 -9
- package/build/analyzer/module.js +2 -2
- package/build/analyzer/params.d.ts +59 -17
- package/build/analyzer/params.js +150 -129
- package/build/analyzer/route.d.ts +5 -2
- package/build/analyzer/route.js +13 -7
- package/build/analyzer/typedeps.d.ts +6 -6
- package/build/analyzer/typedeps.js +3 -3
- package/build/bin.js +9 -13
- package/build/config.d.ts +29 -19
- package/build/config.js +2 -2
- package/build/generator/genmodules.d.ts +33 -10
- package/build/generator/genmodules.js +165 -113
- package/build/generator/gentypes.js +1 -1
- package/build/generator/index.d.ts +1 -1
- package/build/generator/index.js +23 -22
- package/build/generator/prettier.d.ts +1 -1
- package/build/generator/prettier.js +2 -2
- package/build/generator/sdk-interface.d.ts +1 -1
- package/build/generator/sdk-interface.js +5 -5
- package/build/logging.js +4 -2
- package/build/rtk-query-generator/genmodules.d.ts +54 -0
- package/build/rtk-query-generator/genmodules.js +252 -0
- package/build/rtk-query-generator/gentypes.d.ts +10 -0
- package/build/rtk-query-generator/gentypes.js +62 -0
- package/build/rtk-query-generator/index.d.ts +6 -0
- package/build/rtk-query-generator/index.js +84 -0
- package/build/rtk-query-generator/prettier.d.ts +16 -0
- package/build/rtk-query-generator/prettier.js +43 -0
- package/build/rtk-query-generator/sdk-interface.d.ts +1 -0
- package/build/rtk-query-generator/sdk-interface.js +36 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/utils.js +1 -1
- package/bun.lockb +0 -0
- package/package.json +16 -5
- package/src/analyzer/classdeps.ts +3 -0
- package/src/analyzer/controller.ts +12 -6
- package/src/analyzer/controllers.ts +16 -1
- package/src/analyzer/extractor.ts +12 -23
- package/src/analyzer/index.ts +5 -2
- package/src/analyzer/methods.ts +12 -13
- package/src/analyzer/module.ts +4 -10
- package/src/analyzer/params.ts +212 -182
- package/src/analyzer/route.ts +10 -4
- package/src/analyzer/typedeps.ts +13 -11
- package/src/bin.ts +11 -13
- package/src/config.ts +35 -24
- package/src/generator/genmodules.ts +212 -129
- package/src/generator/gentypes.ts +1 -0
- package/src/generator/index.ts +23 -23
- package/src/generator/prettier.ts +4 -2
- package/src/logging.ts +4 -1
- package/src/rtk-query-generator/genmodules.ts +335 -0
- package/src/rtk-query-generator/gentypes.ts +74 -0
- package/src/rtk-query-generator/index.ts +92 -0
- package/src/rtk-query-generator/prettier.ts +48 -0
- package/src/rtk-query-generator/sdk-interface.ts +32 -0
- package/src/utils.ts +2 -2
- package/tsconfig.tsbuildinfo +1 -0
- package/src/analyzer/decorator.ts +0 -29
|
@@ -1,30 +1,66 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file Analyzer for the source API's controllers' methods' parameters
|
|
3
3
|
*/
|
|
4
|
-
import { ParameterDeclaration } from 'ts-morph';
|
|
4
|
+
import { ClassDeclaration, Decorator, MethodDeclaration, ParameterDeclaration } from 'ts-morph';
|
|
5
5
|
import { SdkHttpMethod } from './methods';
|
|
6
6
|
import { Route } from './route';
|
|
7
7
|
import { ResolvedTypeDeps } from './typedeps';
|
|
8
|
+
/**
|
|
9
|
+
* Type of a parameter that must be passed to an SDK method: Body, Query or Route Param
|
|
10
|
+
* Supports accessing parameters individually by key or as a whole object
|
|
11
|
+
*
|
|
12
|
+
* EXAMPLE
|
|
13
|
+
*
|
|
14
|
+
* Controller Method:
|
|
15
|
+
*
|
|
16
|
+
* getStuff(@Query('email') email: string, @Query('companyId'): CompanyId)
|
|
17
|
+
*
|
|
18
|
+
* SDK Method Param:
|
|
19
|
+
* { email: string, companyId: CompanyId }
|
|
20
|
+
*
|
|
21
|
+
* OR
|
|
22
|
+
*
|
|
23
|
+
* Controller Method:
|
|
24
|
+
* type EmailAndCompanyId = { email: string, companyId: CompanyId }
|
|
25
|
+
* getStuff(@Query(): EmailAndCompanyId)
|
|
26
|
+
*
|
|
27
|
+
* SDK Method Param:
|
|
28
|
+
* EmailAndCompanyId
|
|
29
|
+
*/
|
|
30
|
+
export type SdkMethodParam = SdkMethodParamMap | ResolvedTypeDeps | null;
|
|
31
|
+
export type SdkMethodParamMap = {
|
|
32
|
+
[key: string]: ResolvedTypeDeps;
|
|
33
|
+
};
|
|
34
|
+
export declare const isParamResolvedType: (param: SdkMethodParam) => param is ResolvedTypeDeps;
|
|
35
|
+
export declare const getParamResolvedTypes: (param: SdkMethodParam) => ResolvedTypeDeps[];
|
|
8
36
|
/**
|
|
9
37
|
* SDK interface for a controller's method's parameters
|
|
10
38
|
*/
|
|
11
39
|
export interface SdkMethodParams {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
/** Body parameters */
|
|
17
|
-
body: SdkMethodBodyParam | null;
|
|
40
|
+
bodyParams: SdkMethodParam;
|
|
41
|
+
context: MethodContext;
|
|
42
|
+
queryParams: SdkMethodParam;
|
|
43
|
+
routeParams: SdkMethodParam;
|
|
18
44
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
45
|
+
export type MethodContext = {
|
|
46
|
+
absoluteSrcPath: string;
|
|
47
|
+
controllerClass: ClassDeclaration;
|
|
48
|
+
filePath: string;
|
|
49
|
+
httpMethod: SdkHttpMethod;
|
|
50
|
+
method: MethodDeclaration;
|
|
51
|
+
route: Route;
|
|
52
|
+
};
|
|
53
|
+
export declare enum ArgDecorator {
|
|
54
|
+
Body = "Body",
|
|
55
|
+
Param = "Param",
|
|
56
|
+
Query = "Query"
|
|
57
|
+
}
|
|
58
|
+
export type DecoratedArg = {
|
|
59
|
+
arg: ParameterDeclaration;
|
|
60
|
+
argParamKey: string | null;
|
|
61
|
+
context: MethodContext;
|
|
62
|
+
decorator: Decorator;
|
|
63
|
+
decoratorType: ArgDecorator;
|
|
28
64
|
};
|
|
29
65
|
/**
|
|
30
66
|
* Generate a SDK interface for a controller's method's parameters
|
|
@@ -35,4 +71,10 @@ export declare type SdkMethodBodyParam = {
|
|
|
35
71
|
* @param absoluteSrcPath Absolute path to the source directory
|
|
36
72
|
* @returns A SDK interface for the method's parameters
|
|
37
73
|
*/
|
|
38
|
-
export declare function
|
|
74
|
+
export declare function extractParams(context: MethodContext): SdkMethodParams;
|
|
75
|
+
export declare function extractDecoratedArgs(context: MethodContext): Record<ArgDecorator, DecoratedArg[]>;
|
|
76
|
+
export declare function extractArgParamKey(context: MethodContext & {
|
|
77
|
+
arg: ParameterDeclaration;
|
|
78
|
+
decorator: Decorator;
|
|
79
|
+
}): string | null;
|
|
80
|
+
export declare function mergeDecoratedArgs(decoratedArgs: DecoratedArg[]): SdkMethodParam;
|
package/build/analyzer/params.js
CHANGED
|
@@ -3,12 +3,35 @@
|
|
|
3
3
|
* @file Analyzer for the source API's controllers' methods' parameters
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.mergeDecoratedArgs = exports.extractArgParamKey = exports.extractDecoratedArgs = exports.extractParams = exports.ArgDecorator = exports.getParamResolvedTypes = exports.isParamResolvedType = void 0;
|
|
7
|
+
const ts_morph_1 = require("ts-morph");
|
|
7
8
|
const logging_1 = require("../logging");
|
|
8
|
-
const decorator_1 = require("./decorator");
|
|
9
9
|
const methods_1 = require("./methods");
|
|
10
10
|
const route_1 = require("./route");
|
|
11
11
|
const typedeps_1 = require("./typedeps");
|
|
12
|
+
const isParamResolvedType = (param) => {
|
|
13
|
+
if (param === null) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
return 'rawType' in param && 'resolvedType' in param && 'relativeFilePath' in param && 'dependencies' in param && 'localTypes' in param;
|
|
17
|
+
};
|
|
18
|
+
exports.isParamResolvedType = isParamResolvedType;
|
|
19
|
+
const getParamResolvedTypes = (param) => {
|
|
20
|
+
if (param === null) {
|
|
21
|
+
return [];
|
|
22
|
+
}
|
|
23
|
+
if ((0, exports.isParamResolvedType)(param)) {
|
|
24
|
+
return [param];
|
|
25
|
+
}
|
|
26
|
+
return Object.values(param);
|
|
27
|
+
};
|
|
28
|
+
exports.getParamResolvedTypes = getParamResolvedTypes;
|
|
29
|
+
var ArgDecorator;
|
|
30
|
+
(function (ArgDecorator) {
|
|
31
|
+
ArgDecorator["Body"] = "Body";
|
|
32
|
+
ArgDecorator["Param"] = "Param";
|
|
33
|
+
ArgDecorator["Query"] = "Query";
|
|
34
|
+
})(ArgDecorator || (exports.ArgDecorator = ArgDecorator = {}));
|
|
12
35
|
/**
|
|
13
36
|
* Generate a SDK interface for a controller's method's parameters
|
|
14
37
|
* @param httpMethod The method's HTTP method
|
|
@@ -18,146 +41,144 @@ const typedeps_1 = require("./typedeps");
|
|
|
18
41
|
* @param absoluteSrcPath Absolute path to the source directory
|
|
19
42
|
* @returns A SDK interface for the method's parameters
|
|
20
43
|
*/
|
|
21
|
-
function
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
44
|
+
function extractParams(context) {
|
|
45
|
+
const { httpMethod, route } = context;
|
|
46
|
+
const { Body, Param, Query } = extractDecoratedArgs(context);
|
|
47
|
+
const resolvedParams = {
|
|
48
|
+
routeParams: mergeDecoratedArgs(Param),
|
|
49
|
+
queryParams: mergeDecoratedArgs(Query),
|
|
50
|
+
bodyParams: mergeDecoratedArgs(Body),
|
|
51
|
+
context,
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Validate Body Params are not used in GET requests
|
|
55
|
+
*/
|
|
56
|
+
if (httpMethod === methods_1.SdkHttpMethod.Get && resolvedParams.bodyParams) {
|
|
57
|
+
panicWithContext(`${httpMethod} request should not have @Body params, use @Query params instead`, context);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Validate Query Params are not used in non-GET requests
|
|
61
|
+
*/
|
|
62
|
+
if (httpMethod !== methods_1.SdkHttpMethod.Get && resolvedParams.queryParams) {
|
|
63
|
+
panicWithContext(`${httpMethod} request should not have @Query params, use @Body params instead`, context);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Validate Route Params exist in route URL
|
|
67
|
+
*/
|
|
68
|
+
const { routeParams } = resolvedParams;
|
|
69
|
+
if (routeParams) {
|
|
70
|
+
const allowedRouteParams = new Set((0, route_1.paramsFromRoute)(route));
|
|
71
|
+
const usedRouteParams = routeParams instanceof ts_morph_1.Type
|
|
72
|
+
? // If routeParams was resolved to a single type, assume there's only one decorated argument
|
|
73
|
+
Param[0].arg
|
|
74
|
+
.getType()
|
|
75
|
+
.getProperties()
|
|
76
|
+
.map((prop) => prop.getName())
|
|
77
|
+
: // If routeParams was resolved to a map, assume the keys are the route params
|
|
78
|
+
Object.keys(routeParams);
|
|
79
|
+
for (const usedParam of usedRouteParams) {
|
|
80
|
+
if (!allowedRouteParams.has(usedParam)) {
|
|
81
|
+
panicWithContext(`Route param ${usedParam} does not appear in route URL`, context);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return resolvedParams;
|
|
86
|
+
}
|
|
87
|
+
exports.extractParams = extractParams;
|
|
88
|
+
function extractDecoratedArgs(context) {
|
|
89
|
+
const decoratedArgs = {
|
|
90
|
+
[ArgDecorator.Param]: [],
|
|
91
|
+
[ArgDecorator.Query]: [],
|
|
92
|
+
[ArgDecorator.Body]: [],
|
|
28
93
|
};
|
|
29
|
-
|
|
30
|
-
const
|
|
31
|
-
// Treat all arguments (to not confuse with the route's parameters)
|
|
94
|
+
const { controllerClass, method } = context;
|
|
95
|
+
const args = method.getParameters();
|
|
32
96
|
for (const arg of args) {
|
|
33
|
-
const
|
|
34
|
-
(0, logging_1.debug)('├───── Detected argument: {yellow}',
|
|
97
|
+
const argName = arg.getName();
|
|
98
|
+
(0, logging_1.debug)('├───── Detected argument: {yellow}', argName);
|
|
35
99
|
// Arguments are collected as soon as they have a decorator like @Query() or @Body()
|
|
36
|
-
const
|
|
37
|
-
if (
|
|
100
|
+
const argDecorators = arg.getDecorators().filter((dec) => Object.values(ArgDecorator).includes(dec.getName()));
|
|
101
|
+
if (argDecorators.length === 0) {
|
|
38
102
|
// If we have no argument, this is not an argument we are interested in, so we just skip it
|
|
39
103
|
(0, logging_1.debug)('├───── Skipping this argument as it does not have a decorator');
|
|
40
104
|
continue;
|
|
41
105
|
}
|
|
42
|
-
else if (
|
|
43
|
-
|
|
44
|
-
// which is currently not supported.
|
|
45
|
-
return new Error('Skipping this argument as it has multiple decorators, which is currently not supported');
|
|
106
|
+
else if (argDecorators.length > 1) {
|
|
107
|
+
(0, logging_1.panic)(`${controllerClass.getName()} ${method.getName()} has multiple decorators on argument ${argName} ${argDecorators.map((dec) => dec.getName()).join(', ')}`);
|
|
46
108
|
}
|
|
47
109
|
// Get the only decrator
|
|
48
|
-
const
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
// which is the route parameter's name
|
|
55
|
-
const paramName = (0, decorator_1.expectSingleStrLitDecorator)(dec);
|
|
56
|
-
if (paramName instanceof Error)
|
|
57
|
-
return paramName;
|
|
58
|
-
// If there is no argument, this argument is a global receiver which maps the full set of parameters
|
|
59
|
-
// We theorically *could* extract the type informations from this object type, but this would be insanely complex
|
|
60
|
-
// So, we just skip it as it's a lot more simple, and is not commonly used anyway as it has a set of downsides
|
|
61
|
-
if (paramName === null) {
|
|
62
|
-
(0, logging_1.warn)('├───── Skipping this argument as it is a generic parameters receiver, which is currently not supported');
|
|
63
|
-
continue;
|
|
64
|
-
}
|
|
65
|
-
// Ensure the specified parameter appears in the method's route
|
|
66
|
-
if (!routeParams.includes(paramName))
|
|
67
|
-
return new Error((0, logging_1.format)('├───── Cannot map unknown parameter {yellow}', paramName));
|
|
68
|
-
(0, logging_1.debug)('├───── Mapping argument to parameter: {yellow}', paramName);
|
|
69
|
-
// Get the route parameter's type
|
|
70
|
-
const typ = (0, typedeps_1.resolveTypeDependencies)(arg.getType(), filePath, absoluteSrcPath);
|
|
71
|
-
(0, logging_1.debug)('├───── Detected parameter type: {yellow} ({magentaBright} dependencies)', typ.resolvedType, typ.dependencies.size);
|
|
72
|
-
// Update the method's route parameters
|
|
73
|
-
if (paramName in {}) {
|
|
74
|
-
return new Error((0, logging_1.format)(`Detected @Param() field whose name {yellow} collides with a JavaScript's native object property`, paramName));
|
|
75
|
-
}
|
|
76
|
-
(_a = collected.parameters) !== null && _a !== void 0 ? _a : (collected.parameters = new Map());
|
|
77
|
-
collected.parameters.set(paramName, typ);
|
|
110
|
+
const decorator = argDecorators[0];
|
|
111
|
+
const decoratorType = decorator.getName();
|
|
112
|
+
const argParamKey = extractArgParamKey(Object.assign(Object.assign({}, context), { arg, decorator }));
|
|
113
|
+
const argType = arg.getType();
|
|
114
|
+
if (!argParamKey && !argType.isObject()) {
|
|
115
|
+
(0, logging_1.panic)(`${controllerClass.getName()} ${method.getName()} generic controller argument ${decoratorType}() ${argName} must be an object type`);
|
|
78
116
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
117
|
+
decoratedArgs[decoratorType].push({
|
|
118
|
+
arg,
|
|
119
|
+
argParamKey,
|
|
120
|
+
decorator,
|
|
121
|
+
decoratorType,
|
|
122
|
+
context,
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
return decoratedArgs;
|
|
126
|
+
}
|
|
127
|
+
exports.extractDecoratedArgs = extractDecoratedArgs;
|
|
128
|
+
function extractArgParamKey(context) {
|
|
129
|
+
const { arg, controllerClass, decorator, method } = context;
|
|
130
|
+
const decoratorArgs = decorator.getArguments();
|
|
131
|
+
if (decoratorArgs.length > 1) {
|
|
132
|
+
(0, logging_1.panic)(`${controllerClass.getName()} ${method.getName()} ${decorator.getName()}() ${arg.getName()} argument decorator has multiple parameters`);
|
|
133
|
+
}
|
|
134
|
+
else if (decoratorArgs.length === 0) {
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
const decoratorArg = decoratorArgs[0];
|
|
138
|
+
if (!ts_morph_1.Node.isStringLiteral(decoratorArg)) {
|
|
139
|
+
(0, logging_1.panic)('The argument provided to the decorator is not a string literal:\n>>> {cyan}', arg.getText());
|
|
140
|
+
}
|
|
141
|
+
const paramKey = decoratorArg.getLiteralText();
|
|
142
|
+
if (paramKey in {}) {
|
|
143
|
+
panicWithContext(`${decorator.getName()}('${paramKey}') param name collides with JavaScript native object property`, context);
|
|
144
|
+
}
|
|
145
|
+
return paramKey;
|
|
146
|
+
}
|
|
147
|
+
exports.extractArgParamKey = extractArgParamKey;
|
|
148
|
+
function mergeDecoratedArgs(decoratedArgs) {
|
|
149
|
+
let genericParam = null;
|
|
150
|
+
const paramMap = {};
|
|
151
|
+
for (const decoratedArg of decoratedArgs) {
|
|
152
|
+
const { arg, argParamKey, context, decoratorType } = decoratedArg;
|
|
153
|
+
const resolvedType = (0, typedeps_1.resolveTypeDependencies)(arg.getType(), context.filePath, context.absoluteSrcPath);
|
|
154
|
+
if (argParamKey) {
|
|
155
|
+
if (paramMap[argParamKey]) {
|
|
156
|
+
panicWithContext(`${decoratorType}('${argParamKey}') used twice in controller method`, decoratedArg.context);
|
|
101
157
|
}
|
|
102
|
-
|
|
103
|
-
collected.query.set(queryName, typ);
|
|
158
|
+
paramMap[argParamKey] = resolvedType;
|
|
104
159
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
// GET requests cannot have a BODY
|
|
109
|
-
if (httpMethod === methods_1.SdkHttpMethod.Get) {
|
|
110
|
-
return new Error('GET requests cannot have a BODY!');
|
|
111
|
-
}
|
|
112
|
-
// We expect a single string argument for this decorator,
|
|
113
|
-
// which is the body field's name
|
|
114
|
-
const fieldName = (0, decorator_1.expectSingleStrLitDecorator)(dec);
|
|
115
|
-
if (fieldName instanceof Error)
|
|
116
|
-
return fieldName;
|
|
117
|
-
// Get the field's type
|
|
118
|
-
const typ = (0, typedeps_1.resolveTypeDependencies)(arg.getType(), filePath, absoluteSrcPath);
|
|
119
|
-
const depsCount = typ.dependencies.size;
|
|
120
|
-
(0, logging_1.debug)(`├───── Detected BODY type: {cyan} ({magentaBright} ${depsCount === 0 ? 'no dependency' : depsCount > 1 ? 'dependencies' : 'dependency'})`, typ.resolvedType, depsCount);
|
|
121
|
-
// If there no name was provided to the decorator, then the decorator is a generic receiver which means it maps to the full body type
|
|
122
|
-
// This also means we can map the BODY type to this argument's type
|
|
123
|
-
if (fieldName === null) {
|
|
124
|
-
const body = collected.body;
|
|
125
|
-
// If we previously had an @Body(<name>) decorator on another argument, we have an important risk of mistyping
|
|
126
|
-
// => e.g. `@Body("a") a: string, @Body() body: { a: number }` is invalid as the type for the `a` field mismatches
|
|
127
|
-
// => It's easy to make an error as the @Body() type is often hidden behind a DTO
|
|
128
|
-
// But that's extremely complex to check automatically, so we just display a warning instead
|
|
129
|
-
// Also, that's not the kind of thing we make on purpose very often, so it's more likely it's an error, which makes it even more important
|
|
130
|
-
// to display a warning here.
|
|
131
|
-
if ((body === null || body === void 0 ? void 0 : body.full) === false)
|
|
132
|
-
(0, logging_1.warn)('├───── Detected full @Body() decorator after a single parameter. This is considered a bad practice, avoid it if you can!');
|
|
133
|
-
// Having two generic @Body() decorators is meaningless and will likey lead to errors, so we return a precise error here
|
|
134
|
-
else if (body === null || body === void 0 ? void 0 : body.full) {
|
|
135
|
-
return new Error((0, logging_1.format)(`Detected two @Body() decorators: found {yellow} previously, while method argument {yellow} indicates type {yellow}`, body.type.resolvedType, name, typ.resolvedType));
|
|
136
|
-
}
|
|
137
|
-
(0, logging_1.debug)("├───── Mapping argument to full request's body");
|
|
138
|
-
// Update the whole BODY type
|
|
139
|
-
collected.body = { full: true, type: typ };
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
// Here we have an @Body(<string>) decorator
|
|
143
|
-
// If we previously had an @Body() decorator, this can lead to several types of errors (see the big comment above for more informations)
|
|
144
|
-
if ((_c = collected.body) === null || _c === void 0 ? void 0 : _c.full) {
|
|
145
|
-
(0, logging_1.warn)('├───── Detected single @Body() decorator after a full parameter. This is considered a bad practice, avoid it if you can!');
|
|
146
|
-
}
|
|
147
|
-
else {
|
|
148
|
-
(0, logging_1.debug)('├───── Mapping argument to BODY field: {yellow}', fieldName);
|
|
149
|
-
// Update the BODY type by adding the current field to it
|
|
150
|
-
if (fieldName in {}) {
|
|
151
|
-
return new Error((0, logging_1.format)(`Detected @Body() field whose name {yellow} collides with a JavaScript's native object property`, fieldName));
|
|
152
|
-
}
|
|
153
|
-
(_d = collected.body) !== null && _d !== void 0 ? _d : (collected.body = { full: false, fields: new Map() });
|
|
154
|
-
collected.body.fields.set(fieldName, typ);
|
|
155
|
-
}
|
|
160
|
+
else {
|
|
161
|
+
if (genericParam) {
|
|
162
|
+
panicWithContext(`${decoratorType}() used twice in controller method`, decoratedArg.context);
|
|
156
163
|
}
|
|
164
|
+
genericParam = resolvedType;
|
|
157
165
|
}
|
|
158
166
|
}
|
|
159
|
-
|
|
160
|
-
|
|
167
|
+
const hasArgsByKey = Object.keys(paramMap).length > 0;
|
|
168
|
+
if (genericParam && hasArgsByKey) {
|
|
169
|
+
panicWithContext(`Cannot mix generic and specific ${decoratedArgs[0].decoratorType}()`, decoratedArgs[0].context);
|
|
170
|
+
}
|
|
171
|
+
return hasArgsByKey ? paramMap : genericParam;
|
|
161
172
|
}
|
|
162
|
-
exports.
|
|
163
|
-
|
|
173
|
+
exports.mergeDecoratedArgs = mergeDecoratedArgs;
|
|
174
|
+
const panicWithContext = (message, context) => {
|
|
175
|
+
const { controllerClass, filePath, httpMethod, method } = context;
|
|
176
|
+
const ctx = {
|
|
177
|
+
controller: controllerClass.getName(),
|
|
178
|
+
method: method.getName(),
|
|
179
|
+
httpMethod,
|
|
180
|
+
filePath,
|
|
181
|
+
};
|
|
182
|
+
(0, logging_1.panic)(`${message}\n${JSON.stringify(ctx, null, 2)}`);
|
|
183
|
+
};
|
|
184
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FuYWx5emVyL3BhcmFtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQUVILHVDQUEyRztBQUUzRyx3Q0FBeUM7QUFFekMsdUNBQXlDO0FBQ3pDLG1DQUFnRDtBQUNoRCx5Q0FBc0U7QUE0Qi9ELE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxLQUFxQixFQUE2QixFQUFFO0lBQ3RGLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ25CLE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUNELE9BQU8sU0FBUyxJQUFJLEtBQUssSUFBSSxjQUFjLElBQUksS0FBSyxJQUFJLGtCQUFrQixJQUFJLEtBQUssSUFBSSxjQUFjLElBQUksS0FBSyxJQUFJLFlBQVksSUFBSSxLQUFLLENBQUE7QUFDekksQ0FBQyxDQUFBO0FBTFksUUFBQSxtQkFBbUIsdUJBSy9CO0FBRU0sTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEtBQXFCLEVBQXNCLEVBQUU7SUFDakYsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDbkIsT0FBTyxFQUFFLENBQUE7SUFDWCxDQUFDO0lBQ0QsSUFBSSxJQUFBLDJCQUFtQixFQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDL0IsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2hCLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDN0IsQ0FBQyxDQUFBO0FBUlksUUFBQSxxQkFBcUIseUJBUWpDO0FBcUJELElBQVksWUFJWDtBQUpELFdBQVksWUFBWTtJQUN0Qiw2QkFBYSxDQUFBO0lBQ2IsK0JBQWUsQ0FBQTtJQUNmLCtCQUFlLENBQUE7QUFDakIsQ0FBQyxFQUpXLFlBQVksNEJBQVosWUFBWSxRQUl2QjtBQVVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0IsYUFBYSxDQUFDLE9B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
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
/**
|
|
5
5
|
* A single URI part
|
|
6
6
|
*/
|
|
7
|
-
export
|
|
7
|
+
export type RoutePart = {
|
|
8
8
|
readonly segment: string;
|
|
9
9
|
} | {
|
|
10
10
|
readonly param: string;
|
|
@@ -27,7 +27,10 @@ export declare function analyzeUri(uriPath: string): Route | Error;
|
|
|
27
27
|
* Get the named parameters of a parsed route
|
|
28
28
|
* @param route
|
|
29
29
|
*/
|
|
30
|
-
export declare function
|
|
30
|
+
export declare function routePartIsParam(part: RoutePart): part is {
|
|
31
|
+
readonly param: string;
|
|
32
|
+
};
|
|
33
|
+
export declare function paramsFromRoute(route: Route): string[];
|
|
31
34
|
/**
|
|
32
35
|
* Convert a route back to its original string
|
|
33
36
|
* @param route
|
package/build/analyzer/route.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* @file Analyzer for the source API's routes in controller methods
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.resolveRouteWith = exports.resolveRoute = exports.debugUri = exports.unparseRoute = exports.
|
|
6
|
+
exports.resolveRouteWith = exports.resolveRoute = exports.debugUri = exports.unparseRoute = exports.paramsFromRoute = exports.routePartIsParam = exports.analyzeUri = void 0;
|
|
7
7
|
/**
|
|
8
8
|
* Analyze an URI path
|
|
9
9
|
* @param uriPath The URI path to analyze
|
|
@@ -32,6 +32,7 @@ function analyzeUri(uriPath) {
|
|
|
32
32
|
if (part === '')
|
|
33
33
|
continue;
|
|
34
34
|
// Ensure there is no generic character in the path as we don't support them
|
|
35
|
+
// eslint-disable-next-line no-useless-escape
|
|
35
36
|
const genericErr = _findInvalid(part, /[\*\+\?]/);
|
|
36
37
|
if (genericErr) {
|
|
37
38
|
return new Error('Generic symbols (* + ?) are not supported as they prevent from determining the right route to use. Found in URI:\n' + genericErr);
|
|
@@ -64,10 +65,14 @@ exports.analyzeUri = analyzeUri;
|
|
|
64
65
|
* Get the named parameters of a parsed route
|
|
65
66
|
* @param route
|
|
66
67
|
*/
|
|
67
|
-
function
|
|
68
|
-
return
|
|
68
|
+
function routePartIsParam(part) {
|
|
69
|
+
return 'param' in part;
|
|
69
70
|
}
|
|
70
|
-
exports.
|
|
71
|
+
exports.routePartIsParam = routePartIsParam;
|
|
72
|
+
function paramsFromRoute(route) {
|
|
73
|
+
return route.parts.filter(routePartIsParam).map((part) => part.param);
|
|
74
|
+
}
|
|
75
|
+
exports.paramsFromRoute = paramsFromRoute;
|
|
71
76
|
/**
|
|
72
77
|
* Convert a route back to its original string
|
|
73
78
|
* @param route
|
|
@@ -89,10 +94,11 @@ exports.debugUri = debugUri;
|
|
|
89
94
|
* @param params
|
|
90
95
|
*/
|
|
91
96
|
function resolveRoute(route, params) {
|
|
92
|
-
|
|
97
|
+
const uri = [];
|
|
93
98
|
for (const part of route.parts) {
|
|
94
99
|
if ('segment' in part) {
|
|
95
100
|
uri.push(part.segment);
|
|
101
|
+
// eslint-disable-next-line no-prototype-builtins
|
|
96
102
|
}
|
|
97
103
|
else if (!params.hasOwnProperty(part.param)) {
|
|
98
104
|
return new Error('Missing route parameter ' + part.param);
|
|
@@ -110,7 +116,7 @@ exports.resolveRoute = resolveRoute;
|
|
|
110
116
|
* @param paramsProvider
|
|
111
117
|
*/
|
|
112
118
|
function resolveRouteWith(route, paramsProvider) {
|
|
113
|
-
|
|
119
|
+
const uri = [];
|
|
114
120
|
for (const part of route.parts) {
|
|
115
121
|
if ('segment' in part) {
|
|
116
122
|
uri.push(part.segment);
|
|
@@ -128,4 +134,4 @@ function resolveRouteWith(route, paramsProvider) {
|
|
|
128
134
|
return (route.isRoot ? '/' : '') + uri.join('/');
|
|
129
135
|
}
|
|
130
136
|
exports.resolveRouteWith = resolveRouteWith;
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYW5hbHl6ZXIvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFrQkg7OztHQUdHO0FBQ0gsU0FBZ0IsVUFBVSxDQUFDLE9BQWU7SUFDeEMsa0NBQWtDO0lBQ2xDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7SUFFbkMsZ0NBQWdDO0lBQ2hDLE1BQU0sS0FBSyxHQUFnQixFQUFFLENBQUE7SUFFN0IsNENBQTRDO0lBQzVDLDBDQUEwQztJQUMxQyxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUE7SUFFZDs7Ozs7T0FLRztJQUNILFNBQVMsWUFBWSxDQUFDLElBQVksRUFBRSxPQUFlO1FBQ2pELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO0lBQy9FLENBQUM7SUFFRCxrQ0FBa0M7SUFDbEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUN6QyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFeEIsK0RBQStEO1FBQy9ELElBQUksSUFBSSxLQUFLLEVBQUU7WUFBRSxTQUFRO1FBRXpCLDRFQUE0RTtRQUM1RSw2Q0FBNkM7UUFDN0MsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUVqRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsT0FBTyxJQUFJLEtBQUssQ0FDZCxvSEFBb0gsR0FBRyxVQUFVLENBQ2xJLENBQUE7UUFDSCxDQUFD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
|
|
@@ -10,12 +10,6 @@ export declare const IMPORTED_TYPE_REGEX: RegExp;
|
|
|
10
10
|
* Type with resolved level 1 dependencies (does not look for dependencies' own dependencies!)
|
|
11
11
|
*/
|
|
12
12
|
export interface ResolvedTypeDeps {
|
|
13
|
-
/** The original raw type, with import("...") expressions */
|
|
14
|
-
readonly rawType: string;
|
|
15
|
-
/** The resolved type, without imports */
|
|
16
|
-
readonly resolvedType: string;
|
|
17
|
-
/** File from which the type originates */
|
|
18
|
-
readonly relativeFilePath: string;
|
|
19
13
|
/**
|
|
20
14
|
* The type dependencies used by the resolved type
|
|
21
15
|
* A collection of scripts' relative paths mapped with the list of types imported from them
|
|
@@ -26,6 +20,12 @@ export interface ResolvedTypeDeps {
|
|
|
26
20
|
* They may be either local types (declared in the same file than the one analyzed) or globally-defined types
|
|
27
21
|
*/
|
|
28
22
|
readonly localTypes: string[];
|
|
23
|
+
/** The original raw type, with import("...") expressions */
|
|
24
|
+
readonly rawType: string;
|
|
25
|
+
/** File from which the type originates */
|
|
26
|
+
readonly relativeFilePath: string;
|
|
27
|
+
/** The resolved type, without imports */
|
|
28
|
+
readonly resolvedType: string;
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
31
31
|
* Resolve the dependencies of a TS-Morph analyzed type
|
|
@@ -23,8 +23,8 @@ function resolveTypeDependencies(type, relativeFilePath, absoluteSrcPath) {
|
|
|
23
23
|
if (path.isAbsolute(relativeFilePath)) {
|
|
24
24
|
(0, logging_1.unreachable)('Internal error: got absolute file path in type dependencies resolver, when expecting a relative one (got {magentaBright})', relativeFilePath);
|
|
25
25
|
}
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
const dependencies = new Map();
|
|
27
|
+
const localTypes = [];
|
|
28
28
|
/** Resolved type (without import statements) */
|
|
29
29
|
const resolvedType = rawType.replace(exports.IMPORTED_TYPE_REGEX, (_, matchedFilePath, type) => {
|
|
30
30
|
const filePath = path.isAbsolute(matchedFilePath) ? path.relative(absoluteSrcPath, matchedFilePath) : matchedFilePath;
|
|
@@ -83,4 +83,4 @@ function normalizeExternalFilePath(importedFilePath) {
|
|
|
83
83
|
return `_external${level}/${importedFilePath}`;
|
|
84
84
|
}
|
|
85
85
|
exports.normalizeExternalFilePath = normalizeExternalFilePath;
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWRlcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYW5hbHl6ZXIvdHlwZWRlcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFFSCw2QkFBNEI7QUFJNUIsd0NBQXdDO0FBRXhDOztHQUVHO0FBQ1UsUUFBQSxtQkFBbUIsR0FBRyxrREFBa0QsQ0FBQTtBQTRCckY7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsdUJBQXVCLENBQUMsSUFBbUIsRUFBRSxnQkFBd0IsRUFBRSxlQUF1QjtJQUM1RyxxRUFBcUU7SUFDckUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBRTlCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7UUFDdEMsSUFBQSxxQkFBVyxFQUNULDJIQUEySCxFQUMzSCxnQkFBZ0IsQ0FDakIsQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLFlBQVksR0FBcUMsSUFBSSxHQUFHLEVBQUUsQ0FBQTtJQUNoRSxNQUFNLFVBQVUsR0FBbUMsRUFBRSxDQUFBO0lBRXJELGdEQUFnRDtJQUNoRCxNQUFNLFlBQVksR0FBcUMsT0FBTyxDQUFDLE9BQU8sQ0FBQywyQkFBbUIsRUFBRSxDQUFDLENBQUMsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDdkgsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQTtRQUVySCxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRXZDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQ2pCLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLFlBQVksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUNwQyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDLENBQUMsQ0FBQTtJQUVGLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQ3JDLElBQUEscUJBQVcsRUFBQyx5RUFBeUUsRUFBRSxhQUFhLEVBQUUsWUFBWSxDQUFDLENBQUE7SUFDckgsQ0FBQztJQUVELEtBQUssTUFBTSxPQUFPLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7UUFDMUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDN0IsSUFBQSxxQkFBVyxFQUNULHFKQUFxSixFQUNySixJQUFJLENBQUMsT0FBTyxFQUFFLEVBQ2QsT0FBTyxDQUNSLENBQUE7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPO1FBQ1AsZ0JBQWdCO1FBQ2hCLFlBQVk7UUFDWixZQUFZO1FBQ1osVUFBVTtLQUNYLENBQUE7QUFDSCxDQUFDO0FBcERELDBEQW9EQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IscUJBQXFCLENBQUMsSUFBbUI7SUFDdkQsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLDJCQUFtQixFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0FBQ25GLENBQUM7QUFGRCxzREFFQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLHlCQUF5QixDQUFDLGdCQUF3QjtJQUNoRSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUE7SUFFbkQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3hDLE9BQU8sZ0JBQWdCLENBQUE7SUFDekIsQ0FBQztJQUVELElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQTtJQUViLE9BQU8sZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDMUMsS0FBSyxFQUFFLENBQUE7UUFDUCxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDL0MsQ0FBQztJQUVELE9BQU8sWUFBWSxLQUFLLElBQUksZ0JBQWdCLEVBQUUsQ0FBQTtBQUNoRCxDQUFDO0FBZkQsOERBZUMifQ==
|
package/build/bin.js
CHANGED
|
@@ -15,25 +15,21 @@ const analyzer_1 = require("./analyzer");
|
|
|
15
15
|
const config_1 = require("./config");
|
|
16
16
|
const generator_1 = require("./generator");
|
|
17
17
|
const logging_1 = require("./logging");
|
|
18
|
+
const rtk_query_generator_1 = require("./rtk-query-generator");
|
|
18
19
|
function main() {
|
|
19
20
|
return __awaiter(this, void 0, void 0, function* () {
|
|
20
21
|
const started = Date.now();
|
|
21
22
|
process.chdir(path.dirname(path.resolve(config_1.configPath)));
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
yield (0, generator_1.default)(config_1.config, sdkContent);
|
|
30
|
-
break;
|
|
31
|
-
default:
|
|
32
|
-
console.error('ERROR: Unknown action provided (must be either "--analyze" or "--generate")');
|
|
33
|
-
process.exit(1);
|
|
23
|
+
const sdkContent = yield (0, analyzer_1.analyzerCli)(config_1.config);
|
|
24
|
+
const outputType = process.argv[3];
|
|
25
|
+
if (outputType === '--generate') {
|
|
26
|
+
yield (0, generator_1.default)(config_1.config, sdkContent);
|
|
27
|
+
}
|
|
28
|
+
if (outputType === '--generate-rtk') {
|
|
29
|
+
yield (0, rtk_query_generator_1.default)(config_1.config, sdkContent);
|
|
34
30
|
}
|
|
35
31
|
(0, logging_1.println)('{green}', '@ Done in ' + ((Date.now() - started) / 1000).toFixed(2) + 's');
|
|
36
32
|
});
|
|
37
33
|
}
|
|
38
34
|
main();
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Jpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFFQSw2QkFBNEI7QUFFNUIseUNBQXdDO0FBQ3hDLHFDQUE2QztBQUM3QywyQ0FBMkM7QUFDM0MsdUNBQW1DO0FBQ25DLCtEQUE2RDtBQUU3RCxTQUFlLElBQUk7O1FBQ2pCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQTtRQUUxQixPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBVSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBRXJELE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBQSxzQkFBVyxFQUFDLGVBQU0sQ0FBQyxDQUFBO1FBRTVDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFbEMsSUFBSSxVQUFVLEtBQUssWUFBWSxFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFBLG1CQUFpQixFQUFDLGVBQU0sRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUM3QyxDQUFDO1FBRUQsSUFBSSxVQUFVLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztZQUNwQyxNQUFNLElBQUEsNkJBQXlCLEVBQUMsZUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFBO1FBQ3JELENBQUM7UUFFRCxJQUFBLGlCQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQTtJQUNyRixDQUFDO0NBQUE7QUFFRCxJQUFJLEVBQUUsQ0FBQSJ9
|