From e225549eacfa779aba9c98b6af589d4b35f7532a Mon Sep 17 00:00:00 2001 From: "Andrey Mikhaylov (lolmaus)" Date: Thu, 7 Dec 2023 13:23:31 +0300 Subject: [PATCH] Fix #86 Files leak across instances of Project --- src/index.ts | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/index.ts b/src/index.ts index cff2b7d..e2dd9fe 100644 --- a/src/index.ts +++ b/src/index.ts @@ -28,9 +28,6 @@ export interface ProjectArgs { tmp.setGracefulCleanup(); -// This only shallow-merges with any user-provided files, which is OK right now -// because this is only one level deep. If we ever make it deeper, we'll need to -// switch to a proper deep merge. const defaultFiles = { 'index.js': ` 'use strict'; @@ -107,7 +104,7 @@ export class Project { if (files && typeof files?.['package.json'] === 'string') { pkg = JSON.parse(files['package.json']); - files = Object.assign({}, files); + files = deepmerge({}, files); delete files['package.json']; } @@ -117,9 +114,9 @@ export class Project { keywords: pkg.keywords || [], }); if (files) { - this.files = { ...defaultFiles, ...files }; + this.files = deepmerge({}, { ...defaultFiles, ...files }); } else { - this.files = defaultFiles; + this.files = deepmerge({}, defaultFiles); } this.requestedRange = requestedRange || this.pkg.version!;