From f22a696a39267af456e0bf736b0fd6b108fb3d0b Mon Sep 17 00:00:00 2001 From: Ferdi Koomen Date: Mon, 22 Dec 2025 20:05:37 +0100 Subject: [PATCH] fixed tests --- .eslintignore | 5 -- .eslintrc.json | 25 ---------- eslint.config.mjs | 43 +++++++++++++++++ package-lock.json | 46 +++++++++++++++++-- package.json | 3 ++ src/openApi/v2/parser/getModelProperties.ts | 2 +- src/openApi/v2/parser/getModels.ts | 2 +- src/openApi/v2/parser/getOperationName.ts | 2 +- .../v2/parser/getOperationParameterDefault.ts | 2 +- .../v2/parser/getOperationParameterName.ts | 2 +- src/openApi/v2/parser/getOperationResponse.ts | 2 +- .../v2/parser/getOperationResponses.ts | 2 +- src/openApi/v2/parser/getRef.ts | 2 +- src/openApi/v2/parser/getServiceName.ts | 2 +- src/openApi/v2/parser/getServices.ts | 7 +-- src/openApi/v3/parser/getModelDefault.ts | 2 +- src/openApi/v3/parser/getModelProperties.ts | 2 +- src/openApi/v3/parser/getModels.ts | 4 +- src/openApi/v3/parser/getOperationName.ts | 2 +- .../v3/parser/getOperationParameterName.ts | 2 +- src/openApi/v3/parser/getOperationResponse.ts | 2 +- .../v3/parser/getOperationResponses.ts | 2 +- src/openApi/v3/parser/getRef.ts | 2 +- src/openApi/v3/parser/getServer.ts | 2 +- src/openApi/v3/parser/getServiceName.ts | 2 +- src/openApi/v3/parser/getServices.ts | 7 +-- src/utils/discriminator.ts | 2 +- src/utils/getPattern.spec.ts | 1 - src/utils/getPattern.ts | 1 - src/utils/readSpecFromDisk.ts | 2 +- test/e2e/v3.axios.spec.ts | 6 +-- test/e2e/v3.babel.spec.ts | 4 +- test/e2e/v3.fetch.spec.ts | 6 +-- test/e2e/v3.node.spec.ts | 6 +-- test/index.js | 2 +- 35 files changed, 131 insertions(+), 75 deletions(-) delete mode 100644 .eslintignore delete mode 100644 .eslintrc.json create mode 100644 eslint.config.mjs diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 9c1a3bc4..00000000 --- a/.eslintignore +++ /dev/null @@ -1,5 +0,0 @@ -dist -samples -test/generated -test/e2e/generated -node_modules diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 6b616517..00000000 --- a/.eslintrc.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "parser": "@typescript-eslint/parser", - "extends": ["plugin:@typescript-eslint/recommended", "plugin:prettier/recommended", "prettier"], - "env": { - "es6": true, - "node": true, - "jest": true - }, - "plugins": ["simple-import-sort"], - "rules": { - "@typescript-eslint/no-explicit-any": 0, - "@typescript-eslint/no-inferrable-types": 0, - "@typescript-eslint/no-non-null-assertion": 0, - "@typescript-eslint/no-var-requires": 0, - "@typescript-eslint/ban-ts-ignore": 0, - "@typescript-eslint/ban-ts-comment": 0, - "@typescript-eslint/explicit-function-return-type": 0, - "@typescript-eslint/explicit-module-boundary-types": 0, - "sort-imports": "off", - "import/order": "off", - "simple-import-sort/imports": "error", - "simple-import-sort/exports": "error", - "prettier/prettier": ["error"] - } -} diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 00000000..1344b0a9 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,43 @@ +import javascript from '@eslint/js'; +import prettierConfig from 'eslint-plugin-prettier/recommended'; +import simpleImportSort from 'eslint-plugin-simple-import-sort'; +import globals from 'globals'; +import typescript from 'typescript-eslint'; + +export default [ + { + ignores: ['dist', 'samples', 'test/generated', 'test/e2e/generated', 'node_modules'], + }, + javascript.configs.recommended, + ...typescript.configs.recommended, + prettierConfig, + { + languageOptions: { + globals: { + ...globals.node, + ...globals.browser, + ...globals.jest, + ...globals.es2019, + }, + }, + plugins: { + 'simple-import-sort': simpleImportSort, + }, + rules: { + '@typescript-eslint/no-explicit-any': 0, + '@typescript-eslint/no-inferrable-types': 0, + '@typescript-eslint/no-non-null-assertion': 0, + '@typescript-eslint/no-var-requires': 0, + '@typescript-eslint/no-require-imports': 0, + '@typescript-eslint/ban-ts-ignore': 0, + '@typescript-eslint/ban-ts-comment': 0, + '@typescript-eslint/explicit-function-return-type': 0, + '@typescript-eslint/explicit-module-boundary-types': 0, + 'sort-imports': 'off', + 'import/order': 'off', + 'simple-import-sort/imports': 'error', + 'simple-import-sort/exports': 'error', + 'prettier/prettier': ['error'], + }, + }, +]; diff --git a/package-lock.json b/package-lock.json index c1e9e607..19e21173 100644 --- a/package-lock.json +++ b/package-lock.json @@ -34,6 +34,7 @@ "@babel/core": "7.28.5", "@babel/preset-env": "7.28.5", "@babel/preset-typescript": "7.28.5", + "@eslint/js": "9.39.2", "@rollup/plugin-commonjs": "29.0.0", "@rollup/plugin-node-resolve": "16.0.3", "@rollup/plugin-terser": "0.4.4", @@ -58,6 +59,7 @@ "express": "5.2.1", "form-data": "4.0.5", "glob": "13.0.0", + "globals": "16.5.0", "jest": "30.2.0", "jest-cli": "30.2.0", "node-fetch": "2.7.0", @@ -70,6 +72,7 @@ "ts-node": "10.9.2", "tslib": "2.8.1", "typescript": "5.9.3", + "typescript-eslint": "8.50.1", "zone.js": "0.16.0" } }, @@ -3837,6 +3840,19 @@ "concat-map": "0.0.1" } }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@eslint/eslintrc/node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -12091,9 +12107,9 @@ } }, "node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", + "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", "dev": true, "license": "MIT", "engines": { @@ -18572,6 +18588,30 @@ "node": ">=14.17" } }, + "node_modules/typescript-eslint": { + "version": "8.50.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.50.1.tgz", + "integrity": "sha512-ytTHO+SoYSbhAH9CrYnMhiLx8To6PSSvqnvXyPUgPETCvB6eBKmTI9w6XMPS3HsBRGkwTVBX+urA8dYQx6bHfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.50.1", + "@typescript-eslint/parser": "8.50.1", + "@typescript-eslint/typescript-estree": "8.50.1", + "@typescript-eslint/utils": "8.50.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, "node_modules/uglify-js": { "version": "3.19.3", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", diff --git a/package.json b/package.json index 8528f115..e719492b 100644 --- a/package.json +++ b/package.json @@ -82,6 +82,7 @@ "@babel/core": "7.28.5", "@babel/preset-env": "7.28.5", "@babel/preset-typescript": "7.28.5", + "@eslint/js": "9.39.2", "@rollup/plugin-commonjs": "29.0.0", "@rollup/plugin-node-resolve": "16.0.3", "@rollup/plugin-terser": "0.4.4", @@ -105,6 +106,7 @@ "eslint-plugin-simple-import-sort": "12.1.1", "express": "5.2.1", "form-data": "4.0.5", + "globals": "16.5.0", "glob": "13.0.0", "jest": "30.2.0", "jest-cli": "30.2.0", @@ -118,6 +120,7 @@ "ts-node": "10.9.2", "tslib": "2.8.1", "typescript": "5.9.3", + "typescript-eslint": "8.50.1", "zone.js": "0.16.0" } } diff --git a/src/openApi/v2/parser/getModelProperties.ts b/src/openApi/v2/parser/getModelProperties.ts index 7560be76..02c9c037 100644 --- a/src/openApi/v2/parser/getModelProperties.ts +++ b/src/openApi/v2/parser/getModelProperties.ts @@ -12,7 +12,7 @@ export type GetModelFn = typeof getModel; export const getModelProperties = (openApi: OpenApi, definition: OpenApiSchema, getModel: GetModelFn): Model[] => { const models: Model[] = []; for (const propertyName in definition.properties) { - if (definition.properties.hasOwnProperty(propertyName)) { + if (Object.prototype.hasOwnProperty.call(definition.properties, propertyName)) { const property = definition.properties[propertyName]; const propertyRequired = !!definition.required?.includes(propertyName); if (property.$ref) { diff --git a/src/openApi/v2/parser/getModels.ts b/src/openApi/v2/parser/getModels.ts index 4ea4728c..fed42313 100644 --- a/src/openApi/v2/parser/getModels.ts +++ b/src/openApi/v2/parser/getModels.ts @@ -7,7 +7,7 @@ import { getType } from './getType'; export const getModels = (openApi: OpenApi): Model[] => { const models: Model[] = []; for (const definitionName in openApi.definitions) { - if (openApi.definitions.hasOwnProperty(definitionName)) { + if (Object.prototype.hasOwnProperty.call(openApi.definitions, definitionName)) { const definition = openApi.definitions[definitionName]; const definitionType = getType(definitionName); const model = getModel(openApi, definition, true, definitionType.base.replace(reservedWords, '_$1')); diff --git a/src/openApi/v2/parser/getOperationName.ts b/src/openApi/v2/parser/getOperationName.ts index 124bf66b..8eaba56e 100644 --- a/src/openApi/v2/parser/getOperationName.ts +++ b/src/openApi/v2/parser/getOperationName.ts @@ -10,7 +10,7 @@ export const getOperationName = (url: string, method: string, operationId?: stri return camelCase( operationId .replace(/^[^a-zA-Z]+/g, '') - .replace(/[^\w\-]+/g, '-') + .replace(/[^\w-]+/g, '-') .trim() ); } diff --git a/src/openApi/v2/parser/getOperationParameterDefault.ts b/src/openApi/v2/parser/getOperationParameterDefault.ts index 291b3adb..bd404b20 100644 --- a/src/openApi/v2/parser/getOperationParameterDefault.ts +++ b/src/openApi/v2/parser/getOperationParameterDefault.ts @@ -33,7 +33,7 @@ export const getOperationParameterDefault = ( case 'object': try { return JSON.stringify(parameter.default, null, 4); - } catch (e) { + } catch { // Ignore } } diff --git a/src/openApi/v2/parser/getOperationParameterName.ts b/src/openApi/v2/parser/getOperationParameterName.ts index 3a7fb408..dddf0b8a 100644 --- a/src/openApi/v2/parser/getOperationParameterName.ts +++ b/src/openApi/v2/parser/getOperationParameterName.ts @@ -9,7 +9,7 @@ import { reservedWords } from '../../../utils/reservedWords'; export const getOperationParameterName = (value: string): string => { const clean = value .replace(/^[^a-zA-Z]+/g, '') - .replace(/[^\w\-]+/g, '-') + .replace(/[^\w-]+/g, '-') .trim(); return camelCase(clean).replace(reservedWords, '_$1'); }; diff --git a/src/openApi/v2/parser/getOperationResponse.ts b/src/openApi/v2/parser/getOperationResponse.ts index 8f6c3ca5..650c2553 100644 --- a/src/openApi/v2/parser/getOperationResponse.ts +++ b/src/openApi/v2/parser/getOperationResponse.ts @@ -85,7 +85,7 @@ export const getOperationResponse = ( // fetch and XHR client just support string types. if (response.headers) { for (const name in response.headers) { - if (response.headers.hasOwnProperty(name)) { + if (Object.prototype.hasOwnProperty.call(response.headers, name)) { operationResponse.in = 'header'; operationResponse.name = name; operationResponse.type = 'string'; diff --git a/src/openApi/v2/parser/getOperationResponses.ts b/src/openApi/v2/parser/getOperationResponses.ts index ed628e85..6909102c 100644 --- a/src/openApi/v2/parser/getOperationResponses.ts +++ b/src/openApi/v2/parser/getOperationResponses.ts @@ -12,7 +12,7 @@ export const getOperationResponses = (openApi: OpenApi, responses: OpenApiRespon // Iterate over each response code and get the // status code and response message (if any). for (const code in responses) { - if (responses.hasOwnProperty(code)) { + if (Object.prototype.hasOwnProperty.call(responses, code)) { const responseOrReference = responses[code]; const response = getRef(openApi, responseOrReference); const responseCode = getOperationResponseCode(code); diff --git a/src/openApi/v2/parser/getRef.ts b/src/openApi/v2/parser/getRef.ts index f92dfcf6..3b8e6c65 100644 --- a/src/openApi/v2/parser/getRef.ts +++ b/src/openApi/v2/parser/getRef.ts @@ -20,7 +20,7 @@ export const getRef = (openApi: OpenApi, item: T & OpenApiReference): T => { const decodedPath = decodeURIComponent( path.replace(ESCAPED_REF_SLASH, '/').replace(ESCAPED_REF_TILDE, '~') ); - if (result.hasOwnProperty(decodedPath)) { + if (Object.prototype.hasOwnProperty.call(result, decodedPath)) { result = result[decodedPath]; } else { throw new Error(`Could not find reference: "${item.$ref}"`); diff --git a/src/openApi/v2/parser/getServiceName.ts b/src/openApi/v2/parser/getServiceName.ts index b5b1718f..83fcfea0 100644 --- a/src/openApi/v2/parser/getServiceName.ts +++ b/src/openApi/v2/parser/getServiceName.ts @@ -7,7 +7,7 @@ import camelCase from 'camelcase'; export const getServiceName = (value: string): string => { const clean = value .replace(/^[^a-zA-Z]+/g, '') - .replace(/[^\w\-]+/g, '-') + .replace(/[^\w-]+/g, '-') .trim(); return camelCase(clean, { pascalCase: true }); }; diff --git a/src/openApi/v2/parser/getServices.ts b/src/openApi/v2/parser/getServices.ts index d8fe411b..e9c10797 100644 --- a/src/openApi/v2/parser/getServices.ts +++ b/src/openApi/v2/parser/getServices.ts @@ -10,14 +10,14 @@ import { getOperationParameters } from './getOperationParameters'; export const getServices = (openApi: OpenApi): Service[] => { const services = new Map(); for (const url in openApi.paths) { - if (openApi.paths.hasOwnProperty(url)) { + if (Object.prototype.hasOwnProperty.call(openApi.paths, url)) { // Grab path and parse any global path parameters const path = openApi.paths[url]; const pathParams = getOperationParameters(openApi, path.parameters || []); // Parse all the methods for this path for (const method in path) { - if (path.hasOwnProperty(method)) { + if (Object.prototype.hasOwnProperty.call(path, method)) { switch (method) { case 'get': case 'put': @@ -25,7 +25,7 @@ export const getServices = (openApi: OpenApi): Service[] => { case 'delete': case 'options': case 'head': - case 'patch': + case 'patch': { // Each method contains an OpenAPI operation, we parse the operation const op = path[method]!; const tags = op.tags?.length ? op.tags.filter(unique) : ['Default']; @@ -46,6 +46,7 @@ export const getServices = (openApi: OpenApi): Service[] => { services.set(operation.service, service); }); break; + } } } } diff --git a/src/openApi/v3/parser/getModelDefault.ts b/src/openApi/v3/parser/getModelDefault.ts index 1736bf1c..0c1ba83c 100644 --- a/src/openApi/v3/parser/getModelDefault.ts +++ b/src/openApi/v3/parser/getModelDefault.ts @@ -30,7 +30,7 @@ export const getModelDefault = (definition: OpenApiSchema, model?: Model): strin case 'object': try { return JSON.stringify(definition.default, null, 4); - } catch (e) { + } catch { // Ignore } } diff --git a/src/openApi/v3/parser/getModelProperties.ts b/src/openApi/v3/parser/getModelProperties.ts index 6e25ca83..69c5789e 100644 --- a/src/openApi/v3/parser/getModelProperties.ts +++ b/src/openApi/v3/parser/getModelProperties.ts @@ -19,7 +19,7 @@ export const getModelProperties = ( const models: Model[] = []; const discriminator = findOneOfParentDiscriminator(openApi, parent); for (const propertyName in definition.properties) { - if (definition.properties.hasOwnProperty(propertyName)) { + if (Object.prototype.hasOwnProperty.call(definition.properties, propertyName)) { const property = definition.properties[propertyName]; const propertyRequired = !!definition.required?.includes(propertyName); const propertyValues: Omit< diff --git a/src/openApi/v3/parser/getModels.ts b/src/openApi/v3/parser/getModels.ts index 6df7cf1e..8c6f2732 100644 --- a/src/openApi/v3/parser/getModels.ts +++ b/src/openApi/v3/parser/getModels.ts @@ -8,7 +8,7 @@ export const getModels = (openApi: OpenApi): Model[] => { const models: Model[] = []; if (openApi.components) { for (const definitionName in openApi.components.schemas) { - if (openApi.components.schemas.hasOwnProperty(definitionName)) { + if (Object.prototype.hasOwnProperty.call(openApi.components.schemas, definitionName)) { const definition = openApi.components.schemas[definitionName]; const definitionType = getType(definitionName); const model = getModel(openApi, definition, true, definitionType.base.replace(reservedWords, '_$1')); @@ -16,7 +16,7 @@ export const getModels = (openApi: OpenApi): Model[] => { } } for (const definitionName in openApi.components.parameters) { - if (openApi.components.parameters.hasOwnProperty(definitionName)) { + if (Object.prototype.hasOwnProperty.call(openApi.components.parameters, definitionName)) { const definition = openApi.components.parameters[definitionName]; const definitionType = getType(definitionName); const schema = definition.schema; diff --git a/src/openApi/v3/parser/getOperationName.ts b/src/openApi/v3/parser/getOperationName.ts index 124bf66b..8eaba56e 100644 --- a/src/openApi/v3/parser/getOperationName.ts +++ b/src/openApi/v3/parser/getOperationName.ts @@ -10,7 +10,7 @@ export const getOperationName = (url: string, method: string, operationId?: stri return camelCase( operationId .replace(/^[^a-zA-Z]+/g, '') - .replace(/[^\w\-]+/g, '-') + .replace(/[^\w-]+/g, '-') .trim() ); } diff --git a/src/openApi/v3/parser/getOperationParameterName.ts b/src/openApi/v3/parser/getOperationParameterName.ts index a3caa291..d8d21755 100644 --- a/src/openApi/v3/parser/getOperationParameterName.ts +++ b/src/openApi/v3/parser/getOperationParameterName.ts @@ -10,7 +10,7 @@ export const getOperationParameterName = (value: string): string => { const clean = value .replace(/^[^a-zA-Z]+/g, '') .replace('[]', 'Array') - .replace(/[^\w\-]+/g, '-') + .replace(/[^\w-]+/g, '-') .trim(); return camelCase(clean).replace(reservedWords, '_$1'); }; diff --git a/src/openApi/v3/parser/getOperationResponse.ts b/src/openApi/v3/parser/getOperationResponse.ts index dff19ec1..29b5e1c9 100644 --- a/src/openApi/v3/parser/getOperationResponse.ts +++ b/src/openApi/v3/parser/getOperationResponse.ts @@ -84,7 +84,7 @@ export const getOperationResponse = ( // fetch and XHR client just support string types. if (response.headers) { for (const name in response.headers) { - if (response.headers.hasOwnProperty(name)) { + if (Object.prototype.hasOwnProperty.call(response.headers, name)) { operationResponse.in = 'header'; operationResponse.name = name; operationResponse.type = 'string'; diff --git a/src/openApi/v3/parser/getOperationResponses.ts b/src/openApi/v3/parser/getOperationResponses.ts index ed628e85..6909102c 100644 --- a/src/openApi/v3/parser/getOperationResponses.ts +++ b/src/openApi/v3/parser/getOperationResponses.ts @@ -12,7 +12,7 @@ export const getOperationResponses = (openApi: OpenApi, responses: OpenApiRespon // Iterate over each response code and get the // status code and response message (if any). for (const code in responses) { - if (responses.hasOwnProperty(code)) { + if (Object.prototype.hasOwnProperty.call(responses, code)) { const responseOrReference = responses[code]; const response = getRef(openApi, responseOrReference); const responseCode = getOperationResponseCode(code); diff --git a/src/openApi/v3/parser/getRef.ts b/src/openApi/v3/parser/getRef.ts index 2c42690e..186999ae 100644 --- a/src/openApi/v3/parser/getRef.ts +++ b/src/openApi/v3/parser/getRef.ts @@ -20,7 +20,7 @@ export const getRef = (openApi: OpenApi, item: T & OpenApiReference): T => { const decodedPath = decodeURIComponent( path.replace(ESCAPED_REF_SLASH, '/').replace(ESCAPED_REF_TILDE, '~') ); - if (result.hasOwnProperty(decodedPath)) { + if (Object.prototype.hasOwnProperty.call(result, decodedPath)) { result = result[decodedPath]; } else { throw new Error(`Could not find reference: "${item.$ref}"`); diff --git a/src/openApi/v3/parser/getServer.ts b/src/openApi/v3/parser/getServer.ts index dd60b1cf..b9ffb5e1 100644 --- a/src/openApi/v3/parser/getServer.ts +++ b/src/openApi/v3/parser/getServer.ts @@ -5,7 +5,7 @@ export const getServer = (openApi: OpenApi): string => { const variables = server?.variables || {}; let url = server?.url || ''; for (const variable in variables) { - if (variables.hasOwnProperty(variable)) { + if (Object.prototype.hasOwnProperty.call(variables, variable)) { url = url.replace(`{${variable}}`, variables[variable].default); } } diff --git a/src/openApi/v3/parser/getServiceName.ts b/src/openApi/v3/parser/getServiceName.ts index b5b1718f..83fcfea0 100644 --- a/src/openApi/v3/parser/getServiceName.ts +++ b/src/openApi/v3/parser/getServiceName.ts @@ -7,7 +7,7 @@ import camelCase from 'camelcase'; export const getServiceName = (value: string): string => { const clean = value .replace(/^[^a-zA-Z]+/g, '') - .replace(/[^\w\-]+/g, '-') + .replace(/[^\w-]+/g, '-') .trim(); return camelCase(clean, { pascalCase: true }); }; diff --git a/src/openApi/v3/parser/getServices.ts b/src/openApi/v3/parser/getServices.ts index d8fe411b..e9c10797 100644 --- a/src/openApi/v3/parser/getServices.ts +++ b/src/openApi/v3/parser/getServices.ts @@ -10,14 +10,14 @@ import { getOperationParameters } from './getOperationParameters'; export const getServices = (openApi: OpenApi): Service[] => { const services = new Map(); for (const url in openApi.paths) { - if (openApi.paths.hasOwnProperty(url)) { + if (Object.prototype.hasOwnProperty.call(openApi.paths, url)) { // Grab path and parse any global path parameters const path = openApi.paths[url]; const pathParams = getOperationParameters(openApi, path.parameters || []); // Parse all the methods for this path for (const method in path) { - if (path.hasOwnProperty(method)) { + if (Object.prototype.hasOwnProperty.call(path, method)) { switch (method) { case 'get': case 'put': @@ -25,7 +25,7 @@ export const getServices = (openApi: OpenApi): Service[] => { case 'delete': case 'options': case 'head': - case 'patch': + case 'patch': { // Each method contains an OpenAPI operation, we parse the operation const op = path[method]!; const tags = op.tags?.length ? op.tags.filter(unique) : ['Default']; @@ -46,6 +46,7 @@ export const getServices = (openApi: OpenApi): Service[] => { services.set(operation.service, service); }); break; + } } } } diff --git a/src/utils/discriminator.ts b/src/utils/discriminator.ts index 15e1ef51..609a2b54 100644 --- a/src/utils/discriminator.ts +++ b/src/utils/discriminator.ts @@ -15,7 +15,7 @@ const inverseDictionary = (map: Dictionary): Dictionary => { export const findOneOfParentDiscriminator = (openApi: OpenApi, parent?: Model): OpenApiDiscriminator | undefined => { if (openApi.components && parent) { for (const definitionName in openApi.components.schemas) { - if (openApi.components.schemas.hasOwnProperty(definitionName)) { + if (Object.prototype.hasOwnProperty.call(openApi.components.schemas, definitionName)) { const schema = openApi.components.schemas[definitionName]; if ( schema.discriminator && diff --git a/src/utils/getPattern.spec.ts b/src/utils/getPattern.spec.ts index 3f3756f0..992e786f 100644 --- a/src/utils/getPattern.spec.ts +++ b/src/utils/getPattern.spec.ts @@ -10,7 +10,6 @@ describe('getPattern', () => { expect(getPattern('\\')).toEqual('\\\\'); expect(getPattern('\\/')).toEqual('\\\\/'); expect(getPattern('\\/\\/')).toEqual('\\\\/\\\\/'); - // eslint-disable-next-line prettier/prettier expect(getPattern("'")).toEqual("\\'"); }); }); diff --git a/src/utils/getPattern.ts b/src/utils/getPattern.ts index b4580f5a..28e0ef60 100644 --- a/src/utils/getPattern.ts +++ b/src/utils/getPattern.ts @@ -9,6 +9,5 @@ * @param pattern */ export const getPattern = (pattern?: string): string | undefined => { - // eslint-disable-next-line prettier/prettier return pattern?.replace(/\\/g, '\\\\').replace(/'/g, "\\'"); }; diff --git a/src/utils/readSpecFromDisk.ts b/src/utils/readSpecFromDisk.ts index 7a5b7667..3c8061c1 100644 --- a/src/utils/readSpecFromDisk.ts +++ b/src/utils/readSpecFromDisk.ts @@ -13,7 +13,7 @@ export const readSpecFromDisk = async (input: string): Promise => { try { const content = await readFile(filePath, 'utf8'); return content.toString(); - } catch (e) { + } catch { throw new Error(`Could not read OpenApi spec: "${filePath}"`); } } diff --git a/test/e2e/v3.axios.spec.ts b/test/e2e/v3.axios.spec.ts index 003d9491..14b41ad4 100644 --- a/test/e2e/v3.axios.spec.ts +++ b/test/e2e/v3.axios.spec.ts @@ -57,7 +57,7 @@ describe('v3.axios', () => { 'valuePath', { prop: 'valueBody', - }, + } ); expect(result).toBeDefined(); }); @@ -104,7 +104,7 @@ describe('v3.axios', () => { status: 500, message: 'hello world', }, - }), + }) ); }); @@ -136,7 +136,7 @@ describe('v3.axios', () => { status: 409, message: 'hello world', }, - }), + }) ); }); diff --git a/test/e2e/v3.babel.spec.ts b/test/e2e/v3.babel.spec.ts index ca227da4..b16144f9 100644 --- a/test/e2e/v3.babel.spec.ts +++ b/test/e2e/v3.babel.spec.ts @@ -126,7 +126,7 @@ describe('v3.babel', () => { status: 500, message: 'hello world', }, - }), + }) ); }); @@ -162,7 +162,7 @@ describe('v3.babel', () => { status: 409, message: 'hello world', }, - }), + }) ); }); diff --git a/test/e2e/v3.fetch.spec.ts b/test/e2e/v3.fetch.spec.ts index 9456ba4b..986783b1 100644 --- a/test/e2e/v3.fetch.spec.ts +++ b/test/e2e/v3.fetch.spec.ts @@ -69,7 +69,7 @@ describe('v3.fetch', () => { 'valuePath', { prop: 'valueBody', - }, + } ); }); expect(result).toBeDefined(); @@ -122,7 +122,7 @@ describe('v3.fetch', () => { status: 500, message: 'hello world', }, - }), + }) ); }); @@ -156,7 +156,7 @@ describe('v3.fetch', () => { status: 409, message: 'hello world', }, - }), + }) ); }); diff --git a/test/e2e/v3.node.spec.ts b/test/e2e/v3.node.spec.ts index f30c3f80..a41b5178 100644 --- a/test/e2e/v3.node.spec.ts +++ b/test/e2e/v3.node.spec.ts @@ -57,7 +57,7 @@ describe('v3.node', () => { 'valuePath', { prop: 'valueBody', - }, + } ); expect(result).toBeDefined(); }); @@ -104,7 +104,7 @@ describe('v3.node', () => { status: 500, message: 'hello world', }, - }), + }) ); }); @@ -136,7 +136,7 @@ describe('v3.node', () => { status: 409, message: 'hello world', }, - }), + }) ); }); diff --git a/test/index.js b/test/index.js index 6d276c41..f590befe 100644 --- a/test/index.js +++ b/test/index.js @@ -43,7 +43,7 @@ const generateRealWorldSpecs = async () => { return { name: name .replace(/^[^a-zA-Z]+/g, '') - .replace(/[^\w\-]+/g, '-') + .replace(/[^\w-]+/g, '-') .trim() .toLowerCase(), url: latestVersion.swaggerYamlUrl || latestVersion.swaggerUrl,