Add possibility to change default request params#1466
Add possibility to change default request params#1466k1rd3rf wants to merge 7 commits intoacacode:mainfrom
Conversation
Useful when overriding the http client, and you want to make sure the request params are set. Can be set to `""` in order to not make it optional.
🦋 Changeset detectedLatest commit: 6ffc807 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
|
bugbot run |
|
@codex review |
| optional: true, | ||
| type: "RequestParams", | ||
| defaultValue: "{}", | ||
| defaultValue: config.defaultRequestParams ?? "{}", |
There was a problem hiding this comment.
Bug: Empty String Falsely Treated as Optional Parameter
When config.defaultRequestParams is an empty string "", the argToTmpl function's !defaultValue check treats it as falsy. This incorrectly makes the parameter optional, contradicting the intent that an empty string should result in a required parameter without a default value.
Additional Locations (1)
There was a problem hiding this comment.
Its intentional, see https://github.com/acacode/swagger-typescript-api/pull/1466/files#diff-e500dd0aa7886ed111db6230d9cf8ab5a78cdc81b0ef66a9ee8c184efe6807b1R39
test("defaultRequestParams with empty default", async () => {
There was a problem hiding this comment.
It was an actual bug. Create a fix in e1c2ff4
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
templates/default/procedure-call.ejs
Outdated
| name: specificArgNameResolver.resolve(RESERVED_REQ_PARAMS_ARG_NAMES), | ||
| optional: true, | ||
| type: "RequestParams", | ||
| defaultValue: "{}", | ||
| defaultValue: config.defaultRequestParams ?? "{}", |
There was a problem hiding this comment.
Avoid spreading undefined params when no default provided
When defaultRequestParams is configured as an empty string, this template still marks the request params argument as optional but without a default. The generated methods then spread ...params in the request object, so calling an API method without passing params throws TypeError: Cannot convert undefined or null to object instead of making the argument required (as the configuration description implies). Set optional based on whether a default value exists so the parameter becomes mandatory when no default is provided, and apply the same change in the modular template.
Useful? React with 👍 / 👎.
Useful when overriding the http client, and you want to make sure the request params are set.
Can be set to
""in order to not make it optional.Note
Introduce
defaultRequestParamsconfig/CLI flag to set the default request params in generated APIs, applied in templates and covered by tests.default-request-paramsCLI arg and plumb togenerateApiasdefaultRequestParams.CodeGenConfig(defaultRequestParams = "{}").config.defaultRequestParamsfor request config arg default intemplates/default/procedure-call.ejsandtemplates/modular/procedure-call.ejs.GenerateApiConfiguration.configwithdefaultRequestParams: string.tests/spec/defaultRequestParams/*with snapshots for basic, modular, and empty default cases.Written by Cursor Bugbot for commit 8d62600. This will update automatically on new commits. Configure here.