From b65b7da76065f253fe3ff508985f1a6e3f6265e6 Mon Sep 17 00:00:00 2001 From: Simon Knott Date: Thu, 25 May 2023 08:30:31 +0200 Subject: [PATCH 1/7] fix: add default values for relativeAppDir and outputFileTracingRoot --- packages/runtime/src/helpers/functions.ts | 13 ++++++------- test/index.spec.ts | 20 ++++++++++++++++++++ 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/packages/runtime/src/helpers/functions.ts b/packages/runtime/src/helpers/functions.ts index 7fce1b8b4b..dd352788fe 100644 --- a/packages/runtime/src/helpers/functions.ts +++ b/packages/runtime/src/helpers/functions.ts @@ -229,13 +229,12 @@ export const setupImageFunction = async ({ } const traceRequiredServerFiles = async (publish: string): Promise => { - const { - files, - relativeAppDir, - config: { - experimental: { outputFileTracingRoot }, - }, - } = await getRequiredServerFiles(publish) + const requiredServerFiles = await getRequiredServerFiles(publish) + + const relativeAppDir = requiredServerFiles.relativeAppDir ?? '' + const outputFileTracingRoot = requiredServerFiles.config.experimental.outputFileTracingRoot ?? '' + const files = requiredServerFiles.files ?? [] + const appDirRoot = join(outputFileTracingRoot, relativeAppDir) const absoluteFiles = files.map((file) => join(appDirRoot, file)) diff --git a/test/index.spec.ts b/test/index.spec.ts index 87cc555267..3b6a33474d 100644 --- a/test/index.spec.ts +++ b/test/index.spec.ts @@ -737,6 +737,26 @@ describe('onBuild()', () => { expect(netlifyConfig.functions['_api_*'].node_bundler).toEqual('nft') }) + + it('works when `relativeAppDir` is undefined', async () => { + await moveNextDist() + + const initialConfig = await getRequiredServerFiles(netlifyConfig.build.publish) + delete initialConfig.relativeAppDir + await updateRequiredServerFiles(netlifyConfig.build.publish, initialConfig) + + await expect(nextRuntime.onBuild(defaultArgs)).not.toReject() + }) + + it('works when `outputFileTracingRoot` is undefined', async () => { + await moveNextDist() + + const initialConfig = await getRequiredServerFiles(netlifyConfig.build.publish) + delete initialConfig.config.experimental.outputFileTracingRoot + await updateRequiredServerFiles(netlifyConfig.build.publish, initialConfig) + + await expect(nextRuntime.onBuild(defaultArgs)).not.toReject() + }) }) describe('onPostBuild', () => { From 8e1936f352eb9b8b040e82a6c7e9713a02787333 Mon Sep 17 00:00:00 2001 From: Simon Knott Date: Thu, 25 May 2023 09:04:53 +0200 Subject: [PATCH 2/7] fix: use `appDir` as fallback --- packages/runtime/src/helpers/functions.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/runtime/src/helpers/functions.ts b/packages/runtime/src/helpers/functions.ts index dd352788fe..56a9c0e124 100644 --- a/packages/runtime/src/helpers/functions.ts +++ b/packages/runtime/src/helpers/functions.ts @@ -231,11 +231,12 @@ export const setupImageFunction = async ({ const traceRequiredServerFiles = async (publish: string): Promise => { const requiredServerFiles = await getRequiredServerFiles(publish) - const relativeAppDir = requiredServerFiles.relativeAppDir ?? '' - const outputFileTracingRoot = requiredServerFiles.config.experimental.outputFileTracingRoot ?? '' - const files = requiredServerFiles.files ?? [] + let appDirRoot = requiredServerFiles.appDir ?? join(publish, '..') + if (requiredServerFiles.relativeAppDir && requiredServerFiles.config.experimental.outputFileTracingRoot) { + appDirRoot = join(requiredServerFiles.relativeAppDir, requiredServerFiles.config.experimental.outputFileTracingRoot) + } - const appDirRoot = join(outputFileTracingRoot, relativeAppDir) + const files = requiredServerFiles.files ?? [] const absoluteFiles = files.map((file) => join(appDirRoot, file)) absoluteFiles.push(join(publish, 'required-server-files.json')) From 4fe94733e6978f2732785b362403646bd72c1745 Mon Sep 17 00:00:00 2001 From: Simon Knott Date: Thu, 25 May 2023 09:09:58 +0200 Subject: [PATCH 3/7] fix: add optional for potetially undefined variable --- packages/runtime/src/helpers/functions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/runtime/src/helpers/functions.ts b/packages/runtime/src/helpers/functions.ts index 56a9c0e124..df7ad9aef4 100644 --- a/packages/runtime/src/helpers/functions.ts +++ b/packages/runtime/src/helpers/functions.ts @@ -232,7 +232,7 @@ const traceRequiredServerFiles = async (publish: string): Promise => { const requiredServerFiles = await getRequiredServerFiles(publish) let appDirRoot = requiredServerFiles.appDir ?? join(publish, '..') - if (requiredServerFiles.relativeAppDir && requiredServerFiles.config.experimental.outputFileTracingRoot) { + if (requiredServerFiles.relativeAppDir && requiredServerFiles.config?.experimental.outputFileTracingRoot) { appDirRoot = join(requiredServerFiles.relativeAppDir, requiredServerFiles.config.experimental.outputFileTracingRoot) } From aac893ab10da42e9fd8e6c463184291fc1b1944a Mon Sep 17 00:00:00 2001 From: Simon Knott Date: Thu, 25 May 2023 14:47:29 +0200 Subject: [PATCH 4/7] fix: apparently not.toReject doesn't exist in newer versions of Jest --- test/index.spec.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/index.spec.ts b/test/index.spec.ts index 3b6a33474d..ace30b8866 100644 --- a/test/index.spec.ts +++ b/test/index.spec.ts @@ -745,7 +745,7 @@ describe('onBuild()', () => { delete initialConfig.relativeAppDir await updateRequiredServerFiles(netlifyConfig.build.publish, initialConfig) - await expect(nextRuntime.onBuild(defaultArgs)).not.toReject() + await expect(nextRuntime.onBuild(defaultArgs)).toResolve() }) it('works when `outputFileTracingRoot` is undefined', async () => { @@ -755,7 +755,7 @@ describe('onBuild()', () => { delete initialConfig.config.experimental.outputFileTracingRoot await updateRequiredServerFiles(netlifyConfig.build.publish, initialConfig) - await expect(nextRuntime.onBuild(defaultArgs)).not.toReject() + await expect(nextRuntime.onBuild(defaultArgs)).toResolve() }) }) From 0d9676a366401395b575e15382df1c9206fd86a7 Mon Sep 17 00:00:00 2001 From: Simon Knott Date: Thu, 25 May 2023 15:25:56 +0200 Subject: [PATCH 5/7] fix: oops, order of paths was swapped! --- packages/runtime/src/helpers/functions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/runtime/src/helpers/functions.ts b/packages/runtime/src/helpers/functions.ts index df7ad9aef4..283b86a9fc 100644 --- a/packages/runtime/src/helpers/functions.ts +++ b/packages/runtime/src/helpers/functions.ts @@ -233,7 +233,7 @@ const traceRequiredServerFiles = async (publish: string): Promise => { let appDirRoot = requiredServerFiles.appDir ?? join(publish, '..') if (requiredServerFiles.relativeAppDir && requiredServerFiles.config?.experimental.outputFileTracingRoot) { - appDirRoot = join(requiredServerFiles.relativeAppDir, requiredServerFiles.config.experimental.outputFileTracingRoot) + appDirRoot = join(requiredServerFiles.config.experimental.outputFileTracingRoot, requiredServerFiles.relativeAppDir) } const files = requiredServerFiles.files ?? [] From 4fc0ed8615d5bcb6b9c77c1b4841d7d8cb963f13 Mon Sep 17 00:00:00 2001 From: Simon Knott Date: Tue, 30 May 2023 09:40:42 +0200 Subject: [PATCH 6/7] fix: toResolve is not a function --- test/index.spec.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/test/index.spec.ts b/test/index.spec.ts index ace30b8866..6bb89f3612 100644 --- a/test/index.spec.ts +++ b/test/index.spec.ts @@ -745,7 +745,8 @@ describe('onBuild()', () => { delete initialConfig.relativeAppDir await updateRequiredServerFiles(netlifyConfig.build.publish, initialConfig) - await expect(nextRuntime.onBuild(defaultArgs)).toResolve() + await nextRuntime.onBuild(defaultArgs) + expect.pass("Didn't throw") }) it('works when `outputFileTracingRoot` is undefined', async () => { @@ -755,7 +756,8 @@ describe('onBuild()', () => { delete initialConfig.config.experimental.outputFileTracingRoot await updateRequiredServerFiles(netlifyConfig.build.publish, initialConfig) - await expect(nextRuntime.onBuild(defaultArgs)).toResolve() + await nextRuntime.onBuild(defaultArgs) + expect.pass("Didn't throw") }) }) From aa157330da4e67e4bdd74f7fb725f26066e9c1ce Mon Sep 17 00:00:00 2001 From: Simon Knott Date: Tue, 30 May 2023 10:45:51 +0200 Subject: [PATCH 7/7] fix: why do all these assertions not exist? --- test/index.spec.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/index.spec.ts b/test/index.spec.ts index 6bb89f3612..565e8428d4 100644 --- a/test/index.spec.ts +++ b/test/index.spec.ts @@ -738,6 +738,7 @@ describe('onBuild()', () => { expect(netlifyConfig.functions['_api_*'].node_bundler).toEqual('nft') }) + // eslint-disable-next-line jest/expect-expect it('works when `relativeAppDir` is undefined', async () => { await moveNextDist() @@ -746,9 +747,9 @@ describe('onBuild()', () => { await updateRequiredServerFiles(netlifyConfig.build.publish, initialConfig) await nextRuntime.onBuild(defaultArgs) - expect.pass("Didn't throw") }) + // eslint-disable-next-line jest/expect-expect it('works when `outputFileTracingRoot` is undefined', async () => { await moveNextDist() @@ -757,7 +758,6 @@ describe('onBuild()', () => { await updateRequiredServerFiles(netlifyConfig.build.publish, initialConfig) await nextRuntime.onBuild(defaultArgs) - expect.pass("Didn't throw") }) })