Skip to content

Commit 36d031d

Browse files
committed
Merge branch 'master' of https://github.com/pink-flutter-unicorns/openapi-generator into pink-flutter-unicorns-master
2 parents acb1641 + 6966f49 commit 36d031d

File tree

3 files changed

+23
-1
lines changed

3 files changed

+23
-1
lines changed

docs/generators/javascript.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
4343
|sourceFolder|source folder for generated code| |src|
4444
|useInheritance|use JavaScript prototype chains & delegation for inheritance| |true|
4545
|usePromises|use Promises as return values from the client API, instead of superagent callbacks| |false|
46+
|useURLSearchParams|use JS build-in UrlSearchParams, instead of deprecated npm lib 'querystring'| |false|
4647

4748
## IMPORT MAPPING
4849

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClientCodegen.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo
5757
public static final String EMIT_JS_DOC = "emitJSDoc";
5858
public static final String USE_ES6 = "useES6";
5959
public static final String NPM_REPOSITORY = "npmRepository";
60+
public static final String USE_URL_SEARCH_PARAMS = "useURLSearchParams";
6061

6162
public static final String LIBRARY_JAVASCRIPT = "javascript";
6263
public static final String LIBRARY_APOLLO = "apollo";
@@ -80,6 +81,7 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo
8081
protected boolean useES6 = true; // default is ES6
8182
@Setter protected String npmRepository = null;
8283
@Getter private String modelPropertyNaming = "camelCase";
84+
@Setter protected boolean useURLSearchParams = false;
8385

8486
public JavascriptClientCodegen() {
8587
super();
@@ -190,6 +192,10 @@ public JavascriptClientCodegen() {
190192
.defaultValue(Boolean.TRUE.toString()));
191193
cliOptions.add(new CliOption(CodegenConstants.MODEL_PROPERTY_NAMING, CodegenConstants.MODEL_PROPERTY_NAMING_DESC).defaultValue("camelCase"));
192194
cliOptions.add(new CliOption(NPM_REPOSITORY, "Use this property to set an url your private npmRepo in the package.json"));
195+
cliOptions.add(new CliOption(USE_URL_SEARCH_PARAMS,
196+
"use JS build-in UrlSearchParams, instead of deprecated npm lib 'querystring'")
197+
.defaultValue(Boolean.FALSE.toString())
198+
);
193199

194200
supportedLibraries.put(LIBRARY_JAVASCRIPT, "JavaScript client library");
195201
supportedLibraries.put(LIBRARY_APOLLO, "Apollo REST DataSource");
@@ -267,6 +273,9 @@ public void processOpts() {
267273
if (additionalProperties.containsKey(NPM_REPOSITORY)) {
268274
setNpmRepository(((String) additionalProperties.get(NPM_REPOSITORY)));
269275
}
276+
if (additionalProperties.containsKey(USE_URL_SEARCH_PARAMS)) {
277+
setUseURLSearchParams(convertPropertyToBooleanAndWriteBack(USE_URL_SEARCH_PARAMS));
278+
}
270279
if (additionalProperties.containsKey(CodegenConstants.LIBRARY)) {
271280
setLibrary((String) additionalProperties.get(CodegenConstants.LIBRARY));
272281
}
@@ -334,6 +343,7 @@ public void preprocessOpenAPI(OpenAPI openAPI) {
334343
additionalProperties.put(EMIT_JS_DOC, emitJSDoc);
335344
additionalProperties.put(USE_ES6, useES6);
336345
additionalProperties.put(NPM_REPOSITORY, npmRepository);
346+
additionalProperties.put(USE_URL_SEARCH_PARAMS, useURLSearchParams);
337347

338348
// make api and model doc path available in mustache template
339349
additionalProperties.put("apiDocPath", apiDocPath);

modules/openapi-generator/src/main/resources/Javascript/libraries/javascript/ApiClient.mustache

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
{{>licenseInfo}}
22

33
import superagent from "superagent";
4+
{{^useURLSearchParams}}
45
import querystring from "querystring";
6+
{{! see https://www.npmjs.com/package/querystring && https://github.com/Gozala/querystring }}
7+
{{/useURLSearchParams}}
58

69
{{#emitJSDoc}}/**
710
* @module {{#invokerPackage}}{{.}}/{{/invokerPackage}}ApiClient
@@ -455,7 +458,15 @@ class ApiClient {
455458
}
456459

457460
if (contentType === 'application/x-www-form-urlencoded') {
458-
request.send(querystring.stringify(this.normalizeParams(formParams)));
461+
{{^useURLSearchParams}}
462+
let queryString = querystring.stringify(this.normalizeParams(formParams));
463+
{{/useURLSearchParams}}
464+
{{#useURLSearchParams}}
465+
let normalizedParams = this.normalizeParams(formParams)
466+
let urlSearchParams = new URLSearchParams(normalizedParams);
467+
let queryString = urlSearchParams.toString();
468+
{{/useURLSearchParams}}
469+
request.send(queryString);
459470
} else if (contentType == 'multipart/form-data') {
460471
var _formParams = this.normalizeParams(formParams);
461472
for (var key in _formParams) {

0 commit comments

Comments
 (0)