From 87d20c8e0fef38f2a3df9ce0e4369496461fb2dd Mon Sep 17 00:00:00 2001 From: Jonghyeon Ko Date: Sun, 29 Jun 2025 00:42:35 +0900 Subject: [PATCH] chore(deps): replace lodash with es-toolkit/compat --- lib/decorators/api-body.decorator.ts | 2 +- lib/decorators/api-extension.decorator.ts | 2 +- lib/decorators/api-header.decorator.ts | 2 +- lib/decorators/api-operation.decorator.ts | 2 +- lib/decorators/api-param.decorator.ts | 2 +- lib/decorators/api-query.decorator.ts | 2 +- lib/decorators/api-response.decorator.ts | 2 +- lib/decorators/api-security.decorator.ts | 2 +- lib/decorators/helpers.ts | 2 +- lib/document-builder.ts | 9 +++++++- lib/explorers/api-parameters.explorer.ts | 22 +++++++++++-------- lib/explorers/api-response.explorer.ts | 2 +- lib/plugin/utils/plugin-utils.ts | 2 +- .../visitors/controller-class.visitor.ts | 2 +- lib/plugin/visitors/model-class.visitor.ts | 2 +- lib/services/parameter-metadata-accessor.ts | 2 +- lib/services/parameters-metadata-mapper.ts | 2 +- lib/services/response-object-factory.ts | 2 +- lib/services/response-object-mapper.ts | 2 +- lib/services/schema-object-factory.ts | 2 +- lib/services/swagger-types-mapper.ts | 9 +++++++- lib/swagger-explorer.ts | 2 +- lib/swagger-scanner.ts | 2 +- lib/swagger-transformer.ts | 2 +- lib/type-helpers/mapped-types.utils.ts | 2 +- lib/type-helpers/omit-type.helper.ts | 2 +- lib/type-helpers/partial-type.helper.ts | 2 +- lib/type-helpers/pick-type.helper.ts | 2 +- lib/utils/enum.utils.ts | 2 +- lib/utils/is-built-in-type.util.ts | 2 +- lib/utils/merge-and-uniq.util.ts | 2 +- package-lock.json | 20 +++++++++-------- package.json | 3 +-- test/explorer/swagger-explorer.spec.ts | 2 +- 34 files changed, 70 insertions(+), 51 deletions(-) diff --git a/lib/decorators/api-body.decorator.ts b/lib/decorators/api-body.decorator.ts index dfabf2ae6..072a3e012 100644 --- a/lib/decorators/api-body.decorator.ts +++ b/lib/decorators/api-body.decorator.ts @@ -1,5 +1,5 @@ import { Type } from '@nestjs/common'; -import { omit } from 'lodash'; +import { omit } from 'es-toolkit/compat'; import { ExamplesObject, ReferenceObject, diff --git a/lib/decorators/api-extension.decorator.ts b/lib/decorators/api-extension.decorator.ts index 90dd9f13e..8ce7743cc 100644 --- a/lib/decorators/api-extension.decorator.ts +++ b/lib/decorators/api-extension.decorator.ts @@ -1,6 +1,6 @@ import { DECORATORS } from '../constants'; import { createMixedDecorator } from './helpers'; -import { clone } from 'lodash'; +import { clone } from 'es-toolkit/compat'; /** * @publicApi diff --git a/lib/decorators/api-header.decorator.ts b/lib/decorators/api-header.decorator.ts index f13bd3e66..182da2d6b 100644 --- a/lib/decorators/api-header.decorator.ts +++ b/lib/decorators/api-header.decorator.ts @@ -1,4 +1,4 @@ -import { isNil, isUndefined, negate, pickBy } from 'lodash'; +import { isNil, isUndefined, negate, pickBy } from 'es-toolkit/compat'; import { DECORATORS } from '../constants'; import { ParameterLocation, diff --git a/lib/decorators/api-operation.decorator.ts b/lib/decorators/api-operation.decorator.ts index bc08c4787..9b0b4a41d 100644 --- a/lib/decorators/api-operation.decorator.ts +++ b/lib/decorators/api-operation.decorator.ts @@ -1,4 +1,4 @@ -import { isUndefined, negate, pickBy } from 'lodash'; +import { isUndefined, negate, pickBy } from 'es-toolkit/compat'; import { DECORATORS } from '../constants'; import { OperationObject } from '../interfaces/open-api-spec.interface'; import { createMethodDecorator } from './helpers'; diff --git a/lib/decorators/api-param.decorator.ts b/lib/decorators/api-param.decorator.ts index 5240d097b..8ed83f349 100644 --- a/lib/decorators/api-param.decorator.ts +++ b/lib/decorators/api-param.decorator.ts @@ -1,5 +1,5 @@ import { Type } from '@nestjs/common'; -import { isNil, omit } from 'lodash'; +import { isNil, omit } from 'es-toolkit/compat'; import { EnumSchemaAttributes } from '../interfaces/enum-schema-attributes.interface'; import { ParameterObject, diff --git a/lib/decorators/api-query.decorator.ts b/lib/decorators/api-query.decorator.ts index 8b8316f43..9b877f1d0 100644 --- a/lib/decorators/api-query.decorator.ts +++ b/lib/decorators/api-query.decorator.ts @@ -1,5 +1,5 @@ import { Type } from '@nestjs/common'; -import { omit } from 'lodash'; +import { omit } from 'es-toolkit/compat'; import { EnumSchemaAttributes } from '../interfaces/enum-schema-attributes.interface'; import { ParameterObject, diff --git a/lib/decorators/api-response.decorator.ts b/lib/decorators/api-response.decorator.ts index 8b83b9dc0..380c2d7dc 100644 --- a/lib/decorators/api-response.decorator.ts +++ b/lib/decorators/api-response.decorator.ts @@ -1,5 +1,5 @@ import { HttpStatus, Type } from '@nestjs/common'; -import { omit } from 'lodash'; +import { omit } from 'es-toolkit/compat'; import { DECORATORS } from '../constants'; import { ReferenceObject, diff --git a/lib/decorators/api-security.decorator.ts b/lib/decorators/api-security.decorator.ts index 01324256a..620106691 100644 --- a/lib/decorators/api-security.decorator.ts +++ b/lib/decorators/api-security.decorator.ts @@ -1,4 +1,4 @@ -import { isString } from 'lodash'; +import { isString } from 'es-toolkit/compat'; import { DECORATORS } from '../constants'; import { SecurityRequirementObject } from '../interfaces/open-api-spec.interface'; import { extendMetadata } from '../utils/extend-metadata.util'; diff --git a/lib/decorators/helpers.ts b/lib/decorators/helpers.ts index f2a36f28f..93b8a0593 100644 --- a/lib/decorators/helpers.ts +++ b/lib/decorators/helpers.ts @@ -1,4 +1,4 @@ -import { isArray, isUndefined, negate, pickBy } from 'lodash'; +import { isArray, isUndefined, negate, pickBy } from 'es-toolkit/compat'; import { DECORATORS } from '../constants'; import { METADATA_FACTORY_NAME } from '../plugin/plugin-constants'; import { METHOD_METADATA } from '@nestjs/common/constants'; diff --git a/lib/document-builder.ts b/lib/document-builder.ts index c7dc7a4eb..1c7b59615 100644 --- a/lib/document-builder.ts +++ b/lib/document-builder.ts @@ -1,5 +1,12 @@ import { Logger } from '@nestjs/common'; -import { clone, isString, isUndefined, negate, omit, pickBy } from 'lodash'; +import { + clone, + isString, + isUndefined, + negate, + omit, + pickBy +} from 'es-toolkit/compat'; import { ApiResponseOptions } from './decorators/api-response.decorator'; import { buildDocumentBase } from './fixtures/document.base'; import { OpenAPIObject } from './interfaces'; diff --git a/lib/explorers/api-parameters.explorer.ts b/lib/explorers/api-parameters.explorer.ts index b86ec5278..456b2430f 100644 --- a/lib/explorers/api-parameters.explorer.ts +++ b/lib/explorers/api-parameters.explorer.ts @@ -1,5 +1,13 @@ import { Type } from '@nestjs/common'; -import { assign, find, isNil, map, omitBy, some, unionWith } from 'lodash'; +import { + assign, + find, + isNil, + map, + omitBy, + some, + unionWith +} from 'es-toolkit/compat'; import { DECORATORS } from '../constants'; import { SchemaObject } from '../interfaces/open-api-spec.interface'; import { ModelPropertiesAccessor } from '../services/model-properties-accessor'; @@ -54,11 +62,10 @@ export const exploreApiParametersMetadata = ( const mergeImplicitAndExplicit = (item: ParamWithTypeMetadata) => assign(item, find(explicitParameters, ['name', item.name])); - properties = removeBodyMetadataIfExplicitExists( - properties, - explicitParameters + properties = map( + removeBodyMetadataIfExplicitExists(properties, explicitParameters), + mergeImplicitAndExplicit ); - properties = map(properties, mergeImplicitAndExplicit); properties = unionWith( properties, explicitParameters, @@ -84,10 +91,7 @@ function removeBodyMetadataIfExplicitExists( const isBodyReflected = some(properties, (p) => p.in === 'body'); const isBodyDefinedExplicitly = some(explicitParams, (p) => p.in === 'body'); if (isBodyReflected && isBodyDefinedExplicitly) { - return omitBy( - properties, - (p) => p.in === 'body' - ) as ParamWithTypeMetadata[]; + return omitBy(properties, (p) => p.in === 'body'); } return properties; } diff --git a/lib/explorers/api-response.explorer.ts b/lib/explorers/api-response.explorer.ts index 1a029544b..3bf67efbc 100644 --- a/lib/explorers/api-response.explorer.ts +++ b/lib/explorers/api-response.explorer.ts @@ -1,7 +1,7 @@ import { HttpStatus, RequestMethod, Type } from '@nestjs/common'; import { HTTP_CODE_METADATA, METHOD_METADATA } from '@nestjs/common/constants'; import { isEmpty } from '@nestjs/common/utils/shared.utils'; -import { get, mapValues, omit } from 'lodash'; +import { get, mapValues, omit } from 'es-toolkit/compat'; import { DECORATORS } from '../constants'; import { ApiResponse, ApiResponseMetadata } from '../decorators'; import { SchemaObject } from '../interfaces/open-api-spec.interface'; diff --git a/lib/plugin/utils/plugin-utils.ts b/lib/plugin/utils/plugin-utils.ts index fec729483..b54729867 100644 --- a/lib/plugin/utils/plugin-utils.ts +++ b/lib/plugin/utils/plugin-utils.ts @@ -1,4 +1,4 @@ -import { head } from 'lodash'; +import { head } from 'es-toolkit/compat'; import { isAbsolute, posix } from 'path'; import * as ts from 'typescript'; import { PluginOptions } from '../merge-options'; diff --git a/lib/plugin/visitors/controller-class.visitor.ts b/lib/plugin/visitors/controller-class.visitor.ts index 97b739d72..3a377b8cf 100644 --- a/lib/plugin/visitors/controller-class.visitor.ts +++ b/lib/plugin/visitors/controller-class.visitor.ts @@ -1,4 +1,4 @@ -import { compact, head } from 'lodash'; +import { compact, head } from 'es-toolkit/compat'; import { posix } from 'path'; import * as ts from 'typescript'; import { ApiOperation, ApiResponse } from '../../decorators'; diff --git a/lib/plugin/visitors/model-class.visitor.ts b/lib/plugin/visitors/model-class.visitor.ts index 6a6c9920f..8c0bc0b68 100644 --- a/lib/plugin/visitors/model-class.visitor.ts +++ b/lib/plugin/visitors/model-class.visitor.ts @@ -1,4 +1,4 @@ -import { compact, flatten, head } from 'lodash'; +import { compact, flatten, head } from 'es-toolkit/compat'; import { posix } from 'path'; import * as ts from 'typescript'; import { factory, PropertyAssignment } from 'typescript'; diff --git a/lib/services/parameter-metadata-accessor.ts b/lib/services/parameter-metadata-accessor.ts index e4926756d..a954e27a2 100644 --- a/lib/services/parameter-metadata-accessor.ts +++ b/lib/services/parameter-metadata-accessor.ts @@ -4,7 +4,7 @@ import { ROUTE_ARGS_METADATA } from '@nestjs/common/constants'; import { RouteParamtypes } from '@nestjs/common/enums/route-paramtypes.enum'; -import { isEmpty, mapValues, omitBy } from 'lodash'; +import { isEmpty, mapValues, omitBy } from 'es-toolkit/compat'; import { EnumSchemaAttributes } from '../interfaces/enum-schema-attributes.interface'; import { ParameterLocation, diff --git a/lib/services/parameters-metadata-mapper.ts b/lib/services/parameters-metadata-mapper.ts index 9ffdd9468..e33f8a352 100644 --- a/lib/services/parameters-metadata-mapper.ts +++ b/lib/services/parameters-metadata-mapper.ts @@ -1,6 +1,6 @@ import { Type } from '@nestjs/common'; import { isFunction } from '@nestjs/common/utils/shared.utils'; -import { flatMap, identity } from 'lodash'; +import { flatMap, identity } from 'es-toolkit/compat'; import { DECORATORS } from '../constants'; import { isBodyParameter } from '../utils/is-body-parameter.util'; import { ModelPropertiesAccessor } from './model-properties-accessor'; diff --git a/lib/services/response-object-factory.ts b/lib/services/response-object-factory.ts index 86edac5f3..220ac3a8b 100644 --- a/lib/services/response-object-factory.ts +++ b/lib/services/response-object-factory.ts @@ -1,4 +1,4 @@ -import { isEmpty, isFunction, omit } from 'lodash'; +import { isEmpty, isFunction, omit } from 'es-toolkit/compat'; import { DECORATORS } from '../constants'; import { ApiPropertyOptions, diff --git a/lib/services/response-object-mapper.ts b/lib/services/response-object-mapper.ts index 0bfa10bb3..7ba6a79a6 100644 --- a/lib/services/response-object-mapper.ts +++ b/lib/services/response-object-mapper.ts @@ -1,4 +1,4 @@ -import { omit, pick } from 'lodash'; +import { omit, pick } from 'es-toolkit/compat'; import { ApiResponseMetadata, ApiResponseSchemaHost } from '../decorators'; import { getSchemaPath } from '../utils'; import { MimetypeContentWrapper } from './mimetype-content-wrapper'; diff --git a/lib/services/schema-object-factory.ts b/lib/services/schema-object-factory.ts index eac18bf57..a7a2ee9e4 100644 --- a/lib/services/schema-object-factory.ts +++ b/lib/services/schema-object-factory.ts @@ -10,7 +10,7 @@ import { omit, omitBy, pick -} from 'lodash'; +} from 'es-toolkit/compat'; import { DECORATORS } from '../constants'; import { ApiSchemaOptions } from '../decorators'; import { getTypeIsArrayTuple } from '../decorators/helpers'; diff --git a/lib/services/swagger-types-mapper.ts b/lib/services/swagger-types-mapper.ts index fe6938111..47444c25e 100644 --- a/lib/services/swagger-types-mapper.ts +++ b/lib/services/swagger-types-mapper.ts @@ -1,4 +1,10 @@ -import { isFunction, isString, isUndefined, omit, omitBy, pick } from 'lodash'; +import { + isFunction, + isString, + isUndefined, + omit, + pick +} from 'es-toolkit/compat'; import { ApiPropertyOptions } from '../decorators'; import { BaseParameterObject, @@ -6,6 +12,7 @@ import { SchemaObject } from '../interfaces/open-api-spec.interface'; import { ParamWithTypeMetadata } from './parameter-metadata-accessor'; +import { omitBy } from 'es-toolkit/compat'; type KeysToRemove = | keyof ApiPropertyOptions diff --git a/lib/swagger-explorer.ts b/lib/swagger-explorer.ts index 81c261a24..f6f8972a5 100644 --- a/lib/swagger-explorer.ts +++ b/lib/swagger-explorer.ts @@ -30,7 +30,7 @@ import { omit, omitBy, pick -} from 'lodash'; +} from 'es-toolkit/compat'; import { parse, Wildcard } from 'path-to-regexp'; import { DECORATORS } from './constants'; import { exploreApiCallbacksMetadata } from './explorers/api-callbacks.explorer'; diff --git a/lib/swagger-scanner.ts b/lib/swagger-scanner.ts index 168204c9d..ca8ecd02b 100644 --- a/lib/swagger-scanner.ts +++ b/lib/swagger-scanner.ts @@ -3,7 +3,7 @@ import { MODULE_PATH } from '@nestjs/common/constants'; import { ApplicationConfig, NestContainer } from '@nestjs/core'; import { InstanceWrapper } from '@nestjs/core/injector/instance-wrapper'; import { Module } from '@nestjs/core/injector/module'; -import { flatten, isEmpty } from 'lodash'; +import { flatten, isEmpty } from 'es-toolkit/compat'; import { OpenAPIObject, OperationIdFactory, diff --git a/lib/swagger-transformer.ts b/lib/swagger-transformer.ts index aff7580db..9ab006f84 100644 --- a/lib/swagger-transformer.ts +++ b/lib/swagger-transformer.ts @@ -1,4 +1,4 @@ -import { filter, groupBy, keyBy, mapValues, omit } from 'lodash'; +import { filter, groupBy, keyBy, mapValues, omit } from 'es-toolkit/compat'; import { OpenAPIObject } from './interfaces'; import { sortObjectLexicographically } from './utils/sort-object-lexicographically'; diff --git a/lib/type-helpers/mapped-types.utils.ts b/lib/type-helpers/mapped-types.utils.ts index 60589e2d4..bf56a0d59 100644 --- a/lib/type-helpers/mapped-types.utils.ts +++ b/lib/type-helpers/mapped-types.utils.ts @@ -1,5 +1,5 @@ import { Type } from '@nestjs/common'; -import { identity } from 'lodash'; +import { identity } from 'es-toolkit/compat'; import { METADATA_FACTORY_NAME } from '../plugin/plugin-constants'; export function clonePluginMetadataFactory( diff --git a/lib/type-helpers/omit-type.helper.ts b/lib/type-helpers/omit-type.helper.ts index e12a488c3..239e3ab1d 100644 --- a/lib/type-helpers/omit-type.helper.ts +++ b/lib/type-helpers/omit-type.helper.ts @@ -4,7 +4,7 @@ import { inheritTransformationMetadata, inheritValidationMetadata } from '@nestjs/mapped-types'; -import { omit } from 'lodash'; +import { omit } from 'es-toolkit/compat'; import { DECORATORS } from '../constants'; import { ApiProperty } from '../decorators'; import { MetadataLoader } from '../plugin/metadata-loader'; diff --git a/lib/type-helpers/partial-type.helper.ts b/lib/type-helpers/partial-type.helper.ts index 8d6de4c3e..614c71423 100644 --- a/lib/type-helpers/partial-type.helper.ts +++ b/lib/type-helpers/partial-type.helper.ts @@ -6,7 +6,7 @@ import { inheritTransformationMetadata, inheritValidationMetadata } from '@nestjs/mapped-types'; -import { mapValues } from 'lodash'; +import { mapValues } from 'es-toolkit/compat'; import { DECORATORS } from '../constants'; import { ApiProperty } from '../decorators'; import { MetadataLoader } from '../plugin/metadata-loader'; diff --git a/lib/type-helpers/pick-type.helper.ts b/lib/type-helpers/pick-type.helper.ts index 88ee0bd6b..5d2e5d451 100644 --- a/lib/type-helpers/pick-type.helper.ts +++ b/lib/type-helpers/pick-type.helper.ts @@ -4,7 +4,7 @@ import { inheritTransformationMetadata, inheritValidationMetadata } from '@nestjs/mapped-types'; -import { pick } from 'lodash'; +import { pick } from 'es-toolkit/compat'; import { DECORATORS } from '../constants'; import { ApiProperty } from '../decorators'; import { MetadataLoader } from '../plugin/metadata-loader'; diff --git a/lib/utils/enum.utils.ts b/lib/utils/enum.utils.ts index 635c7bb44..8f6fd949c 100644 --- a/lib/utils/enum.utils.ts +++ b/lib/utils/enum.utils.ts @@ -1,4 +1,4 @@ -import { isString } from 'lodash'; +import { isString } from 'es-toolkit/compat'; import { SchemaObject } from '../interfaces/open-api-spec.interface'; import { SchemaObjectMetadata } from '../interfaces/schema-object-metadata.interface'; import { SwaggerEnumType } from '../types/swagger-enum.type'; diff --git a/lib/utils/is-built-in-type.util.ts b/lib/utils/is-built-in-type.util.ts index 183cc039d..0c35b821b 100644 --- a/lib/utils/is-built-in-type.util.ts +++ b/lib/utils/is-built-in-type.util.ts @@ -1,5 +1,5 @@ import { Type } from '@nestjs/common'; -import { isFunction } from 'lodash'; +import { isFunction } from 'es-toolkit/compat'; import { BUILT_IN_TYPES } from '../services/constants'; export function isBuiltInType( diff --git a/lib/utils/merge-and-uniq.util.ts b/lib/utils/merge-and-uniq.util.ts index 0d50af6c8..61263a3e1 100644 --- a/lib/utils/merge-and-uniq.util.ts +++ b/lib/utils/merge-and-uniq.util.ts @@ -1,4 +1,4 @@ -import { merge, uniq } from 'lodash'; +import { merge, uniq } from 'es-toolkit/compat'; export function mergeAndUniq(a: unknown = [], b: unknown = []): T { return uniq(merge(a, b) as any) as unknown as T; diff --git a/package-lock.json b/package-lock.json index 7d3acdd31..61fa1e9d2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,8 +11,8 @@ "dependencies": { "@microsoft/tsdoc": "0.15.1", "@nestjs/mapped-types": "2.1.0", + "es-toolkit": "1.39.5", "js-yaml": "4.1.0", - "lodash": "4.17.21", "path-to-regexp": "8.2.0", "swagger-ui-dist": "5.21.0" }, @@ -28,7 +28,6 @@ "@nestjs/platform-fastify": "11.1.3", "@types/jest": "30.0.0", "@types/js-yaml": "4.0.9", - "@types/lodash": "4.17.19", "@types/node": "22.15.34", "class-transformer": "0.5.1", "class-validator": "0.14.2", @@ -3526,13 +3525,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-NYqRyg/hIQrYPT9lbOeYc3kIRabJDn/k4qQHIXUpx88CBDww2fD15Sg5kbXlW86zm2XEW4g0QxkTI3/Kfkc7xQ==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/node": { "version": "22.15.34", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.34.tgz", @@ -6068,6 +6060,15 @@ "node": ">= 0.4" } }, + "node_modules/es-toolkit": { + "version": "1.39.5", + "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.39.5.tgz", + "integrity": "sha512-z9V0qU4lx1TBXDNFWfAASWk6RNU6c6+TJBKE+FLIg8u0XJ6Yw58Hi0yX8ftEouj6p1QARRlXLFfHbIli93BdQQ==", + "workspaces": [ + "docs", + "benchmarks" + ] + }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -9887,6 +9888,7 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, "license": "MIT" }, "node_modules/lodash.camelcase": { diff --git a/package.json b/package.json index 49a398201..1d0b934fc 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "@microsoft/tsdoc": "0.15.1", "@nestjs/mapped-types": "2.1.0", "js-yaml": "4.1.0", - "lodash": "4.17.21", + "es-toolkit": "1.39.5", "path-to-regexp": "8.2.0", "swagger-ui-dist": "5.21.0" }, @@ -46,7 +46,6 @@ "@nestjs/platform-fastify": "11.1.3", "@types/jest": "30.0.0", "@types/js-yaml": "4.0.9", - "@types/lodash": "4.17.19", "@types/node": "22.15.34", "class-transformer": "0.5.1", "class-validator": "0.14.2", diff --git a/test/explorer/swagger-explorer.spec.ts b/test/explorer/swagger-explorer.spec.ts index 3ff4d0bcc..e0f0e560b 100644 --- a/test/explorer/swagger-explorer.spec.ts +++ b/test/explorer/swagger-explorer.spec.ts @@ -12,7 +12,7 @@ import { import { VERSION_NEUTRAL, VersionValue } from '@nestjs/common/interfaces'; import { ApplicationConfig } from '@nestjs/core'; import { InstanceWrapper } from '@nestjs/core/injector/instance-wrapper'; -import { upperFirst } from 'lodash'; +import { upperFirst } from 'es-toolkit/compat'; import { ApiBadRequestResponse, ApiBody,