@buildvision/nest-sdk-generator 2.3.1 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +1 -1
- package/.github/workflows/test.yml +35 -0
- package/README.md +402 -239
- package/build/analyzer/classdeps.js +36 -4
- package/build/analyzer/controller.d.ts +2 -14
- package/build/analyzer/controller.js +38 -18
- package/build/analyzer/controllers.d.ts +2 -2
- package/build/analyzer/controllers.js +37 -5
- package/build/analyzer/extractor.d.ts +2 -41
- package/build/analyzer/extractor.js +63 -66
- package/build/analyzer/index.d.ts +2 -6
- package/build/analyzer/index.js +107 -86
- package/build/analyzer/methods.d.ts +2 -30
- package/build/analyzer/methods.js +7 -16
- package/build/analyzer/module.js +36 -4
- package/build/analyzer/params.d.ts +3 -39
- package/build/analyzer/params.js +17 -37
- package/build/analyzer/route.js +8 -9
- package/build/analyzer/sdk.d.ts +146 -0
- package/build/analyzer/sdk.js +120 -0
- package/build/analyzer/typedeps.d.ts +15 -0
- package/build/analyzer/typedeps.js +62 -10
- package/build/bin.js +72 -26
- package/build/config.d.ts +13 -0
- package/build/config.js +36 -3
- package/build/engine/analyze.d.ts +16 -0
- package/build/engine/analyze.js +786 -0
- package/build/engine/ast.d.ts +24 -0
- package/build/engine/ast.js +100 -0
- package/build/engine/file-order.d.ts +17 -0
- package/build/engine/file-order.js +97 -0
- package/build/engine/host.d.ts +63 -0
- package/build/engine/host.js +16 -0
- package/build/engine/index.d.ts +15 -0
- package/build/engine/index.js +93 -0
- package/build/engine/ts-morph-compat-host.d.ts +8 -0
- package/build/engine/ts-morph-compat-host.js +18 -0
- package/build/engine/tsgo-host.d.ts +9 -0
- package/build/engine/tsgo-host.js +136 -0
- package/build/engine/typescript-host.d.ts +26 -0
- package/build/engine/typescript-host.js +142 -0
- package/build/generator/genmodules.d.ts +1 -4
- package/build/generator/genmodules.js +23 -27
- package/build/generator/gentypes.d.ts +1 -1
- package/build/generator/gentypes.js +36 -4
- package/build/generator/index.d.ts +1 -1
- package/build/generator/index.js +91 -69
- package/build/generator/prettier.js +43 -9
- package/build/generator/sdk-interface.d.ts +1 -1
- package/build/generator/sdk-interface.js +5 -5
- package/build/logging.d.ts +2 -0
- package/build/logging.js +14 -11
- package/build/rtk-query-generator/genmodules.d.ts +1 -4
- package/build/rtk-query-generator/genmodules.js +27 -31
- package/build/rtk-query-generator/index.d.ts +1 -1
- package/build/rtk-query-generator/index.js +87 -65
- package/build/rtk-query-generator/prettier.js +43 -9
- package/build/rtk-query-generator/sdk-interface.js +3 -4
- package/build/utils.js +38 -6
- package/package.json +29 -11
- package/src/analyzer/controller.ts +3 -31
- package/src/analyzer/controllers.ts +3 -2
- package/src/analyzer/extractor.ts +17 -86
- package/src/analyzer/index.ts +5 -11
- package/src/analyzer/methods.ts +5 -36
- package/src/analyzer/params.ts +13 -55
- package/src/analyzer/sdk.ts +247 -0
- package/src/analyzer/typedeps.ts +22 -4
- package/src/bin.ts +29 -5
- package/src/config.ts +15 -0
- package/src/engine/analyze.ts +1110 -0
- package/src/engine/ast.ts +105 -0
- package/src/engine/file-order.ts +104 -0
- package/src/engine/host.ts +79 -0
- package/src/engine/index.ts +79 -0
- package/src/engine/ts-morph-compat-host.ts +20 -0
- package/src/engine/tsgo-host.ts +119 -0
- package/src/engine/typescript-host.ts +159 -0
- package/src/generator/genmodules.ts +9 -4
- package/src/generator/gentypes.ts +1 -1
- package/src/generator/index.ts +1 -1
- package/src/logging.ts +6 -1
- package/src/rtk-query-generator/genmodules.ts +9 -4
- package/src/rtk-query-generator/index.ts +1 -2
- package/src/rtk-query-generator/sdk-interface.ts +2 -3
- package/tsconfig.json +7 -6
- package/build/analyzer/decorator.d.ts +0 -10
- package/build/analyzer/decorator.js +0 -29
- package/build/rtk-query-generator/gentypes.d.ts +0 -10
- package/build/rtk-query-generator/gentypes.js +0 -62
- package/build/tsconfig.tsbuildinfo +0 -1
- package/bun.lockb +0 -0
- package/tsconfig.tsbuildinfo +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file Entrypoint of the SDK generator
|
|
3
3
|
*/
|
|
4
|
-
import { SdkContent } from '../analyzer';
|
|
4
|
+
import { SdkContent } from '../analyzer/sdk';
|
|
5
5
|
import { Config } from '../config';
|
|
6
6
|
export default function generateRTKQueryEndpoints(config: Config, sdkContent: SdkContent): Promise<void>;
|
|
7
7
|
export declare const validateSdkContent: (content: SdkContent) => void;
|
|
@@ -2,80 +2,102 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* @file Entrypoint of the SDK generator
|
|
4
4
|
*/
|
|
5
|
-
var
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
14
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
39
|
exports.validateSdkContent = void 0;
|
|
16
|
-
|
|
17
|
-
const
|
|
40
|
+
exports.default = generateRTKQueryEndpoints;
|
|
41
|
+
const fs = __importStar(require("fs"));
|
|
42
|
+
const path = __importStar(require("path"));
|
|
18
43
|
const logging_1 = require("../logging");
|
|
19
44
|
const genmodules_1 = require("./genmodules");
|
|
20
45
|
const prettier_1 = require("./prettier");
|
|
21
46
|
const sdk_interface_1 = require("./sdk-interface");
|
|
22
|
-
function generateRTKQueryEndpoints(config, sdkContent) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
if (
|
|
33
|
-
|
|
34
|
-
(0, logging_1.panic)("Please provide an output directory that doesn't exist yet");
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
fs.rmSync(outputPath, { recursive: true });
|
|
38
|
-
}
|
|
47
|
+
async function generateRTKQueryEndpoints(config, sdkContent) {
|
|
48
|
+
(0, exports.validateSdkContent)(sdkContent);
|
|
49
|
+
const prettifyOutput = config.prettify !== false;
|
|
50
|
+
if (!prettifyOutput) {
|
|
51
|
+
(0, logging_1.debug)('NOTE: files will not be prettified with Prettier');
|
|
52
|
+
}
|
|
53
|
+
const outputPath = path.resolve(process.cwd(), config.sdkOutputPath);
|
|
54
|
+
const inputPath = path.resolve(process.cwd(), config.apiInputPath);
|
|
55
|
+
const inputRelativePath = path.relative(outputPath, inputPath);
|
|
56
|
+
if (fs.existsSync(outputPath)) {
|
|
57
|
+
if (config.overwriteOldOutputDir === false) {
|
|
58
|
+
(0, logging_1.panic)("Please provide an output directory that doesn't exist yet");
|
|
39
59
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
(0, logging_1.panic)("Output directory's parent {magentaBright} does not exist.", outputParentDir);
|
|
60
|
+
else {
|
|
61
|
+
fs.rmSync(outputPath, { recursive: true });
|
|
43
62
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
: utf8Content;
|
|
60
|
-
fs.writeFileSync(fullPath, fileContent, 'utf8');
|
|
61
|
-
});
|
|
62
|
-
const modules = sdkContent.modules;
|
|
63
|
-
for (const [file, content] of (0, genmodules_1.generateSdkModules)({ modules, inputRelativePath })) {
|
|
64
|
-
yield writeScriptTo(null, file, content);
|
|
65
|
-
}
|
|
66
|
-
const sdkInterfacePath = path.resolve(process.cwd(), config.sdkInterfacePath);
|
|
67
|
-
const relativeSdkInterfacePath = path
|
|
68
|
-
.relative(outputPath, sdkInterfacePath)
|
|
69
|
-
.replace(/\\/g, '/')
|
|
70
|
-
.replace(/\.([jt]sx?)$/, '');
|
|
71
|
-
yield writeScriptTo(null, 'baseRequest.ts', `export type { BaseRequestArgs, BaseRequestFn } from "${relativeSdkInterfacePath}"`);
|
|
72
|
-
if (!fs.existsSync(sdkInterfacePath) && config.generateDefaultSdkInterface !== false) {
|
|
73
|
-
(0, logging_1.println)('├─ Generating default BaseRequest implementation...');
|
|
74
|
-
fs.writeFileSync(sdkInterfacePath, sdk_interface_1.defaultSdkInterface, 'utf8');
|
|
63
|
+
}
|
|
64
|
+
const outputParentDir = path.dirname(outputPath);
|
|
65
|
+
if (!fs.existsSync(outputParentDir)) {
|
|
66
|
+
(0, logging_1.panic)("Output directory's parent {magentaBright} does not exist.", outputParentDir);
|
|
67
|
+
}
|
|
68
|
+
fs.mkdirSync(outputPath);
|
|
69
|
+
const prettierConfig = prettifyOutput ? (0, prettier_1.findPrettierConfig)(config) : {};
|
|
70
|
+
const writeScriptTo = async (parentDir, file, utf8Content) => {
|
|
71
|
+
if (file.endsWith('.ts')) {
|
|
72
|
+
utf8Content =
|
|
73
|
+
'/// Auto-generated file (nest-sdk-generator)\n' +
|
|
74
|
+
'/// Please do not edit this file - re-generate the SDK using the generator instead.\n' +
|
|
75
|
+
(config.generateTimestamps !== false ? '/// Generated on: ' + new Date().toUTCString() + '\n' : '') +
|
|
76
|
+
'///\n' +
|
|
77
|
+
utf8Content;
|
|
75
78
|
}
|
|
76
|
-
|
|
79
|
+
const fullPath = path.resolve(outputPath, parentDir ?? '', file);
|
|
80
|
+
fs.mkdirSync(path.dirname(fullPath), { recursive: true });
|
|
81
|
+
const fileContent = prettifyOutput
|
|
82
|
+
? await (0, prettier_1.prettify)(utf8Content, prettierConfig, file.endsWith('.json') ? 'json' : 'typescript')
|
|
83
|
+
: utf8Content;
|
|
84
|
+
fs.writeFileSync(fullPath, fileContent, 'utf8');
|
|
85
|
+
};
|
|
86
|
+
const modules = sdkContent.modules;
|
|
87
|
+
for (const [file, content] of (0, genmodules_1.generateSdkModules)({ modules, inputRelativePath })) {
|
|
88
|
+
await writeScriptTo(null, file, content);
|
|
89
|
+
}
|
|
90
|
+
const sdkInterfacePath = path.resolve(process.cwd(), config.sdkInterfacePath);
|
|
91
|
+
const relativeSdkInterfacePath = path
|
|
92
|
+
.relative(outputPath, sdkInterfacePath)
|
|
93
|
+
.replace(/\\/g, '/')
|
|
94
|
+
.replace(/\.([jt]sx?)$/, '');
|
|
95
|
+
await writeScriptTo(null, 'baseRequest.ts', `export type { BaseRequestArgs, BaseRequestFn } from "${relativeSdkInterfacePath}"`);
|
|
96
|
+
if (!fs.existsSync(sdkInterfacePath) && config.generateDefaultSdkInterface !== false) {
|
|
97
|
+
(0, logging_1.println)('├─ Generating default BaseRequest implementation...');
|
|
98
|
+
fs.writeFileSync(sdkInterfacePath, sdk_interface_1.defaultSdkInterface, 'utf8');
|
|
99
|
+
}
|
|
77
100
|
}
|
|
78
|
-
exports.default = generateRTKQueryEndpoints;
|
|
79
101
|
const validateSdkContent = (content) => {
|
|
80
102
|
const seenMethods = new Map();
|
|
81
103
|
const seenRoutes = new Map();
|
|
@@ -97,4 +119,4 @@ const validateSdkContent = (content) => {
|
|
|
97
119
|
});
|
|
98
120
|
};
|
|
99
121
|
exports.validateSdkContent = validateSdkContent;
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnRrLXF1ZXJ5LWdlbmVyYXRvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCxNQUFZLEVBQUUsK0JBQVU7QUFDeEIsTUFBWSxJQUFJLGlDQUFZO0FBSTVCLHdDQUFrRDtBQUVsRCw2Q0FBaUQ7QUFDakQseUNBQXlEO0FBQ3pELG1EQUFxRDtBQUV0QyxLQUFLLG9DQUFvQyxNQUFjLEVBQUUsVUFBc0I7SUFDNUYsSUFBQSxRQUFBLGtCQUFrQixFQUFDLFVBQVUsQ0FBQyxDQUFBO0lBRTlCLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxRQUFRLEtBQUssS0FBSyxDQUFBO0lBRWhELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNwQixJQUFBLGVBQUssRUFBQyxrREFBa0QsQ0FBQyxDQUFBO0lBQzNELENBQUM7SUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDcEUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBQ2xFLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUE7SUFFOUQsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDOUIsSUFBSSxNQUFNLENBQUMscUJBQXFCLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDM0MsSUFBQSxlQUFLLEVBQUMsMkRBQTJELENBQUMsQ0FBQTtRQUNwRSxDQUFDO2FBQU0sQ0FBQztZQUNOLEVBQUUsQ0FBQyxNQUFN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
|
|
@@ -2,18 +2,51 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* @file Interface for prettifying generated files
|
|
4
4
|
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
5
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
7
|
-
|
|
8
|
-
const
|
|
39
|
+
exports.findPrettierConfig = findPrettierConfig;
|
|
40
|
+
exports.prettify = prettify;
|
|
41
|
+
const fs = __importStar(require("fs"));
|
|
42
|
+
const prettier = __importStar(require("prettier"));
|
|
9
43
|
const logging_1 = require("../logging");
|
|
10
44
|
const utils_1 = require("../utils");
|
|
11
45
|
/**
|
|
12
46
|
* Find a .prettierrc configuration file in the current directory or above
|
|
13
47
|
*/
|
|
14
48
|
function findPrettierConfig(config) {
|
|
15
|
-
|
|
16
|
-
const prettierConfigPath = (_a = config.prettierConfig) !== null && _a !== void 0 ? _a : (0, utils_1.findFileAbove)('.prettierrc', config.sdkOutputPath);
|
|
49
|
+
const prettierConfigPath = config.prettierConfig ?? (0, utils_1.findFileAbove)('.prettierrc', config.sdkOutputPath);
|
|
17
50
|
if (!prettierConfigPath) {
|
|
18
51
|
return {};
|
|
19
52
|
}
|
|
@@ -28,7 +61,6 @@ function findPrettierConfig(config) {
|
|
|
28
61
|
throw new Error('Failed to parse Prettier configuration: ' + e);
|
|
29
62
|
}
|
|
30
63
|
}
|
|
31
|
-
exports.findPrettierConfig = findPrettierConfig;
|
|
32
64
|
/**
|
|
33
65
|
* Prettify a TypeScript or JSON input
|
|
34
66
|
* @param source
|
|
@@ -37,7 +69,9 @@ exports.findPrettierConfig = findPrettierConfig;
|
|
|
37
69
|
* @returns
|
|
38
70
|
*/
|
|
39
71
|
function prettify(source, config, parser) {
|
|
40
|
-
return prettier.format(source,
|
|
72
|
+
return prettier.format(source, {
|
|
73
|
+
parser,
|
|
74
|
+
...config,
|
|
75
|
+
});
|
|
41
76
|
}
|
|
42
|
-
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldHRpZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnRrLXF1ZXJ5LWdlbmVyYXRvci9wcmV0dGllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQUVILHlCQUF3QjtBQUV4QixxQ0FBb0M7QUFHcEMsd0NBQWtDO0FBQ2xDLG9DQUF3QztBQUV4Qzs7R0FFRztBQUNILFNBQWdCLGtCQUFrQixDQUFDLE1BQWM7O0lBQy9DLE1BQU0sa0JBQWtCLEdBQUcsTUFBQSxNQUFNLENBQUMsY0FBYyxtQ0FBSSxJQUFBLHFCQUFhLEVBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUV0RyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUN4QixPQUFPLEVBQUUsQ0FBQTtJQUNYLENBQUM7SUFFRCxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7UUFDdkMsSUFBQSxlQUFLLEVBQUMsa0VBQWtFLEVBQUUsa0JBQWtCLENBQUMsQ0FBQTtJQUMvRixDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUV4RCxJQUFJLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDekIsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQ2pFLENBQUM7QUFDSCxDQUFDO0FBbEJELGdEQWtCQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLFFBQVEsQ0FBQyxNQUFjLEVBQUUsTUFBYyxFQUFFLE1BQTZCO0lBQ3BGLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLGtCQUMzQixNQUFNLElBQ0gsTUFBTSxFQUNULENBQUE7QUFDSixDQUFDO0FBTEQsNEJBS0MifQ==
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldHRpZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnRrLXF1ZXJ5LWdlbmVyYXRvci9wcmV0dGllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCxNQUFZLEVBQUUsK0JBQVU7QUFFeEIsTUFBWSxRQUFRLHFDQUFnQjtBQUdwQyx3Q0FBa0M7QUFDbEMsb0NBQXdDO0FBRXhDOztHQUVHO0FBQ0gsNEJBQW1DLE1BQWM7SUFDL0MsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsY0FBYyxJQUFJLElBQUEscUJBQWEsRUFBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0lBRXRHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sRUFBRSxDQUFBO0lBQ1gsQ0FBQztJQUVELElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztRQUN2QyxJQUFBLGVBQUssRUFBQyxrRUFBa0UsRUFBRSxrQkFBa0IsQ0FBQyxDQUFBO0lBQy9GLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBRXhELElBQUksQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN6QixDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLEdBQUcsQ0FBQyxDQUFDLENBQUE7SUFDakUsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxrQkFBeUIsTUFBYyxFQUFFLE1BQWMsRUFBRSxNQUE2QjtJQUNwRixPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO1FBQzdCLE1BQU07UUFDTixHQUFHLE1BQU07S0FDVixDQUFDLENBQUE7QUFDSixDQUFDIn0=
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.defaultSdkInterface = void 0;
|
|
4
4
|
exports.defaultSdkInterface = `
|
|
5
|
-
import type { BaseQueryApi } from "@reduxjs/toolkit/
|
|
6
|
-
import type { BaseQueryFn } from "@reduxjs/toolkit/query";
|
|
5
|
+
import type { BaseQueryApi, BaseQueryFn } from "@reduxjs/toolkit/query";
|
|
7
6
|
|
|
8
7
|
export type BaseRequestArgs = {
|
|
9
8
|
body: unknown;
|
|
@@ -161,7 +160,7 @@ export type RequestErrorParams = {
|
|
|
161
160
|
};
|
|
162
161
|
|
|
163
162
|
export class RequestError extends Error {
|
|
164
|
-
public static readonly DEFAULT_USER_MESSAGE
|
|
163
|
+
public static readonly DEFAULT_USER_MESSAGE = "An unexpected error occurred. We're looking into it!";
|
|
165
164
|
|
|
166
165
|
public readonly type: RequestErrorType;
|
|
167
166
|
public readonly userMessage: string;
|
|
@@ -254,4 +253,4 @@ export class RequestError extends Error {
|
|
|
254
253
|
}
|
|
255
254
|
|
|
256
255
|
`.trim();
|
|
257
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
256
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2RrLWludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydGstcXVlcnktZ2VuZXJhdG9yL3Nkay1pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxtQkFBbUIsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0EyUGxDLENBQUMsSUFBSSxFQUFFLENBQUEifQ==
|
package/build/utils.js
CHANGED
|
@@ -1,8 +1,42 @@
|
|
|
1
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
|
|
5
|
-
const
|
|
36
|
+
exports.findFileAbove = findFileAbove;
|
|
37
|
+
exports.findFilesRecursive = findFilesRecursive;
|
|
38
|
+
const fs = __importStar(require("fs"));
|
|
39
|
+
const path = __importStar(require("path"));
|
|
6
40
|
function findFileAbove(pattern, dir) {
|
|
7
41
|
if (!path.isAbsolute(dir)) {
|
|
8
42
|
// Get an absolute path to allow getting its parent using path.dirname()
|
|
@@ -27,7 +61,6 @@ function findFileAbove(pattern, dir) {
|
|
|
27
61
|
// Success!
|
|
28
62
|
return path.resolve(dir, items[0]);
|
|
29
63
|
}
|
|
30
|
-
exports.findFileAbove = findFileAbove;
|
|
31
64
|
/**
|
|
32
65
|
* Find all files matching a pattern, recursively
|
|
33
66
|
* @param pattern The pattern to look for
|
|
@@ -52,5 +85,4 @@ function findFilesRecursive(pattern, dir, relative = true) {
|
|
|
52
85
|
}
|
|
53
86
|
return find(pattern, dir, dir);
|
|
54
87
|
}
|
|
55
|
-
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUJBQXdCO0FBQ3hCLDZCQUE0QjtBQUU1QixTQUFnQixhQUFhLENBQUMsT0FBd0IsRUFBRSxHQUFXO0lBQ2pFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDMUIsd0VBQXdFO1FBQ3hFLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUN4QyxDQUFDO0lBRUQseUJBQXlCO0lBQ3pCLHVGQUF1RjtJQUN2Riw4QkFBOEI7SUFDOUIsNEdBQTRHO0lBQzVHLElBQUksT0FBTyxHQUFHLEdBQUcsQ0FBQTtJQUVqQixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUE7SUFFZCx3Q0FBd0M7SUFDeEMsT0FBTyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLFlBQVksTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN4SSxtQ0FBbUM7UUFDbkMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUE7UUFFdkIseUZBQXlGO1FBQ3pGLElBQUksQ0FBQyxHQUFHLElBQUksT0FBTyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQzVCLE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQztRQUVELE9BQU8sR0FBRyxHQUFHLENBQUE7SUFDZixDQUFDO0lBRUQsV0FBVztJQUNYLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDcEMsQ0FBQztBQTdCRCxzQ0E2QkM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxPQUF3QixFQUFFLEdBQVcsRUFBRSxRQUFRLEdBQUcsSUFBSTtJQUN2RixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUE7SUFFekIsU0FBUyxJQUFJLENBQUMsT0FBd0IsRUFBRSxPQUFlLEVBQUUsT0FBZTtRQUN0RSxPQUFPLEVBQUU7YUFDTixXQUFXLENBQUMsT0FBTyxDQUFDO2FBQ3BCLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ1osTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFFNUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsRUFBRTtnQkFDekMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQztnQkFDbEMsQ0FBQyxDQUFDLENBQUMsT0FBTyxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNyRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQ2xGLENBQUMsQ0FBQyxFQUFFLENBQUE7UUFDVixDQUFDLENBQUM7YUFDRCxJQUFJLEVBQUUsQ0FBQTtJQUNYLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFBO0FBQ2hDLENBQUM7QUFuQkQsZ0RBbUJDIn0=
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE1BQVksRUFBRSwrQkFBVTtBQUN4QixNQUFZLElBQUksaUNBQVk7QUFFNUIsdUJBQThCLE9BQXdCLEVBQUUsR0FBVztJQUNqRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzFCLHdFQUF3RTtRQUN4RSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUE7SUFDeEMsQ0FBQztJQUVELHlCQUF5QjtJQUN6Qix1RkFBdUY7SUFDdkYsOEJBQThCO0lBQzlCLDRHQUE0RztJQUM1RyxJQUFJLE9BQU8sR0FBRyxHQUFHLENBQUE7SUFFakIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFBO0lBRWQsd0NBQXdDO0lBQ3hDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxZQUFZLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDeEksbUNBQW1DO1FBQ25DLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBRXZCLHlGQUF5RjtRQUN6RixJQUFJLENBQUMsR0FBRyxJQUFJLE9BQU8sS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUM1QixPQUFPLElBQUksQ0FBQTtRQUNiLENBQUM7UUFFRCxPQUFPLEdBQUcsR0FBRyxDQUFBO0lBQ2YsQ0FBQztJQUVELFdBQVc7SUFDWCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ3BDLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCw0QkFBbUMsT0FBd0IsRUFBRSxHQUFXLEVBQUUsUUFBUSxHQUFHLElBQUk7SUFDdkYsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFBO0lBRXpCLFNBQVMsSUFBSSxDQUFDLE9BQXdCLEVBQUUsT0FBZSxFQUFFLE9BQWU7UUFDdEUsT0FBTyxFQUFFO2FBQ04sV0FBVyxDQUFDLE9BQU8sQ0FBQzthQUNwQixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNaLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFBO1lBRTVDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUU7Z0JBQ3pDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUM7Z0JBQ2xDLENBQUMsQ0FBQyxDQUFDLE9BQU8sT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDckUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUNsRixDQUFDLENBQUMsRUFBRSxDQUFBO1FBQ1YsQ0FBQyxDQUFDO2FBQ0QsSUFBSSxFQUFFLENBQUE7SUFDWCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQTtBQUNoQyxDQUFDIn0=
|
package/package.json
CHANGED
|
@@ -1,36 +1,51 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@buildvision/nest-sdk-generator",
|
|
3
3
|
"author": "BuildVision <christophe@buildvision.io>",
|
|
4
|
-
"version": "
|
|
5
|
-
"description": "
|
|
4
|
+
"version": "3.0.0",
|
|
5
|
+
"description": "Generate fully-typed RTK Query API clients from NestJS controllers",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"nest",
|
|
8
8
|
"nestjs",
|
|
9
|
+
"rtk-query",
|
|
10
|
+
"redux-toolkit",
|
|
11
|
+
"redux",
|
|
12
|
+
"react",
|
|
13
|
+
"api-client",
|
|
9
14
|
"sdk",
|
|
10
15
|
"generator",
|
|
11
|
-
"typescript"
|
|
12
|
-
"frontend",
|
|
13
|
-
"api"
|
|
16
|
+
"typescript"
|
|
14
17
|
],
|
|
18
|
+
"repository": {
|
|
19
|
+
"type": "git",
|
|
20
|
+
"url": "git+https://github.com/build-vision/nest-sdk-generator.git"
|
|
21
|
+
},
|
|
22
|
+
"homepage": "https://github.com/build-vision/nest-sdk-generator#readme",
|
|
23
|
+
"bugs": {
|
|
24
|
+
"url": "https://github.com/build-vision/nest-sdk-generator/issues"
|
|
25
|
+
},
|
|
15
26
|
"main": "build/bin.js",
|
|
16
27
|
"scripts": {
|
|
17
28
|
"prepare": "npm run build",
|
|
18
|
-
"build": "tsc -p tsconfig.json --outDir build",
|
|
29
|
+
"build": "rm -rf build && node node_modules/typescript/bin/tsc -p tsconfig.json --outDir build",
|
|
30
|
+
"build:baseline": "./scripts/build-baseline.sh",
|
|
19
31
|
"start": "npm run build && node build/bin.js",
|
|
20
|
-
"
|
|
21
|
-
"
|
|
32
|
+
"test": "npm run build && node --test 'test/*.test.mjs'",
|
|
33
|
+
"typecheck": "node node_modules/typescript/bin/tsc --project tsconfig.json --noEmit",
|
|
34
|
+
"lint": "node --require ./scripts/eslint-with-typescript-6.cjs node_modules/eslint/bin/eslint.js --quiet . --fix"
|
|
22
35
|
},
|
|
23
36
|
"bin": "build/bin.js",
|
|
24
37
|
"dependencies": {
|
|
25
38
|
"chalk": "~4.1.2",
|
|
26
39
|
"minimist": "~1.2.7",
|
|
27
40
|
"prettier": "^3.2.5",
|
|
28
|
-
"ts-morph": "~16.0.0"
|
|
41
|
+
"ts-morph": "~16.0.0",
|
|
42
|
+
"typescript": "7.0.2"
|
|
29
43
|
},
|
|
30
44
|
"devDependencies": {
|
|
45
|
+
"@reduxjs/toolkit": "^2.13.0",
|
|
31
46
|
"@types/minimist": "^1.2.2",
|
|
32
47
|
"@types/node": "~18.11.9",
|
|
33
|
-
"
|
|
48
|
+
"@types/react": "^19.3.0",
|
|
34
49
|
"@typescript-eslint/eslint-plugin": "^6.13.2",
|
|
35
50
|
"@typescript-eslint/parser": "^6.13.2",
|
|
36
51
|
"eslint": "^8.50.0",
|
|
@@ -40,6 +55,9 @@
|
|
|
40
55
|
"eslint-plugin-import": "^2.27.5",
|
|
41
56
|
"eslint-plugin-prettier": "^5.0.0",
|
|
42
57
|
"eslint-plugin-sort-destructure-keys": "^1.5.0",
|
|
43
|
-
"eslint-plugin-typescript-sort-keys": "^3.1.0"
|
|
58
|
+
"eslint-plugin-typescript-sort-keys": "^3.1.0",
|
|
59
|
+
"react": "^19.3.0",
|
|
60
|
+
"react-redux": "^9.3.0",
|
|
61
|
+
"typescript-6": "npm:typescript@6.0.3"
|
|
44
62
|
}
|
|
45
63
|
}
|
|
@@ -8,38 +8,10 @@ import { Node, Project } from 'ts-morph'
|
|
|
8
8
|
|
|
9
9
|
import { debug, warn } from '../logging'
|
|
10
10
|
|
|
11
|
-
import { analyzeMethods
|
|
11
|
+
import { analyzeMethods } from './methods'
|
|
12
|
+
import { camelcase, SdkController } from './sdk'
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
* Convert a string to camel case
|
|
15
|
-
* @param str
|
|
16
|
-
*/
|
|
17
|
-
function camelcase(str: string): string {
|
|
18
|
-
return str
|
|
19
|
-
.split(/[^a-zA-Z0-9_]/g)
|
|
20
|
-
.map((p, i) => {
|
|
21
|
-
const f = p.substr(0, 1)
|
|
22
|
-
return (i === 0 ? f.toLocaleLowerCase() : f.toLocaleUpperCase()) + p.substr(1)
|
|
23
|
-
})
|
|
24
|
-
.join('')
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* SDK interface of a controller
|
|
29
|
-
*/
|
|
30
|
-
export interface SdkController {
|
|
31
|
-
/** Name of the controller's class, camel cased */
|
|
32
|
-
readonly className: string
|
|
33
|
-
|
|
34
|
-
/** Controller's methods */
|
|
35
|
-
readonly methods: SdkMethod[]
|
|
36
|
-
|
|
37
|
-
/** Original controller file's path */
|
|
38
|
-
readonly path: string
|
|
39
|
-
|
|
40
|
-
/** Name the controller is registered under */
|
|
41
|
-
readonly registrationName: string
|
|
42
|
-
}
|
|
14
|
+
export { SdkController }
|
|
43
15
|
|
|
44
16
|
/**
|
|
45
17
|
* Generate a SDK interface for a controller
|
|
@@ -10,10 +10,11 @@ import { Project } from 'ts-morph'
|
|
|
10
10
|
import { debug, format, panic, warn } from '../logging'
|
|
11
11
|
import { findFileAbove } from '../utils'
|
|
12
12
|
|
|
13
|
-
import { analyzeController
|
|
13
|
+
import { analyzeController } from './controller'
|
|
14
14
|
import { getModuleName } from './module'
|
|
15
|
+
import { SdkController, SdkModules } from './sdk'
|
|
15
16
|
|
|
16
|
-
export
|
|
17
|
+
export { SdkModules }
|
|
17
18
|
|
|
18
19
|
export function analyzeControllers(controllers: string[], absoluteSrcPath: string, project: Project): SdkModules {
|
|
19
20
|
/** Hierarchised SDK informations */
|
|
@@ -10,45 +10,27 @@ import { MagicType } from '../config'
|
|
|
10
10
|
import { debug, format, panic, unreachable, warn } from '../logging'
|
|
11
11
|
|
|
12
12
|
import { analyzeClassDeps } from './classdeps'
|
|
13
|
-
import {
|
|
14
|
-
|
|
13
|
+
import {
|
|
14
|
+
ExtractedType,
|
|
15
|
+
flattenSdkResolvedTypes,
|
|
16
|
+
locateTypesFile,
|
|
17
|
+
MODULE_EXTENSIONS,
|
|
18
|
+
TypeLocation,
|
|
19
|
+
TypeLocationWithExt,
|
|
20
|
+
TypesExtractorContent,
|
|
21
|
+
} from './sdk'
|
|
15
22
|
import { getImportResolvedType, ResolvedTypeDeps, resolveTypeDependencies } from './typedeps'
|
|
16
23
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
readonly typename: string
|
|
24
|
+
export {
|
|
25
|
+
ExtractedType,
|
|
26
|
+
flattenSdkResolvedTypes,
|
|
27
|
+
locateTypesFile,
|
|
28
|
+
MODULE_EXTENSIONS,
|
|
29
|
+
TypeLocation,
|
|
30
|
+
TypeLocationWithExt,
|
|
31
|
+
TypesExtractorContent,
|
|
26
32
|
}
|
|
27
33
|
|
|
28
|
-
/**
|
|
29
|
-
* Location of an imported type after figuring out its extension
|
|
30
|
-
*/
|
|
31
|
-
export interface TypeLocationWithExt extends TypeLocation {
|
|
32
|
-
readonly relativePath: string
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Extracted imported type
|
|
37
|
-
*/
|
|
38
|
-
export interface ExtractedType extends TypeLocationWithExt {
|
|
39
|
-
/** Type's declaration */
|
|
40
|
-
readonly content: string
|
|
41
|
-
|
|
42
|
-
/** Types this one depends on */
|
|
43
|
-
readonly dependencies: TypeLocationWithExt[]
|
|
44
|
-
|
|
45
|
-
/** Type parameters (e.g. <T>) */
|
|
46
|
-
readonly typeParams: string[]
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// Maps files to records mapping themselves type names to their declaration code
|
|
50
|
-
export type TypesExtractorContent = Map<string, Map<string, ExtractedType>>
|
|
51
|
-
|
|
52
34
|
/**
|
|
53
35
|
* Types extractor
|
|
54
36
|
*/
|
|
@@ -427,54 +409,3 @@ export class TypesExtractor {
|
|
|
427
409
|
return extracted
|
|
428
410
|
}
|
|
429
411
|
}
|
|
430
|
-
|
|
431
|
-
/**
|
|
432
|
-
* Locate the files containing a list of a resolved types
|
|
433
|
-
* @param resolvedTypes
|
|
434
|
-
* @returns
|
|
435
|
-
*/
|
|
436
|
-
export function locateTypesFile(resolvedTypes: Array<ResolvedTypeDeps>): TypeLocation[] {
|
|
437
|
-
const out = new Array<TypeLocation>()
|
|
438
|
-
|
|
439
|
-
for (const resolved of resolvedTypes) {
|
|
440
|
-
for (const [file, types] of resolved.dependencies) {
|
|
441
|
-
for (const typename of types) {
|
|
442
|
-
if (!out.find((loc) => loc.typename === typename && loc.relativePathNoExt === file)) {
|
|
443
|
-
out.push({ typename, relativePathNoExt: file })
|
|
444
|
-
}
|
|
445
|
-
}
|
|
446
|
-
}
|
|
447
|
-
|
|
448
|
-
for (const typename of resolved.localTypes) {
|
|
449
|
-
if (!out.find((loc) => loc.typename === typename && loc.relativePathNoExt === resolved.relativeFilePath)) {
|
|
450
|
-
out.push({ typename, relativePathNoExt: resolved.relativeFilePath })
|
|
451
|
-
}
|
|
452
|
-
}
|
|
453
|
-
}
|
|
454
|
-
|
|
455
|
-
return out
|
|
456
|
-
}
|
|
457
|
-
|
|
458
|
-
/**
|
|
459
|
-
* Flatten a tree of resolved type dependencies
|
|
460
|
-
* @param sdkModules
|
|
461
|
-
* @returns
|
|
462
|
-
*/
|
|
463
|
-
export function flattenSdkResolvedTypes(sdkModules: SdkModules): ResolvedTypeDeps[] {
|
|
464
|
-
const flattened = new Array<ResolvedTypeDeps>()
|
|
465
|
-
|
|
466
|
-
for (const module of sdkModules.values()) {
|
|
467
|
-
for (const controller of module.values()) {
|
|
468
|
-
for (const method of controller.methods.values()) {
|
|
469
|
-
const { bodyParams, queryParams, routeParams } = method.params
|
|
470
|
-
|
|
471
|
-
flattened.push(method.returnType)
|
|
472
|
-
flattened.push(...getParamResolvedTypes(routeParams))
|
|
473
|
-
flattened.push(...getParamResolvedTypes(queryParams))
|
|
474
|
-
flattened.push(...getParamResolvedTypes(bodyParams))
|
|
475
|
-
}
|
|
476
|
-
}
|
|
477
|
-
}
|
|
478
|
-
|
|
479
|
-
return flattened
|
|
480
|
-
}
|