diff --git a/contributors.yml b/contributors.yml index 1866d7c80a..0ad364be7b 100644 --- a/contributors.yml +++ b/contributors.yml @@ -76,6 +76,7 @@ - ChristophP - christowiz - clavery +- cksal0805 - clonemycode - Cmoen11 - codeape2 diff --git a/packages/react-router-dev/config/config.ts b/packages/react-router-dev/config/config.ts index b5bd6ea254..27bbcba07a 100644 --- a/packages/react-router-dev/config/config.ts +++ b/packages/react-router-dev/config/config.ts @@ -9,10 +9,7 @@ import chokidar, { type EmitArgs as ChokidarEmitArgs, } from "chokidar"; import colors from "picocolors"; -import pick from "lodash/pick"; -import omit from "lodash/omit"; -import cloneDeep from "lodash/cloneDeep"; -import isEqual from "lodash/isEqual"; +import { pick, omit, cloneDeep, isEqual } from "es-toolkit"; import { type RouteManifest, @@ -391,7 +388,7 @@ async function resolveConfig({ // Prevent mutations to the user config reactRouterUserConfig = deepFreeze(cloneDeep(reactRouterUserConfig)); - let presets: ReactRouterConfig[] = ( + let presets: ConfigPreset[] = ( await Promise.all( (reactRouterUserConfig.presets ?? []).map(async (preset) => { if (!preset.name) { @@ -404,12 +401,15 @@ async function resolveConfig({ return null; } - let configPreset: ReactRouterConfig = omit( - await preset.reactRouterConfig({ reactRouterUserConfig }), - excludedConfigPresetKeys, - ); + let reactRouterConfig = await preset.reactRouterConfig({ + reactRouterUserConfig, + }); + + if (reactRouterConfig != null && "presets" in reactRouterConfig) { + reactRouterConfig = omit(reactRouterConfig, excludedConfigPresetKeys); + } - return configPreset; + return reactRouterConfig; }), ) ).filter(function isNotNull(value: T | null): value is T { diff --git a/packages/react-router-dev/config/routes.ts b/packages/react-router-dev/config/routes.ts index fa94d482f7..59fd70091d 100644 --- a/packages/react-router-dev/config/routes.ts +++ b/packages/react-router-dev/config/routes.ts @@ -1,6 +1,6 @@ import * as Path from "pathe"; import * as v from "valibot"; -import pick from "lodash/pick"; +import { pick } from "es-toolkit/compat"; import invariant from "../invariant"; diff --git a/packages/react-router-dev/package.json b/packages/react-router-dev/package.json index ee43e86487..882542d88a 100644 --- a/packages/react-router-dev/package.json +++ b/packages/react-router-dev/package.json @@ -87,7 +87,6 @@ "es-module-lexer": "^1.3.1", "exit-hook": "2.2.1", "jsesc": "3.0.2", - "lodash": "^4.17.21", "pathe": "^1.1.2", "picocolors": "^1.1.1", "prettier": "^3.6.2", @@ -106,7 +105,7 @@ "@types/dedent": "^0.7.0", "@types/express": "^4.17.9", "@types/jsesc": "^3.0.1", - "@types/lodash": "^4.14.182", + "es-toolkit": "^1.39.7", "@types/node": "^20.0.0", "@types/npmcli__package-json": "^4.0.0", "@types/set-cookie-parser": "^2.4.1", diff --git a/packages/react-router-dev/vite/plugin.ts b/packages/react-router-dev/vite/plugin.ts index 27981b7438..e346576c23 100644 --- a/packages/react-router-dev/vite/plugin.ts +++ b/packages/react-router-dev/vite/plugin.ts @@ -32,10 +32,9 @@ import { parse as esModuleLexer, } from "es-module-lexer"; import { escapePath as escapePathAsGlob } from "tinyglobby"; -import pick from "lodash/pick"; +import { pick, kebabCase } from "es-toolkit/compat"; import jsesc from "jsesc"; import colors from "picocolors"; -import kebabCase from "lodash/kebabCase"; import * as Typegen from "../typegen"; import type { RouteManifestEntry, RouteManifest } from "../config/routes"; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 994b7704b9..d88316d620 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1147,9 +1147,6 @@ importers: jsesc: specifier: 3.0.2 version: 3.0.2 - lodash: - specifier: ^4.17.21 - version: 4.17.21 pathe: specifier: ^1.1.2 version: 1.1.2 @@ -1199,9 +1196,6 @@ importers: '@types/jsesc': specifier: ^3.0.1 version: 3.0.3 - '@types/lodash': - specifier: ^4.14.182 - version: 4.17.0 '@types/node': specifier: ^20.0.0 version: 20.11.30 @@ -1214,6 +1208,9 @@ importers: '@types/set-cookie-parser': specifier: ^2.4.1 version: 2.4.7 + es-toolkit: + specifier: ^1.39.7 + version: 1.39.8 esbuild-register: specifier: ^3.6.0 version: 3.6.0(esbuild@0.25.4) @@ -4929,9 +4926,6 @@ packages: '@types/lambda-tester@3.6.2': resolution: {integrity: sha512-nQRUx0AuvTq5KOz1SaxMOOFJvnybo1oAzvSy/p9bVGthZVvg1Dar/051mhMuzdN1DWg++bs+eGq1MdCbm6wjSQ==} - '@types/lodash@4.17.0': - resolution: {integrity: sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA==} - '@types/mdast@3.0.15': resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} @@ -6231,6 +6225,9 @@ packages: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} + es-toolkit@1.39.8: + resolution: {integrity: sha512-A8QO9TfF+rltS8BXpdu8OS+rpGgEdnRhqIVxO/ZmNvnXBYgOdSsxukT55ELyP94gZIntWJ+Li9QRrT2u1Kitpg==} + esbuild-register@3.6.0: resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} peerDependencies: @@ -13323,8 +13320,6 @@ snapshots: dependencies: '@types/aws-lambda': 8.10.141 - '@types/lodash@4.17.0': {} - '@types/mdast@3.0.15': dependencies: '@types/unist': 2.0.10 @@ -14969,6 +14964,8 @@ snapshots: is-date-object: 1.0.5 is-symbol: 1.0.4 + es-toolkit@1.39.8: {} + esbuild-register@3.6.0(esbuild@0.25.0): dependencies: debug: 4.4.1