From 89f10c8b20cf78026e2cbfcba0edccc4cc4f65cc Mon Sep 17 00:00:00 2001 From: Rob Stanford Date: Thu, 24 Nov 2022 14:50:57 +0000 Subject: [PATCH 1/5] fix: transform named capture groups for Golang --- packages/runtime/src/helpers/edge.ts | 4 ++-- packages/runtime/src/helpers/matchers.ts | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/runtime/src/helpers/edge.ts b/packages/runtime/src/helpers/edge.ts index de1dbe93f7..509f7abd6a 100644 --- a/packages/runtime/src/helpers/edge.ts +++ b/packages/runtime/src/helpers/edge.ts @@ -11,7 +11,7 @@ import type { RouteHas } from 'next/dist/lib/load-custom-routes' import { outdent } from 'outdent' import { getRequiredServerFiles, NextConfig } from './config' -import { makeLocaleOptional, stripLookahead } from './matchers' +import { makeLocaleOptional, stripLookahead, transformCaptureGroups } from './matchers' // This is the format as of next@12.2 interface EdgeFunctionDefinitionV1 { @@ -237,7 +237,7 @@ const writeEdgeFunction = async ({ // We add a defintion for each matching path return matchers.map((matcher) => { - const pattern = stripLookahead(matcher.regexp) + const pattern = transformCaptureGroups(stripLookahead(matcher.regexp)) return { function: name, pattern, name: edgeFunctionDefinition.name } }) } diff --git a/packages/runtime/src/helpers/matchers.ts b/packages/runtime/src/helpers/matchers.ts index 503f817b67..9649bf5bff 100644 --- a/packages/runtime/src/helpers/matchers.ts +++ b/packages/runtime/src/helpers/matchers.ts @@ -24,6 +24,9 @@ export const stripLookahead = (regex: string) => { } } +// The Go regexp lib has alternative syntax for named capture groups +export const transformCaptureGroups = (regex: string) => regex.replace('(?<', '(?P<') + const LOCALIZED_REGEX_PREFIX = '(?:\\/(_next\\/data\\/[^/]{1,}))?(?:\\/([^/.]{1,}))' const OPTIONAL_REGEX_PREFIX = '(?:\\/(_next\\/data\\/[^/]{1,}))?(?:\\/([^/.]{1,}))?' From b45803aef0f5bca4a01eeafefa61d95350d98873 Mon Sep 17 00:00:00 2001 From: Rob Stanford Date: Thu, 24 Nov 2022 14:55:57 +0000 Subject: [PATCH 2/5] chore: enable failing edge-render-getserversideprops test --- .../edge-render-getserversideprops/app/next.config.js | 0 .../edge-render-getserversideprops/app/pages/[id].js | 0 .../edge-render-getserversideprops/app/pages/index.js | 0 .../edge-render-getserversideprops/index.test.ts | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename test/e2e/{disabled-tests => tests}/edge-render-getserversideprops/app/next.config.js (100%) rename test/e2e/{disabled-tests => tests}/edge-render-getserversideprops/app/pages/[id].js (100%) rename test/e2e/{disabled-tests => tests}/edge-render-getserversideprops/app/pages/index.js (100%) rename test/e2e/{disabled-tests => tests}/edge-render-getserversideprops/index.test.ts (100%) diff --git a/test/e2e/disabled-tests/edge-render-getserversideprops/app/next.config.js b/test/e2e/tests/edge-render-getserversideprops/app/next.config.js similarity index 100% rename from test/e2e/disabled-tests/edge-render-getserversideprops/app/next.config.js rename to test/e2e/tests/edge-render-getserversideprops/app/next.config.js diff --git a/test/e2e/disabled-tests/edge-render-getserversideprops/app/pages/[id].js b/test/e2e/tests/edge-render-getserversideprops/app/pages/[id].js similarity index 100% rename from test/e2e/disabled-tests/edge-render-getserversideprops/app/pages/[id].js rename to test/e2e/tests/edge-render-getserversideprops/app/pages/[id].js diff --git a/test/e2e/disabled-tests/edge-render-getserversideprops/app/pages/index.js b/test/e2e/tests/edge-render-getserversideprops/app/pages/index.js similarity index 100% rename from test/e2e/disabled-tests/edge-render-getserversideprops/app/pages/index.js rename to test/e2e/tests/edge-render-getserversideprops/app/pages/index.js diff --git a/test/e2e/disabled-tests/edge-render-getserversideprops/index.test.ts b/test/e2e/tests/edge-render-getserversideprops/index.test.ts similarity index 100% rename from test/e2e/disabled-tests/edge-render-getserversideprops/index.test.ts rename to test/e2e/tests/edge-render-getserversideprops/index.test.ts From 450137d3fe4523738bef19ac1a9591e40d12bcae Mon Sep 17 00:00:00 2001 From: Rob Stanford Date: Fri, 25 Nov 2022 14:06:52 +0000 Subject: [PATCH 3/5] fix: transform named capture groups to simple capture groups Co-authored-by: Matt Kane --- packages/runtime/src/helpers/matchers.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/runtime/src/helpers/matchers.ts b/packages/runtime/src/helpers/matchers.ts index 9649bf5bff..3dc846ecdb 100644 --- a/packages/runtime/src/helpers/matchers.ts +++ b/packages/runtime/src/helpers/matchers.ts @@ -25,7 +25,7 @@ export const stripLookahead = (regex: string) => { } // The Go regexp lib has alternative syntax for named capture groups -export const transformCaptureGroups = (regex: string) => regex.replace('(?<', '(?P<') +export const transformCaptureGroups = (regex: string) => regex.replace(/\(\?\<\w+\>/, '(') const LOCALIZED_REGEX_PREFIX = '(?:\\/(_next\\/data\\/[^/]{1,}))?(?:\\/([^/.]{1,}))' const OPTIONAL_REGEX_PREFIX = '(?:\\/(_next\\/data\\/[^/]{1,}))?(?:\\/([^/.]{1,}))?' From 0bcecf82ac19d660592c488058678bacd6c307ee Mon Sep 17 00:00:00 2001 From: Rob Stanford Date: Wed, 18 Jan 2023 09:50:11 +0000 Subject: [PATCH 4/5] chore: remove unnecessary escape for linter --- packages/runtime/src/helpers/matchers.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/runtime/src/helpers/matchers.ts b/packages/runtime/src/helpers/matchers.ts index 3dc846ecdb..b6e9261b53 100644 --- a/packages/runtime/src/helpers/matchers.ts +++ b/packages/runtime/src/helpers/matchers.ts @@ -25,7 +25,7 @@ export const stripLookahead = (regex: string) => { } // The Go regexp lib has alternative syntax for named capture groups -export const transformCaptureGroups = (regex: string) => regex.replace(/\(\?\<\w+\>/, '(') +export const transformCaptureGroups = (regex: string) => regex.replace(/\(\?<\w+>/, '(') const LOCALIZED_REGEX_PREFIX = '(?:\\/(_next\\/data\\/[^/]{1,}))?(?:\\/([^/.]{1,}))' const OPTIONAL_REGEX_PREFIX = '(?:\\/(_next\\/data\\/[^/]{1,}))?(?:\\/([^/.]{1,}))?' From 99c06d238823b7edf38d8a6d5314fafd0691306e Mon Sep 17 00:00:00 2001 From: Rob Stanford Date: Wed, 18 Jan 2023 09:52:41 +0000 Subject: [PATCH 5/5] chore: fix prettier style complaint --- packages/runtime/src/helpers/edge.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/runtime/src/helpers/edge.ts b/packages/runtime/src/helpers/edge.ts index add9214f05..8c1c2a66d5 100644 --- a/packages/runtime/src/helpers/edge.ts +++ b/packages/runtime/src/helpers/edge.ts @@ -14,7 +14,6 @@ import { getRequiredServerFiles, NextConfig } from './config' import { makeLocaleOptional, stripLookahead, transformCaptureGroups } from './matchers' import { RoutesManifest } from './types' - // This is the format as of next@12.2 interface EdgeFunctionDefinitionV1 { env: string[]