@netlify/plugin-nextjs 4.30.1 → 4.30.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -9,6 +9,7 @@ const fs_extra_1 = require("fs-extra");
9
9
  const pathe_1 = require("pathe");
10
10
  const slash_1 = __importDefault(require("slash"));
11
11
  const constants_1 = require("../constants");
12
+ const utils_1 = require("./utils");
12
13
  const ROUTES_MANIFEST_FILE = 'routes-manifest.json';
13
14
  const defaultFailBuild = (message, { error }) => {
14
15
  throw new Error(`${message}\n${error && error.stack}`);
@@ -133,7 +134,8 @@ const generateCustomHeaders = (nextConfig, netlifyHeaders = []) => {
133
134
  const useLocale = ((_a = i18n === null || i18n === void 0 ? void 0 : i18n.locales) === null || _a === void 0 ? void 0 : _a.length) > 0 && localeEnabled !== false;
134
135
  if (useLocale) {
135
136
  const { locales } = i18n;
136
- const joinedLocales = locales.join('|');
137
+ // escape the locale strings to match the way Next writes the routes-manifest.json file
138
+ const joinedLocales = locales.map((locale) => (0, utils_1.escapeStringRegexp)(locale)).join('|');
137
139
  /**
138
140
  * converts e.g.
139
141
  * /:nextInternalLocale(en|fr)/some-path
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.writeEdgeFunctions = exports.writeRscDataEdgeFunction = exports.writeDevEdgeFunction = exports.cleanupEdgeFunctions = exports.loadPrerenderManifest = exports.loadAppPathRoutesManifest = exports.loadMiddlewareManifest = exports.isAppDirRoute = void 0;
6
+ exports.writeEdgeFunctions = exports.getEdgeFunctionPatternForPage = exports.writeRscDataEdgeFunction = exports.writeDevEdgeFunction = exports.cleanupEdgeFunctions = exports.loadPrerenderManifest = exports.loadAppPathRoutesManifest = exports.loadMiddlewareManifest = exports.isAppDirRoute = void 0;
7
7
  const fs_1 = require("fs");
8
8
  const path_1 = require("path");
9
9
  const chalk_1 = require("chalk");
@@ -212,12 +212,19 @@ const writeRscDataEdgeFunction = async ({ prerenderManifest, appPathRoutesManife
212
212
  exports.writeRscDataEdgeFunction = writeRscDataEdgeFunction;
213
213
  const getEdgeFunctionPatternForPage = ({ edgeFunctionDefinition, pageRegexMap, appPathRoutesManifest, }) => {
214
214
  // We don't just use the matcher from the edge function definition, because it doesn't handle trailing slashes
215
- var _a;
215
+ var _a, _b;
216
216
  // appDir functions have a name that _isn't_ the route name, but rather the route with `/page` appended
217
217
  const regexp = pageRegexMap.get((_a = appPathRoutesManifest === null || appPathRoutesManifest === void 0 ? void 0 : appPathRoutesManifest[edgeFunctionDefinition.page]) !== null && _a !== void 0 ? _a : edgeFunctionDefinition.page);
218
+ if (regexp) {
219
+ return regexp;
220
+ }
221
+ if ('regexp' in edgeFunctionDefinition) {
222
+ return edgeFunctionDefinition.regexp.replace(/([^/])\$$/, '$1/?$');
223
+ }
218
224
  // If we need to fall back to the matcher, we need to add an optional trailing slash
219
- return regexp !== null && regexp !== void 0 ? regexp : edgeFunctionDefinition.matchers[0].regexp.replace(/([^/])\$$/, '$1/?$');
225
+ return (_b = edgeFunctionDefinition.matchers) === null || _b === void 0 ? void 0 : _b[0].regexp.replace(/([^/])\$$/, '$1/?$');
220
226
  };
227
+ exports.getEdgeFunctionPatternForPage = getEdgeFunctionPatternForPage;
221
228
  /**
222
229
  * Writes Edge Functions for the Next middleware
223
230
  */
@@ -298,7 +305,7 @@ const writeEdgeFunctions = async ({ netlifyConfig, routesManifest, }) => {
298
305
  netlifyConfig,
299
306
  functionName,
300
307
  });
301
- const pattern = getEdgeFunctionPatternForPage({
308
+ const pattern = (0, exports.getEdgeFunctionPatternForPage)({
302
309
  edgeFunctionDefinition,
303
310
  pageRegexMap,
304
311
  appPathRoutesManifest,
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getRemotePatterns = exports.isBundleSizeCheckDisabled = exports.getCustomImageResponseHeaders = exports.isNextAuthInstalled = exports.findModuleFromBase = exports.shouldSkip = exports.getPreviewRewrites = exports.getApiRewrites = exports.redirectsForNextRouteWithData = exports.redirectsForNext404Route = exports.redirectsForNextRoute = exports.is404Route = exports.isApiRoute = exports.localizeRoute = exports.routeToDataRoute = exports.generateNetlifyRoutes = exports.toNetlifyRoute = exports.getFunctionNameForPage = void 0;
6
+ exports.escapeStringRegexp = exports.getRemotePatterns = exports.isBundleSizeCheckDisabled = exports.getCustomImageResponseHeaders = exports.isNextAuthInstalled = exports.findModuleFromBase = exports.shouldSkip = exports.getPreviewRewrites = exports.getApiRewrites = exports.redirectsForNextRouteWithData = exports.redirectsForNext404Route = exports.redirectsForNextRoute = exports.is404Route = exports.isApiRoute = exports.localizeRoute = exports.routeToDataRoute = exports.generateNetlifyRoutes = exports.toNetlifyRoute = exports.getFunctionNameForPage = void 0;
7
7
  const globby_1 = __importDefault(require("globby"));
8
8
  const pathe_1 = require("pathe");
9
9
  const constants_1 = require("../constants");
@@ -207,3 +207,8 @@ const getRemotePatterns = (experimental, images) => {
207
207
  return [];
208
208
  };
209
209
  exports.getRemotePatterns = getRemotePatterns;
210
+ // Taken from next/src/shared/lib/escape-regexp.ts
211
+ const reHasRegExp = /[|\\{}()[\]^$+*?.-]/;
212
+ const reReplaceRegExp = /[|\\{}()[\]^$+*?.-]/g;
213
+ const escapeStringRegexp = (str) => (reHasRegExp.test(str) ? str.replace(reReplaceRegExp, '\\$&') : str);
214
+ exports.escapeStringRegexp = escapeStringRegexp;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@netlify/plugin-nextjs",
3
- "version": "4.30.1",
3
+ "version": "4.30.2",
4
4
  "description": "Run Next.js seamlessly on Netlify",
5
5
  "main": "index.js",
6
6
  "files": [
@@ -36,7 +36,7 @@
36
36
  },
37
37
  "devDependencies": {
38
38
  "@delucis/if-env": "^1.1.2",
39
- "@netlify/build": "^29.5.1",
39
+ "@netlify/build": "^29.5.2",
40
40
  "@types/fs-extra": "^9.0.13",
41
41
  "@types/jest": "^27.4.1",
42
42
  "@types/merge-stream": "^1.1.2",