diff --git a/package-lock.json b/package-lock.json index 7ad3d618..6ff155e5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,8 +18,6 @@ "json-schema-traverse": "^1.0.0", "lodash.clonedeep": "^4.5.0", "lodash.get": "^4.4.2", - "lodash.uniq": "^4.5.0", - "lodash.zipobject": "^4.1.3", "media-typer": "^1.1.0", "multer": "^1.4.5-lts.1", "ono": "^7.1.3", @@ -3890,7 +3888,7 @@ "node_modules/lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" }, "node_modules/lodash.flattendeep": { "version": "4.4.0", @@ -3909,16 +3907,6 @@ "integrity": "sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==", "dev": true }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" - }, - "node_modules/lodash.zipobject": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lodash.zipobject/-/lodash.zipobject-4.1.3.tgz", - "integrity": "sha512-A9SzX4hMKWS25MyalwcOnNoplyHbkNVsjidhTp8ru0Sj23wY9GWBKS8gAIGDSAqeWjIjvE4KBEl24XXAs+v4wQ==" - }, "node_modules/log-driver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", diff --git a/package.json b/package.json index 3bfa9b39..aa09554d 100644 --- a/package.json +++ b/package.json @@ -42,8 +42,6 @@ "json-schema-traverse": "^1.0.0", "lodash.clonedeep": "^4.5.0", "lodash.get": "^4.4.2", - "lodash.uniq": "^4.5.0", - "lodash.zipobject": "^4.1.3", "media-typer": "^1.1.0", "multer": "^1.4.5-lts.1", "ono": "^7.1.3", diff --git a/src/middlewares/openapi.metadata.ts b/src/middlewares/openapi.metadata.ts index 2dae08a2..a1370736 100644 --- a/src/middlewares/openapi.metadata.ts +++ b/src/middlewares/openapi.metadata.ts @@ -1,4 +1,4 @@ -import * as _zipObject from 'lodash.zipobject'; +import { zipObject } from './util'; import { pathToRegexp } from 'path-to-regexp'; import { Response, NextFunction } from 'express'; import { OpenApiContext } from '../framework/openapi.context'; @@ -94,7 +94,7 @@ export function applyOpenApiMetadata( const paramKeys = keys.map((k) => k.name); try { const paramsVals = matchedRoute.slice(1).map(decodeURIComponent); - const pathParams = _zipObject(paramKeys, paramsVals); + const pathParams = zipObject(paramKeys, paramsVals); const r = { schema, diff --git a/src/middlewares/util.ts b/src/middlewares/util.ts index 0fde5708..991d4a80 100644 --- a/src/middlewares/util.ts +++ b/src/middlewares/util.ts @@ -164,3 +164,10 @@ export const findResponseContent = function ( } return null; }; + +export const zipObject = (keys, values) => + keys.reduce((acc, key, idx) => { + acc[key] = values[idx] + return acc + }, {}) + diff --git a/src/openapi.validator.ts b/src/openapi.validator.ts index dd12fed2..c4b639e7 100644 --- a/src/openapi.validator.ts +++ b/src/openapi.validator.ts @@ -1,7 +1,6 @@ import { Options } from 'ajv'; import ono from 'ono'; import * as express from 'express'; -import * as _uniq from 'lodash.uniq'; import * as middlewares from './middlewares'; import { Application, Response, NextFunction, Router } from 'express'; import { OpenApiContext } from './framework/openapi.context'; @@ -237,7 +236,8 @@ export class OpenApiValidator { } // install param on routes with paths - for (const p of _uniq(pathParams)) { + const uniqPathParams = [...new Set(pathParams)] + for (const p of uniqPathParams) { app.param( p, (