From 047a71c574d45c27418be2341dda28f4d4d1a9fd Mon Sep 17 00:00:00 2001 From: Daniel Friesen Date: Sun, 21 Feb 2021 08:27:46 -0800 Subject: [PATCH] [typescript-axios] Support array query arguments (#8772) * [typescript-axios] Support array query arguments typescript-axios does not correctly output query arguments when you use `explode: true` for a parameter. fixes #7966 fixes #7973 * Fix mistake in query parameter setting --- .../src/main/resources/typescript-axios/common.mustache | 9 ++++++++- .../typescript-axios/builds/composed-schemas/common.ts | 9 ++++++++- .../petstore/typescript-axios/builds/default/common.ts | 9 ++++++++- .../typescript-axios/builds/es6-target/common.ts | 9 ++++++++- .../builds/with-complex-headers/common.ts | 9 ++++++++- .../typescript-axios/builds/with-interfaces/common.ts | 9 ++++++++- .../common.ts | 9 ++++++++- .../typescript-axios/builds/with-npm-version/common.ts | 9 ++++++++- .../builds/with-single-request-parameters/common.ts | 9 ++++++++- 9 files changed, 72 insertions(+), 9 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/typescript-axios/common.mustache b/modules/openapi-generator/src/main/resources/typescript-axios/common.mustache index 2e0578c2a2e..eefc35a0166 100644 --- a/modules/openapi-generator/src/main/resources/typescript-axios/common.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-axios/common.mustache @@ -80,7 +80,14 @@ export const setSearchParams = function (url: URL, ...objects: any[]) { const searchParams = new URLSearchParams(url.search); for (const object of objects) { for (const key in object) { - searchParams.set(key, object[key]); + if (Array.isArray(object[key])) { + searchParams.delete(key); + for (const item of object[key]) { + searchParams.append(key, item); + } + } else { + searchParams.set(key, object[key]); + } } } url.search = searchParams.toString(); diff --git a/samples/client/petstore/typescript-axios/builds/composed-schemas/common.ts b/samples/client/petstore/typescript-axios/builds/composed-schemas/common.ts index 261bfa1f444..5842a8e4f18 100644 --- a/samples/client/petstore/typescript-axios/builds/composed-schemas/common.ts +++ b/samples/client/petstore/typescript-axios/builds/composed-schemas/common.ts @@ -91,7 +91,14 @@ export const setSearchParams = function (url: URL, ...objects: any[]) { const searchParams = new URLSearchParams(url.search); for (const object of objects) { for (const key in object) { - searchParams.set(key, object[key]); + if (Array.isArray(object[key])) { + searchParams.delete(key); + for (const item of object[key]) { + searchParams.append(key, item); + } + } else { + searchParams.set(key, object[key]); + } } } url.search = searchParams.toString(); diff --git a/samples/client/petstore/typescript-axios/builds/default/common.ts b/samples/client/petstore/typescript-axios/builds/default/common.ts index 23e6a699c68..c48be7a0e57 100644 --- a/samples/client/petstore/typescript-axios/builds/default/common.ts +++ b/samples/client/petstore/typescript-axios/builds/default/common.ts @@ -91,7 +91,14 @@ export const setSearchParams = function (url: URL, ...objects: any[]) { const searchParams = new URLSearchParams(url.search); for (const object of objects) { for (const key in object) { - searchParams.set(key, object[key]); + if (Array.isArray(object[key])) { + searchParams.delete(key); + for (const item of object[key]) { + searchParams.append(key, item); + } + } else { + searchParams.set(key, object[key]); + } } } url.search = searchParams.toString(); diff --git a/samples/client/petstore/typescript-axios/builds/es6-target/common.ts b/samples/client/petstore/typescript-axios/builds/es6-target/common.ts index 23e6a699c68..c48be7a0e57 100644 --- a/samples/client/petstore/typescript-axios/builds/es6-target/common.ts +++ b/samples/client/petstore/typescript-axios/builds/es6-target/common.ts @@ -91,7 +91,14 @@ export const setSearchParams = function (url: URL, ...objects: any[]) { const searchParams = new URLSearchParams(url.search); for (const object of objects) { for (const key in object) { - searchParams.set(key, object[key]); + if (Array.isArray(object[key])) { + searchParams.delete(key); + for (const item of object[key]) { + searchParams.append(key, item); + } + } else { + searchParams.set(key, object[key]); + } } } url.search = searchParams.toString(); diff --git a/samples/client/petstore/typescript-axios/builds/with-complex-headers/common.ts b/samples/client/petstore/typescript-axios/builds/with-complex-headers/common.ts index 23e6a699c68..c48be7a0e57 100644 --- a/samples/client/petstore/typescript-axios/builds/with-complex-headers/common.ts +++ b/samples/client/petstore/typescript-axios/builds/with-complex-headers/common.ts @@ -91,7 +91,14 @@ export const setSearchParams = function (url: URL, ...objects: any[]) { const searchParams = new URLSearchParams(url.search); for (const object of objects) { for (const key in object) { - searchParams.set(key, object[key]); + if (Array.isArray(object[key])) { + searchParams.delete(key); + for (const item of object[key]) { + searchParams.append(key, item); + } + } else { + searchParams.set(key, object[key]); + } } } url.search = searchParams.toString(); diff --git a/samples/client/petstore/typescript-axios/builds/with-interfaces/common.ts b/samples/client/petstore/typescript-axios/builds/with-interfaces/common.ts index 23e6a699c68..c48be7a0e57 100644 --- a/samples/client/petstore/typescript-axios/builds/with-interfaces/common.ts +++ b/samples/client/petstore/typescript-axios/builds/with-interfaces/common.ts @@ -91,7 +91,14 @@ export const setSearchParams = function (url: URL, ...objects: any[]) { const searchParams = new URLSearchParams(url.search); for (const object of objects) { for (const key in object) { - searchParams.set(key, object[key]); + if (Array.isArray(object[key])) { + searchParams.delete(key); + for (const item of object[key]) { + searchParams.append(key, item); + } + } else { + searchParams.set(key, object[key]); + } } } url.search = searchParams.toString(); diff --git a/samples/client/petstore/typescript-axios/builds/with-npm-version-and-separate-models-and-api/common.ts b/samples/client/petstore/typescript-axios/builds/with-npm-version-and-separate-models-and-api/common.ts index 23e6a699c68..c48be7a0e57 100644 --- a/samples/client/petstore/typescript-axios/builds/with-npm-version-and-separate-models-and-api/common.ts +++ b/samples/client/petstore/typescript-axios/builds/with-npm-version-and-separate-models-and-api/common.ts @@ -91,7 +91,14 @@ export const setSearchParams = function (url: URL, ...objects: any[]) { const searchParams = new URLSearchParams(url.search); for (const object of objects) { for (const key in object) { - searchParams.set(key, object[key]); + if (Array.isArray(object[key])) { + searchParams.delete(key); + for (const item of object[key]) { + searchParams.append(key, item); + } + } else { + searchParams.set(key, object[key]); + } } } url.search = searchParams.toString(); diff --git a/samples/client/petstore/typescript-axios/builds/with-npm-version/common.ts b/samples/client/petstore/typescript-axios/builds/with-npm-version/common.ts index 23e6a699c68..c48be7a0e57 100644 --- a/samples/client/petstore/typescript-axios/builds/with-npm-version/common.ts +++ b/samples/client/petstore/typescript-axios/builds/with-npm-version/common.ts @@ -91,7 +91,14 @@ export const setSearchParams = function (url: URL, ...objects: any[]) { const searchParams = new URLSearchParams(url.search); for (const object of objects) { for (const key in object) { - searchParams.set(key, object[key]); + if (Array.isArray(object[key])) { + searchParams.delete(key); + for (const item of object[key]) { + searchParams.append(key, item); + } + } else { + searchParams.set(key, object[key]); + } } } url.search = searchParams.toString(); diff --git a/samples/client/petstore/typescript-axios/builds/with-single-request-parameters/common.ts b/samples/client/petstore/typescript-axios/builds/with-single-request-parameters/common.ts index 23e6a699c68..c48be7a0e57 100644 --- a/samples/client/petstore/typescript-axios/builds/with-single-request-parameters/common.ts +++ b/samples/client/petstore/typescript-axios/builds/with-single-request-parameters/common.ts @@ -91,7 +91,14 @@ export const setSearchParams = function (url: URL, ...objects: any[]) { const searchParams = new URLSearchParams(url.search); for (const object of objects) { for (const key in object) { - searchParams.set(key, object[key]); + if (Array.isArray(object[key])) { + searchParams.delete(key); + for (const item of object[key]) { + searchParams.append(key, item); + } + } else { + searchParams.set(key, object[key]); + } } } url.search = searchParams.toString();