@aws/nx-plugin 0.14.2 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/src/open-api/ts-client/__snapshots__/generator.additional-properties.spec.ts.snap +2236 -0
- package/src/open-api/ts-client/__snapshots__/generator.complex-types.spec.ts.snap +2307 -0
- package/src/open-api/ts-client/__snapshots__/generator.composite-types.spec.ts.snap +1495 -0
- package/src/open-api/ts-client/__snapshots__/generator.primitive-types.spec.ts.snap +1470 -0
- package/src/open-api/ts-client/__snapshots__/generator.request.spec.ts.snap +1138 -0
- package/src/open-api/ts-client/__snapshots__/generator.response.spec.ts.snap +732 -0
- package/src/open-api/ts-client/__snapshots__/generator.tags.spec.ts.snap +743 -0
- package/src/open-api/ts-client/files/client.gen.ts.template +52 -15
- package/src/open-api/ts-client/files/types.gen.ts.template +5 -0
- package/src/open-api/ts-hooks/__snapshots__/generator.spec.tsx.snap +1092 -0
- package/src/open-api/ts-hooks/files/options-proxy.gen.ts.template +210 -0
- package/src/open-api/ts-hooks/generator.d.ts +5 -0
- package/src/open-api/ts-hooks/generator.js +15 -2
- package/src/open-api/ts-hooks/generator.js.map +1 -1
- package/src/open-api/ts-hooks/generator.spec.tsx +1787 -0
- package/src/open-api/utils/codegen-data/types.d.ts +25 -0
- package/src/open-api/utils/codegen-data/types.js +26 -1
- package/src/open-api/utils/codegen-data/types.js.map +1 -1
- package/src/open-api/utils/codegen-data.js +187 -79
- package/src/open-api/utils/codegen-data.js.map +1 -1
- package/src/open-api/utils/normalise.js +11 -1
- package/src/open-api/utils/normalise.js.map +1 -1
- package/src/py/fast-api/react/__snapshots__/generator.spec.ts.snap +120 -10
- package/src/py/fast-api/react/files/website/components/__apiNameClassName__Provider.tsx.template +40 -0
- package/src/py/fast-api/react/files/website/hooks/use__apiNameClassName__.tsx.template +13 -18
- package/src/py/fast-api/react/files/website/hooks/use__apiNameClassName__Client.tsx.template +13 -0
- package/src/py/fast-api/react/generator.js +35 -9
- package/src/py/fast-api/react/generator.js.map +1 -1
- package/src/py/project/generator.js +5 -0
- package/src/py/project/generator.js.map +1 -1
- package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +7 -9
- package/src/utils/files/http-api/common/constructs/src/core/http-api.ts.template +7 -9
- package/src/open-api/ts-client/__snapshots__/generator.spec.ts.snap +0 -7880
|
@@ -41,19 +41,22 @@ const renderToJsonDateValue = (identifier, format) => {
|
|
|
41
41
|
return `${identifier}.toISOString()${format === 'date' ? '.slice(0,10)' : ''}`;
|
|
42
42
|
};
|
|
43
43
|
// Renders the appropriate nested function for .map() or $mapValues() for arrays and dictionaries for the given type
|
|
44
|
-
const renderNestedToJsonValue = (type, depth = 0) => {
|
|
44
|
+
const renderNestedToJsonValue = (type, argumentType = undefined, depth = 0) => {
|
|
45
45
|
const itemIdentifier = `item${depth}`;
|
|
46
|
+
const argType = `${argumentType ? `: ${argumentType}` : ''}`;
|
|
46
47
|
if (type.isPrimitive || type.typescriptType === 'unknown' || type.export === 'enum' || type.isEnum) {
|
|
47
|
-
return `(${itemIdentifier}) => ${["date", "date-time"].includes(type.format) ? renderToJsonDateValue(itemIdentifier, type.format) : itemIdentifier}`;
|
|
48
|
+
return `(${itemIdentifier}${argType}) => ${["date", "date-time"].includes(type.format) ? renderToJsonDateValue(itemIdentifier, type.format) : itemIdentifier}`;
|
|
48
49
|
} else if (type.export === "array") {
|
|
49
|
-
return `(${itemIdentifier}) => ${itemIdentifier}.map(${renderNestedToJsonValue(type.link, depth + 1)})`;
|
|
50
|
+
return `(${itemIdentifier}${argType}) => ${itemIdentifier}.map(${renderNestedToJsonValue(type.link, argumentType, depth + 1)})`;
|
|
50
51
|
} else if (type.export === "dictionary") {
|
|
51
|
-
return `(${itemIdentifier}) => $IO.$mapValues(${itemIdentifier}, ${renderNestedToJsonValue(type.link, depth + 1)})`;
|
|
52
|
+
return `(${itemIdentifier}${argType}) => $IO.$mapValues(${itemIdentifier}, ${renderNestedToJsonValue(type.link, argumentType, depth + 1)})`;
|
|
53
|
+
} else if (type.type === 'unknown') {
|
|
54
|
+
return `(${itemIdentifier}${argType}) => ${itemIdentifier}`;
|
|
52
55
|
}
|
|
53
56
|
return `$IO.${type.name || type.type}.toJson`;
|
|
54
57
|
};
|
|
55
58
|
// Renders the code to transform a property of the model to its json representation from the model types
|
|
56
|
-
const renderToJsonValue = (property, value) => {
|
|
59
|
+
const renderToJsonValue = (property, value, argumentType = undefined) => {
|
|
57
60
|
let rendered = '';
|
|
58
61
|
|
|
59
62
|
if (canShortCircuitConversion(property)) {
|
|
@@ -62,9 +65,9 @@ const renderToJsonValue = (property, value) => {
|
|
|
62
65
|
rendered = ["date", "date-time"].includes(property.format) ? `(${renderToJsonDateValue(value, property.format)})` : value;
|
|
63
66
|
} else if (property.export === "array") {
|
|
64
67
|
const prefix = property.uniqueItems ? `Array.from(${value})` : `${value}`;
|
|
65
|
-
rendered = `(${prefix}.map(${renderNestedToJsonValue(property.link)}))`;
|
|
68
|
+
rendered = `(${prefix}.map(${renderNestedToJsonValue(property.link, argumentType)}))`;
|
|
66
69
|
} else if (property.export === "dictionary") {
|
|
67
|
-
rendered = `($IO.$mapValues(${value}, ${renderNestedToJsonValue(property.link)}))`;
|
|
70
|
+
rendered = `($IO.$mapValues(${value}, ${renderNestedToJsonValue(property.link, argumentType)}))`;
|
|
68
71
|
} else if (property.type !== "any") {
|
|
69
72
|
rendered = `$IO.${property.type}.toJson(${value})`;
|
|
70
73
|
} else {
|
|
@@ -77,29 +80,32 @@ const renderToJsonValue = (property, value) => {
|
|
|
77
80
|
return rendered;
|
|
78
81
|
};
|
|
79
82
|
// Renders the appropriate nested function for .map() or $mapValues() for arrays and dictionaries for the given type
|
|
80
|
-
const renderNestedFromJsonValue = (type, depth = 0) => {
|
|
83
|
+
const renderNestedFromJsonValue = (type, argumentType = undefined, depth = 0) => {
|
|
81
84
|
const itemIdentifier = `item${depth}`;
|
|
85
|
+
const argType = `${argumentType ? `: ${argumentType}` : ''}`;
|
|
82
86
|
if (type.isPrimitive || type.typescriptType === 'unknown' || type.export === 'enum' || type.isEnum) {
|
|
83
|
-
return `(${itemIdentifier}) => ${["date", "date-time"].includes(type.format) ? `new Date(${itemIdentifier})` : itemIdentifier}`;
|
|
87
|
+
return `(${itemIdentifier}${argType}) => ${["date", "date-time"].includes(type.format) ? `new Date(${itemIdentifier})` : itemIdentifier}`;
|
|
84
88
|
} else if (type.export === "array") {
|
|
85
|
-
return `(${itemIdentifier}) => ${itemIdentifier}.map(${renderNestedFromJsonValue(type.link, depth + 1)})`;
|
|
89
|
+
return `(${itemIdentifier}${argType}) => ${itemIdentifier}.map(${renderNestedFromJsonValue(type.link, argumentType, depth + 1)})`;
|
|
86
90
|
} else if (type.export === "dictionary") {
|
|
87
|
-
return `(${itemIdentifier}) => $IO.$mapValues(${itemIdentifier}, ${renderNestedFromJsonValue(type.link, depth + 1)})`;
|
|
91
|
+
return `(${itemIdentifier}${argType}) => $IO.$mapValues(${itemIdentifier}, ${renderNestedFromJsonValue(type.link, argumentType, depth + 1)})`;
|
|
92
|
+
} else if (type.type === 'unknown') {
|
|
93
|
+
return `(${itemIdentifier}${argType}) => ${itemIdentifier}`;
|
|
88
94
|
}
|
|
89
95
|
return `$IO.${type.name || type.type}.fromJson`;
|
|
90
96
|
};
|
|
91
97
|
// Renders the code to transform a property of the model from its json representation into the model types
|
|
92
|
-
const renderFromJsonValue = (property, value) => {
|
|
98
|
+
const renderFromJsonValue = (property, value, argumentType = undefined) => {
|
|
93
99
|
let rendered = '';
|
|
94
100
|
if (canShortCircuitConversion(property)) {
|
|
95
101
|
rendered = value;
|
|
96
102
|
} else if (property.isPrimitive || property.typescriptType === 'unknown' || property.export === 'enum' || property.isEnum) {
|
|
97
103
|
rendered = ["date", "date-time"].includes(property.format) ? `(new Date(${value}))` : value;
|
|
98
104
|
} else if (property.export === "array") {
|
|
99
|
-
rendered = `((${value} as Array<any>).map(${renderNestedFromJsonValue(property.link)}))`;
|
|
105
|
+
rendered = `((${value} as Array<any>).map(${renderNestedFromJsonValue(property.link, argumentType)}))`;
|
|
100
106
|
rendered = property.uniqueItems ? `new Set(${rendered})` : rendered;
|
|
101
107
|
} else if (property.export === "dictionary") {
|
|
102
|
-
rendered = `($IO.$mapValues(${value}, ${renderNestedFromJsonValue(property.link)}))`;
|
|
108
|
+
rendered = `($IO.$mapValues(${value}, ${renderNestedFromJsonValue(property.link, argumentType)}))`;
|
|
103
109
|
} else {
|
|
104
110
|
rendered = `$IO.${property.type}.fromJson(${value})`;
|
|
105
111
|
}
|
|
@@ -147,6 +153,9 @@ const renderStreamingResponseChunk = (response) => {
|
|
|
147
153
|
asBlob: 'new Blob([value])',
|
|
148
154
|
});
|
|
149
155
|
};
|
|
156
|
+
const matchPattern = (pattern, value) => {
|
|
157
|
+
return `/${pattern}/.test(${value})`;
|
|
158
|
+
};
|
|
150
159
|
_%>
|
|
151
160
|
|
|
152
161
|
/**
|
|
@@ -196,6 +205,20 @@ export class $IO {
|
|
|
196
205
|
<%_ if (model.export === 'dictionary') { _%>
|
|
197
206
|
...<%- renderToJsonValue(model, 'model') %>,
|
|
198
207
|
<%_ } _%>
|
|
208
|
+
<%_ if (model.hasPatternProperties && model.patternPropertiesModels.length > 0) { _%>
|
|
209
|
+
<%_ model.patternPropertiesModels.forEach(({ pattern, model: patternProperty }) => { _%>
|
|
210
|
+
...$IO.$mapValues(Object.fromEntries(Object.entries(model).filter(([key]) => <% if (model.properties.length > 0) { %>![<%- model.properties.map(p => `'${p.typescriptName}'`).join(', ') %>].includes(key) && <% } %>
|
|
211
|
+
<%- matchPattern(pattern, 'key') %>
|
|
212
|
+
)), (patternProperty) => <%- renderToJsonValue(patternProperty, 'patternProperty', 'any') %>),
|
|
213
|
+
<%_ }); _%>
|
|
214
|
+
<%_ } _%>
|
|
215
|
+
<%_ if (model.hasAdditionalProperties) { _%>
|
|
216
|
+
...$IO.$mapValues(Object.fromEntries(Object.entries(model).filter(([key]) => <% if (model.properties.length > 0) { %>![<%- model.properties.map(p => `'${p.typescriptName}'`).join(', ') %>].includes(key)<% } %>
|
|
217
|
+
<%_ if (model.hasPatternProperties && model.patternPropertiesModels.length > 0) { _%>
|
|
218
|
+
<% if (model.properties.length > 0) { %>&& <% } %>!(<%- model.patternPropertiesModels.map(({ pattern }) => matchPattern(pattern, 'key')).join(' || ') %>)
|
|
219
|
+
<%_ } _%>
|
|
220
|
+
)), (additionalProperty) => <%- renderToJsonValue(model.additionalPropertiesModel, 'additionalProperty', 'any') %>),
|
|
221
|
+
<%_ } _%>
|
|
199
222
|
<%_ model.properties.forEach((property) => { _%>
|
|
200
223
|
...(model.<%- property.typescriptName %> === undefined ? {} : {
|
|
201
224
|
'<%= property.name %>': <%- renderToJsonValue(property, `model.${property.typescriptName}`) %>,
|
|
@@ -240,6 +263,20 @@ export class $IO {
|
|
|
240
263
|
<%_ if (model.export === 'dictionary') { _%>
|
|
241
264
|
...<%- renderFromJsonValue(model, 'json') %>,
|
|
242
265
|
<%_ } _%>
|
|
266
|
+
<%_ if (model.hasPatternProperties && model.patternPropertiesModels.length > 0) { _%>
|
|
267
|
+
<%_ model.patternPropertiesModels.forEach(({ pattern, model: patternProperty }) => { _%>
|
|
268
|
+
...$IO.$mapValues(Object.fromEntries(Object.entries(json).filter(([key]) => <% if (model.properties.length > 0) { %>![<%- model.properties.map(p => `'${p.name}'`).join(', ') %>].includes(key) && <% } %>
|
|
269
|
+
<%- matchPattern(pattern, 'key') %>
|
|
270
|
+
)), (patternProperty) => <%- renderFromJsonValue(patternProperty, 'patternProperty', 'any') %>),
|
|
271
|
+
<%_ }); _%>
|
|
272
|
+
<%_ } _%>
|
|
273
|
+
<%_ if (model.hasAdditionalProperties) { _%>
|
|
274
|
+
...$IO.$mapValues(Object.fromEntries(Object.entries(json).filter(([key]) => <% if (model.properties.length > 0) { %>![<%- model.properties.map(p => `'${p.name}'`).join(', ') %>].includes(key)<% } %>
|
|
275
|
+
<%_ if (model.hasPatternProperties && model.patternPropertiesModels.length > 0) { _%>
|
|
276
|
+
<% if (model.properties.length > 0) { %>&& <% } %>!(<%- model.patternPropertiesModels.map(({ pattern }) => matchPattern(pattern, 'key')).join(' || ') %>)
|
|
277
|
+
<%_ } _%>
|
|
278
|
+
)), (additionalProperty) => <%- renderFromJsonValue(model.additionalPropertiesModel, 'additionalProperty', 'any') %>),
|
|
279
|
+
<%_ } _%>
|
|
243
280
|
<%_ model.properties.forEach((property) => { _%>
|
|
244
281
|
<%_ if (!property.isRequired) { _%>
|
|
245
282
|
...(json['<%- property.name %>'] === undefined ? {} : {
|
|
@@ -323,7 +360,7 @@ export class <%- className %> {
|
|
|
323
360
|
private $fetch: typeof fetch = (...args) => (this.$config.fetch ?? fetch)(...args);
|
|
324
361
|
<%_ allOperations.forEach((op) => { _%>
|
|
325
362
|
<%_ const hasTag = op.tags && op.tags.length > 0; _%>
|
|
326
|
-
<%_ const isStreaming =
|
|
363
|
+
<%_ const isStreaming = op.isStreaming; _%>
|
|
327
364
|
<%_ const isInputOptional = (op.parameters.length === 1 && op.parametersBody && !op.parametersBody.isRequired) || op.parameters.length === 0; _%>
|
|
328
365
|
|
|
329
366
|
<%- docString(op, ' ') %> <%- hasTag ? 'private' : 'public' %> async <% if (isStreaming) { %>*<% } %><%- hasTag ? '_' : '' %><%- op.uniqueName %>(<% if (op.parameters.length > 0) { %>input<%- isInputOptional ? '?' : '' %>: <%- op.operationIdPascalCase %>Request<% } %>): <%- isStreaming ? 'AsyncIterableIterator' : 'Promise' %><<%- op.result ? op.result.typescriptType : 'void' %>> {
|
|
@@ -34,6 +34,11 @@ _%>
|
|
|
34
34
|
<%_ model.properties.forEach((property) => { _%>
|
|
35
35
|
<%- docString(property, ' ') %> <%= property.isReadOnly ? 'readonly ' : '' %><%= property.typescriptName %><%= property.isRequired ? '' : '?' %>: <%- property.typescriptType %><%= (property.isNullable && property.type !== 'null') ? ' | null' : '' %>;
|
|
36
36
|
<%_ }); _%>
|
|
37
|
+
<%_ if (model.hasAdditionalProperties || model.hasPatternProperties) { _%>
|
|
38
|
+
<%_ const keyName = (model.hasAdditionalProperties && model.hasPatternProperties) ? 'additionalAndPatternProperties' : (model.hasAdditionalProperties ? 'additionalProperties' : 'patternProperties'); _%>
|
|
39
|
+
<%_ const typeComment = (model.hasAdditionalProperties && !model.hasPatternProperties && model.additionalPropertiesModel.typescriptType !== 'unknown') ? ` /* ${model.additionalPropertiesModel.typescriptType} */` : '' _%>
|
|
40
|
+
[<%- keyName %>: string]: unknown<%- typeComment %>;
|
|
41
|
+
<%_ } _%>
|
|
37
42
|
};
|
|
38
43
|
<%_ } _%>
|
|
39
44
|
<%_ }); _%>
|