@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
@@ -3,7 +3,13 @@
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.paramsFromRoute = exports.routePartIsParam = exports.analyzeUri = void 0;
6
+ exports.analyzeUri = analyzeUri;
7
+ exports.routePartIsParam = routePartIsParam;
8
+ exports.paramsFromRoute = paramsFromRoute;
9
+ exports.unparseRoute = unparseRoute;
10
+ exports.debugUri = debugUri;
11
+ exports.resolveRoute = resolveRoute;
12
+ exports.resolveRouteWith = resolveRouteWith;
7
13
  /**
8
14
  * Analyze an URI path
9
15
  * @param uriPath The URI path to analyze
@@ -60,7 +66,6 @@ function analyzeUri(uriPath) {
60
66
  parts,
61
67
  };
62
68
  }
63
- exports.analyzeUri = analyzeUri;
64
69
  /**
65
70
  * Get the named parameters of a parsed route
66
71
  * @param route
@@ -68,11 +73,9 @@ exports.analyzeUri = analyzeUri;
68
73
  function routePartIsParam(part) {
69
74
  return 'param' in part;
70
75
  }
71
- exports.routePartIsParam = routePartIsParam;
72
76
  function paramsFromRoute(route) {
73
77
  return route.parts.filter(routePartIsParam).map((part) => part.param);
74
78
  }
75
- exports.paramsFromRoute = paramsFromRoute;
76
79
  /**
77
80
  * Convert a route back to its original string
78
81
  * @param route
@@ -80,14 +83,12 @@ exports.paramsFromRoute = paramsFromRoute;
80
83
  function unparseRoute(route) {
81
84
  return (route.isRoot ? '/' : '') + route.parts.map((part) => ('segment' in part ? part.segment : ':' + part.param)).join('/');
82
85
  }
83
- exports.unparseRoute = unparseRoute;
84
86
  /**
85
87
  * Pretty-print a route
86
88
  */
87
89
  function debugUri(route, color) {
88
90
  return (route.isRoot ? '/' : '') + route.parts.map((part) => ('segment' in part ? part.segment : color(':' + part.param))).join('/');
89
91
  }
