next-intl 4.9.2 → 4.10.1

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.
@@ -54,7 +54,10 @@ function getAlternateLinksHeaderValue({
54
54
  // Important: Use `normalizedUrl` here, as `url` potentially uses
55
55
  // a `basePath` that automatically gets applied to the pathname
56
56
  url.pathname = getLocalizedPathname(normalizedUrl.pathname, locale);
57
- if (locale !== domainConfig.defaultLocale || routing.localePrefix.mode === 'always') {
57
+
58
+ // Use domain-specific localePrefix mode if available
59
+ const domainMode = domainConfig.localePrefix || routing.localePrefix.mode;
60
+ if (locale !== domainConfig.defaultLocale || domainMode === 'always') {
58
61
  url.pathname = prefixPathname(url.pathname);
59
62
  }
60
63
  return getAlternateEntry(url, locale);
@@ -54,23 +54,31 @@ function createMiddleware(routing) {
54
54
  }
55
55
  function redirect(url, redirectDomain) {
56
56
  const urlObj = new URL(url, request.url);
57
+ const forwardedHost = request.headers.get('x-forwarded-host');
57
58
  urlObj.pathname = normalizeTrailingSlash(urlObj.pathname);
58
59
  if (domainsConfig.length > 0 && !redirectDomain && domain) {
59
60
  const bestMatchingDomain = getBestMatchingDomain(domain, locale, domainsConfig);
60
61
  if (bestMatchingDomain) {
61
62
  redirectDomain = bestMatchingDomain.domain;
62
- if (bestMatchingDomain.defaultLocale === locale && resolvedRouting.localePrefix.mode === 'as-needed') {
63
+ const redirectDomainMode = bestMatchingDomain.localePrefix || resolvedRouting.localePrefix.mode;
64
+ if (bestMatchingDomain.defaultLocale === locale && redirectDomainMode === 'as-needed') {
63
65
  urlObj.pathname = getNormalizedPathname(urlObj.pathname, resolvedRouting.locales, resolvedRouting.localePrefix);
64
66
  }
65
67
  }
66
68
  }
67
- if (redirectDomain) {
68
- urlObj.host = redirectDomain;
69
- if (request.headers.get('x-forwarded-host')) {
70
- urlObj.protocol = request.headers.get('x-forwarded-proto') ?? request.nextUrl.protocol;
71
- const redirectDomainPort = redirectDomain.split(':')[1];
72
- urlObj.port = redirectDomainPort ?? request.headers.get('x-forwarded-port') ?? '';
73
- }
69
+
70
+ // Priority for redirect origins:
71
+ // 1) Explicit domain from `redirectDomain`
72
+ // 2) Reverse proxy host from `x-forwarded-host`
73
+ // 3) Fallback to `request.url`
74
+ const redirectHost = redirectDomain ?? forwardedHost;
75
+ if (redirectHost) {
76
+ urlObj.host = redirectHost;
77
+ }
78
+ if (forwardedHost) {
79
+ urlObj.protocol = request.headers.get('x-forwarded-proto') ?? request.nextUrl.protocol;
80
+ const redirectHostPort = redirectHost?.split(':')[1];
81
+ urlObj.port = redirectHostPort ?? request.headers.get('x-forwarded-port') ?? '';
74
82
  }
75
83
  if (request.nextUrl.basePath) {
76
84
  urlObj.pathname = applyBasePath(urlObj.pathname, request.nextUrl.basePath);
@@ -81,7 +89,10 @@ function createMiddleware(routing) {
81
89
  const unprefixedExternalPathname = getNormalizedPathname(externalPathname, resolvedRouting.locales, resolvedRouting.localePrefix);
82
90
  const pathnameMatch = getPathnameMatch(externalPathname, resolvedRouting.locales, resolvedRouting.localePrefix, domain);
83
91
  const hasLocalePrefix = pathnameMatch != null;
84
- const isUnprefixedRouting = resolvedRouting.localePrefix.mode === 'never' || hasMatchedDefaultLocale && resolvedRouting.localePrefix.mode === 'as-needed';
92
+
93
+ // Use domain-specific localePrefix mode if available, otherwise use global mode
94
+ const effectiveLocalePrefixMode = domain?.localePrefix || resolvedRouting.localePrefix.mode;
95
+ const isUnprefixedRouting = effectiveLocalePrefixMode === 'never' || hasMatchedDefaultLocale && effectiveLocalePrefixMode === 'as-needed';
85
96
  let response;
86
97
  let internalTemplateName;
87
98
  let hasRedirected;
@@ -122,7 +133,7 @@ function createMiddleware(routing) {
122
133
  const internalHref = formatPathname(unprefixedInternalPathname, getLocaleAsPrefix(locale), request.nextUrl.search);
123
134
  if (hasLocalePrefix) {
124
135
  const externalHref = formatPathname(unprefixedExternalPathname, pathnameMatch.prefix, request.nextUrl.search);
125
- if (resolvedRouting.localePrefix.mode === 'never') {
136
+ if (effectiveLocalePrefixMode === 'never') {
126
137
  response = redirect(formatPathname(unprefixedExternalPathname, undefined, request.nextUrl.search));
127
138
  } else if (pathnameMatch.exact) {
128
139
  if (hasMatchedDefaultLocale && isUnprefixedRouting) {
@@ -152,7 +163,7 @@ function createMiddleware(routing) {
152
163
  }
153
164
  }
154
165
  syncCookie(request, response, locale, resolvedRouting, domain);
155
- if (!hasRedirected && resolvedRouting.localePrefix.mode !== 'never' && resolvedRouting.alternateLinks && resolvedRouting.locales.length > 1) {
166
+ if (!hasRedirected && effectiveLocalePrefixMode !== 'never' && resolvedRouting.alternateLinks && resolvedRouting.locales.length > 1) {
156
167
  response.headers.set('Link', getAlternateLinksHeaderValue({
157
168
  routing: resolvedRouting,
158
169
  internalTemplateName,
@@ -139,19 +139,22 @@ function getBasePath(pathname, windowPathname = window.location.pathname) {
139
139
  }
140
140
  function applyPathnamePrefix(pathname, locale, routing, force) {
141
141
  const {
142
- mode
142
+ mode: routingMode
143
143
  } = routing.localePrefix;
144
144
  let shouldPrefix;
145
145
  if (force !== undefined) {
146
146
  shouldPrefix = force;
147
147
  } else if (isLocalizableHref(pathname)) {
148
+ // Since locales are unique per domain, there should be
149
+ // only one domain that contains the locale
150
+ const domain = routing.domains?.find(cur => cur.locales.includes(locale));
151
+
152
+ // Domains can override the mode
153
+ const mode = domain?.localePrefix || routingMode;
148
154
  if (mode === 'always') {
149
155
  shouldPrefix = true;
150
156
  } else if (mode === 'as-needed') {
151
- shouldPrefix = routing.domains ?
152
- // Since locales are unique per domain, any locale that is a
153
- // default locale of a domain doesn't require a prefix
154
- !routing.domains.some(cur => cur.defaultLocale === locale) : locale !== routing.defaultLocale;
157
+ shouldPrefix = domain ? locale !== domain.defaultLocale : locale !== routing.defaultLocale;
155
158
  }
156
159
  }
157
160
  return shouldPrefix ? prefixPathname(getLocalePrefix(locale, routing.localePrefix), pathname) : pathname;
@@ -1 +1 @@
1
- import{normalizeTrailingSlash as e}from"../shared/utils.js";import{getHost as a,getNormalizedPathname as t,getLocalePrefixes as n,isLocaleSupportedOnDomain as o,applyBasePath as r,formatTemplatePathname as l}from"./utils.js";function s({internalTemplateName:s,localizedPathnames:m,request:i,resolvedLocale:p,routing:c}){const f=i.nextUrl.clone(),h=a(i.headers);function u(a,t){return a.pathname=e(a.pathname),i.nextUrl.basePath&&((a=new URL(a)).pathname=r(a.pathname,i.nextUrl.basePath)),`<${a.toString()}>; rel="alternate"; hreflang="${t}"`}function d(e,a){if(m&&"object"==typeof m){const t=m[p];return l(e,t??s,m[a]??s)}return e}h&&(f.port="",f.host=h),f.protocol=i.headers.get("x-forwarded-proto")??f.protocol,f.pathname=t(f.pathname,c.locales,c.localePrefix);const x=n(c.locales,c.localePrefix,!1).flatMap((([e,a])=>{function t(e){return"/"===e?a:a+e}let n;if(c.domains){return c.domains.filter((a=>o(e,a))).map((a=>(n=new URL(f),n.port="",n.host=a.domain,n.pathname=d(f.pathname,e),e===a.defaultLocale&&"always"!==c.localePrefix.mode||(n.pathname=t(n.pathname)),u(n,e))))}{let a;a=m&&"object"==typeof m?d(f.pathname,e):f.pathname,e===c.defaultLocale&&"always"!==c.localePrefix.mode||(a=t(a)),n=new URL(a,f)}return u(n,e)}));if(!c.domains||0===c.domains.length){const e=d(f.pathname,c.defaultLocale);if(e){const a=new URL(e,f);x.push(u(a,"x-default"))}}return x.join(", ")}export{s as default};
1
+ import{normalizeTrailingSlash as e}from"../shared/utils.js";import{getHost as a,getNormalizedPathname as t,getLocalePrefixes as n,isLocaleSupportedOnDomain as o,applyBasePath as r,formatTemplatePathname as l}from"./utils.js";function s({internalTemplateName:s,localizedPathnames:i,request:m,resolvedLocale:c,routing:p}){const f=m.nextUrl.clone(),h=a(m.headers);function u(a,t){return a.pathname=e(a.pathname),m.nextUrl.basePath&&((a=new URL(a)).pathname=r(a.pathname,m.nextUrl.basePath)),`<${a.toString()}>; rel="alternate"; hreflang="${t}"`}function d(e,a){if(i&&"object"==typeof i){const t=i[c];return l(e,t??s,i[a]??s)}return e}h&&(f.port="",f.host=h),f.protocol=m.headers.get("x-forwarded-proto")??f.protocol,f.pathname=t(f.pathname,p.locales,p.localePrefix);const x=n(p.locales,p.localePrefix,!1).flatMap((([e,a])=>{function t(e){return"/"===e?a:a+e}let n;if(p.domains){return p.domains.filter((a=>o(e,a))).map((a=>{n=new URL(f),n.port="",n.host=a.domain,n.pathname=d(f.pathname,e);const o=a.localePrefix||p.localePrefix.mode;return e===a.defaultLocale&&"always"!==o||(n.pathname=t(n.pathname)),u(n,e)}))}{let a;a=i&&"object"==typeof i?d(f.pathname,e):f.pathname,e===p.defaultLocale&&"always"!==p.localePrefix.mode||(a=t(a)),n=new URL(a,f)}return u(n,e)}));if(!p.domains||0===p.domains.length){const e=d(f.pathname,p.defaultLocale);if(e){const a=new URL(e,f);x.push(u(a,"x-default"))}}return x.join(", ")}export{s as default};
@@ -1 +1 @@
1
- import{NextResponse as e}from"next/server";import{receiveRoutingConfig as t}from"../routing/config.js";import{HEADER_LOCALE_NAME as r}from"../shared/constants.js";import{matchesPathname as a,normalizeTrailingSlash as o,getLocalePrefix as l,getLocalizedTemplate as n}from"../shared/utils.js";import s from"./getAlternateLinksHeaderValue.js";import i from"./resolveLocale.js";import c from"./syncCookie.js";import{sanitizePathname as d,isLocaleSupportedOnDomain as f,getNormalizedPathname as m,getPathnameMatch as h,getInternalTemplate as x,formatTemplatePathname as p,formatPathname as u,getBestMatchingDomain as U,applyBasePath as P,getLocaleAsPrefix as g}from"./utils.js";function v(v){const L=t(v);return function(t){let v;try{v=decodeURI(t.nextUrl.pathname)}catch{return e.next()}const j=d(v),{domain:w,locale:k}=i(L,t.headers,t.cookies,j),b=w?w.defaultLocale===k:k===L.defaultLocale,q=L.domains?.filter((e=>f(k,e)))||[],R=null!=L.domains&&!w;function y(a){const l=new URL(a,t.url);t.nextUrl.basePath&&(l.pathname=P(l.pathname,t.nextUrl.basePath));const n=new Headers(t.headers);n.set(r,k);return o(t.nextUrl.pathname)!==o(l.pathname)?e.rewrite(l,{request:{headers:n}}):e.next({request:{headers:n}})}function H(r,a){const l=new URL(r,t.url);if(l.pathname=o(l.pathname),q.length>0&&!a&&w){const e=U(w,k,q);e&&(a=e.domain,e.defaultLocale===k&&"as-needed"===L.localePrefix.mode&&(l.pathname=m(l.pathname,L.locales,L.localePrefix)))}if(a&&(l.host=a,t.headers.get("x-forwarded-host"))){l.protocol=t.headers.get("x-forwarded-proto")??t.nextUrl.protocol;const e=a.split(":")[1];l.port=e??t.headers.get("x-forwarded-port")??""}return t.nextUrl.basePath&&(l.pathname=P(l.pathname,t.nextUrl.basePath)),T=!0,e.redirect(l.toString())}const z=m(j,L.locales,L.localePrefix),A=h(j,L.locales,L.localePrefix,w),C=null!=A,I="never"===L.localePrefix.mode||b&&"as-needed"===L.localePrefix.mode;let N,S,T,V=z;const B=L.pathnames;if(B){let e;if([e,S]=x(B,z,k),S){const r=B[S],o=n(r,k,S);if(a(o,z))V=p(z,o,S);else{let a;a=e?n(r,e,S):S;const s=I?void 0:l(k,L.localePrefix),i=p(z,a,o);N=H(u(i,s,t.nextUrl.search))}}}if(!N)if("/"!==V||C){const e=u(V,g(k),t.nextUrl.search);if(C){const r=u(z,A.prefix,t.nextUrl.search);if("never"===L.localePrefix.mode)N=H(u(z,void 0,t.nextUrl.search));else if(A.exact)if(b&&I)N=H(u(z,void 0,t.nextUrl.search));else if(L.domains){const t=U(w,A.locale,q);N=w?.domain===t?.domain||R?y(e):H(r,t?.domain)}else N=y(e);else N=H(r)}else N=I?y(e):H(u(z,l(k,L.localePrefix),t.nextUrl.search))}else N=I?y(u(V,g(k),t.nextUrl.search)):H(u(z,l(k,L.localePrefix),t.nextUrl.search));return c(t,N,k,L,w),!T&&"never"!==L.localePrefix.mode&&L.alternateLinks&&L.locales.length>1&&N.headers.set("Link",s({routing:L,internalTemplateName:S,localizedPathnames:null!=S&&B?B[S]:void 0,request:t,resolvedLocale:k})),N}}export{v as default};
1
+ import{NextResponse as e}from"next/server";import{receiveRoutingConfig as t}from"../routing/config.js";import{HEADER_LOCALE_NAME as r}from"../shared/constants.js";import{matchesPathname as a,normalizeTrailingSlash as o,getLocalePrefix as n,getLocalizedTemplate as l}from"../shared/utils.js";import s from"./getAlternateLinksHeaderValue.js";import i from"./resolveLocale.js";import c from"./syncCookie.js";import{sanitizePathname as d,isLocaleSupportedOnDomain as f,getNormalizedPathname as m,getPathnameMatch as h,getInternalTemplate as x,formatTemplatePathname as p,formatPathname as u,getBestMatchingDomain as U,applyBasePath as P,getLocaleAsPrefix as g}from"./utils.js";function v(v){const L=t(v);return function(t){let v;try{v=decodeURI(t.nextUrl.pathname)}catch{return e.next()}const j=d(v),{domain:w,locale:k}=i(L,t.headers,t.cookies,j),b=w?w.defaultLocale===k:k===L.defaultLocale,q=L.domains?.filter((e=>f(k,e)))||[],R=null!=L.domains&&!w;function y(a){const n=new URL(a,t.url);t.nextUrl.basePath&&(n.pathname=P(n.pathname,t.nextUrl.basePath));const l=new Headers(t.headers);l.set(r,k);return o(t.nextUrl.pathname)!==o(n.pathname)?e.rewrite(n,{request:{headers:l}}):e.next({request:{headers:l}})}function H(r,a){const n=new URL(r,t.url),l=t.headers.get("x-forwarded-host");if(n.pathname=o(n.pathname),q.length>0&&!a&&w){const e=U(w,k,q);if(e){a=e.domain;const t=e.localePrefix||L.localePrefix.mode;e.defaultLocale===k&&"as-needed"===t&&(n.pathname=m(n.pathname,L.locales,L.localePrefix))}}const s=a??l;if(s&&(n.host=s),l){n.protocol=t.headers.get("x-forwarded-proto")??t.nextUrl.protocol;const e=s?.split(":")[1];n.port=e??t.headers.get("x-forwarded-port")??""}return t.nextUrl.basePath&&(n.pathname=P(n.pathname,t.nextUrl.basePath)),V=!0,e.redirect(n.toString())}const z=m(j,L.locales,L.localePrefix),A=h(j,L.locales,L.localePrefix,w),C=null!=A,I=w?.localePrefix||L.localePrefix.mode,N="never"===I||b&&"as-needed"===I;let S,T,V,B=z;const D=L.pathnames;if(D){let e;if([e,T]=x(D,z,k),T){const r=D[T],o=l(r,k,T);if(a(o,z))B=p(z,o,T);else{let a;a=e?l(r,e,T):T;const s=N?void 0:n(k,L.localePrefix),i=p(z,a,o);S=H(u(i,s,t.nextUrl.search))}}}if(!S)if("/"!==B||C){const e=u(B,g(k),t.nextUrl.search);if(C){const r=u(z,A.prefix,t.nextUrl.search);if("never"===I)S=H(u(z,void 0,t.nextUrl.search));else if(A.exact)if(b&&N)S=H(u(z,void 0,t.nextUrl.search));else if(L.domains){const t=U(w,A.locale,q);S=w?.domain===t?.domain||R?y(e):H(r,t?.domain)}else S=y(e);else S=H(r)}else S=N?y(e):H(u(z,n(k,L.localePrefix),t.nextUrl.search))}else S=N?y(u(B,g(k),t.nextUrl.search)):H(u(z,n(k,L.localePrefix),t.nextUrl.search));return c(t,S,k,L,w),!V&&"never"!==I&&L.alternateLinks&&L.locales.length>1&&S.headers.set("Link",s({routing:L,internalTemplateName:T,localizedPathnames:null!=T&&D?D[T]:void 0,request:t,resolvedLocale:k})),S}}export{v as default};
@@ -1 +1 @@
1
- import{getSortedPathnames as e,matchesPathname as n,isLocalizableHref as t,prefixPathname as r,normalizeTrailingSlash as o,getLocalizedTemplate as a,getLocalePrefix as i}from"../../shared/utils.js";function c(e){return"string"==typeof e?{pathname:e}:e}function s(e){function n(e){return String(e)}const t=new URLSearchParams;for(const[r,o]of Object.entries(e))Array.isArray(o)?o.forEach((e=>{t.append(r,n(e))})):t.set(r,n(o));return"?"+t.toString()}function f({pathname:e,locale:n,params:t,pathnames:r,query:i}){function c(e){const c=r[e];let f;if(c){const r=a(c,n,e);f=r,t&&Object.entries(t).forEach((([e,n])=>{let t,r;Array.isArray(n)?(t=`(\\[)?\\[...${e}\\](\\])?`,r=n.map((e=>String(e))).join("/")):(t=`\\[${e}\\]`,r=String(n)),f=f.replace(new RegExp(t,"g"),r)})),f=f.replace(/\[\[\.\.\..+\]\]/g,""),f=function(e){return new URL(e,"http://l").pathname}(f)}else f=e;return f=o(f),i&&(f+=s(i)),f}if("string"==typeof e)return c(e);{const{pathname:n,...t}=e;return{...t,pathname:c(n)}}}function u(t,r,o){const i=e(Object.keys(o)),c=decodeURI(r);for(const e of i){const r=o[e];if("string"==typeof r){if(n(r,c))return e}else if(n(a(r,t,e),c))return e}return r}function l(e,n=window.location.pathname){return"/"===e?n:n.replace(e,"")}function p(e,n,o,a){const{mode:c}=o.localePrefix;let s;return void 0!==a?s=a:t(e)&&("always"===c?s=!0:"as-needed"===c&&(s=o.domains?!o.domains.some((e=>e.defaultLocale===n)):n!==o.defaultLocale)),s?r(i(n,o.localePrefix),e):e}export{p as applyPathnamePrefix,f as compileLocalizedPathname,l as getBasePath,u as getRoute,c as normalizeNameOrNameWithParams,s as serializeSearchParams};
1
+ import{getSortedPathnames as e,matchesPathname as n,isLocalizableHref as t,prefixPathname as r,normalizeTrailingSlash as o,getLocalizedTemplate as a,getLocalePrefix as i}from"../../shared/utils.js";function c(e){return"string"==typeof e?{pathname:e}:e}function s(e){function n(e){return String(e)}const t=new URLSearchParams;for(const[r,o]of Object.entries(e))Array.isArray(o)?o.forEach((e=>{t.append(r,n(e))})):t.set(r,n(o));return"?"+t.toString()}function f({pathname:e,locale:n,params:t,pathnames:r,query:i}){function c(e){const c=r[e];let f;if(c){const r=a(c,n,e);f=r,t&&Object.entries(t).forEach((([e,n])=>{let t,r;Array.isArray(n)?(t=`(\\[)?\\[...${e}\\](\\])?`,r=n.map((e=>String(e))).join("/")):(t=`\\[${e}\\]`,r=String(n)),f=f.replace(new RegExp(t,"g"),r)})),f=f.replace(/\[\[\.\.\..+\]\]/g,""),f=function(e){return new URL(e,"http://l").pathname}(f)}else f=e;return f=o(f),i&&(f+=s(i)),f}if("string"==typeof e)return c(e);{const{pathname:n,...t}=e;return{...t,pathname:c(n)}}}function l(t,r,o){const i=e(Object.keys(o)),c=decodeURI(r);for(const e of i){const r=o[e];if("string"==typeof r){if(n(r,c))return e}else if(n(a(r,t,e),c))return e}return r}function u(e,n=window.location.pathname){return"/"===e?n:n.replace(e,"")}function p(e,n,o,a){const{mode:c}=o.localePrefix;let s;if(void 0!==a)s=a;else if(t(e)){const e=o.domains?.find((e=>e.locales.includes(n))),t=e?.localePrefix||c;"always"===t?s=!0:"as-needed"===t&&(s=e?n!==e.defaultLocale:n!==o.defaultLocale)}return s?r(i(n,o.localePrefix),e):e}export{p as applyPathnamePrefix,f as compileLocalizedPathname,u as getBasePath,l as getRoute,c as normalizeNameOrNameWithParams,s as serializeSearchParams};
@@ -14,6 +14,7 @@ export type LocalePrefixConfigVerbose<AppLocales extends Locales, AppLocalePrefi
14
14
  export type LocalePrefix<AppLocales extends Locales = [], AppLocalePrefixMode extends LocalePrefixMode = 'always'> = AppLocalePrefixMode | LocalePrefixConfigVerbose<AppLocales, AppLocalePrefixMode>;
15
15
  export type Pathnames<AppLocales extends Locales> = Record<Pathname, Partial<Record<AppLocales[number], Pathname>> | Pathname>;
16
16
  export type DomainConfig<AppLocales extends Locales> = {
17
+ localePrefix?: LocalePrefixMode;
17
18
  defaultLocale: AppLocales[number];
18
19
  /** The domain name (e.g. "example.com", "www.example.com" or "fr.example.com"). Note that the `x-forwarded-host` or alternatively the `host` header will be used to determine the requested domain. */
19
20
  domain: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "next-intl",
3
- "version": "4.9.2",
3
+ "version": "4.10.1",
4
4
  "sideEffects": false,
5
5
  "author": "Jan Amann <jan@amann.work>",
6
6
  "funding": [
@@ -127,11 +127,11 @@
127
127
  "@formatjs/intl-localematcher": "^0.8.1",
128
128
  "@parcel/watcher": "^2.4.1",
129
129
  "@swc/core": "^1.15.2",
130
- "icu-minify": "^4.9.2",
130
+ "icu-minify": "^4.10.1",
131
131
  "negotiator": "^1.0.0",
132
- "next-intl-swc-plugin-extractor": "^4.9.2",
132
+ "next-intl-swc-plugin-extractor": "^4.10.1",
133
133
  "po-parser": "^2.1.1",
134
- "use-intl": "^4.9.2"
134
+ "use-intl": "^4.10.1"
135
135
  },
136
136
  "peerDependencies": {
137
137
  "next": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0",
@@ -142,5 +142,5 @@
142
142
  "optional": true
143
143
  }
144
144
  },
145
- "gitHead": "e1b18258075017216165735212568c8f795e1660"
145
+ "gitHead": "11d9ce823f9901041eaeb620859607aadf49ef3f"
146
146
  }