@redocly/client-generator 0.4.25 → 0.5.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/eject-assets/AGENTS.md +24 -23
- package/eject-assets/generators/cli/docs.ts +1 -1
- package/eject-assets/generators/cli/engine-source.ts +1 -1
- package/eject-assets/generators/cli/index.ts +2 -2
- package/eject-assets/generators/cli/render.ts +1 -1
- package/eject-assets/generators/go/client.ts +1 -1
- package/eject-assets/generators/go/descriptor.ts +1 -1
- package/eject-assets/generators/go/index.ts +2 -2
- package/eject-assets/generators/go/models.ts +1 -1
- package/eject-assets/generators/go/naming.ts +1 -1
- package/eject-assets/generators/go/operations.ts +35 -3
- package/eject-assets/generators/go/pagination.ts +1 -1
- package/eject-assets/generators/go/types.ts +1 -1
- package/eject-assets/generators/mock/faker.ts +1 -1
- package/eject-assets/generators/mock/index.ts +2 -2
- package/eject-assets/generators/mock/render.ts +1 -1
- package/eject-assets/generators/mock/sample.ts +1 -1
- package/eject-assets/generators/mock/values.ts +1 -1
- package/eject-assets/generators/php/client.ts +1 -1
- package/eject-assets/generators/php/descriptor.ts +1 -1
- package/eject-assets/generators/php/index.ts +2 -2
- package/eject-assets/generators/php/models.ts +1 -1
- package/eject-assets/generators/php/naming.ts +1 -1
- package/eject-assets/generators/php/operations.ts +21 -3
- package/eject-assets/generators/php/pagination.ts +1 -1
- package/eject-assets/generators/php/types.ts +1 -1
- package/eject-assets/generators/python/client.ts +1 -1
- package/eject-assets/generators/python/descriptor.ts +1 -1
- package/eject-assets/generators/python/index.ts +2 -2
- package/eject-assets/generators/python/models.ts +1 -1
- package/eject-assets/generators/python/naming.ts +1 -1
- package/eject-assets/generators/python/operations.ts +19 -6
- package/eject-assets/generators/python/pagination.ts +1 -1
- package/eject-assets/generators/python/types.ts +1 -1
- package/eject-assets/generators/swr/index.ts +2 -2
- package/eject-assets/generators/swr/render.ts +1 -1
- package/eject-assets/generators/tanstack-query/index.ts +2 -2
- package/eject-assets/generators/tanstack-query/render.ts +1 -1
- package/eject-assets/generators/transformers/index.ts +2 -2
- package/eject-assets/generators/transformers/render.ts +1 -1
- package/eject-assets/generators/typescript/banner.ts +1 -1
- package/eject-assets/generators/typescript/client.ts +1 -1
- package/eject-assets/generators/typescript/descriptor.ts +1 -1
- package/eject-assets/generators/typescript/index.ts +2 -2
- package/eject-assets/generators/typescript/inline-runtime.ts +1 -1
- package/eject-assets/generators/typescript/operation-signature.ts +1 -1
- package/eject-assets/generators/typescript/operation-types.ts +1 -1
- package/eject-assets/generators/typescript/operations.ts +3 -4
- package/eject-assets/generators/typescript/response-headers.ts +1 -1
- package/eject-assets/generators/typescript/type-guards.ts +1 -1
- package/eject-assets/generators/typescript/types.ts +1 -1
- package/eject-assets/generators/zod/index.ts +2 -2
- package/eject-assets/generators/zod/schemas.ts +1 -1
- package/eject-assets/skills/client-generators/SKILL.md +24 -23
- package/eject-assets/skills/go-generator/SKILL.md +11 -0
- package/eject-assets/skills/php-generator/SKILL.md +16 -0
- package/eject-assets/skills/python-generator/SKILL.md +13 -0
- package/eject-assets/skills/typescript-generator/SKILL.md +16 -0
- package/lib/authoring/index.d.ts +2 -2
- package/lib/authoring/index.d.ts.map +1 -1
- package/lib/authoring/index.js +2 -1
- package/lib/authoring/index.js.map +1 -1
- package/lib/authoring/operation.d.ts +2 -0
- package/lib/authoring/operation.d.ts.map +1 -1
- package/lib/authoring/operation.js +5 -0
- package/lib/authoring/operation.js.map +1 -1
- package/lib/generators/go/operations.d.ts.map +1 -1
- package/lib/generators/go/operations.js +22 -3
- package/lib/generators/go/operations.js.map +1 -1
- package/lib/generators/php/operations.d.ts.map +1 -1
- package/lib/generators/php/operations.js +15 -3
- package/lib/generators/php/operations.js.map +1 -1
- package/lib/generators/python/operations.d.ts.map +1 -1
- package/lib/generators/python/operations.js +15 -6
- package/lib/generators/python/operations.js.map +1 -1
- package/lib/generators/typescript/operations.d.ts.map +1 -1
- package/lib/generators/typescript/operations.js +3 -3
- package/lib/generators/typescript/operations.js.map +1 -1
- package/lib/generators/typescript/runtime/send.d.ts +2 -1
- package/lib/generators/typescript/runtime/send.d.ts.map +1 -1
- package/lib/generators/typescript/runtime/send.js +25 -4
- package/lib/generators/typescript/runtime/send.js.map +1 -1
- package/lib/reserved-names.d.ts.map +1 -1
- package/lib/reserved-names.js +1 -0
- package/lib/reserved-names.js.map +1 -1
- package/lib/runtime-sources/go.d.ts +1 -1
- package/lib/runtime-sources/go.d.ts.map +1 -1
- package/lib/runtime-sources/go.js +1 -1
- package/lib/runtime-sources/go.js.map +1 -1
- package/lib/runtime-sources/php.d.ts +1 -1
- package/lib/runtime-sources/php.d.ts.map +1 -1
- package/lib/runtime-sources/php.js +1 -1
- package/lib/runtime-sources/php.js.map +1 -1
- package/lib/runtime-sources/python.d.ts +2 -2
- package/lib/runtime-sources/python.js +2 -2
- package/lib/runtime-sources/python.js.map +1 -1
- package/lib/runtime-sources/typescript.d.ts +2 -2
- package/lib/runtime-sources/typescript.js +2 -2
- package/lib/runtime-sources/typescript.js.map +1 -1
- package/package.json +2 -2
package/eject-assets/AGENTS.md
CHANGED
|
@@ -91,29 +91,30 @@ discriminated union on `kind`: `scalar`, `array`, `object`, `record`, `ref`,
|
|
|
91
91
|
|
|
92
92
|
## Helpers (import from '@redocly/client-generator')
|
|
93
93
|
|
|
94
|
-
| Helper | Use
|
|
95
|
-
| ------------------------------------------------------- |
|
|
96
|
-
| `flattenAllOf(schema, model)` | The merged property view of allOf compositions — languages without intersection types render this.
|
|
97
|
-
| `deref(schema, model)` | Follow a `ref` chain to the schema it names (cycle-guarded).
|
|
98
|
-
| `jsonSuccessSchema(op)` / `sseResponse(op)` | The primary JSON success schema; the `text/event-stream` response when the operation streams.
|
|
99
|
-
| `isMultipartBody(op)` | Whether the request body is multipart.
|
|
100
|
-
| `
|
|
101
|
-
| `
|
|
102
|
-
| `
|
|
103
|
-
| `
|
|
104
|
-
| `
|
|
105
|
-
| `
|
|
106
|
-
| `
|
|
107
|
-
| `
|
|
108
|
-
| `
|
|
109
|
-
| `
|
|
110
|
-
| `
|
|
111
|
-
| `
|
|
112
|
-
| `
|
|
113
|
-
| `
|
|
114
|
-
| `
|
|
115
|
-
| `
|
|
116
|
-
| `
|
|
94
|
+
| Helper | Use |
|
|
95
|
+
| ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
|
|
96
|
+
| `flattenAllOf(schema, model)` | The merged property view of allOf compositions — languages without intersection types render this. |
|
|
97
|
+
| `deref(schema, model)` | Follow a `ref` chain to the schema it names (cycle-guarded). |
|
|
98
|
+
| `jsonSuccessSchema(op)` / `sseResponse(op)` | The primary JSON success schema; the `text/event-stream` response when the operation streams. |
|
|
99
|
+
| `isMultipartBody(op)` | Whether the request body is multipart. |
|
|
100
|
+
| `isUntypedMultipartBody(op)` | Whether the request body is multipart with a schema that is neither an object nor a `$ref`, so the caller supplies the encoded body. |
|
|
101
|
+
| `isBinaryContentType(contentType)` | Whether a body of this content type is bytes (archives, PDF, images, media) — decode it as a Blob, not JSON or text. |
|
|
102
|
+
| `serverUrlParts(server)` | A server-URL template as literal/variable parts, ready for any concatenation syntax. |
|
|
103
|
+
| `securityRequirements(op, model)` | The operation's security as OR-alternatives of AND-sets, denormalized against the declared schemes. |
|
|
104
|
+
| `paginationItemSchema(pageSchema, itemsPointer, model)` | The raw element schema behind a pagination rule's `items` pointer — a `ref` element keeps its name. |
|
|
105
|
+
| `discriminatorCases(schema, model)` | `{ property, cases }` dispatch table for discriminated unions. |
|
|
106
|
+
| `isNullable(schema)` / `unwrapNullable(schema)` | Detect and strip `null` union members (`Optional[T]`, pointers, `Option<T>`). |
|
|
107
|
+
| `enumValues(schema)` | Values plus SCREAMING_SNAKE member-name suggestions. |
|
|
108
|
+
| `headerCoerceType(schema, model)` | Response-header coerce hint (`integer`/`number`/`boolean`/`string`) through refs, nullables, and allOf wrappers. |
|
|
109
|
+
| `casing` / `identifierFor(name, { style, reserved })` | camel/pascal/snake/screaming; keyword-safe identifiers (`RESERVED_WORDS.python/go/typescript` shipped). |
|
|
110
|
+
| `uniqueIdentifiers(names, { style, reserved, taken })` | The same, made unique among themselves and among names you already took — for a signature that takes one argument per parameter. |
|
|
111
|
+
| `Printer` | Indentation-aware text builder — no manual whitespace bookkeeping. |
|
|
112
|
+
| `docText(description)` | Description as trimmed lines for any comment syntax. |
|
|
113
|
+
| `schemaAtPointer(schema, pointer, model)` | Resolve an RFC 6901 JSON pointer over a schema (through refs and allOf) — e.g. a pagination `items` pointer to its element type. |
|
|
114
|
+
| `paginationRuleFor(op, config)` | The pagination rule that applies to an operation (per-op config > extension > fitting convention), normalized. |
|
|
115
|
+
| `renderReferencePage(model, options)` | The Markdown reference page a generator's `docs` hook returns — your `sample` hook supplies its call snippets. |
|
|
116
|
+
| `NotSupportedError` | Throw it to reject an option the generator can't honor — the CLI prints the message as a user error, not a crash. |
|
|
117
|
+
| `AUTHORING_HELPER_NAMES` | The list of the above (introspection). |
|
|
117
118
|
|
|
118
119
|
Worked example: the built-in `python` generator
|
|
119
120
|
(`packages/client-generator/src/generators/python/index.ts` in the Redocly CLI repo) is
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "cli" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator cli --update`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "cli" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator cli --update`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "cli" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator cli --update`.
|
|
@@ -86,5 +86,5 @@ export default {
|
|
|
86
86
|
docs: cliDocs,
|
|
87
87
|
requires: ["typescript","zod"],
|
|
88
88
|
errorModes: ["throw"],
|
|
89
|
-
requiresGenerator: '^0.
|
|
89
|
+
requiresGenerator: '^0.5.0',
|
|
90
90
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "cli" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator cli --update`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "go" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator go --update`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "go" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator go --update`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "go" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator go --update`.
|
|
@@ -332,5 +332,5 @@ export default {
|
|
|
332
332
|
"argsStyle": "inputs follow the target language's own idiom",
|
|
333
333
|
"importExt": "the generated file has no relative imports"
|
|
334
334
|
},
|
|
335
|
-
requiresGenerator: '^0.
|
|
335
|
+
requiresGenerator: '^0.5.0',
|
|
336
336
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "go" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator go --update`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "go" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator go --update`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "go" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator go --update`.
|
|
@@ -9,7 +9,9 @@ import {
|
|
|
9
9
|
type ApiModel,
|
|
10
10
|
type DateType,
|
|
11
11
|
headerCoerceType,
|
|
12
|
+
isBinaryContentType,
|
|
12
13
|
isMultipartBody,
|
|
14
|
+
isUntypedMultipartBody,
|
|
13
15
|
jsonSuccessSchema,
|
|
14
16
|
type OperationModel,
|
|
15
17
|
type ParamModel,
|
|
@@ -97,6 +99,10 @@ export function writeGoMethod(
|
|
|
97
99
|
const success = jsonSuccessSchema(op);
|
|
98
100
|
const returnType = success === undefined ? undefined : goType(success, dateType);
|
|
99
101
|
const headerPlan = envelope ? envelopeHeaderPlan(op, model!) : [];
|
|
102
|
+
// An untyped multipart or a binary body is `any`: the runtime sorts out what it got.
|
|
103
|
+
const passThrough =
|
|
104
|
+
isUntypedMultipartBody(op) ||
|
|
105
|
+
(op.requestBody !== undefined && isBinaryContentType(op.requestBody.contentType));
|
|
100
106
|
if (envelope) {
|
|
101
107
|
printer.line(
|
|
102
108
|
`// ${ident}Headers carries the declared response headers of ${ident}WithHeaders (nil when absent or unparsable).`
|
|
@@ -113,7 +119,9 @@ export function writeGoMethod(
|
|
|
113
119
|
const args = [
|
|
114
120
|
'ctx context.Context',
|
|
115
121
|
...pathArgs.map(({ go, type }) => `${go} ${type}`),
|
|
116
|
-
...(op.requestBody
|
|
122
|
+
...(op.requestBody
|
|
123
|
+
? [`body ${passThrough ? 'any' : goType(op.requestBody.schema, dateType)}`]
|
|
124
|
+
: []),
|
|
117
125
|
...(hasParams ? [`params *${ident}Params`] : []),
|
|
118
126
|
];
|
|
119
127
|
const sse = sseResponse(op);
|
|
@@ -225,7 +233,31 @@ export function writeGoMethod(
|
|
|
225
233
|
'Headers: authHeaders',
|
|
226
234
|
'Query: query',
|
|
227
235
|
];
|
|
228
|
-
if (
|
|
236
|
+
if (isUntypedMultipartBody(op)) {
|
|
237
|
+
printer.line('contentType, reader, stream, err := multipartBody(body)');
|
|
238
|
+
printer.block(
|
|
239
|
+
'if err != nil {',
|
|
240
|
+
() => {
|
|
241
|
+
printer.line(fail('err'));
|
|
242
|
+
},
|
|
243
|
+
'}'
|
|
244
|
+
);
|
|
245
|
+
specFields.push('Body: reader', 'Stream: stream', 'ContentType: contentType');
|
|
246
|
+
} else if (op.requestBody && passThrough) {
|
|
247
|
+
printer.line('reader, stream, err := binaryBody(body)');
|
|
248
|
+
printer.block(
|
|
249
|
+
'if err != nil {',
|
|
250
|
+
() => {
|
|
251
|
+
printer.line(fail('err'));
|
|
252
|
+
},
|
|
253
|
+
'}'
|
|
254
|
+
);
|
|
255
|
+
specFields.push(
|
|
256
|
+
'Body: reader',
|
|
257
|
+
'Stream: stream',
|
|
258
|
+
`ContentType: ${naming.string(op.requestBody.contentType)}`
|
|
259
|
+
);
|
|
260
|
+
} else if (op.requestBody && isMultipartBody(op)) {
|
|
229
261
|
printer.line('contentType, reader, err := toMultipart(body)');
|
|
230
262
|
printer.block(
|
|
231
263
|
'if err != nil {',
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "go" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator go --update`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "go" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator go --update`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "mock" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator mock --update`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "mock" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator mock --update`.
|
|
@@ -31,5 +31,5 @@ export default {
|
|
|
31
31
|
name: 'mock',
|
|
32
32
|
run: mockGenerator,
|
|
33
33
|
requires: ["typescript"],
|
|
34
|
-
requiresGenerator: '^0.
|
|
34
|
+
requiresGenerator: '^0.5.0',
|
|
35
35
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "mock" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator mock --update`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "mock" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator mock --update`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "mock" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator mock --update`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "php" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator php --update`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "php" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator php --update`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "php" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator php --update`.
|
|
@@ -234,5 +234,5 @@ export default {
|
|
|
234
234
|
"argsStyle": "inputs follow the target language's own idiom",
|
|
235
235
|
"importExt": "the generated file has no relative imports"
|
|
236
236
|
},
|
|
237
|
-
requiresGenerator: '^0.
|
|
237
|
+
requiresGenerator: '^0.5.0',
|
|
238
238
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "php" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator php --update`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "php" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator php --update`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "php" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator php --update`.
|
|
@@ -8,7 +8,9 @@
|
|
|
8
8
|
import {
|
|
9
9
|
type ApiModel,
|
|
10
10
|
type DateType,
|
|
11
|
+
isBinaryContentType,
|
|
11
12
|
isMultipartBody,
|
|
13
|
+
isUntypedMultipartBody,
|
|
12
14
|
jsonSuccessSchema,
|
|
13
15
|
type OperationModel,
|
|
14
16
|
sseResponse,
|
|
@@ -36,6 +38,14 @@ type MethodArgs = {
|
|
|
36
38
|
*/
|
|
37
39
|
const SIGNATURE_ARG_SLOTS = ['body', 'headers', 'idempotencyKey'];
|
|
38
40
|
|
|
41
|
+
/** Whether the body is `mixed` and the runtime sorts out what it got (`multipartBody` / `binaryBody`). */
|
|
42
|
+
function passesThrough(op: OperationModel): boolean {
|
|
43
|
+
return (
|
|
44
|
+
isUntypedMultipartBody(op) ||
|
|
45
|
+
(op.requestBody !== undefined && isBinaryContentType(op.requestBody.contentType))
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
|
|
39
49
|
export function methodArgs(
|
|
40
50
|
op: OperationModel,
|
|
41
51
|
model: ApiModel,
|
|
@@ -68,7 +78,7 @@ export function methodArgs(
|
|
|
68
78
|
...pathArgs.map(({ php, type }) => `${type} ${'$'}${php}`),
|
|
69
79
|
...(includeBody && op.requestBody
|
|
70
80
|
? [
|
|
71
|
-
`${isMultipartBody(op) ? 'array' : phpType(op.requestBody.schema, model, dateType)} ${'$'}body`,
|
|
81
|
+
`${passesThrough(op) ? 'mixed' : isMultipartBody(op) ? 'array' : phpType(op.requestBody.schema, model, dateType)} ${'$'}body`,
|
|
72
82
|
]
|
|
73
83
|
: []),
|
|
74
84
|
...queryArgs.map(({ php, type }) => {
|
|
@@ -181,7 +191,15 @@ export function writePhpMethod(
|
|
|
181
191
|
`'headers' => $requestHeaders`,
|
|
182
192
|
`'query' => $query`,
|
|
183
193
|
];
|
|
184
|
-
if (
|
|
194
|
+
if (isUntypedMultipartBody(op)) {
|
|
195
|
+
printer.line('[$contentType, $encoded] = multipartBody($body);');
|
|
196
|
+
request.push(`'body' => $encoded`, `'contentType' => $contentType`);
|
|
197
|
+
} else if (op.requestBody && passesThrough(op)) {
|
|
198
|
+
request.push(
|
|
199
|
+
`'body' => binaryBody($body)`,
|
|
200
|
+
`'contentType' => ${phpString(op.requestBody.contentType)}`
|
|
201
|
+
);
|
|
202
|
+
} else if (op.requestBody && isMultipartBody(op)) {
|
|
185
203
|
printer.line('[$contentType, $encoded] = toMultipart($body);');
|
|
186
204
|
request.push(`'body' => $encoded`, `'contentType' => $contentType`);
|
|
187
205
|
} else if (op.requestBody) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "php" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator php --update`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "php" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator php --update`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "python" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator python --update`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "python" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator python --update`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "python" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator python --update`.
|
|
@@ -247,5 +247,5 @@ export default {
|
|
|
247
247
|
"argsStyle": "inputs follow the target language's own idiom",
|
|
248
248
|
"importExt": "the generated file has no relative imports"
|
|
249
249
|
},
|
|
250
|
-
requiresGenerator: '^0.
|
|
250
|
+
requiresGenerator: '^0.5.0',
|
|
251
251
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "python" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator python --update`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "python" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator python --update`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "python" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator python --update`.
|
|
@@ -8,7 +8,9 @@
|
|
|
8
8
|
import {
|
|
9
9
|
type ApiModel,
|
|
10
10
|
type DateType,
|
|
11
|
+
isBinaryContentType,
|
|
11
12
|
isMultipartBody,
|
|
13
|
+
isUntypedMultipartBody,
|
|
12
14
|
jsonSuccessSchema,
|
|
13
15
|
type OperationModel,
|
|
14
16
|
sseResponse,
|
|
@@ -46,7 +48,12 @@ export function writeMethod(
|
|
|
46
48
|
const positional = pathArgs.map(
|
|
47
49
|
({ param, python }) => `${python}: ${pythonType(param.schema, dateType)}`
|
|
48
50
|
);
|
|
49
|
-
const
|
|
51
|
+
const passThrough =
|
|
52
|
+
isUntypedMultipartBody(op) ||
|
|
53
|
+
(op.requestBody !== undefined && isBinaryContentType(op.requestBody.contentType));
|
|
54
|
+
const bodyArg = op.requestBody
|
|
55
|
+
? [`body: ${passThrough ? 'Any' : pythonType(op.requestBody.schema, dateType)}`]
|
|
56
|
+
: [];
|
|
50
57
|
const kwargs = [
|
|
51
58
|
...queryArgs.map(({ param, python }) => {
|
|
52
59
|
const annotation = pythonType(param.schema, dateType);
|
|
@@ -105,11 +112,17 @@ export function writeMethod(
|
|
|
105
112
|
printer.line(`return ${isAsync ? 'aiter_sse' : 'iter_sse'}(_open, data_kind="${dataKind}")`);
|
|
106
113
|
return;
|
|
107
114
|
}
|
|
108
|
-
if (isMultipartBody(op)
|
|
115
|
+
if (isMultipartBody(op) && !isUntypedMultipartBody(op)) {
|
|
116
|
+
printer.line('form_data, form_files = to_multipart(body)');
|
|
117
|
+
}
|
|
109
118
|
const bodyKw = op.requestBody
|
|
110
|
-
?
|
|
111
|
-
? ',
|
|
112
|
-
:
|
|
119
|
+
? isUntypedMultipartBody(op)
|
|
120
|
+
? ', **multipart_arguments(body)'
|
|
121
|
+
: isMultipartBody(op)
|
|
122
|
+
? ', data=form_data, files=form_files'
|
|
123
|
+
: isBinaryContentType(op.requestBody.contentType)
|
|
124
|
+
? `, content=body, content_type=${naming.string(op.requestBody.contentType)}`
|
|
125
|
+
: ', json_body=encode(body)'
|
|
113
126
|
: '';
|
|
114
127
|
printer.line(
|
|
115
128
|
`response = ${awaitKw}${sendFn}(self._http, self._config, op, url, method=op["method"], ` +
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "python" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator python --update`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "python" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator python --update`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "swr" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator swr --update`.
|
|
@@ -33,5 +33,5 @@ export default {
|
|
|
33
33
|
run: swrGenerator,
|
|
34
34
|
requires: ["typescript"],
|
|
35
35
|
errorModes: ["throw"],
|
|
36
|
-
requiresGenerator: '^0.
|
|
36
|
+
requiresGenerator: '^0.5.0',
|
|
37
37
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "swr" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator swr --update`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "tanstack-query" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator tanstack-query --update`.
|
|
@@ -44,5 +44,5 @@ export default {
|
|
|
44
44
|
run: tanstackQueryGenerator('react'),
|
|
45
45
|
requires: ["typescript"],
|
|
46
46
|
errorModes: ["throw"],
|
|
47
|
-
requiresGenerator: '^0.
|
|
47
|
+
requiresGenerator: '^0.5.0',
|
|
48
48
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "tanstack-query" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator tanstack-query --update`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "transformers" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator transformers --update`.
|
|
@@ -42,5 +42,5 @@ export default {
|
|
|
42
42
|
run: transformersGenerator,
|
|
43
43
|
requires: ["typescript"],
|
|
44
44
|
dateTypes: ["Date"],
|
|
45
|
-
requiresGenerator: '^0.
|
|
45
|
+
requiresGenerator: '^0.5.0',
|
|
46
46
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "transformers" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator transformers --update`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "typescript" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator typescript --update`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "typescript" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator typescript --update`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "typescript" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator typescript --update`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ejected from @redocly/client-generator@0.
|
|
1
|
+
// Ejected from @redocly/client-generator@0.5.0 — the built-in "typescript" generator.
|
|
2
2
|
// This file is yours: edit freely; the generated client stays machine-owned and is
|
|
3
3
|
// rebuilt by `redocly generate-client`. Newer generator versions merge in with
|
|
4
4
|
// `redocly eject-generator typescript --update`.
|
|
@@ -97,5 +97,5 @@ export default {
|
|
|
97
97
|
run: typescriptGenerator,
|
|
98
98
|
sample: typescriptSample,
|
|
99
99
|
docs: typescriptDocs,
|
|
100
|
-
requiresGenerator: '^0.
|
|
100
|
+
requiresGenerator: '^0.5.0',
|
|
101
101
|
};
|