@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.
Files changed (93) hide show
  1. package/.eslintrc.js +1 -1
  2. package/.github/workflows/test.yml +35 -0
  3. package/README.md +402 -239
  4. package/build/analyzer/classdeps.js +36 -4
  5. package/build/analyzer/controller.d.ts +2 -14
  6. package/build/analyzer/controller.js +38 -18
  7. package/build/analyzer/controllers.d.ts +2 -2
  8. package/build/analyzer/controllers.js +37 -5
  9. package/build/analyzer/extractor.d.ts +2 -41
  10. package/build/analyzer/extractor.js +63 -66
  11. package/build/analyzer/index.d.ts +2 -6
  12. package/build/analyzer/index.js +107 -86
  13. package/build/analyzer/methods.d.ts +2 -30
  14. package/build/analyzer/methods.js +7 -16
  15. package/build/analyzer/module.js +36 -4
  16. package/build/analyzer/params.d.ts +3 -39
  17. package/build/analyzer/params.js +17 -37
  18. package/build/analyzer/route.js +8 -9
  19. package/build/analyzer/sdk.d.ts +146 -0
  20. package/build/analyzer/sdk.js +120 -0
  21. package/build/analyzer/typedeps.d.ts +15 -0
  22. package/build/analyzer/typedeps.js +62 -10
  23. package/build/bin.js +72 -26
  24. package/build/config.d.ts +13 -0
  25. package/build/config.js +36 -3
  26. package/build/engine/analyze.d.ts +16 -0
  27. package/build/engine/analyze.js +786 -0
  28. package/build/engine/ast.d.ts +24 -0
  29. package/build/engine/ast.js +100 -0
  30. package/build/engine/file-order.d.ts +17 -0
  31. package/build/engine/file-order.js +97 -0
  32. package/build/engine/host.d.ts +63 -0
  33. package/build/engine/host.js +16 -0
  34. package/build/engine/index.d.ts +15 -0
  35. package/build/engine/index.js +93 -0
  36. package/build/engine/ts-morph-compat-host.d.ts +8 -0
  37. package/build/engine/ts-morph-compat-host.js +18 -0
  38. package/build/engine/tsgo-host.d.ts +9 -0
  39. package/build/engine/tsgo-host.js +136 -0
  40. package/build/engine/typescript-host.d.ts +26 -0
  41. package/build/engine/typescript-host.js +142 -0
  42. package/build/generator/genmodules.d.ts +1 -4
  43. package/build/generator/genmodules.js +23 -27
  44. package/build/generator/gentypes.d.ts +1 -1
  45. package/build/generator/gentypes.js +36 -4
  46. package/build/generator/index.d.ts +1 -1
  47. package/build/generator/index.js +91 -69
  48. package/build/generator/prettier.js +43 -9
  49. package/build/generator/sdk-interface.d.ts +1 -1
  50. package/build/generator/sdk-interface.js +5 -5
  51. package/build/logging.d.ts +2 -0
  52. package/build/logging.js +14 -11
  53. package/build/rtk-query-generator/genmodules.d.ts +1 -4
  54. package/build/rtk-query-generator/genmodules.js +27 -31
  55. package/build/rtk-query-generator/index.d.ts +1 -1
  56. package/build/rtk-query-generator/index.js +87 -65
  57. package/build/rtk-query-generator/prettier.js +43 -9
  58. package/build/rtk-query-generator/sdk-interface.js +3 -4
  59. package/build/utils.js +38 -6
  60. package/package.json +29 -11
  61. package/src/analyzer/controller.ts +3 -31
  62. package/src/analyzer/controllers.ts +3 -2
  63. package/src/analyzer/extractor.ts +17 -86
  64. package/src/analyzer/index.ts +5 -11
  65. package/src/analyzer/methods.ts +5 -36
  66. package/src/analyzer/params.ts +13 -55
  67. package/src/analyzer/sdk.ts +247 -0
  68. package/src/analyzer/typedeps.ts +22 -4
  69. package/src/bin.ts +29 -5
  70. package/src/config.ts +15 -0
  71. package/src/engine/analyze.ts +1110 -0
  72. package/src/engine/ast.ts +105 -0
  73. package/src/engine/file-order.ts +104 -0
  74. package/src/engine/host.ts +79 -0
  75. package/src/engine/index.ts +79 -0
  76. package/src/engine/ts-morph-compat-host.ts +20 -0
  77. package/src/engine/tsgo-host.ts +119 -0
  78. package/src/engine/typescript-host.ts +159 -0
  79. package/src/generator/genmodules.ts +9 -4
  80. package/src/generator/gentypes.ts +1 -1
  81. package/src/generator/index.ts +1 -1
  82. package/src/logging.ts +6 -1
  83. package/src/rtk-query-generator/genmodules.ts +9 -4
  84. package/src/rtk-query-generator/index.ts +1 -2
  85. package/src/rtk-query-generator/sdk-interface.ts +2 -3
  86. package/tsconfig.json +7 -6
  87. package/build/analyzer/decorator.d.ts +0 -10
  88. package/build/analyzer/decorator.js +0 -29
  89. package/build/rtk-query-generator/gentypes.d.ts +0 -10
  90. package/build/rtk-query-generator/gentypes.js +0 -62
  91. package/build/tsconfig.tsbuildinfo +0 -1
  92. package/bun.lockb +0 -0
  93. package/tsconfig.tsbuildinfo +0 -1
