@aws/nx-plugin 1.0.0-rc.30 → 1.0.0-rc.32

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 (59) hide show
  1. package/LICENSE-THIRD-PARTY +235 -1336
  2. package/README.md +1 -1
  3. package/package.json +1 -2
  4. package/src/mcp-server/tools/create-workspace-command.js +2 -2
  5. package/src/mcp-server/tools/create-workspace-command.js.map +1 -1
  6. package/src/open-api/ts-client/__snapshots__/generator.additional-properties.spec.ts.snap +147 -33
  7. package/src/open-api/ts-client/__snapshots__/generator.arrays.spec.ts.snap +308 -75
  8. package/src/open-api/ts-client/__snapshots__/generator.complex-types.spec.ts.snap +286 -62
  9. package/src/open-api/ts-client/__snapshots__/generator.composite-types.spec.ts.snap +674 -93
  10. package/src/open-api/ts-client/__snapshots__/generator.content-type.spec.ts.snap +211 -36
  11. package/src/open-api/ts-client/__snapshots__/generator.duplicate-types.spec.ts.snap +196 -44
  12. package/src/open-api/ts-client/__snapshots__/generator.edge-cases.spec.ts.snap +5507 -0
  13. package/src/open-api/ts-client/__snapshots__/generator.fast-api.spec.ts.snap +219 -60
  14. package/src/open-api/ts-client/__snapshots__/generator.multipart.spec.ts.snap +280 -0
  15. package/src/open-api/ts-client/__snapshots__/generator.primitive-types.spec.ts.snap +351 -80
  16. package/src/open-api/ts-client/__snapshots__/generator.request.spec.ts.snap +170 -49
  17. package/src/open-api/ts-client/__snapshots__/generator.reserved-keywords.spec.ts.snap +98 -22
  18. package/src/open-api/ts-client/__snapshots__/generator.response.spec.ts.snap +147 -33
  19. package/src/open-api/ts-client/__snapshots__/generator.streaming.spec.ts.snap +392 -88
  20. package/src/open-api/ts-client/__snapshots__/generator.tags.spec.ts.snap +196 -44
  21. package/src/open-api/ts-client/files/client.gen.ts.template +166 -19
  22. package/src/open-api/ts-client/files/types.gen.ts.template +4 -4
  23. package/src/open-api/ts-client/generator.js +1 -1
  24. package/src/open-api/ts-client/generator.js.map +1 -1
  25. package/src/open-api/ts-hooks/files/options-proxy.gen.ts.template +5 -0
  26. package/src/open-api/ts-hooks/generator.spec.tsx +70 -0
  27. package/src/open-api/utils/codegen-data/languages.d.ts +0 -6
  28. package/src/open-api/utils/codegen-data/languages.js +23 -18
  29. package/src/open-api/utils/codegen-data/languages.js.map +1 -1
  30. package/src/open-api/utils/codegen-data/types.d.ts +240 -10
  31. package/src/open-api/utils/codegen-data/types.js +24 -1
  32. package/src/open-api/utils/codegen-data/types.js.map +1 -1
  33. package/src/open-api/utils/codegen-data.d.ts +2 -2
  34. package/src/open-api/utils/codegen-data.js +357 -617
  35. package/src/open-api/utils/codegen-data.js.map +1 -1
  36. package/src/open-api/utils/normalise.js +167 -22
  37. package/src/open-api/utils/normalise.js.map +1 -1
  38. package/src/open-api/utils/parser.d.ts +55 -0
  39. package/src/open-api/utils/parser.js +754 -0
  40. package/src/open-api/utils/parser.js.map +1 -0
  41. package/src/open-api/utils/types.d.ts +18 -0
  42. package/src/open-api/utils/types.js.map +1 -1
  43. package/src/preset/__snapshots__/generator.spec.ts.snap +6 -6
  44. package/src/py/fast-api/__snapshots__/generator.terraform.spec.ts.snap +414 -6
  45. package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +276 -4
  46. package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +414 -6
  47. package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +0 -23
  48. package/src/ts/mcp-server/generator.js +10 -22
  49. package/src/ts/mcp-server/generator.js.map +1 -1
  50. package/src/utils/api-constructs/files/terraform/app/apis/http/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +69 -1
  51. package/src/utils/api-constructs/files/terraform/app/apis/rest/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +69 -1
  52. package/src/utils/mcp.js +1 -1
  53. package/src/utils/mcp.js.map +1 -1
  54. package/src/utils/names.d.ts +6 -0
  55. package/src/utils/names.js +6 -1
  56. package/src/utils/names.js.map +1 -1
  57. package/src/utils/versions.d.ts +5 -5
  58. package/src/utils/versions.js +4 -4
  59. package/src/utils/versions.js.map +1 -1