90
- exports.debugUri = debugUri;
91
92
  /**
92
93
  * Resolve a route by providing its required parameters
93
94
  * @param route
@@ -109,7 +110,6 @@ function resolveRoute(route, params) {
109
110
  }
110
111
  return (route.isRoot ? '/' : '') + uri.join('/');
111
112
  }
112
- exports.resolveRoute = resolveRoute;
113
113
  /**
114
114
  * Resolve a route by providing its required parameters through a callback
115
115
  * @param route
@@ -133,5 +133,4 @@ function resolveRouteWith(route, paramsProvider) {
133
133
  }
134
134
  return (route.isRoot ? '/' : '') + uri.join('/');
135
135
  }
136
- exports.resolveRouteWith = resolveRouteWith;
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYW5hbHl6ZXIvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFrQkg7OztHQUdHO0FBQ0gsU0FBZ0IsVUFBVSxDQUFDLE9BQWU7SUFDeEMsa0NBQWtDO0lBQ2xDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7SUFFbkMsZ0NBQWdDO0lBQ2hDLE1BQU0sS0FBSyxHQUFnQixFQUFFLENBQUE7SUFFN0IsNENBQTRDO0lBQzVDLDBDQUEwQztJQUMxQyxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUE7SUFFZDs7Ozs7T0FLRztJQUNILFNBQVMsWUFBWSxDQUFDLElBQVksRUFBRSxPQUFlO1FBQ2pELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO0lBQy9FLENBQUM7SUFFRCxrQ0FBa0M7SUFDbEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUN6QyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFeEIsK0RBQStEO1FBQy9ELElBQUksSUFBSSxLQUFLLEVBQUU7WUFBRSxTQUFRO1FBRXpCLDRFQUE0RTtRQUM1RSw2Q0FBNkM7UUFDN0MsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUVqRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsT0FBTyxJQUFJLEtBQUssQ0FDZCxvSEFBb0gsR0FBRyxVQUFVLENBQ2xJLENBQUE7UUFDSCxDQUFD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
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYW5hbHl6ZXIvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7Ozs7Ozs7QUFrQkg7OztHQUdHO0FBQ0gsb0JBQTJCLE9BQWU7SUFDeEMsa0NBQWtDO0lBQ2xDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7SUFFbkMsZ0NBQWdDO0lBQ2hDLE1BQU0sS0FBSyxHQUFnQixFQUFFLENBQUE7SUFFN0IsNENBQTRDO0lBQzVDLDBDQUEwQztJQUMxQyxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUE7SUFFZDs7Ozs7T0FLRztJQUNILFNBQVMsWUFBWSxDQUFDLElBQVksRUFBRSxPQUFlO1FBQ2pELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO0lBQy9FLENBQUM7SUFFRCxrQ0FBa0M7SUFDbEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUN6QyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFeEIsK0RBQStEO1FBQy9ELElBQUksSUFBSSxLQUFLLEVBQUU7WUFBRSxTQUFRO1FBRXpCLDRFQUE0RTtRQUM1RSw2Q0FBNkM7UUFDN0MsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUVqRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsT0FBTyxJQUFJLEtBQUssQ0FDZCxvSEFBb0gsR0FBRyxVQUFVLENBQ2xJLENBQUE7UUFDSCxDQUFDO1FB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
@@ -0,0 +1,146 @@
1
+ /**
2
+ * @file Engine-independent description of the analyzed SDK
3
+ *
4
+ * Everything in this file is plain data and pure helpers: it must not import any TypeScript
5
+ * compiler at runtime, so the generators and the fast analysis engines can load it cheaply.
6
+ */
7
+ import type { Route } from './route';
8
+ import type { ResolvedTypeDeps } from './typedeps';
9
+ export interface SdkContent {
10
+ readonly modules: SdkModules;
11
+ readonly types: TypesExtractorContent;
12
+ }
13
+ /** Modules mapped to their controllers (keyed by class name) */
14
+ export type SdkModules = Map<string, Map<string, SdkController>>;
15
+ /**
16
+ * SDK interface of a controller
17
+ */
18
+ export interface SdkController {
19
+ /** Name of the controller's class, camel cased */
20
+ readonly className: string;
21
+ /** Controller's methods */
22
+ readonly methods: SdkMethod[];
23
+ /** Original controller file's path */
24
+ readonly path: string;
25
+ /** Name the controller is registered under */
26
+ readonly registrationName: string;
27
+ }
28
+ /**
29
+ * SDK interface for a single controller's method
30
+ */
31
+ export interface SdkMethod {
32
+ /** Method's HTTP method (e.g. GET / POST) */
33
+ readonly httpMethod: SdkHttpMethod;
34
+ /** Method's name */
35
+ readonly name: string;
36
+ /** Method's parameters */
37
+ readonly params: SdkMethodParams;
38
+ /** Method's return type with resolved dependencies */
39
+ readonly returnType: ResolvedTypeDeps;
40
+ /** Method's parsed route */
41
+ readonly route: Route;
42
+ /** Method's URI path */
43
+ readonly uriPath: string;
44
+ }
45
+ /**
46
+ * HTTP method of a controller's method
47
+ */
48
+ export declare enum SdkHttpMethod {
49
+ Delete = "DELETE",
50
+ Get = "GET",
51
+ Patch = "PATCH",
52
+ Post = "POST",
53
+ Put = "PUT"
54
+ }
55
+ /**
56
+ * Type of a parameter that must be passed to an SDK method: Body, Query or Route Param
57
+ * Supports accessing parameters individually by key or as a whole object
58
+ *
59
+ * EXAMPLE
60
+ *
61
+ * Controller Method:
62
+ *
63
+ * getStuff(@Query('email') email: string, @Query('companyId'): CompanyId)
64
+ *
65
+ * SDK Method Param:
66
+ * { email: string, companyId: CompanyId }
67
+ *
68
+ * OR
69
+ *
70
+ * Controller Method:
71
+ * type EmailAndCompanyId = { email: string, companyId: CompanyId }
72
+ * getStuff(@Query(): EmailAndCompanyId)
73
+ *
74
+ * SDK Method Param:
75
+ * EmailAndCompanyId
76
+ */
77
+ export type SdkMethodParam = SdkMethodParamMap | ResolvedTypeDeps | null;
78
+ export type SdkMethodParamMap = {
79
+ [key: string]: ResolvedTypeDeps;
80
+ };
81
+ export declare const isParamResolvedType: (param: SdkMethodParam) => param is ResolvedTypeDeps;
82
+ export declare const getParamResolvedTypes: (param: SdkMethodParam) => ResolvedTypeDeps[];
83
+ /**
84
+ * SDK interface for a controller's method's parameters
85
+ */
86
+ export interface SdkMethodParams {
87
+ bodyParams: SdkMethodParam;
88
+ /** Engine-specific analysis context (compiler nodes); never serialized */
89
+ context: unknown;
90
+ queryParams: SdkMethodParam;
91
+ routeParams: SdkMethodParam;
92
+ }
93
+ export declare enum ArgDecorator {
94
+ Body = "Body",
95
+ Param = "Param",
96
+ Query = "Query"
97
+ }
98
+ /** Valid extensions for TypeScript module files */
99
+ export declare const MODULE_EXTENSIONS: string[];
100
+ /**
101
+ * Location of an imported type
102
+ */
103
+ export interface TypeLocation {
104
+ readonly relativePathNoExt: string;
105
+ readonly typename: string;
106
+ }
107
+ /**
108
+ * Location of an imported type after figuring out its extension
109
+ */
110
+ export interface TypeLocationWithExt extends TypeLocation {
111
+ readonly relativePath: string;
112
+ }
113
+ /**
114
+ * Extracted imported type
115
+ */
116
+ export interface ExtractedType extends TypeLocationWithExt {
117
+ /** Type's declaration */
118
+ readonly content: string;
119
+ /** Types this one depends on */
120
+ readonly dependencies: TypeLocationWithExt[];
121
+ /** Type parameters (e.g. <T>) */
122
+ readonly typeParams: string[];
123
+ }
124
+ export type TypesExtractorContent = Map<string, Map<string, ExtractedType>>;
125
+ /**
126
+ * Locate the files containing a list of a resolved types
127
+ * @param resolvedTypes
128
+ * @returns
129
+ */
130
+ export declare function locateTypesFile(resolvedTypes: Array<ResolvedTypeDeps>): TypeLocation[];
131
+ /**
132
+ * Flatten a tree of resolved type dependencies
133
+ * @param sdkModules
134
+ * @returns
135
+ */
136
+ export declare function flattenSdkResolvedTypes(sdkModules: SdkModules): ResolvedTypeDeps[];
137
+ /**
138
+ * Convert a string to camel case
139
+ * @param str
140
+ */
141
+ export declare function camelcase(str: string): string;
142
+ /**
143
+ * Serialize analyzed SDK content to JSON
144
+ * Maps are converted to plain objects, and engine-specific analysis contexts are omitted.
145
+ */
146
+ export declare function serializeSdkContent(content: SdkContent, pretty: boolean): string;
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ /**
3
+ * @file Engine-independent description of the analyzed SDK
4
+ *
5
+ * Everything in this file is plain data and pure helpers: it must not import any TypeScript
6
+ * compiler at runtime, so the generators and the fast analysis engines can load it cheaply.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.MODULE_EXTENSIONS = exports.ArgDecorator = exports.getParamResolvedTypes = exports.isParamResolvedType = exports.SdkHttpMethod = void 0;
10
+ exports.locateTypesFile = locateTypesFile;
11
+ exports.flattenSdkResolvedTypes = flattenSdkResolvedTypes;
12
+ exports.camelcase = camelcase;
13
+ exports.serializeSdkContent = serializeSdkContent;
14
+ /**
15
+ * HTTP method of a controller's method
16
+ */
17
+ var SdkHttpMethod;
18
+ (function (SdkHttpMethod) {
19
+ SdkHttpMethod["Delete"] = "DELETE";
20
+ SdkHttpMethod["Get"] = "GET";
21
+ SdkHttpMethod["Patch"] = "PATCH";
22
+ SdkHttpMethod["Post"] = "POST";
23
+ SdkHttpMethod["Put"] = "PUT";
24
+ })(SdkHttpMethod || (exports.SdkHttpMethod = SdkHttpMethod = {}));
25
+ const isParamResolvedType = (param) => {
26
+ if (param === null) {
27
+ return false;
28
+ }
29
+ return 'rawType' in param && 'resolvedType' in param && 'relativeFilePath' in param && 'dependencies' in param && 'localTypes' in param;
30
+ };
31
+ exports.isParamResolvedType = isParamResolvedType;
32
+ const getParamResolvedTypes = (param) => {
33
+ if (param === null) {
34
+ return [];
35
+ }
36
+ if ((0, exports.isParamResolvedType)(param)) {
37
+ return [param];
38
+ }
39
+ return Object.values(param);
40
+ };
41
+ exports.getParamResolvedTypes = getParamResolvedTypes;
42
+ var ArgDecorator;
43
+ (function (ArgDecorator) {
44
+ ArgDecorator["Body"] = "Body";
45
+ ArgDecorator["Param"] = "Param";
46
+ ArgDecorator["Query"] = "Query";
47
+ })(ArgDecorator || (exports.ArgDecorator = ArgDecorator = {}));
48
+ /** Valid extensions for TypeScript module files */
49
+ exports.MODULE_EXTENSIONS = ['.ts', '.d.ts', '.tsx', '.d.tsx', '.js', '.jsx'];
50
+ /**
51
+ * Locate the files containing a list of a resolved types
52
+ * @param resolvedTypes
53
+ * @returns
54
+ */
55
+ function locateTypesFile(resolvedTypes) {
56
+ const out = new Array();
57
+ for (const resolved of resolvedTypes) {
58
+ for (const [file, types] of resolved.dependencies) {
59
+ for (const typename of types) {
60
+ if (!out.find((loc) => loc.typename === typename && loc.relativePathNoExt === file)) {
61
+ out.push({ typename, relativePathNoExt: file });
62
+ }
63
+ }
64
+ }
65
+ for (const typename of resolved.localTypes) {
66
+ if (!out.find((loc) => loc.typename === typename && loc.relativePathNoExt === resolved.relativeFilePath)) {
67
+ out.push({ typename, relativePathNoExt: resolved.relativeFilePath });
68
+ }
69
+ }
70
+ }
71
+ return out;
72
+ }
73
+ /**
74
+ * Flatten a tree of resolved type dependencies
75
+ * @param sdkModules
76
+ * @returns
77
+ */
78
+ function flattenSdkResolvedTypes(sdkModules) {
79
+ const flattened = new Array();
80
+ for (const module of sdkModules.values()) {
81
+ for (const controller of module.values()) {
82
+ for (const method of controller.methods.values()) {
83
+ const { bodyParams, queryParams, routeParams } = method.params;
84
+ flattened.push(method.returnType);
85
+ flattened.push(...(0, exports.getParamResolvedTypes)(routeParams));
86
+ flattened.push(...(0, exports.getParamResolvedTypes)(queryParams));
87
+ flattened.push(...(0, exports.getParamResolvedTypes)(bodyParams));
88
+ }
89
+ }
90
+ }
91
+ return flattened;
92
+ }
93
+ /**
94
+ * Convert a string to camel case
95
+ * @param str
96
+ */
97
+ function camelcase(str) {
98
+ return str
99
+ .split(/[^a-zA-Z0-9_]/g)
100
+ .map((p, i) => {
101
+ const f = p.substr(0, 1);
102
+ return (i === 0 ? f.toLocaleLowerCase() : f.toLocaleUpperCase()) + p.substr(1);
103
+ })
104
+ .join('');
105
+ }
106
+ /**
107
+ * Serialize analyzed SDK content to JSON
108
+ * Maps are converted to plain objects, and engine-specific analysis contexts are omitted.
109
+ */
110
+ function serializeSdkContent(content, pretty) {
111
+ return JSON.stringify(content, function (key, v) {
112
+ if (key === 'context' && isSdkMethodParams(this))
113
+ return undefined;
114
+ return v instanceof Map ? Object.fromEntries(v) : v;
115
+ }, pretty ? 4 : 0);
116
+ }
117
+ function isSdkMethodParams(value) {
118
+ return typeof value === 'object' && value !== null && 'routeParams' in value && 'queryParams' in value && 'bodyParams' in value;
119
+ }
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2RrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FuYWx5emVyL3Nkay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7O0dBS0c7Ozs7Ozs7QUFxREg7O0dBRUc7QUFDSCxJQUFZLGFBTVg7QUFORCxXQUFZLGFBQWE7SUFDdkIsa0NBQWlCLENBQUE7SUFDakIsNEJBQVcsQ0FBQTtJQUNYLGdDQUFlLENBQUE7SUFDZiw4QkFBYSxDQUFBO0lBQ2IsNEJBQVcsQ0FBQTtBQUNiLENBQUMsRUFOVyxhQUFhLGFBQWIsYUFBYSxHQUFiLGFBQWEsUUFNeEI7QUE0Qk0sTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEtBQXFCLEVBQTZCLEVBQUU7SUFDdEYsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDbkIsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0lBQ0QsT0FBTyxTQUFTLElBQUksS0FBSyxJQUFJLGNBQWMsSUFBSSxLQUFLLElBQUksa0JBQWtCLElBQUksS0FBSyxJQUFJLGNBQWMsSUFBSSxLQUFLLElBQUksWUFBWSxJQUFJLEtBQUssQ0FBQTtBQUN6SSxDQUFDLENBQUE7QUFMWSxRQUFBLG1CQUFtQixHQUFuQixtQkFBbUIsQ0FLL0I7QUFFTSxNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBcUIsRUFBc0IsRUFBRTtJQUNqRixJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNuQixPQUFPLEVBQUUsQ0FBQTtJQUNYLENBQUM7SUFDRCxJQUFJLElBQUEsUUFBQSxtQkFBbUIsRUFBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQy9CLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoQixDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQzdCLENBQUMsQ0FBQTtBQVJZLFFBQUEscUJBQXFCLEdBQXJCLHFCQUFxQixDQVFqQztBQWFELElBQVksWUFJWDtBQUpELFdB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
@@ -35,6 +35,14 @@ export interface ResolvedTypeDeps {
35
35
  * @returns
36
36
  */
37
37
  export declare function resolveTypeDependencies(type: Type<ts.Type>, relativeFilePath: string, absoluteSrcPath: string): ResolvedTypeDeps;
38
+ /**
39
+ * Resolve the dependencies of a type from its text, as printed by the TypeScript checker
40
+ * @param rawType Raw type's text (e.g. `Array<import("somefile.ts").SomeType>`)
41
+ * @param relativeFilePath
42
+ * @param absoluteSrcPath
43
+ * @returns
44
+ */
45
+ export declare function resolveTypeTextDependencies(rawType: string, relativeFilePath: string, absoluteSrcPath: string): ResolvedTypeDeps;
38
46
  /**
39
47
  * Extract an import type's name from a TS-Morph type
40
48
  * @example "import('dir/file').TypeName" => "TypeName"
@@ -42,6 +50,13 @@ export declare function resolveTypeDependencies(type: Type<ts.Type>, relativeFil
42
50
  * @returns
43
51
  */
44
52
  export declare function getImportResolvedType(type: Type<ts.Type>): string;
53
+ /**
54
+ * Extract an import type's name from a type's text
55
+ * @example "import('dir/file').TypeName" => "TypeName"
56
+ * @param typeText
57
+ * @returns
58
+ */
59
+ export declare function getImportResolvedTypeText(typeText: string): string;
45
60
  /**
46
61
  * Convert paths for external files
47
62
  * @param importedFilePath
@@ -2,9 +2,47 @@
2
2
  /**
3
3
  * @file Type dependencies builders from the source API
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.normalizeExternalFilePath = exports.getImportResolvedType = exports.resolveTypeDependencies = exports.IMPORTED_TYPE_REGEX = void 0;
7
- const path = require("path");
39
+ exports.IMPORTED_TYPE_REGEX = void 0;
40
+ exports.resolveTypeDependencies = resolveTypeDependencies;
41
+ exports.resolveTypeTextDependencies = resolveTypeTextDependencies;
42
+ exports.getImportResolvedType = getImportResolvedType;
43
+ exports.getImportResolvedTypeText = getImportResolvedTypeText;
44
+ exports.normalizeExternalFilePath = normalizeExternalFilePath;
45
+ const path = __importStar(require("path"));
8
46
  const logging_1 = require("../logging");
9
47
  /**
10
48
  * Regex to match or replace imported types
@@ -18,8 +56,16 @@ exports.IMPORTED_TYPE_REGEX = /\bimport\(['"]([^'"]+)['"]\)\.([a-zA-Z0-9_]+)\b/g
18
56
  * @returns
19
57
  */
20
58
  function resolveTypeDependencies(type, relativeFilePath, absoluteSrcPath) {
21
- /** Raw type's text (e.g. `Array<import("somefile.ts").SomeType>`) */
22
- const rawType = type.getText();
59
+ return resolveTypeTextDependencies(type.getText(), relativeFilePath, absoluteSrcPath);
60
+ }
61
+ /**
62
+ * Resolve the dependencies of a type from its text, as printed by the TypeScript checker
63
+ * @param rawType Raw type's text (e.g. `Array<import("somefile.ts").SomeType>`)
64
+ * @param relativeFilePath
65
+ * @param absoluteSrcPath
66
+ * @returns
67
+ */
68
+ function resolveTypeTextDependencies(rawType, relativeFilePath, absoluteSrcPath) {
23
69
  if (path.isAbsolute(relativeFilePath)) {
24
70
  (0, logging_1.unreachable)('Internal error: got absolute file path in type dependencies resolver, when expecting a relative one (got {magentaBright})', relativeFilePath);
25
71
  }
@@ -44,7 +90,7 @@ function resolveTypeDependencies(type, relativeFilePath, absoluteSrcPath) {
44
90
  }
45
91
  for (const depFile of dependencies.keys()) {
46
92
  if (path.isAbsolute(depFile)) {
47
- (0, logging_1.unreachable)('Internal error: resolved absolute file path in type dependencies, when should have resolved a relative one\nIn type: {yellow}\nGot: {magentaBright}', type.getText(), depFile);
93
+ (0, logging_1.unreachable)('Internal error: resolved absolute file path in type dependencies, when should have resolved a relative one\nIn type: {yellow}\nGot: {magentaBright}', rawType, depFile);
48
94
  }
49
95
  }
50
96
  return {
@@ -55,7 +101,6 @@ function resolveTypeDependencies(type, relativeFilePath, absoluteSrcPath) {
55
101
  localTypes,
56
102
  };
57
103
  }
58
- exports.resolveTypeDependencies = resolveTypeDependencies;
59
104
  /**
60
105
  * Extract an import type's name from a TS-Morph type
61
106
  * @example "import('dir/file').TypeName" => "TypeName"
@@ -63,9 +108,17 @@ exports.resolveTypeDependencies = resolveTypeDependencies;
63
108
  * @returns
64
109
  */
65
110
  function getImportResolvedType(type) {
66
- return type.getText().replace(exports.IMPORTED_TYPE_REGEX, (_, __, typename) => typename);
111
+ return getImportResolvedTypeText(type.getText());
112
+ }
113
+ /**
114
+ * Extract an import type's name from a type's text
115
+ * @example "import('dir/file').TypeName" => "TypeName"
116
+ * @param typeText
117
+ * @returns
118
+ */
119
+ function getImportResolvedTypeText(typeText) {
120
+ return typeText.replace(exports.IMPORTED_TYPE_REGEX, (_, __, typename) => typename);
67
121
  }
68
- exports.getImportResolvedType = getImportResolvedType;
69
122
  /**
70
123
  * Convert paths for external files
71
124
  * @param importedFilePath
@@ -82,5 +135,4 @@ function normalizeExternalFilePath(importedFilePath) {
82
135
  }
83
136
  return `_external${level}/${importedFilePath}`;
84
137
  }
85
- exports.normalizeExternalFilePath = normalizeExternalFilePath;
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWRlcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYW5hbHl6ZXIvdHlwZWRlcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFFSCw2QkFBNEI7QUFJNUIsd0NBQXdDO0FBRXhDOztHQUVHO0FBQ1UsUUFBQSxtQkFBbUIsR0FBRyxrREFBa0QsQ0FBQTtBQTRCckY7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsdUJBQXVCLENBQUMsSUFBbUIsRUFBRSxnQkFBd0IsRUFBRSxlQUF1QjtJQUM1RyxxRUFBcUU7SUFDckUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBRTlCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7UUFDdEMsSUFBQSxxQkFBVyxFQUNULDJIQUEySCxFQUMzSCxnQkFBZ0IsQ0FDakIsQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLFlBQVksR0FBcUMsSUFBSSxHQUFHLEVBQUUsQ0FBQTtJQUNoRSxNQUFNLFVBQVUsR0FBbUMsRUFBRSxDQUFBO0lBRXJELGdEQUFnRDtJQUNoRCxNQUFNLFlBQVksR0FBcUMsT0FBTyxDQUFDLE9BQU8sQ0FBQywyQkFBbUIsRUFBRSxDQUFDLENBQUMsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDdkgsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQTtRQUVySCxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRXZDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQ2pCLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLFlBQVksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUNwQyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDLENBQUMsQ0FBQTtJQUVGLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQ3JDLElBQUEscUJBQVcsRUFBQyx5RUFBeUUsRUFBRSxhQUFhLEVBQUUsWUFBWSxDQUFDLENBQUE7SUFDckgsQ0FBQztJQUVELEtBQUssTUFBTSxPQUFPLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7UUFDMUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDN0IsSUFBQSxxQkFBVyxFQUNULHFKQUFxSixFQUNySixJQUFJLENBQUMsT0FBTyxFQUFFLEVBQ2QsT0FBTyxDQUNSLENBQUE7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPO1FBQ1AsZ0JBQWdCO1FBQ2hCLFlBQVk7UUFDWixZQUFZO1FBQ1osVUFBVTtLQUNYLENBQUE7QUFDSCxDQUFDO0FBcERELDBEQW9EQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IscUJBQXFCLENBQUMsSUFBbUI7SUFDdkQsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLDJCQUFtQixFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0FBQ25GLENBQUM7QUFGRCxzREFFQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLHlCQUF5QixDQUFDLGdCQUF3QjtJQUNoRSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUE7SUFFbkQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3hDLE9BQU8sZ0JBQWdCLENBQUE7SUFDekIsQ0FBQztJQUVELElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQTtJQUViLE9BQU8sZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDMUMsS0FBSyxFQUFFLENBQUE7UUFDUCxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDL0MsQ0FBQztJQUVELE9BQU8sWUFBWSxLQUFLLElBQUksZ0JBQWdCLEVBQUUsQ0FBQTtBQUNoRCxDQUFDO0FBZkQsOERBZUMifQ==
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWRlcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYW5hbHl6ZXIvdHlwZWRlcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVILE1BQVksSUFBSSxpQ0FBWTtBQUk1Qix3Q0FBd0M7QUFFeEM7O0dBRUc7QUFDVSxRQUFBLG1CQUFtQixHQUFHLGtEQUFrRCxDQUFBO0FBNEJyRjs7Ozs7O0dBTUc7QUFDSCxpQ0FBd0MsSUFBbUIsRUFBRSxnQkFBd0IsRUFBRSxlQUF1QjtJQUM1RyxPQUFPLDJCQUEyQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLENBQUMsQ0FBQTtBQUN2RixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gscUNBQTRDLE9BQWUsRUFBRSxnQkFBd0IsRUFBRSxlQUF1QjtJQUM1RyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1FBQ3RDLElBQUEscUJBQVcsRUFDVCwySEFBMkgsRUFDM0gsZ0JBQWdCLENBQ2pCLENBQUE7SUFDSCxDQUFDO0lBRUQsTUFBTSxZQUFZLEdBQXFDLElBQUksR0FBRyxFQUFFLENBQUE7SUFDaEUsTUFBTSxVQUFVLEdBQW1DLEVBQUUsQ0FBQTtJQUVyRCxnREFBZ0Q7SUFDaEQsTUFBTSxZQUFZLEdBQXFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBQSxtQkFBbUIsRUFBRSxDQUFDLENBQUMsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDdkgsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQTtRQUVySCxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRXZDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQ2pCLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLFlBQVksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUNwQyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDLENBQUMsQ0FBQTtJQUVGLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQ3JDLElBQUEscUJBQVcsRUFBQyx5RUFBeUUsRUFBRSxhQUFhLEVBQUUsWUFBWSxDQUFDLENBQUE7SUFDckgsQ0FBQztJQUVELEtBQUssTUFBTSxPQUFPLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7UUFDMUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDN0IsSUFBQSxxQkFBVyxFQUNULHFKQUFxSixFQUNySixPQUFPLEVBQ1AsT0FBTyxDQUNSLENBQUE7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPO1FBQ1AsZ0JBQWdCO1FBQ2hCLFlBQVk7UUFDWixZQUFZO1FBQ1osVUFBVTtLQUNYLENBQUE7QUFDSCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCwrQkFBc0MsSUFBbUI7SUFDdkQsT0FBTyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtBQUNsRCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxtQ0FBMEMsUUFBZ0I7SUFDeEQsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQUEsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUE7QUFDN0UsQ0FBQztBQUVEOzs7R0FHRztBQUNILG1DQUEwQyxnQkFBd0I7SUFDaEUsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO0lBRW5ELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN4QyxPQUFPLGdCQUFnQixDQUFBO0lBQ3pCLENBQUM7SUFFRCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUE7SUFFYixPQUFPLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzFDLEtBQUssRUFBRSxDQUFBO1FBQ1AsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQy9DLENBQUM7SUFFRCxPQUFPLFlBQVksS0FBSyxJQUFJLGdCQUFnQixFQUFFLENBQUE7QUFDaEQsQ0FBQyJ9
package/build/bin.js CHANGED
@@ -1,36 +1,82 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
5
- return new (P || (P = Promise))(function (resolve, reject) {
6
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
7
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
8
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
9
- step((generator = generator.apply(thisArg, _arguments || [])).next());
10
- });
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ var __importDefault = (this && this.__importDefault) || function (mod) {
37
+ return (mod && mod.__esModule) ? mod : { "default": mod };
11
38
  };
12
39
  Object.defineProperty(exports, "__esModule", { value: true });
13
- const path = require("path");
14
- const analyzer_1 = require("./analyzer");
40
+ const path = __importStar(require("path"));
15
41
  const config_1 = require("./config");
16
- const generator_1 = require("./generator");
42
+ const engine_1 = require("./engine");
43
+ const generator_1 = __importDefault(require("./generator"));
17
44
  const logging_1 = require("./logging");
18
- const rtk_query_generator_1 = require("./rtk-query-generator");
19
- function main() {
20
- return __awaiter(this, void 0, void 0, function* () {
21
- const started = Date.now();
22
- process.chdir(path.dirname(path.resolve(config_1.configPath)));
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);
45
+ const rtk_query_generator_1 = __importDefault(require("./rtk-query-generator"));
46
+ /**
47
+ * Get the analysis engine to use: `--engine <name>` or `--engine=<name>` on the command line,
48
+ * then the configuration file's `engine` option, then the default one
49
+ */
50
+ function getEngine(args) {
51
+ let engine = config_1.config.engine ?? 'tsgo';
52
+ for (let i = 0; i < args.length; i++) {
53
+ if (args[i] === '--engine') {
54
+ engine = args[++i] ?? '';
27
55
  }
28
- if (outputType === '--generate-rtk') {
29
- (0, logging_1.log)('> Generating RTK Query endpoints for Nest API...');
30
- yield (0, rtk_query_generator_1.default)(config_1.config, sdkContent);
56
+ else if (args[i].startsWith('--engine=')) {
57
+ engine = args[i].substring('--engine='.length);
31
58
  }
32
- (0, logging_1.log)('> Done in ' + ((Date.now() - started) / 1000).toFixed(2) + 's');
33
- });
59
+ }
60
+ if (!(0, engine_1.isEngineName)(engine)) {
61
+ (0, logging_1.panic)('Unknown analysis engine {yellow} (expected one of: {})', engine, engine_1.ENGINES.join(', '));
62
+ }
63
+ return engine;
64
+ }
65
+ async function main() {
66
+ const started = Date.now();
67
+ const args = process.argv.slice(3);
68
+ const engine = getEngine(args);
69
+ const outputType = args.find((arg) => arg === '--generate' || arg === '--generate-rtk');
70
+ process.chdir(path.dirname(path.resolve(config_1.configPath)));
71
+ const sdkContent = await (0, engine_1.analyze)(config_1.config, engine);
72
+ if (outputType === '--generate') {
73
+ await (0, generator_1.default)(config_1.config, sdkContent);
74
+ }
75
+ if (outputType === '--generate-rtk') {
76
+ (0, logging_1.log)('> Generating RTK Query endpoints for Nest API...');
77
+ await (0, rtk_query_generator_1.default)(config_1.config, sdkContent);
78
+ }
79
+ (0, logging_1.log)('> Done in ' + ((Date.now() - started) / 1000).toFixed(2) + 's');
34
80
  }
35
81
  main();
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Jpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFFQSw2QkFBNEI7QUFFNUIseUNBQXdDO0FBQ3hDLHFDQUE2QztBQUM3QywyQ0FBMkM7QUFDM0MsdUNBQStCO0FBQy9CLCtEQUE2RDtBQUU3RCxTQUFlLElBQUk7O1FBQ2pCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQTtRQUUxQixPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBVSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBRXJELE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBQSxzQkFBVyxFQUFDLGVBQU0sQ0FBQyxDQUFBO1FBRTVDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFbEMsSUFBSSxVQUFVLEtBQUssWUFBWSxFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFBLG1CQUFpQixFQUFDLGVBQU0sRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUM3QyxDQUFDO1FBRUQsSUFBSSxVQUFVLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztZQUNwQyxJQUFBLGFBQUcsRUFBQyxrREFBa0QsQ0FBQyxDQUFBO1lBQ3ZELE1BQU0sSUFBQSw2QkFBeUIsRUFBQyxlQUFNLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFDckQsQ0FBQztRQUVELElBQUEsYUFBRyxFQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQTtJQUN0RSxDQUFDO0NBQUE7QUFFRCxJQUFJLEVBQUUsQ0FBQSJ9
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Jpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxNQUFZLElBQUksaUNBQVk7QUFFNUIscUNBQTZDO0FBQzdDLHFDQUFxRTtBQUNyRSw0REFBMkM7QUFDM0MsdUNBQXNDO0FBQ3RDLGdGQUE2RDtBQUU3RDs7O0dBR0c7QUFDSCxTQUFTLFNBQVMsQ0FBQyxJQUFjO0lBQy9CLElBQUksTUFBTSxHQUFXLGVBQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFBO0lBRTVDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDckMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDM0IsTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUMxQixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDM0MsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ2hELENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLElBQUEscUJBQVksRUFBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQzFCLElBQUEsZUFBSyxFQUFDLHdEQUF3RCxFQUFFLE1BQU0sRUFBRSxnQkFBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQzdGLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUM7QUFFRCxLQUFLLFVBQVUsSUFBSTtJQUNqQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUE7SUFFMUIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDbEMsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzlCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxZQUFZLElBQUksR0FBRyxLQUFLLGdCQUFnQixDQUFDLENBQUE7SUFFdkYsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUVyRCxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUEsZ0JBQU8sRUFBQyxlQUFNLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFFaEQsSUFBSSxVQUFVLEtBQUssWUFBWSxFQUFFLENBQUM7UUFDaEMsTUFBTSxJQUFBLG1CQUFpQixFQUFDLGVBQU0sRUFBRSxVQUFVLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBRUQsSUFBSSxVQUFVLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztRQUNwQyxJQUFBLGFBQUcsRUFBQyxrREFBa0QsQ0FBQyxDQUFBO1FBQ3ZELE1BQU0sSUFBQSw2QkFBeUIsRUFBQyxlQUFNLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFDckQsQ0FBQztJQUVELElBQUEsYUFBRyxFQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQTtBQUN0RSxDQUFDO0FBRUQsSUFBSSxFQUFFLENBQUEifQ==
package/build/config.d.ts CHANGED
@@ -19,6 +19,14 @@ export interface Config {
19
19
  removeSuffix?: string;
20
20
  };
21
21
  };