@@ -2,83 +2,105 @@
2
2
  /**
3
3
  * @file Entrypoint of the SDK generator
4
4
  */
5
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
6
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
7
- return new (P || (P = Promise))(function (resolve, reject) {
8
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
9
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
10
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
11
- step((generator = generator.apply(thisArg, _arguments || [])).next());
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
- const fs = require("fs");
16
- const path = require("path");
39
+ exports.default = generateAPIClient;
40
+ const fs = __importStar(require("fs"));
41
+ const path = __importStar(require("path"));
17
42
  const typedeps_1 = require("../analyzer/typedeps");
18
43
  const logging_1 = require("../logging");
19
44
  const genmodules_1 = require("./genmodules");
20
45
  const gentypes_1 = require("./gentypes");
21
46
  const prettier_1 = require("./prettier");
22
47
  const sdk_interface_1 = require("./sdk-interface");
23
- function generateAPIClient(config, sdkContent) {
24
- return __awaiter(this, void 0, void 0, function* () {
25
- const prettifyOutput = config.prettify !== false;
26
- if (!prettifyOutput) {
27
- (0, logging_1.debug)('NOTE: files will not be prettified with Prettier');
28
- }
29
- const outputPath = path.resolve(process.cwd(), config.sdkOutputPath);
30
- const inputPath = path.resolve(process.cwd(), config.apiInputPath);
31
- const inputRelativePath = path.relative(outputPath, inputPath);
32
- if (fs.existsSync(outputPath)) {
33
- if (config.overwriteOldOutputDir === false) {
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
- }
39
- }
40
- const outputParentDir = path.dirname(outputPath);
41
- if (!fs.existsSync(outputParentDir)) {
42
- (0, logging_1.panic)("Output directory's parent {magentaBright} does not exist.", outputParentDir);
48
+ async function generateAPIClient(config, 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");
43
59
  }
44
- fs.mkdirSync(outputPath);
45
- const prettierConfig = prettifyOutput ? (0, prettier_1.findPrettierConfig)(config) : {};
46
- const writeScriptTo = (parentDir, file, utf8Content) => __awaiter(this, void 0, void 0, function* () {
47
- if (file.endsWith('.ts')) {
48
- utf8Content =
49
- '/// Auto-generated file (nest-sdk-generator)\n' +
50
- '/// Please do not edit this file - re-generate the SDK using the generator instead.\n' +
51
- (config.generateTimestamps !== false ? '/// Generated on: ' + new Date().toUTCString() + '\n' : '') +
52
- '///\n' +
53
- utf8Content;
54
- }
55
- const fullPath = path.resolve(outputPath, parentDir !== null && parentDir !== void 0 ? parentDir : '', file);
56
- fs.mkdirSync(path.dirname(fullPath), { recursive: true });
57
- const fileContent = prettifyOutput
58
- ? yield (0, prettier_1.prettify)(utf8Content, prettierConfig, file.endsWith('.json') ? 'json' : 'typescript')
59
- : utf8Content;
60
- fs.writeFileSync(fullPath, fileContent, 'utf8');
61
- });
62
- (0, logging_1.println)('> Generating type files...');
63
- for (const [file, content] of (0, gentypes_1.generateSdkTypeFiles)(sdkContent.types)) {
64
- yield writeScriptTo('_types', (0, typedeps_1.normalizeExternalFilePath)(file), content);
60
+ else {
61
+ fs.rmSync(outputPath, { recursive: true });
65
62
  }
66
- (0, logging_1.println)('> Generating modules...');
67
- const modules = sdkContent.modules;
68
- for (const [file, content] of (0, genmodules_1.generateSdkModules)({ modules, inputRelativePath })) {
69
- yield writeScriptTo(null, file, content);
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;
70
78
  }
71
- const sdkInterfacePath = path.resolve(process.cwd(), config.sdkInterfacePath);
72
- const relativeSdkInterfacePath = path
73
- .relative(outputPath, sdkInterfacePath)
74
- .replace(/\\/g, '/')
75
- .replace(/\.([jt]sx?)$/, '');
76
- yield writeScriptTo(null, 'central.ts', `export { request } from "${relativeSdkInterfacePath}"`);
77
- if (!fs.existsSync(sdkInterfacePath) && config.generateDefaultSdkInterface !== false) {
78
- (0, logging_1.println)('├─ Generating default SDK interface...');
79
- fs.writeFileSync(sdkInterfacePath, sdk_interface_1.defaultSdkInterface, 'utf8');
80
- }
81
- });
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
+ (0, logging_1.println)('> Generating type files...');
87
+ for (const [file, content] of (0, gentypes_1.generateSdkTypeFiles)(sdkContent.types)) {
88
+ await writeScriptTo('_types', (0, typedeps_1.normalizeExternalFilePath)(file), content);
89
+ }
90
+ (0, logging_1.println)('> Generating modules...');
91
+ const modules = sdkContent.modules;
92
+ for (const [file, content] of (0, genmodules_1.generateSdkModules)({ modules, inputRelativePath })) {
93
+ await writeScriptTo(null, file, content);
94
+ }
95
+ const sdkInterfacePath = path.resolve(process.cwd(), config.sdkInterfacePath);
96
+ const relativeSdkInterfacePath = path
97
+ .relative(outputPath, sdkInterfacePath)
98
+ .replace(/\\/g, '/')
99
+ .replace(/\.([jt]sx?)$/, '');
100
+ await writeScriptTo(null, 'central.ts', `export { request } from "${relativeSdkInterfacePath}"`);
101
+ if (!fs.existsSync(sdkInterfacePath) && config.generateDefaultSdkInterface !== false) {
102
+ (0, logging_1.println)('├─ Generating default SDK interface...');
103
+ fs.writeFileSync(sdkInterfacePath, sdk_interface_1.defaultSdkInterface, 'utf8');
104
+ }
82
105
  }
83
- exports.default = generateAPIClient;
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuZXJhdG9yL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7Ozs7Ozs7Ozs7QUFFSCx5QkFBd0I7QUFDeEIsNkJBQTRCO0FBRzVCLG1EQUFnRTtBQUVoRSx3Q0FBa0Q7QUFFbEQsNkNBQWlEO0FBQ2pELHlDQUFpRDtBQUNqRCx5Q0FBeUQ7QUFDekQsbURBQXFEO0FBRXJELFNBQThCLGlCQUFpQixDQUFDLE1BQWMsRUFBRSxVQUFzQjs7UUFDcEYsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLFFBQVEsS0FBSyxLQUFLLENBQUE7UUFFaEQsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3BCLElBQUEsZUFBSyxFQUFDLGtEQUFrRCxDQUFDLENBQUE7UUFDM0QsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUNwRSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDbEUsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQTtRQUU5RCxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUM5QixJQUFJLE1BQU0sQ0FBQyxxQkFBcUIsS0FBSyxLQUFLLEVBQUUsQ0FBQztnQkFDM0MsSUFBQSxlQUFLLEVBQUMsMkRBQTJELENBQUMsQ0FBQTtZQUNwRSxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtZQUM1QyxDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUE7UUFFaEQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUNwQyxJQUFBLGVBQUssRUFBQywyREFBMkQsRUFBRSxlQUFlLENBQUMsQ0FBQTtRQUNyRixDQUFDO1FBRUQsRUFBRSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUV4QixNQUFNLGNBQWMsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUEsNkJBQWtCLEVBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUV2RSxNQUFNLGFBQWEsR0FBRyxDQUFPLFNBQXdCLEVBQUUsSUFBWSxFQUFFLFdBQW1CLEVBQUUsRUFBRTtZQUMxRixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDekIsV0FBVztvQkFDVCxnREFBZ0Q7d0JBQ2hELHVGQUF1Rjt3QkFDdkYsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUNuRyxPQUFPO3dCQUNQLFdBQVcsQ0FBQTtZQUNmLENBQUM7WUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxTQUFTLGFBQVQsU0FBUyxjQUFULFNBQVMsR0FBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFDaEUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7WUFFekQsTUFBTSxXQUFXLEdBQUcsY0FBYztnQkFDaEMsQ0FBQyxDQUFDLE1BQU0sSUFBQSxtQkFBUSxFQUFDLFdBQVcsRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7Z0JBQzdGLENBQUMsQ0FBQyxXQUFXLENBQUE7WUFDZixFQUFFLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDakQsQ0FBQyxDQUFBLENBQUE7UUFFRCxJQUFBLGlCQUFPLEVBQUMsNEJBQTRCLENBQUMsQ0FBQTtRQUVyQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksSUFBQSwrQkFBb0IsRUFBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNyRSxNQUFNLGFBQWEsQ0FBQyxRQUFRLEVBQUUsSUFBQSxvQ0FBeUIsRUFBQyxJQUFJLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUN6RSxDQUFDO1FBRUQsSUFBQSxpQkFBTyxFQUFDLHlCQUF5QixDQUFDLENBQUE7UUFDbEMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQTtRQUNsQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksSUFBQSwrQkFBa0IsRUFBQyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNqRixNQUFNLGFBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQzFDLENBQUM7UUFFRCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1FBRTdFLE1BQU0sd0JBQXdCLEdBQUcsSUFBSTthQUNsQyxRQUFRLENBQUMsVUFBVSxFQUFFLGdCQUFnQixDQUFDO2FBQ3RDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDO2FBQ25CLE9BQU8sQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFOUIsTUFBTSxhQUFhLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSw0QkFBNEIsd0JBQXdCLEdBQUcsQ0FBQyxDQUFBO1FBRWhHLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLElBQUksTUFBTSxDQUFDLDJCQUEyQixLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3JGLElBQUEsaUJBQU8sRUFBQyx3Q0FBd0MsQ0FBQyxDQUFBO1lBRWpELEVBQUUsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLEVBQUUsbUNBQW1CLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDakUsQ0FBQztJQUNILENBQUM7Q0FBQTtBQTFFRCxvQ0EwRUMifQ==
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuZXJhdG9yL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsTUFBWSxFQUFFLCtCQUFVO0FBQ3hCLE1BQVksSUFBSSxpQ0FBWTtBQUc1QixtREFBZ0U7QUFFaEUsd0NBQWtEO0FBRWxELDZDQUFpRDtBQUNqRCx5Q0FBaUQ7QUFDakQseUNBQXlEO0FBQ3pELG1EQUFxRDtBQUV0QyxLQUFLLDRCQUE0QixNQUFjLEVBQUUsVUFBc0I7SUFDcEYsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLFFBQVEsS0FBSyxLQUFLLENBQUE7SUFFaEQsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3BCLElBQUEsZUFBSyxFQUFDLGtEQUFrRCxDQUFDLENBQUE7SUFDM0QsQ0FBQztJQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUNwRSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUE7SUFDbEUsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUU5RCxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUM5QixJQUFJLE1BQU0sQ0FBQyxxQkFBcUIsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUMzQyxJQUFBLGVBQUssRUFBQywyREFBMkQsQ0FBQyxDQUFBO1FBQ3BFLENBQUM7YUFBTSxDQUFDO1lBQ04sRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxTQUFTLEVB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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.prettify = exports.findPrettierConfig = void 0;
7
- const fs = require("fs");
8
- const prettier = require("prettier");
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
- var _a;
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, Object.assign({ parser }, config));
72
+ return prettier.format(source, {
73
+ parser,
74
+ ...config,
75
+ });
41
76
  }
42
- exports.prettify = prettify;
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldHRpZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuZXJhdG9yL3ByZXR0aWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7O0FBRUgseUJBQXdCO0FBRXhCLHFDQUFvQztBQUdwQyx3Q0FBa0M7QUFDbEMsb0NBQXdDO0FBRXhDOztHQUVHO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQUMsTUFBYzs7SUFDL0MsTUFBTSxrQkFBa0IsR0FBRyxNQUFBLE1BQU0sQ0FBQyxjQUFjLG1DQUFJLElBQUEscUJBQWEsRUFBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0lBRXRHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sRUFBRSxDQUFBO0lBQ1gsQ0FBQztJQUVELElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztRQUN2QyxJQUFBLGVBQUssRUFBQyxrRUFBa0UsRUFBRSxrQkFBa0IsQ0FBQyxDQUFBO0lBQy9GLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBRXhELElBQUksQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN6QixDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLEdBQUcsQ0FBQyxDQUFDLENBQUE7SUFDakUsQ0FBQztBQUNILENBQUM7QUFsQkQsZ0RBa0JDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsUUFBUSxDQUFDLE1BQWMsRUFBRSxNQUFjLEVBQUUsTUFBNkI7SUFDcEYsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sa0JBQzNCLE1BQU0sSUFDSCxNQUFNLEVBQ1QsQ0FBQTtBQUNKLENBQUM7QUFMRCw0QkFLQyJ9
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldHRpZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuZXJhdG9yL3ByZXR0aWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVILE1BQVksRUFBRSwrQkFBVTtBQUV4QixNQUFZLFFBQVEscUNBQWdCO0FBR3BDLHdDQUFrQztBQUNsQyxvQ0FBd0M7QUFFeEM7O0dBRUc7QUFDSCw0QkFBbUMsTUFBYztJQUMvQyxNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxjQUFjLElBQUksSUFBQSxxQkFBYSxFQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7SUFFdEcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDeEIsT0FBTyxFQUFFLENBQUE7SUFDWCxDQUFDO0lBRUQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDO1FBQ3ZDLElBQUEsZUFBSyxFQUFDLGtFQUFrRSxFQUFFLGtCQUFrQixDQUFDLENBQUE7SUFDL0YsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFFeEQsSUFBSSxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3pCLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUNqRSxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILGtCQUF5QixNQUFjLEVBQUUsTUFBYyxFQUFFLE1BQTZCO0lBQ3BGLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7UUFDN0IsTUFBTTtRQUNOLEdBQUcsTUFBTTtLQUNWLENBQUMsQ0FBQTtBQUNKLENBQUMifQ==
@@ -1 +1 @@
1
- export declare const defaultSdkInterface: string
1
+ export declare const defaultSdkInterface: string;
@@ -1,6 +1,6 @@
1
- 'use strict'
2
- Object.defineProperty(exports, '__esModule', { value: true })
3
- exports.defaultSdkInterface = void 0
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultSdkInterface = void 0;
4
4
  exports.defaultSdkInterface = `
5
5
  export async function request(
6
6
  method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE',
@@ -32,5 +32,5 @@ export async function request(
32
32
  })
33
33
  }
34
34
 
35
- `.trim()
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2RrLWludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW5lcmF0b3Ivc2RrLWludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBYSxRQUFBLG1CQUFtQixHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBK0JsQyxDQUFDLElBQUksRUFBRSxDQUFBIn0=
35
+ `.trim();
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2RrLWludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW5lcmF0b3Ivc2RrLWludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBYSxRQUFBLG1CQUFtQixHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBK0JsQyxDQUFDLElBQUksRUFBRSxDQUFBIn0=
@@ -3,5 +3,7 @@ export declare function log(message: string, ...params: Array<number | string>):
3
3
  export declare function panic(message: string, ...params: Array<number | string>): never;
4
4
  export declare function unreachable(message: string, ...params: Array<number | string>): never;
5
5
  export declare function warn(message: string, ...params: Array<number | string>): void;
6
+ /** Like `warn()`, but always displayed */
7
+ export declare function notice(message: string, ...params: Array<number | string>): void;
6
8
  export declare function println(message: string, ...params: Array<number | string>): void;
7
9
  export declare function debug(message: string, ...params: Array<number | string>): void;
package/build/logging.js CHANGED
@@ -1,43 +1,46 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.debug = exports.println = exports.warn = exports.unreachable = exports.panic = exports.log = exports.format = void 0;
3
+ exports.format = format;
4
+ exports.log = log;
5
+ exports.panic = panic;
6
+ exports.unreachable = unreachable;
7
+ exports.warn = warn;
8
+ exports.notice = notice;
9
+ exports.println = println;
10
+ exports.debug = debug;
4
11
  const chalk = require("chalk");
5
12
  const config_1 = require("./config");
6
13
  function format(message, ...params) {
7
14
  return message.replace(/\{(black|red|green|yellow|blue|magenta|cyan|white|gray|grey|blackBright|redBright|greenBright|yellowBright|blueBright|magentaBright|cyanBright|whiteBright|)\}/g, (match, color) => {
8
- var _a;
9
- const param = (_a = params.shift()) !== null && _a !== void 0 ? _a : panic(`In message:\n> {}\nMissing parameter:\n> {}`, message, match);
15
+ const param = params.shift() ?? panic(`In message:\n> {}\nMissing parameter:\n> {}`, message, match);
10
16
  return color && config_1.config.noColor !== false ? chalk[color](param) : param;
11
17
  });
12
18
  }
13
- exports.format = format;
14
19
  function log(message, ...params) {
15
20
  console.log(chalk.green(format(message, ...params)));
16
21
  }
17
- exports.log = log;
18
22
  function panic(message, ...params) {
19
23
  console.error(chalk.redBright('ERROR: ' + format(message, ...params)));
20
24
  process.exit(1);
21
25
  }
22
- exports.panic = panic;
23
26
  function unreachable(message, ...params) {
24
27
  panic(message, ...params);
25
28
  }
26
- exports.unreachable = unreachable;
27
29
  function warn(message, ...params) {
28
30
  if (config_1.config.verbose) {
29
31
  console.warn(chalk.yellow(format(message, ...params)));
30
32
  }
31
33
  }
32
- exports.warn = warn;
34
+ /** Like `warn()`, but always displayed */
35
+ function notice(message, ...params) {
36
+ console.warn(chalk.yellow(format(message, ...params)));
37
+ }
33
38
  function println(message, ...params) {
34
39
  console.log(format(message, ...params));
35
40
  }
36
- exports.println = println;
37
41
  function debug(message, ...params) {
38
42
  if (config_1.config.verbose) {
39
43
  console.warn(chalk.cyan(format(message, ...params)));
40
44
  }
41
45
  }
42
- exports.debug = debug;
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2dnaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUE4QjtBQUU5QixxQ0FBaUM7QUFFakMsU0FBZ0IsTUFBTSxDQUFDLE9BQWUsRUFBRSxHQUFHLE1BQThCO0lBQ3ZFLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FDcEIsaUtBQWlLLEVBQ2pLLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFOztRQUNmLE1BQU0sS0FBSyxHQUFHLE1BQUEsTUFBTSxDQUFDLEtBQUssRUFBRSxtQ0FBSSxLQUFLLENBQUMsNkNBQTZDLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQ3BHLE9BQU8sS0FBSyxJQUFJLGVBQU0sQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBRSxLQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQTtJQUNqRixDQUFDLENBQ0YsQ0FBQTtBQUNILENBQUM7QUFSRCx3QkFRQztBQUVELFNBQWdCLEdBQUcsQ0FBQyxPQUFlLEVBQUUsR0FBRyxNQUE4QjtJQUNwRSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUN0RCxDQUFDO0FBRkQsa0JBRUM7QUFFRCxTQUFnQixLQUFLLENBQUMsT0FBZSxFQUFFLEdBQUcsTUFBOEI7SUFDdEUsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsT0FBTyxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3RFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDakIsQ0FBQztBQUhELHNCQUdDO0FBRUQsU0FBZ0IsV0FBVyxDQUFDLE9BQWUsRUFBRSxHQUFHLE1BQThCO0lBQzVFLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQTtBQUMzQixDQUFDO0FBRkQsa0NBRUM7QUFFRCxTQUFnQixJQUFJLENBQUMsT0FBZSxFQUFFLEdBQUcsTUFBOEI7SUFDckUsSUFBSSxlQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbkIsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDeEQsQ0FBQztBQUNILENBQUM7QUFKRCxvQkFJQztBQUVELFNBQWdCLE9BQU8sQ0FBQyxPQUFlLEVBQUUsR0FBRyxNQUE4QjtJQUN4RSxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFBO0FBQ3pDLENBQUM7QUFGRCwwQkFFQztBQUVELFNBQWdCLEtBQUssQ0FBQyxPQUFlLEVBQUUsR0FBRyxNQUE4QjtJQUN0RSxJQUFJLGVBQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNuQixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN0RCxDQUFDO0FBQ0gsQ0FBQztBQUpELHNCQUlDIn0=
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2dnaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxNQUFPLEtBQUssb0JBQW1CO0FBRS9CLHFDQUFpQztBQUVqQyxnQkFBdUIsT0FBZSxFQUFFLEdBQUcsTUFBOEI7SUFDdkUsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUNwQixpS0FBaUssRUFDakssQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDZixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksS0FBSyxDQUFDLDZDQUE2QyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUNwRyxPQUFPLEtBQUssSUFBSSxlQUFNLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUUsS0FBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7SUFDakYsQ0FBQyxDQUNGLENBQUE7QUFDSCxDQUFDO0FBRUQsYUFBb0IsT0FBZSxFQUFFLEdBQUcsTUFBOEI7SUFDcEUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDdEQsQ0FBQztBQUVELGVBQXNCLE9BQWUsRUFBRSxHQUFHLE1BQThCO0lBQ3RFLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN0RSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ2pCLENBQUM7QUFFRCxxQkFBNEIsT0FBZSxFQUFFLEdBQUcsTUFBOEI7SUFDNUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFBO0FBQzNCLENBQUM7QUFFRCxjQUFxQixPQUFlLEVBQUUsR0FBRyxNQUE4QjtJQUNyRSxJQUFJLGVBQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNuQixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN4RCxDQUFDO0FBQ0gsQ0FBQztBQUVELDBDQUEwQztBQUMxQyxnQkFBdUIsT0FBZSxFQUFFLEdBQUcsTUFBOEI7SUFDdkUsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDeEQsQ0FBQztBQUVELGlCQUF3QixPQUFlLEVBQUUsR0FBRyxNQUE4QjtJQUN4RSxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFBO0FBQ3pDLENBQUM7QUFFRCxlQUFzQixPQUFlLEVBQUUsR0FBRyxNQUE4QjtJQUN0RSxJQUFJLGVBQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNuQixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN0RCxDQUFDO0FBQ0gsQ0FBQyJ9
@@ -1,10 +1,7 @@
1
1
  /**
2
2
  * @file Generate SDK modules
3
3
  */
4
- import { SdkController } from '../analyzer/controller';
5
- import { SdkModules } from '../analyzer/controllers';
6
- import { SdkMethod } from '../analyzer/methods';
7
- import { SdkMethodParam } from '../analyzer/params';
4
+ import { SdkController, SdkMethod, SdkMethodParam, SdkModules } from '../analyzer/sdk';
8
5
  /**
9
6
  * Generate the SDK's module and controllers files
10
7
  * @param modules
@@ -3,11 +3,25 @@
3
3
  * @file Generate SDK modules
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.awaitedResolvedType = exports.controllerRelativePath = exports.controllerFileName = exports.controllerExportName = exports.controllerEndpointGroupName = exports.replaceSuffix = exports.generateControllerFileLink = exports.generateEndpointComment = exports.methodParamsToString = exports.generateGroupRTKEndpoints = exports.generateBuildRTKEndpoints = exports.generateSdkMethodBody = exports.generateMergedArgsType = exports.generateSdkMethodSignature = exports.generateSdkMethod = exports.generateController = exports.generateSdkModules = void 0;
6
+ exports.generateControllerFileLink = exports.generateEndpointComment = void 0;
7
+ exports.generateSdkModules = generateSdkModules;
8
+ exports.generateController = generateController;
9
+ exports.generateSdkMethod = generateSdkMethod;
10
+ exports.generateSdkMethodSignature = generateSdkMethodSignature;
11
+ exports.generateMergedArgsType = generateMergedArgsType;
12
+ exports.generateSdkMethodBody = generateSdkMethodBody;
13
+ exports.generateBuildRTKEndpoints = generateBuildRTKEndpoints;
14
+ exports.generateGroupRTKEndpoints = generateGroupRTKEndpoints;
15
+ exports.methodParamsToString = methodParamsToString;
16
+ exports.replaceSuffix = replaceSuffix;
17
+ exports.controllerEndpointGroupName = controllerEndpointGroupName;
18
+ exports.controllerExportName = controllerExportName;
19
+ exports.controllerFileName = controllerFileName;
20
+ exports.controllerRelativePath = controllerRelativePath;
21
+ exports.awaitedResolvedType = awaitedResolvedType;
7
22
  const path = require("path");
8
- const methods_1 = require("../analyzer/methods");
9
- const params_1 = require("../analyzer/params");
10
23
  const route_1 = require("../analyzer/route");
24
+ const sdk_1 = require("../analyzer/sdk");
11
25
  const config_1 = require("../config");
12
26
  const logging_1 = require("../logging");
13
27
  const NAMES = {
@@ -64,7 +78,6 @@ function generateSdkModules({ inputRelativePath, modules, }) {
64
78
  genFiles.set('index.ts', indexContent);
65
79
  return genFiles;
66
80
  }
67
- exports.generateSdkModules = generateSdkModules;
68
81
  function generateController({ controller, inputRelativePath, moduleName, }) {
69
82
  const controllerName = controller.className;
70
83
  (0, logging_1.debug)(`├─ ${controllerName}: ${controller.path}`);
@@ -82,9 +95,9 @@ function generateController({ controller, inputRelativePath, moduleName, }) {
82
95
  for (const method of controller.methods.values()) {
83
96
  const { bodyParams, queryParams, routeParams } = method.params;
84
97
  depsToImport.push(method.returnType);
85
- depsToImport.push(...(0, params_1.getParamResolvedTypes)(routeParams));
86
- depsToImport.push(...(0, params_1.getParamResolvedTypes)(queryParams));
87
- depsToImport.push(...(0, params_1.getParamResolvedTypes)(bodyParams));
98
+ depsToImport.push(...(0, sdk_1.getParamResolvedTypes)(routeParams));
99
+ depsToImport.push(...(0, sdk_1.getParamResolvedTypes)(queryParams));
100
+ depsToImport.push(...(0, sdk_1.getParamResolvedTypes)(bodyParams));
88
101
  }
89
102
  // Build the imports list
90
103
  for (const dep of depsToImport) {
@@ -107,7 +120,7 @@ function generateController({ controller, inputRelativePath, moduleName, }) {
107
120
  out.push('');
108
121
  out.push(`export default class ${controllerExportName(controller)} {`);
109
122
  const { mutations, queries } = controller.methods.reduce((acc, method) => {
110
- if (method.httpMethod === methods_1.SdkHttpMethod.Get) {
123
+ if (method.httpMethod === sdk_1.SdkHttpMethod.Get) {
111
124
  acc.queries.push(method);
112
125
  }
113
126
  else {
@@ -136,7 +149,6 @@ function generateController({ controller, inputRelativePath, moduleName, }) {
136
149
  out.push('};');
137
150
  return out.join('\n');
138
151
  }
139
- exports.generateController = generateController;
140
152
  function generateSdkMethod({ controller, inputRelativePath, method, }) {
141
153
  const out = [];
142
154
  out.push('');
@@ -146,12 +158,10 @@ function generateSdkMethod({ controller, inputRelativePath, method, }) {
146
158
  out.push(' },');
147
159
  return out.join('\n');
148
160
  }
149
- exports.generateSdkMethod = generateSdkMethod;
150
161
  function generateSdkMethodSignature(method) {
151
162
  const mergedArgsType = generateMergedArgsType(method);
152
163
  return `${method.name}(args: ${mergedArgsType}): BaseRequestArgs`;
153
164
  }
154
- exports.generateSdkMethodSignature = generateSdkMethodSignature;
155
165
  function generateMergedArgsType(method) {
156
166
  const { params } = method;
157
167
  const inputTypes = [];
@@ -166,7 +176,6 @@ function generateMergedArgsType(method) {
166
176
  }
167
177
  return inputTypes.join(' &\n') || 'void';
168
178
  }
169
- exports.generateMergedArgsType = generateMergedArgsType;
170
179
  /**
171
180
  * Generate a request call to Central for the generated files
172
181
  * @param method
@@ -186,13 +195,12 @@ function generateSdkMethodBody(method) {
186
195
  if (hasAnyParams) {
187
196
  output.push(`const { ${routeParamsSpread} ...rest } = args`);
188
197
  }
189
- const isGet = httpMethod === methods_1.SdkHttpMethod.Get;
198
+ const isGet = httpMethod === sdk_1.SdkHttpMethod.Get;
190
199
  const body = isGet || !hasAnyParams ? 'null' : 'rest';
191
200
  const query = isGet && hasAnyParams ? 'rest' : '{}';
192
201
  output.push(`return { body: ${body}, method: '${httpMethod}', query: ${query}, route: \`${resolvedRoute}\` }`);
193
202
  return output.join('\n');
194
203
  }
195
- exports.generateSdkMethodBody = generateSdkMethodBody;
196
204
  function generateBuildRTKEndpoints({ controller, inputRelativePath, mutations, queries, }) {
197
205
  const out = [];
198
206
  out.push(`static readonly ${NAMES.buildRTKEndpoints} = (builder: EndpointBuilder<BaseRequestFn, any, any>) => ({`);
@@ -215,7 +223,6 @@ function generateBuildRTKEndpoints({ controller, inputRelativePath, mutations, q
215
223
  out.push('})');
216
224
  return out.join('\n');
217
225
  }
218
- exports.generateBuildRTKEndpoints = generateBuildRTKEndpoints;
219
226
  function generateGroupRTKEndpoints({ controller, inputRelativePath, }) {
220
227
  const out = [];
221
228
  out.push(`static readonly ${NAMES.groupRTKEndpoints} = (api: Api<BaseRequestFn, ReturnType<typeof this.${NAMES.buildRTKEndpoints}>, string, string, typeof reactHooksModuleName>) => ({`);
@@ -226,12 +233,11 @@ function generateGroupRTKEndpoints({ controller, inputRelativePath, }) {
226
233
  out.push('})');
227
234
  return out.join('\n');
228
235
  }
229
- exports.generateGroupRTKEndpoints = generateGroupRTKEndpoints;
230
236
  function methodParamsToString(params) {
231
237
  if (params === null) {
232
238
  return '';
233
239
  }
234
- if ((0, params_1.isParamResolvedType)(params)) {
240
+ if ((0, sdk_1.isParamResolvedType)(params)) {
235
241
  return params.resolvedType;
236
242
  }
237
243
  const output = ['{'];
@@ -241,7 +247,6 @@ function methodParamsToString(params) {
241
247
  output.push('}');
242
248
  return output.join('\n');
243
249
  }
244
- exports.methodParamsToString = methodParamsToString;
245
250
  const generateEndpointComment = ({ controller, inputRelativePath, method, }) => {
246
251
  const out = [];
247
252
  out.push(`/**`);
@@ -259,37 +264,28 @@ exports.generateControllerFileLink = generateControllerFileLink;
259
264
  function replaceSuffix(str, { addSuffix = '', removeSuffix = '' }) {
260
265
  return str.replace(new RegExp(removeSuffix + '$'), '') + addSuffix;
261
266
  }
262
- exports.replaceSuffix = replaceSuffix;
263
267
  function controllerEndpointGroupName(controller) {
264
- var _a, _b;
265
- const suffixReplacement = (_b = (_a = config_1.config.controllerOutput) === null || _a === void 0 ? void 0 : _a.endpointGroupName) !== null && _b !== void 0 ? _b : {};
268
+ const suffixReplacement = config_1.config.controllerOutput?.endpointGroupName ?? {};
266
269
  return replaceSuffix(controller.className, suffixReplacement);
267
270
  }
268
- exports.controllerEndpointGroupName = controllerEndpointGroupName;
269
271
  function controllerExportName(controller) {
270
- var _a, _b;
271
- const suffixReplacement = (_b = (_a = config_1.config.controllerOutput) === null || _a === void 0 ? void 0 : _a.exportName) !== null && _b !== void 0 ? _b : {};
272
+ const suffixReplacement = config_1.config.controllerOutput?.exportName ?? {};
272
273
  return replaceSuffix(controller.className, suffixReplacement);
273
274
  }
274
- exports.controllerExportName = controllerExportName;
275
275
  function controllerFileName(controller) {
276
- var _a, _b;
277
276
  const { ext, name } = path.parse(controller.path);
278
- const suffixReplacement = (_b = (_a = config_1.config.controllerOutput) === null || _a === void 0 ? void 0 : _a.fileName) !== null && _b !== void 0 ? _b : {};
277
+ const suffixReplacement = config_1.config.controllerOutput?.fileName ?? {};
279
278
  const fileName = replaceSuffix(name, suffixReplacement);
280
279
  return {
281
280
  name: fileName,
282
281
  ext: ext || '.ts',
283
282
  };
284
283
  }
285
- exports.controllerFileName = controllerFileName;
286
284
  function controllerRelativePath({ controller, inputRelativePath, }) {
287
285
  return path.join(inputRelativePath, controller.path);
288
286
  }
289
- exports.controllerRelativePath = controllerRelativePath;
290
287
  function awaitedResolvedType(type) {
291
288
  const prefix = 'Promise<';
292
289
  return type.startsWith(prefix) ? type.substring(prefix.length, type.length - 1) : type;
293
290
  }
294
- exports.awaitedResolvedType = awaitedResolvedType;
295
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VubW9kdWxlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydGstcXVlcnktZ2VuZXJhdG9yL2dlbm1vZHVsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFFSCw2QkFBNkI7QUFJN0IsaURBQThEO0FBQzlELCtDQUErRjtBQUMvRiw2Q0FBbUY7QUFFbkYsc0NBQWtDO0FBQ2xDLHdDQUF5QztBQUV6QyxNQUFNLEtBQUssR0FBRztJQUNaLGlCQUFpQixFQUFFLG1CQUFtQjtJQUN0QyxpQkFBaUIsRUFBRSxtQkFBbUI7SUFDdEMsZ0JBQWdCLEVBQUUsa0JBQWtCO0NBQzVCLENBQUE7QUFFVjs7OztHQUlHO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQUMsRUFDakMsaUJBQWlCLEVBQ2pCLE9BQU8sR0FJUjtJQUNDLDZCQUE2QjtJQUM3QixNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQTtJQUUxQyx5QkFBeUI7SUFDekIsTUFBTSxPQUFPLEdBQUc7UUFDZCxpR0FBaUc7UUFDakcscURBQXFEO0tBQ3RELENBQUE7SUFDRCxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUE7SUFDbEIsTUFBTSwwQkFBMEIsR0FBRyxFQUFFLENBQUE7SUFDckMsTUFBTSwwQkFBMEIsR0FBRyxFQUFFLENBQUE7SUFFckMsMkJBQTJCO0lBQzNCLEtBQUssTUFBTSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNoRCxnREFBZ0Q7UUFDaEQsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQzFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUN2RSxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsR0FBRyxPQUFPLEVBQUUsa0JB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
291
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VubW9kdWxlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydGstcXVlcnktZ2VuZXJhdG9yL2dlbm1vZHVsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCxNQUFPLElBQUksbUJBQWtCO0FBRTdCLDZDQUFtRjtBQUNuRix5Q0FRd0I7QUFFeEIsc0NBQWtDO0FBQ2xDLHdDQUF5QztBQUV6QyxNQUFNLEtBQUssR0FBRztJQUNaLGlCQUFpQixFQUFFLG1CQUFtQjtJQUN0QyxpQkFBaUIsRUFBRSxtQkFBbUI7SUFDdEMsZ0JBQWdCLEVBQUUsa0JBQWtCO0NBQzVCLENBQUE7QUFFVjs7OztHQUlHO0FBQ0gsNEJBQW1DLEVBQ2pDLGlCQUFpQixFQUNqQixPQUFPLEdBSVI7SUFDQyw2QkFBNkI7SUFDN0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUE7SUFFMUMseUJBQXlCO0lBQ3pCLE1BQU0sT0FBTyxHQUFHO1FBQ2QsaUdBQWlHO1FBQ2pHLHFEQUFxRDtLQUN0RCxDQUFBO0lBQ0QsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFBO0lBQ2xCLE1BQU0sMEJBQTBCLEdBQUcsRUFBRSxDQUFBO0lBQ3JDLE1BQU0sMEJBQTBCLEdBQUcsRUFBRSxDQUFBO0lBRXJDLDJCQUEyQjtJQUMzQixLQUFLLE1BQU0sQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLElBQUksT0FBTyxFQUFFLENBQUM7UUFDaEQsZ0RBQWdEO1FBQ2hELEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUMxQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUE7WUFDdkUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsT0FBTyxFQUFFLGtC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