@@ -0,0 +1,280 @@
1
+ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
+
3
+ exports[`openApiTsClientGenerator - multipart/form-data > should match the generated client snapshot > client.gen.ts 1`] = `
4
+ "import type {
5
+ Upload200Response,
6
+ UploadRequestContent,
7
+ UploadRequest,
8
+ } from './types.gen.js';
9
+
10
+ /**
11
+ * Utility for serialisation and deserialisation of API types.
12
+ */
13
+ export class $IO {
14
+ public static $mapValues = (data: any, fn: (item: any) => any) =>
15
+ Object.fromEntries(Object.entries(data).map(([k, v]) => [k, fn(v)]));
16
+
17
+ public static Upload200Response = {
18
+ toJson: (model: Upload200Response): any => {
19
+ if (model === undefined || model === null) {
20
+ return model;
21
+ }
22
+ return {
23
+ ...(model.size === undefined
24
+ ? {}
25
+ : {
26
+ size: model.size,
27
+ }),
28
+ ...(model.note === undefined
29
+ ? {}
30
+ : {
31
+ note: model.note,
32
+ }),
33
+ };
34
+ },
35
+ fromJson: (json: any): Upload200Response => {
36
+ if (json === undefined || json === null) {
37
+ return json;
38
+ }
39
+ return {
40
+ ...(json['size'] === undefined
41
+ ? {}
42
+ : {
43
+ size: json['size'],
44
+ }),
45
+ ...(json['note'] === undefined
46
+ ? {}
47
+ : {
48
+ note: json['note'],
49
+ }),
50
+ };
51
+ },
52
+ };
53
+
54
+ public static UploadRequestContent = {
55
+ toJson: (model: UploadRequestContent): any => {
56
+ if (model === undefined || model === null) {
57
+ return model;
58
+ }
59
+ return {
60
+ ...(model.file === undefined
61
+ ? {}
62
+ : {
63
+ file: model.file,
64
+ }),
65
+ ...(model.note === undefined
66
+ ? {}
67
+ : {
68
+ note: model.note,
69
+ }),
70
+ ...(model.tags === undefined
71
+ ? {}
72
+ : {
73
+ tags: model.tags,
74
+ }),
75
+ };
76
+ },
77
+ fromJson: (json: any): UploadRequestContent => {
78
+ if (json === undefined || json === null) {
79
+ return json;
80
+ }
81
+ return {
82
+ file: json['file'],
83
+ ...(json['note'] === undefined
84
+ ? {}
85
+ : {
86
+ note: json['note'],
87
+ }),
88
+ ...(json['tags'] === undefined
89
+ ? {}
90
+ : {
91
+ tags: json['tags'],
92
+ }),
93
+ };
94
+ },
95
+ };
96
+ }
97
+
98
+ /**
99
+ * Client configuration for TestApi
100
+ */
101
+ export interface TestApiConfig {
102
+ /**
103
+ * Base URL for the API
104
+ */
105
+ url: string;
106
+ /**
107
+ * Custom instance of fetch. By default the global 'fetch' is used.
108
+ * You can override this to add custom middleware for use cases such as adding authentication headers.
109
+ */
110
+ fetch?: typeof fetch;
111
+ /**
112
+ * Additional configuration
113
+ */
114
+ options?: {
115
+ /**
116
+ * By default, the client will add a Content-Type header, set to the media type defined for
117
+ * the request in the OpenAPI specification.
118
+ * Set this to false to omit this header.
119
+ */
120
+ omitContentTypeHeader?: boolean;
121
+ };
122
+ }
123
+
124
+ /**
125
+ * API Client for TestApi
126
+ */
127
+ export class TestApi {
128
+ private $config: TestApiConfig;
129
+
130
+ constructor(config: TestApiConfig) {
131
+ this.$config = config;
132
+
133
+ this.upload = this.upload.bind(this);
134
+ }
135
+
136
+ private $collectionDelimiters: { [format: string]: string } = {
137
+ csv: ',',
138
+ ssv: ' ',
139
+ pipes: '|',
140
+ };
141
+
142
+ private $deepObject = (key: string, value: any): string[] => {
143
+ if (value === undefined || value === null) {
144
+ return [];
145
+ }
146
+ if (typeof value !== 'object') {
147
+ return [\`\${key}=\${encodeURIComponent(String(value))}\`];
148
+ }
149
+ return Object.entries(value).flatMap(([prop, v]) =>
150
+ this.$deepObject(\`\${key}[\${encodeURIComponent(prop)}]\`, v),
151
+ );
152
+ };
153
+
154
+ private $url = (
155
+ path: string,
156
+ pathParameters: { [key: string]: any },
157
+ queryParameters: { [key: string]: any },
158
+ collectionFormats?: {
159
+ [key: string]: 'multi' | 'csv' | 'ssv' | 'pipes' | 'deepObject';
160
+ },
161
+ ): string => {
162
+ const baseUrl = this.$config.url.endsWith('/')
163
+ ? this.$config.url.slice(0, -1)
164
+ : this.$config.url;
165
+ const pathWithParameters = Object.entries(pathParameters).reduce(
166
+ (withParams, [key, value]) =>
167
+ withParams.replace(\`{\${key}}\`, encodeURIComponent(\`\${value}\`)),
168
+ path,
169
+ );
170
+ const queryString = Object.entries(queryParameters)
171
+ .flatMap(([key, value]) => {
172
+ if (Array.isArray(value) && collectionFormats?.[key] === 'multi') {
173
+ return value.map(
174
+ (v) => \`\${encodeURIComponent(key)}=\${encodeURIComponent(\`\${v}\`)}\`,
175
+ );
176
+ }
177
+ if (
178
+ collectionFormats?.[key] === 'deepObject' &&
179
+ value !== null &&
180
+ typeof value === 'object'
181
+ ) {
182
+ return this.$deepObject(encodeURIComponent(key), value);
183
+ }
184
+ const delimiter =
185
+ this.$collectionDelimiters[collectionFormats?.[key] ?? 'csv'] ?? ',';
186
+ return [
187
+ \`\${encodeURIComponent(key)}=\${encodeURIComponent(Array.isArray(value) ? value.map(String).join(delimiter) : String(value))}\`,
188
+ ];
189
+ })
190
+ .join('&');
191
+ return (
192
+ baseUrl + pathWithParameters + (queryString ? \`?\${queryString}\` : '')
193
+ );
194
+ };
195
+
196
+ private $headers = (
197
+ headerParameters: { [key: string]: any },
198
+ collectionFormats?: { [key: string]: 'multi' | 'csv' | 'ssv' | 'pipes' },
199
+ ): [string, string][] => {
200
+ return Object.entries(headerParameters).flatMap(([key, value]) => {
201
+ if (Array.isArray(value) && collectionFormats?.[key] === 'multi') {
202
+ return value.map((v) => [key, String(v)]) as [string, string][];
203
+ }
204
+ const delimiter =
205
+ this.$collectionDelimiters[collectionFormats?.[key] ?? 'csv'] ?? ',';
206
+ return [
207
+ [
208
+ key,
209
+ Array.isArray(value)
210
+ ? value.map(String).join(delimiter)
211
+ : String(value),
212
+ ],
213
+ ];
214
+ });
215
+ };
216
+
217
+ private $formData = (model: { [key: string]: any }): FormData => {
218
+ const formData = new FormData();
219
+ const append = (key: string, value: any): void => {
220
+ if (value === undefined || value === null) {
221
+ return;
222
+ }
223
+ if (value instanceof Blob || typeof value === 'string') {
224
+ formData.append(key, value);
225
+ } else if (Array.isArray(value)) {
226
+ value.forEach((v) => append(key, v));
227
+ } else if (typeof value === 'object') {
228
+ formData.append(key, JSON.stringify(value));
229
+ } else {
230
+ formData.append(key, String(value));
231
+ }
232
+ };
233
+ Object.entries(model).forEach(([key, value]) => append(key, value));
234
+ return formData;
235
+ };
236
+
237
+ private $fetch: typeof fetch = (...args) =>
238
+ (this.$config.fetch ?? fetch)(...args);
239
+
240
+ public async upload(input: UploadRequest): Promise<Upload200Response> {
241
+ const pathParameters: { [key: string]: any } = {};
242
+ const queryParameters: { [key: string]: any } = {};
243
+ const headerParameters: { [key: string]: any } = {};
244
+ const body = this.$formData($IO.UploadRequestContent.toJson(input));
245
+
246
+ const response = await this.$fetch(
247
+ this.$url('/upload', pathParameters, queryParameters),
248
+ {
249
+ headers: this.$headers(headerParameters),
250
+ method: 'POST',
251
+ body,
252
+ },
253
+ );
254
+
255
+ if (response.status === 200) {
256
+ return $IO.Upload200Response.fromJson(await response.json());
257
+ }
258
+ throw new Error(
259
+ \`Unknown response status \${response.status} returned by API\`,
260
+ );
261
+ }
262
+ }
263
+ "
264
+ `;
265
+
266
+ exports[`openApiTsClientGenerator - multipart/form-data > should match the generated client snapshot > types.gen.ts 1`] = `
267
+ "export type Upload200Response = {
268
+ size?: number;
269
+ note?: string;
270
+ };
271
+ export type UploadRequestContent = {
272
+ file: Blob;
273
+ note?: string;
274
+ tags?: Array<string>;
275
+ };
276
+
277
+ export type UploadRequest = UploadRequestContent;
278
+ export type UploadError = never;
279
+ "
280
+ `;