@websolutespa/bom-mixer-models 3.0.4 → 3.0.5

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @websolutespa/bom-mixer-models
2
2
 
3
+ ## 3.0.5
4
+
5
+ ### Patch Changes
6
+
7
+ - Modified: RouteInterceptor autoDetection temporary redirect
8
+
3
9
  ## 3.0.4
4
10
 
5
11
  ### Patch Changes
@@ -1,6 +1,6 @@
1
1
  import { getPublicUrl, resolveHref } from "../page-BLbZbnWg.js";
2
2
  import { resolveRoute } from "../route-k0W3AKyo.js";
3
- import { asEquatable, defaultLocale, defaultMarket, getHost, isDevelopment } from "@websolutespa/bom-core";
3
+ import { asEquatable, defaultLocale, defaultMarket, getHost } from "@websolutespa/bom-core";
4
4
  import { StoreStrategy, localApiGet, localApiPost, storeApiGet, storeApiPost, storeStrategy } from "@websolutespa/bom-mixer-store";
5
5
  import { NextResponse } from "next/server";
6
6
 
@@ -90,8 +90,7 @@ async function routeInterceptor(request, next) {
90
90
  if (redirectUrl) {
91
91
  const resolvedUrl = resolveHref(redirectUrl);
92
92
  const search = request.nextUrl.search;
93
- const isTemporaryRedirect = isDevelopment || search;
94
- const response$1 = NextResponse.redirect(resolvedUrl + search, { status: isTemporaryRedirect ? 303 : 301 });
93
+ const response$1 = NextResponse.redirect(resolvedUrl + search, { status: 307 });
95
94
  response$1.cookies.set({
96
95
  expires: new Date(Date.now() + 1440 * 60 * 1e3),
97
96
  httpOnly: true,
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.js","names":["request: NextRequest","defaultLocale?: string","defaultLocale","defaultMarket?: string","defaultMarket","markets: IMarket[]","routes: IRoute[]","next: NextFetchEvent","route: string | undefined","countries: string[]","x","market","route: IRoute | undefined","response","error: any","error","hrefBeforeRedirect: string | null"],"sources":["../../src/route/route.interceptor.ts"],"sourcesContent":["import { IMarket, IRoute, asEquatable, defaultLocale, defaultMarket, getHost, isDevelopment } from '@websolutespa/bom-core';\r\nimport { StoreStrategy, localApiGet, localApiPost, storeApiGet, storeApiPost, storeStrategy } from '@websolutespa/bom-mixer-store';\r\nimport { NextFetchEvent, NextRequest, NextResponse } from 'next/server';\r\nimport { getPublicUrl, resolveHref } from '../page/page';\r\nimport { resolveRoute } from './route';\r\n\r\nexport async function detectLocale(request: NextRequest, defaultLocale?: string) {\r\n const acceptLanguage = request.headers.get('accept-language')?.split(',')[0];\r\n const detectedLocale = request.cookies.get('NEXT_LOCALE')?.value || acceptLanguage || defaultLocale || process.env.DEFAULT_LOCALE;\r\n return detectedLocale as string;\r\n}\r\n\r\nexport async function detectCountry(request: NextRequest, defaultMarket?: string) {\r\n let ip = request.headers.get('x-forwarded-for') || request.headers.get('x-real-ip');\r\n if (ip) {\r\n ip = ip.split(',')[0];\r\n }\r\n const isValidIp = ip?.match(/^(\\d+?)\\.(\\d+?)\\.(\\d+?)\\.(\\d+?)$/);\r\n let detectedCountry = '';\r\n try {\r\n const token = process.env.IPINFO_TOKEN;\r\n if (token) {\r\n const url = isValidIp ?\r\n `https://api.ipinfo.io/lite/${ip}/country_code?token=${token}` :\r\n `https://api.ipinfo.io/lite/me/country_code?token=${token}`;\r\n const response = await fetch(url);\r\n if (response.ok) {\r\n const data = await response.text();\r\n detectedCountry = data.toLowerCase();\r\n }\r\n } else {\r\n const url = `https://geoip.websolute.it/Ip2Location/get_info.aspx?ipaddress=${isValidIp ? ip : ''}`;\r\n const response = await fetch(url);\r\n if (response.ok) {\r\n const xml = await response.text();\r\n detectedCountry = (\r\n ((xml.split('<CountryCode><![CDATA[')[1] || '').split(']]></CountryCode>')[0] || '')\r\n ).replace('-', '').toLowerCase();\r\n // console.log('detectedCountry', detectedCountry);\r\n }\r\n }\r\n // console.log('routeInterceptor.detectCountry', detectedCountry);\r\n return detectedCountry || defaultMarket || process.env.DEFAULT_MARKET;\r\n } catch (error) {\r\n console.log('routeInterceptor.detectCountry.error', error);\r\n }\r\n return (defaultMarket || process.env.DEFAULT_MARKET) as string;\r\n}\r\n\r\nasync function getMarkets() {\r\n const apiGet = storeStrategy === StoreStrategy.DecoratedApi ? localApiGet : storeApiGet;\r\n const markets: IMarket[] = await apiGet('/market?pagination=false');\r\n return markets;\r\n}\r\n\r\nasync function getRootRoutes() {\r\n const apiGet = storeStrategy === StoreStrategy.DecoratedApi ? localApiGet : storeApiGet;\r\n const routes: IRoute[] = await apiGet('/route?where[isRoot][equals]=true');\r\n return routes;\r\n}\r\n\r\nexport async function routeAutoDetection(request: NextRequest, next: NextFetchEvent): Promise<string | undefined> {\r\n let route: string | undefined;\r\n const url = request.nextUrl;\r\n if (url.pathname === '/') {\r\n const cookie = request.cookies.get('detectedRoute');\r\n if (cookie?.value) {\r\n return cookie.value;\r\n }\r\n // console.log('routeInterceptor.routeAutoDetection', url.pathname);\r\n const rootRoutes = await getRootRoutes();\r\n // console.log('routeInterceptor.routeAutoDetection.rootRoutes', rootRoutes);\r\n const defaultRoute = rootRoutes.find(x => x.id === '/');\r\n // console.log('routeInterceptor.routeAutoDetection.defaultRoute', defaultRoute);\r\n if (defaultRoute) {\r\n return;\r\n }\r\n const markets = await getMarkets();\r\n // console.log('routeInterceptor.routeAutoDetection.markets', markets);\r\n const market = markets.find(x => x.isDefault) || markets.find(x => x.id === defaultMarket) || markets[0];\r\n // console.log('routeInterceptor.routeAutoDetection.market', market);\r\n const detectedCountry = await detectCountry(request, market.id);\r\n // console.log('routeInterceptor.routeAutoDetection.detectedCountry', detectedCountry);\r\n const detectedMarket = detectedCountry ? (\r\n markets.filter(x => Array.isArray(x.countries)).find(x => {\r\n const countries: string[] = (x.countries || []).map(x => typeof x === 'string' ? x : x.id as string);\r\n return countries.includes(detectedCountry);\r\n }) ||\r\n markets.find(x => !Array.isArray(x.countries))\r\n ) : undefined;\r\n // console.log('routeInterceptor.routeAutoDetection.detectedMarket', detectedMarket);\r\n let detectedMarketRoutes = rootRoutes.filter(x => x.market === detectedMarket?.id);\r\n if (detectedMarketRoutes.length === 0) {\r\n detectedMarketRoutes = rootRoutes.filter(x => x.market === market.id);\r\n }\r\n // console.log('routeInterceptor.routeAutoDetection.detectedMarketRoutes', detectedMarketRoutes);\r\n const defaultMarketLocale = market.defaultLanguage ? (\r\n typeof market.defaultLanguage === 'string' ? market.defaultLanguage : market.defaultLanguage.id\r\n ) as string : defaultLocale;\r\n // console.log('routeInterceptor.routeAutoDetection.defaultMarketLocale', defaultMarketLocale);\r\n const detectedLocale = await detectLocale(request, defaultMarketLocale);\r\n // console.log('routeInterceptor.routeAutoDetection.detectedLocale', detectedLocale);\r\n const detectedLocaleRoutes = detectedMarketRoutes.filter(x => x.locale === detectedLocale);\r\n const detectedRoute =\r\n detectedLocaleRoutes.length > 0 ?\r\n detectedLocaleRoutes[0]! :\r\n detectedMarketRoutes.find(x => {\r\n const market = markets.find(m => m.id === x.market)!;\r\n const marketLocale = (market.defaultLanguage ? asEquatable(market.defaultLanguage as string) : defaultMarketLocale);\r\n return x.locale === marketLocale;\r\n })!;\r\n // console.log('routeInterceptor.routeAutoDetection.detectedRoute', detectedRoute);\r\n if (detectedRoute && detectedRoute.id !== url.pathname) {\r\n console.log('routeInterceptor.routeAutoDetection', detectedLocale, detectedCountry, detectedRoute.id);\r\n route = detectedRoute.id;\r\n }\r\n // console.log('routeInterceptor.routeAutoDetection', locale, detectedCountry, rootRoutes);\r\n }\r\n return route;\r\n}\r\n\r\nexport async function routeInterceptor(request: NextRequest, next: NextFetchEvent) {\r\n let route: IRoute | undefined;\r\n let url = request.nextUrl;\r\n const hrefBeforeRedirect = getHrefBeforeRedirect(request);\r\n // console.log('routeInterceptor._live', request.nextUrl.searchParams.get('_live'));\r\n try {\r\n const redirectUrl = await routeAutoDetection(request, next);\r\n // console.log('routeInterceptor.routeAutoDetection', redirectUrl);\r\n if (redirectUrl) {\r\n // console.log('routeInterceptor', 'redirectUrl', redirectUrl);\r\n const resolvedUrl = resolveHref(redirectUrl);\r\n // console.log('routeInterceptor', 'resolvedUrl', resolvedUrl);\r\n const search = request.nextUrl.search;\r\n const isTemporaryRedirect = isDevelopment || search;\r\n const response = NextResponse.redirect(resolvedUrl + search, { status: isTemporaryRedirect ? 303 : 301 });\r\n response.cookies.set({\r\n expires: new Date(Date.now() + 1 * 24 * 60 * 60 * 1000),\r\n httpOnly: true,\r\n name: 'detectedRoute',\r\n path: '/',\r\n sameSite: 'lax',\r\n secure: true,\r\n value: redirectUrl,\r\n });\r\n return response;\r\n }\r\n // console.log('routeInterceptor request.cookies', request.cookies);\r\n // console.log('routeInterceptor', url.pathname);\r\n if (storeStrategy === StoreStrategy.DecoratedApi) {\r\n route = await localApiPost('/route', { pathname: url.pathname, href: url.href, hrefBeforeRedirect });\r\n } else {\r\n route = await storeApiPost('/route', { pathname: url.pathname, href: url.href, hrefBeforeRedirect });\r\n }\r\n // console.log('route', route);\r\n if (!route) {\r\n console.log('routeInterceptor.route.notfound', url.pathname);\r\n return;\r\n }\r\n } catch (error: any) {\r\n if (error.status >= 300 && error.status < 400) {\r\n console.log('routeInterceptor.3xx', url.pathname, error.status, error.statusText);\r\n try {\r\n const { redirectUrl } = await error.json();\r\n // console.log('redirectUrl', redirectUrl);\r\n const response = NextResponse.redirect(redirectUrl, error.status);\r\n return response;\r\n } catch (error) {\r\n const publicUrl = getPublicUrl();\r\n console.log('routeInterceptor.3xx.error', `cannot parse response, redirecting to ${publicUrl}`);\r\n const response = NextResponse.redirect(publicUrl, 307);\r\n return response;\r\n }\r\n } else if (error.status === 410) {\r\n console.log('routeInterceptor.410', url.pathname, error.status, error.statusText);\r\n url = request.nextUrl.clone();\r\n url.pathname = `/${error.status}`;\r\n const response = NextResponse.rewrite(url, {\r\n status: error.status,\r\n statusText: error.statusText,\r\n request,\r\n });\r\n return response;\r\n } else if (error.status >= 400 && error.status < 500) {\r\n console.log('routeInterceptor.4xx', url.pathname, error.status, error.statusText);\r\n const response = NextResponse.next({\r\n status: error.status,\r\n statusText: error.statusText,\r\n request,\r\n });\r\n return response;\r\n }\r\n console.log('routeInterceptor.error', url.pathname, error.url, error.status, error.statusText || error);\r\n return;\r\n }\r\n // console.log('routeInterceptor.route.found', url.pathname, '->', route);\r\n url = request.nextUrl.clone();\r\n const resolvedPathname = resolveRoute(route);\r\n // console.log('resolvedPathname', resolvedPathname);\r\n url.pathname = resolvedPathname;\r\n // console.log('routeInterceptor.route', route.schema, route.page, route.market, route.locale);\r\n const response = NextResponse.rewrite(url);\r\n // const response = NextResponse.redirect(url);\r\n return response;\r\n}\r\n\r\nfunction getHrefBeforeRedirect(request: NextRequest): string | null {\r\n let hrefBeforeRedirect: string | null = null;\r\n const urlBeforeRedirect = request.nextUrl.clone();\r\n const host = getHost(request.headers);\r\n if (host) {\r\n urlBeforeRedirect.host = host;\r\n urlBeforeRedirect.port = host.split(':')[1] || '';\r\n hrefBeforeRedirect = urlBeforeRedirect.href;\r\n }\r\n return hrefBeforeRedirect;\r\n}\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"proxy.js","names":["request: NextRequest","defaultLocale?: string","defaultLocale","defaultMarket?: string","defaultMarket","markets: IMarket[]","routes: IRoute[]","next: NextFetchEvent","route: string | undefined","countries: string[]","x","market","route: IRoute | undefined","response","error: any","error","hrefBeforeRedirect: string | null"],"sources":["../../src/route/route.interceptor.ts"],"sourcesContent":["import { IMarket, IRoute, asEquatable, defaultLocale, defaultMarket, getHost } from '@websolutespa/bom-core';\r\nimport { StoreStrategy, localApiGet, localApiPost, storeApiGet, storeApiPost, storeStrategy } from '@websolutespa/bom-mixer-store';\r\nimport { NextFetchEvent, NextRequest, NextResponse } from 'next/server';\r\nimport { getPublicUrl, resolveHref } from '../page/page';\r\nimport { resolveRoute } from './route';\r\n\r\nexport async function detectLocale(request: NextRequest, defaultLocale?: string) {\r\n const acceptLanguage = request.headers.get('accept-language')?.split(',')[0];\r\n const detectedLocale = request.cookies.get('NEXT_LOCALE')?.value || acceptLanguage || defaultLocale || process.env.DEFAULT_LOCALE;\r\n return detectedLocale as string;\r\n}\r\n\r\nexport async function detectCountry(request: NextRequest, defaultMarket?: string) {\r\n let ip = request.headers.get('x-forwarded-for') || request.headers.get('x-real-ip');\r\n if (ip) {\r\n ip = ip.split(',')[0];\r\n }\r\n const isValidIp = ip?.match(/^(\\d+?)\\.(\\d+?)\\.(\\d+?)\\.(\\d+?)$/);\r\n let detectedCountry = '';\r\n try {\r\n const token = process.env.IPINFO_TOKEN;\r\n if (token) {\r\n const url = isValidIp ?\r\n `https://api.ipinfo.io/lite/${ip}/country_code?token=${token}` :\r\n `https://api.ipinfo.io/lite/me/country_code?token=${token}`;\r\n const response = await fetch(url);\r\n if (response.ok) {\r\n const data = await response.text();\r\n detectedCountry = data.toLowerCase();\r\n }\r\n } else {\r\n const url = `https://geoip.websolute.it/Ip2Location/get_info.aspx?ipaddress=${isValidIp ? ip : ''}`;\r\n const response = await fetch(url);\r\n if (response.ok) {\r\n const xml = await response.text();\r\n detectedCountry = (\r\n ((xml.split('<CountryCode><![CDATA[')[1] || '').split(']]></CountryCode>')[0] || '')\r\n ).replace('-', '').toLowerCase();\r\n // console.log('detectedCountry', detectedCountry);\r\n }\r\n }\r\n // console.log('routeInterceptor.detectCountry', detectedCountry);\r\n return detectedCountry || defaultMarket || process.env.DEFAULT_MARKET;\r\n } catch (error) {\r\n console.log('routeInterceptor.detectCountry.error', error);\r\n }\r\n return (defaultMarket || process.env.DEFAULT_MARKET) as string;\r\n}\r\n\r\nasync function getMarkets() {\r\n const apiGet = storeStrategy === StoreStrategy.DecoratedApi ? localApiGet : storeApiGet;\r\n const markets: IMarket[] = await apiGet('/market?pagination=false');\r\n return markets;\r\n}\r\n\r\nasync function getRootRoutes() {\r\n const apiGet = storeStrategy === StoreStrategy.DecoratedApi ? localApiGet : storeApiGet;\r\n const routes: IRoute[] = await apiGet('/route?where[isRoot][equals]=true');\r\n return routes;\r\n}\r\n\r\nexport async function routeAutoDetection(request: NextRequest, next: NextFetchEvent): Promise<string | undefined> {\r\n let route: string | undefined;\r\n const url = request.nextUrl;\r\n if (url.pathname === '/') {\r\n const cookie = request.cookies.get('detectedRoute');\r\n if (cookie?.value) {\r\n return cookie.value;\r\n }\r\n // console.log('routeInterceptor.routeAutoDetection', url.pathname);\r\n const rootRoutes = await getRootRoutes();\r\n // console.log('routeInterceptor.routeAutoDetection.rootRoutes', rootRoutes);\r\n const defaultRoute = rootRoutes.find(x => x.id === '/');\r\n // console.log('routeInterceptor.routeAutoDetection.defaultRoute', defaultRoute);\r\n if (defaultRoute) {\r\n return;\r\n }\r\n const markets = await getMarkets();\r\n // console.log('routeInterceptor.routeAutoDetection.markets', markets);\r\n const market = markets.find(x => x.isDefault) || markets.find(x => x.id === defaultMarket) || markets[0];\r\n // console.log('routeInterceptor.routeAutoDetection.market', market);\r\n const detectedCountry = await detectCountry(request, market.id);\r\n // console.log('routeInterceptor.routeAutoDetection.detectedCountry', detectedCountry);\r\n const detectedMarket = detectedCountry ? (\r\n markets.filter(x => Array.isArray(x.countries)).find(x => {\r\n const countries: string[] = (x.countries || []).map(x => typeof x === 'string' ? x : x.id as string);\r\n return countries.includes(detectedCountry);\r\n }) ||\r\n markets.find(x => !Array.isArray(x.countries))\r\n ) : undefined;\r\n // console.log('routeInterceptor.routeAutoDetection.detectedMarket', detectedMarket);\r\n let detectedMarketRoutes = rootRoutes.filter(x => x.market === detectedMarket?.id);\r\n if (detectedMarketRoutes.length === 0) {\r\n detectedMarketRoutes = rootRoutes.filter(x => x.market === market.id);\r\n }\r\n // console.log('routeInterceptor.routeAutoDetection.detectedMarketRoutes', detectedMarketRoutes);\r\n const defaultMarketLocale = market.defaultLanguage ? (\r\n typeof market.defaultLanguage === 'string' ? market.defaultLanguage : market.defaultLanguage.id\r\n ) as string : defaultLocale;\r\n // console.log('routeInterceptor.routeAutoDetection.defaultMarketLocale', defaultMarketLocale);\r\n const detectedLocale = await detectLocale(request, defaultMarketLocale);\r\n // console.log('routeInterceptor.routeAutoDetection.detectedLocale', detectedLocale);\r\n const detectedLocaleRoutes = detectedMarketRoutes.filter(x => x.locale === detectedLocale);\r\n const detectedRoute =\r\n detectedLocaleRoutes.length > 0 ?\r\n detectedLocaleRoutes[0]! :\r\n detectedMarketRoutes.find(x => {\r\n const market = markets.find(m => m.id === x.market)!;\r\n const marketLocale = (market.defaultLanguage ? asEquatable(market.defaultLanguage as string) : defaultMarketLocale);\r\n return x.locale === marketLocale;\r\n })!;\r\n // console.log('routeInterceptor.routeAutoDetection.detectedRoute', detectedRoute);\r\n if (detectedRoute && detectedRoute.id !== url.pathname) {\r\n console.log('routeInterceptor.routeAutoDetection', detectedLocale, detectedCountry, detectedRoute.id);\r\n route = detectedRoute.id;\r\n }\r\n // console.log('routeInterceptor.routeAutoDetection', locale, detectedCountry, rootRoutes);\r\n }\r\n return route;\r\n}\r\n\r\nexport async function routeInterceptor(request: NextRequest, next: NextFetchEvent) {\r\n let route: IRoute | undefined;\r\n let url = request.nextUrl;\r\n const hrefBeforeRedirect = getHrefBeforeRedirect(request);\r\n // console.log('routeInterceptor._live', request.nextUrl.searchParams.get('_live'));\r\n try {\r\n const redirectUrl = await routeAutoDetection(request, next);\r\n // console.log('routeInterceptor.routeAutoDetection', redirectUrl);\r\n if (redirectUrl) {\r\n // console.log('routeInterceptor', 'redirectUrl', redirectUrl);\r\n const resolvedUrl = resolveHref(redirectUrl);\r\n // console.log('routeInterceptor', 'resolvedUrl', resolvedUrl);\r\n const search = request.nextUrl.search;\r\n /*\r\n // !!! always return a temporary redirect\r\n const isTemporaryRedirect = isDevelopment || search;\r\n const response = NextResponse.redirect(resolvedUrl + search, { status: isTemporaryRedirect ? 307 : 308 });\r\n */\r\n const response = NextResponse.redirect(resolvedUrl + search, { status: 307 });\r\n response.cookies.set({\r\n expires: new Date(Date.now() + 1 * 24 * 60 * 60 * 1000),\r\n httpOnly: true,\r\n name: 'detectedRoute',\r\n path: '/',\r\n sameSite: 'lax',\r\n secure: true,\r\n value: redirectUrl,\r\n });\r\n return response;\r\n }\r\n // console.log('routeInterceptor request.cookies', request.cookies);\r\n // console.log('routeInterceptor', url.pathname);\r\n if (storeStrategy === StoreStrategy.DecoratedApi) {\r\n route = await localApiPost('/route', { pathname: url.pathname, href: url.href, hrefBeforeRedirect });\r\n } else {\r\n route = await storeApiPost('/route', { pathname: url.pathname, href: url.href, hrefBeforeRedirect });\r\n }\r\n // console.log('route', route);\r\n if (!route) {\r\n console.log('routeInterceptor.route.notfound', url.pathname);\r\n return;\r\n }\r\n } catch (error: any) {\r\n if (error.status >= 300 && error.status < 400) {\r\n console.log('routeInterceptor.3xx', url.pathname, error.status, error.statusText);\r\n try {\r\n const { redirectUrl } = await error.json();\r\n // console.log('redirectUrl', redirectUrl);\r\n const response = NextResponse.redirect(redirectUrl, error.status);\r\n return response;\r\n } catch (error) {\r\n const publicUrl = getPublicUrl();\r\n console.log('routeInterceptor.3xx.error', `cannot parse response, redirecting to ${publicUrl}`);\r\n const response = NextResponse.redirect(publicUrl, 307);\r\n return response;\r\n }\r\n } else if (error.status === 410) {\r\n console.log('routeInterceptor.410', url.pathname, error.status, error.statusText);\r\n url = request.nextUrl.clone();\r\n url.pathname = `/${error.status}`;\r\n const response = NextResponse.rewrite(url, {\r\n status: error.status,\r\n statusText: error.statusText,\r\n request,\r\n });\r\n return response;\r\n } else if (error.status >= 400 && error.status < 500) {\r\n console.log('routeInterceptor.4xx', url.pathname, error.status, error.statusText);\r\n const response = NextResponse.next({\r\n status: error.status,\r\n statusText: error.statusText,\r\n request,\r\n });\r\n return response;\r\n }\r\n console.log('routeInterceptor.error', url.pathname, error.url, error.status, error.statusText || error);\r\n return;\r\n }\r\n // console.log('routeInterceptor.route.found', url.pathname, '->', route);\r\n url = request.nextUrl.clone();\r\n const resolvedPathname = resolveRoute(route);\r\n // console.log('resolvedPathname', resolvedPathname);\r\n url.pathname = resolvedPathname;\r\n // console.log('routeInterceptor.route', route.schema, route.page, route.market, route.locale);\r\n const response = NextResponse.rewrite(url);\r\n // const response = NextResponse.redirect(url);\r\n return response;\r\n}\r\n\r\nfunction getHrefBeforeRedirect(request: NextRequest): string | null {\r\n let hrefBeforeRedirect: string | null = null;\r\n const urlBeforeRedirect = request.nextUrl.clone();\r\n const host = getHost(request.headers);\r\n if (host) {\r\n urlBeforeRedirect.host = host;\r\n urlBeforeRedirect.port = host.split(':')[1] || '';\r\n hrefBeforeRedirect = urlBeforeRedirect.href;\r\n }\r\n return hrefBeforeRedirect;\r\n}\r\n"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -24,7 +24,7 @@ type IApplication = IAppProps<IApplicationProps>;
24
24
 
25
25
  //#endregion
26
26
  //#region src/gtm/gtm.service.d.ts
27
- [9, () => Record, sideEffect()];
27
+ [19, () => Record, sideEffect()];
28
28
  declare function pushDataLayer(record: Record<string, any>): void;
29
29
  //# sourceMappingURL=gtm.service.d.ts.map
30
30
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/application/application.ts","../src/gtm/gtm.service.ts","../src/link/link.service.ts","../src/locale/locale.ts","../src/meta-data/open-graph.ts","../src/meta-data/structured-data.ts","../src/meta-data/twitter-card.ts","../src/meta-data/meta-data.ts","../src/page/page.ts","../src/route/route.ts","../src/seo/seo.service.ts","../src/store/store.ts","../src/utmz/utmz.service.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/application/application.ts","../src/gtm/gtm.service.ts","../src/link/link.service.ts","../src/locale/locale.ts","../src/meta-data/open-graph.ts","../src/meta-data/structured-data.ts","../src/meta-data/twitter-card.ts","../src/meta-data/meta-data.ts","../src/page/page.ts","../src/route/route.ts","../src/seo/seo.service.ts","../src/store/store.ts","../src/utmz/utmz.service.ts"],"sourcesContent":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@websolutespa/bom-mixer-models",
3
- "version": "3.0.4",
3
+ "version": "3.0.5",
4
4
  "description": "Mixer Models module of the BOM Repository",
5
5
  "keywords": [
6
6
  "bom",
@@ -1,4 +1,4 @@
1
- import { IMarket, IRoute, asEquatable, defaultLocale, defaultMarket, getHost, isDevelopment } from '@websolutespa/bom-core';
1
+ import { IMarket, IRoute, asEquatable, defaultLocale, defaultMarket, getHost } from '@websolutespa/bom-core';
2
2
  import { StoreStrategy, localApiGet, localApiPost, storeApiGet, storeApiPost, storeStrategy } from '@websolutespa/bom-mixer-store';
3
3
  import { NextFetchEvent, NextRequest, NextResponse } from 'next/server';
4
4
  import { getPublicUrl, resolveHref } from '../page/page';
@@ -132,8 +132,12 @@ export async function routeInterceptor(request: NextRequest, next: NextFetchEven
132
132
  const resolvedUrl = resolveHref(redirectUrl);
133
133
  // console.log('routeInterceptor', 'resolvedUrl', resolvedUrl);
134
134
  const search = request.nextUrl.search;
135
+ /*
136
+ // !!! always return a temporary redirect
135
137
  const isTemporaryRedirect = isDevelopment || search;
136
- const response = NextResponse.redirect(resolvedUrl + search, { status: isTemporaryRedirect ? 303 : 301 });
138
+ const response = NextResponse.redirect(resolvedUrl + search, { status: isTemporaryRedirect ? 307 : 308 });
139
+ */
140
+ const response = NextResponse.redirect(resolvedUrl + search, { status: 307 });
137
141
  response.cookies.set({
138
142
  expires: new Date(Date.now() + 1 * 24 * 60 * 60 * 1000),
139
143
  httpOnly: true,