22
+ /**
23
+ * Engine used to analyze the API (default: "tsgo")
24
+ * - "tsgo": TypeScript 7's native compiler (fastest)
25
+ * - "typescript": the API's own TypeScript compiler (6.x) running in-process; same output as "tsgo"
26
+ * - "ts-morph": the original analyzer (TypeScript 4.8); same output as previous versions of this tool
27
+ * Can be overridden with the `--engine` command-line option
28
+ */
29
+ readonly engine?: 'tsgo' | 'typescript' | 'ts-morph';
22
30
  /** If the SDK interface file does not exist yet, create one automatically (enabled by default) */
23
31
  readonly generateDefaultSdkInterface?: boolean;
24
32
  /** Write generation timestamp in each TypeScript file (enabled by default) */
@@ -43,6 +51,11 @@ export interface Config {
43
51
  readonly sdkOutputPath: string;
44
52
  /** Path to custom tsconfig file */
45
53
  readonly tsconfigFile?: string;
54
+ /**
55
+ * Path to the TypeScript package used by the "typescript" engine
56
+ * (default: the "typescript" package installed for the API, resolved from `apiInputPath`)
57
+ */
58
+ readonly typescriptPath?: string;
46
59
  /** Enable verbose mode */
47
60
  readonly verbose?: boolean;
48
61
  }