From fb0e0a5262a9b2ea56910edfe0bfcdd90e49d257 Mon Sep 17 00:00:00 2001 From: Allart Kooiman Date: Tue, 7 Jun 2022 18:13:31 +0200 Subject: [PATCH 1/3] Pluralize querystring arrays --- src/openApi/v3/parser/getOperationParameterName.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/openApi/v3/parser/getOperationParameterName.ts b/src/openApi/v3/parser/getOperationParameterName.ts index de9b154b7..ec389eb01 100644 --- a/src/openApi/v3/parser/getOperationParameterName.ts +++ b/src/openApi/v3/parser/getOperationParameterName.ts @@ -10,6 +10,7 @@ const reservedWords = export const getOperationParameterName = (value: string): string => { const clean = value .replace(/^[^a-zA-Z]+/g, '') + .replace(/[^s]\[\]$/, 's') .replace(/[^\w\-]+/g, '-') .trim(); return camelCase(clean).replace(reservedWords, '_$1'); From ac69edea2fd37e06d3f8a3f0a6fa03f5bc049cf2 Mon Sep 17 00:00:00 2001 From: Allart Kooiman Date: Thu, 9 Jun 2022 10:11:51 +0200 Subject: [PATCH 2/3] Pluralize array names --- package-lock.json | 33 +++++++++++++++++-- package.json | 4 ++- .../v3/parser/getOperationParameterName.ts | 3 +- 3 files changed, 35 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 930972111..8983d071a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,19 +1,20 @@ { "name": "openapi-typescript-codegen", - "version": "0.22.0", + "version": "0.23.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "openapi-typescript-codegen", - "version": "0.22.0", + "version": "0.23.0", "license": "MIT", "dependencies": { "camelcase": "^6.3.0", "commander": "^9.3.0", "fs-extra": "^10.1.0", "handlebars": "^4.7.7", - "json-schema-ref-parser": "^9.0.9" + "json-schema-ref-parser": "^9.0.9", + "pluralize": "^8.0.0" }, "bin": { "openapi": "bin/index.js" @@ -44,6 +45,7 @@ "@types/jest": "27.5.1", "@types/node": "17.0.38", "@types/node-fetch": "2.6.1", + "@types/pluralize": "^0.0.29", "@types/qs": "6.9.7", "@typescript-eslint/eslint-plugin": "5.27.0", "@typescript-eslint/parser": "5.27.0", @@ -4254,6 +4256,12 @@ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", "dev": true }, + "node_modules/@types/pluralize": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/pluralize/-/pluralize-0.0.29.tgz", + "integrity": "sha512-BYOID+l2Aco2nBik+iYS4SZX0Lf20KPILP5RGmM1IgzdwNdTs0eebiFriOPcej1sX9mLnSoiNte5zcFxssgpGA==", + "dev": true + }, "node_modules/@types/prettier": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.3.tgz", @@ -13718,6 +13726,14 @@ "node": ">=8" } }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "engines": { + "node": ">=4" + } + }, "node_modules/portfinder": { "version": "1.0.28", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", @@ -20332,6 +20348,12 @@ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", "dev": true }, + "@types/pluralize": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/pluralize/-/pluralize-0.0.29.tgz", + "integrity": "sha512-BYOID+l2Aco2nBik+iYS4SZX0Lf20KPILP5RGmM1IgzdwNdTs0eebiFriOPcej1sX9mLnSoiNte5zcFxssgpGA==", + "dev": true + }, "@types/prettier": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.3.tgz", @@ -27335,6 +27357,11 @@ "find-up": "^4.0.0" } }, + "pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==" + }, "portfinder": { "version": "1.0.28", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", diff --git a/package.json b/package.json index 390ea3dc3..a0aa37f1c 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,8 @@ "commander": "^9.3.0", "fs-extra": "^10.1.0", "handlebars": "^4.7.7", - "json-schema-ref-parser": "^9.0.9" + "json-schema-ref-parser": "^9.0.9", + "pluralize": "^8.0.0" }, "devDependencies": { "@angular-devkit/build-angular": "13.3.7", @@ -91,6 +92,7 @@ "@types/jest": "27.5.1", "@types/node": "17.0.38", "@types/node-fetch": "2.6.1", + "@types/pluralize": "^0.0.29", "@types/qs": "6.9.7", "@typescript-eslint/eslint-plugin": "5.27.0", "@typescript-eslint/parser": "5.27.0", diff --git a/src/openApi/v3/parser/getOperationParameterName.ts b/src/openApi/v3/parser/getOperationParameterName.ts index ec389eb01..f3d3d2aa5 100644 --- a/src/openApi/v3/parser/getOperationParameterName.ts +++ b/src/openApi/v3/parser/getOperationParameterName.ts @@ -1,4 +1,5 @@ import camelCase from 'camelcase'; +import pluralize from 'pluralize'; const reservedWords = /^(arguments|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|eval|export|extends|false|finally|for|function|if|implements|import|in|instanceof|interface|let|new|null|package|private|protected|public|return|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)$/g; @@ -10,7 +11,7 @@ const reservedWords = export const getOperationParameterName = (value: string): string => { const clean = value .replace(/^[^a-zA-Z]+/g, '') - .replace(/[^s]\[\]$/, 's') + .replace(/^(.*)\[\]$/, (match, p1) => pluralize(p1)) .replace(/[^\w\-]+/g, '-') .trim(); return camelCase(clean).replace(reservedWords, '_$1'); From 9d1b95ee2656d4157f9c623444f3e38556c0b8f2 Mon Sep 17 00:00:00 2001 From: Allart Kooiman Date: Thu, 9 Jun 2022 10:46:27 +0200 Subject: [PATCH 3/3] 0.23.1 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 01240c39f..4325094a8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "openapi-typescript-codegen", - "version": "0.23.0", + "version": "0.23.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "openapi-typescript-codegen", - "version": "0.23.0", + "version": "0.23.1", "license": "MIT", "dependencies": { "camelcase": "^6.3.0", diff --git a/package.json b/package.json index 0956cfb17..bffc756fe 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "openapi-typescript-codegen", - "version": "0.23.0", + "version": "0.23.1", "description": "Library that generates Typescript clients based on the OpenAPI specification.", "author": "Ferdi Koomen", "homepage": "https://github.com/ferdikoomen/openapi-typescript-codegen",