From fa29e4a36f1b2bf49248336d39b09360b77f7403 Mon Sep 17 00:00:00 2001 From: Bjorn Lu Date: Tue, 15 Aug 2023 21:11:00 +0800 Subject: [PATCH] Remove deepmerge-ts for simpler implementation (#8086) --- packages/astro/package.json | 1 - packages/astro/src/core/config/tsconfig.ts | 26 ++++++++++++++++++++-- pnpm-lock.yaml | 8 ------- 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/packages/astro/package.json b/packages/astro/package.json index 404242f20296..37bd049eb1d8 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -137,7 +137,6 @@ "common-ancestor-path": "^1.0.1", "cookie": "^0.5.0", "debug": "^4.3.4", - "deepmerge-ts": "^4.3.0", "devalue": "^4.3.2", "diff": "^5.1.0", "es-module-lexer": "^1.3.0", diff --git a/packages/astro/src/core/config/tsconfig.ts b/packages/astro/src/core/config/tsconfig.ts index 5a5d3fc64dcc..a0c78f08c62e 100644 --- a/packages/astro/src/core/config/tsconfig.ts +++ b/packages/astro/src/core/config/tsconfig.ts @@ -1,4 +1,3 @@ -import { deepmerge } from 'deepmerge-ts'; import { existsSync } from 'node:fs'; import { join } from 'node:path'; import * as tsr from 'tsconfig-resolver'; @@ -96,5 +95,28 @@ export function updateTSConfigForFramework( return target; } - return deepmerge(target, presets.get(framework)!); + return deepMergeObjects(target, presets.get(framework)!); +} + +// Simple deep merge implementation that merges objects and strings +function deepMergeObjects>(a: T, b: T): T { + const merged: T = { ...a }; + + for (const key in b) { + const value = b[key]; + + if (a[key] == null) { + merged[key] = value; + continue; + } + + if (typeof a[key] === 'object' && typeof value === 'object') { + merged[key] = deepMergeObjects(a[key], value); + continue; + } + + merged[key] = value; + } + + return merged; } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ca505820ade8..0f43ca59cbe9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -548,9 +548,6 @@ importers: debug: specifier: ^4.3.4 version: 4.3.4 - deepmerge-ts: - specifier: ^4.3.0 - version: 4.3.0 devalue: specifier: ^4.3.2 version: 4.3.2 @@ -10809,11 +10806,6 @@ packages: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true - /deepmerge-ts@4.3.0: - resolution: {integrity: sha512-if3ZYdkD2dClhnXR5reKtG98cwyaRT1NeugQoAPTTfsOpV9kqyeiBF9Qa5RHjemb3KzD5ulqygv6ED3t5j9eJw==} - engines: {node: '>=12.4.0'} - dev: false - /deepmerge@4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'}