Skip to content

Commit c017a26

Browse files
authored
Merge branch 'main' into nickytonline/next-response-cookie-headers-missing-sometimes
2 parents 69cf778 + 49ada27 commit c017a26

File tree

7 files changed

+26
-8
lines changed

7 files changed

+26
-8
lines changed

.release-please-manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{
2-
"packages/runtime": "4.37.0",
2+
"packages/runtime": "4.37.1",
33
"packages/next": "1.4.6"
44
}

packages/runtime/CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
# Changelog
22

3+
## [4.37.1](https://github.com/netlify/next-runtime/compare/plugin-nextjs-v4.37.0...plugin-nextjs-v4.37.1) (2023-05-17)
4+
5+
6+
### Bug Fixes
7+
8+
* clientContext isn't available in background functions ([#2121](https://github.com/netlify/next-runtime/issues/2121)) ([df0f6bc](https://github.com/netlify/next-runtime/commit/df0f6bcecee39f203327598120ad3ec778e45624))
9+
* support named & default export for middleware in ntl dev ([#2116](https://github.com/netlify/next-runtime/issues/2116)) ([b31f858](https://github.com/netlify/next-runtime/commit/b31f858e135d5727729c5c6336ce6519f60678d6))
10+
311
## [4.37.0](https://github.com/netlify/next-runtime/compare/plugin-nextjs-v4.36.1...plugin-nextjs-v4.37.0) (2023-05-15)
412

513

packages/runtime/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@netlify/plugin-nextjs",
3-
"version": "4.37.0",
3+
"version": "4.37.1",
44
"description": "Run Next.js seamlessly on Netlify",
55
"main": "index.js",
66
"files": [

packages/runtime/src/helpers/functions.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ const traceNextServer = async (publish: string): Promise<string[]> => {
269269

270270
export const traceNPMPackage = async (packageName: string, publish: string) => {
271271
try {
272-
return await glob(join(dirname(require.resolve(packageName, { paths: [publish] })), '**', '*'), {
272+
return await glob(join(dirname(require.resolve(packageName, { paths: [__dirname, publish] })), '**', '*'), {
273273
absolute: true,
274274
})
275275
} catch (error) {

packages/runtime/src/templates/edge-shared/utils.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -308,3 +308,5 @@ export const redirectTrailingSlash = (url: URL, trailingSlash: boolean): Respons
308308
return Response.redirect(url, 308)
309309
}
310310
}
311+
312+
export const isFunction = (f: unknown) => Boolean(f) && typeof f === 'function'

packages/runtime/src/templates/edge/next-dev.js

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { NextRequest } from 'https://esm.sh/v91/next@12.2.5/deno/dist/server/web/spec-extension/request.js'
22
import { NextResponse } from 'https://esm.sh/v91/next@12.2.5/deno/dist/server/web/spec-extension/response.js'
33
import { fromFileUrl } from 'https://deno.land/std@0.151.0/path/mod.ts'
4-
import { buildResponse } from '../edge-shared/utils.ts'
4+
import { buildResponse, isFunction } from '../edge-shared/utils.ts'
55

66
globalThis.NFRequestContextMap ||= new Map()
77
globalThis.__dirname = fromFileUrl(new URL('./', import.meta.url)).slice(0, -1)
@@ -36,7 +36,17 @@ const handler = async (req, context) => {
3636
// We need to cache-bust the import because otherwise it will claim it
3737
// doesn't exist if the user creates it after the server starts
3838
const nextMiddleware = await import(`../../middleware.js#${++idx}`)
39-
middleware = nextMiddleware.middleware
39+
40+
// The middleware file can export a named `middleware` export or a `default` export
41+
middleware = isFunction(nextMiddleware.middleware)
42+
? nextMiddleware.middleware
43+
: isFunction(nextMiddleware.default)
44+
? nextMiddleware.default
45+
: undefined
46+
47+
if (!middleware) {
48+
throw new Error('The middleware must export a `middleware` or a `default` function')
49+
}
4050
} catch (importError) {
4151
if (importError.code === 'ERR_MODULE_NOT_FOUND' && importError.message.includes(`middleware.js`)) {
4252
// No middleware, so we silently return

packages/runtime/src/templates/getApiHandler.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,7 @@ const makeApiHandler = ({ conf, app, pageRoot, NextServer }: MakeApiHandlerParam
7070
return bridge
7171
}
7272

73-
const {
74-
clientContext: { custom: customContext },
75-
} = context
73+
const customContext = context.clientContext?.custom
7674

7775
// Scheduled functions don't have a URL, but we need to give one so Next knows the route to serve
7876
const url = event.rawUrl ? new URL(event.rawUrl) : new URL(path, process.env.URL || 'http://n')

0 commit comments

Comments
 (0)