@websolutespa/bom-mixer-models 3.0.4 → 3.1.0

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,27 @@
1
1
  # @websolutespa/bom-mixer-models
2
2
 
3
+ ## 3.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 3f7c21b: - Payload 3.91.0 and Next.js 16.4.2 (React 19.2.9): peer dependencies are now ranges, `payload` / `@payloadcms/*` `^3.91.0`, `next` `^16.3.3`, `react` / `react-dom` `^19.2.1`
8
+ - payload-plugin-bowl: the mixer context is built only for reads by an authenticated user (payload 3.90+ resolves the jwt user with the request query, populating tenants before `req.user` is set); email options typed with payload `SendEmailOptions`, no direct nodemailer dependency
9
+ - payload-plugin-storage: `AZURE_STORAGE_CONTAINER_ACCESS` (`private` default since payload 3.90, `blob`, `container`) for containers created by the plugin
10
+ - mixer web: `images.qualities` includes `IMAGE_QUALITY` (next 16 defaults to `[75]`)
11
+
12
+ ### Patch Changes
13
+
14
+ - d88019f: - library majors: uuid 14, marked 18 (llm text renderer ported to token renderers), mime 4, mime-types 3, iron-session 9, node-cron 4, html-to-text 10, react-error-boundary 6, react-dropzone 20 (import modal accepts `text/csv` `.csv`), fast-equals 6, schema-dts 2, json-schema-typed 9, dotenv 18 (quiet), chalk 6, giget 3, @clack/prompts 1, keeper secrets manager 17
15
+ - 12b6e2f: - test: replace the jest presets with shared vitest configurations, `@websolutespa/test/vitest` (`defineNodeConfig`, `defineDomConfig`, `definePayloadConfig`); drop jest dependencies
16
+ - declare every imported package and script binary in the package that uses it (no more reliance on hoisting), drop unused dependencies
17
+ - bom-mixer-checkout: `useCart.add` no longer mutates the previous cart state
18
+
19
+ ## 3.0.5
20
+
21
+ ### Patch Changes
22
+
23
+ - Modified: RouteInterceptor autoDetection temporary redirect
24
+
3
25
  ## 3.0.4
4
26
 
5
27
  ### Patch Changes
@@ -5,8 +5,6 @@ declare function detectLocale(request: NextRequest, defaultLocale?: string): Pro
5
5
  declare function detectCountry(request: NextRequest, defaultMarket?: string): Promise<string | undefined>;
6
6
  declare function routeAutoDetection(request: NextRequest, next: NextFetchEvent): Promise<string | undefined>;
7
7
  declare function routeInterceptor(request: NextRequest, next: NextFetchEvent): Promise<NextResponse<unknown> | undefined>;
8
- //# sourceMappingURL=route.interceptor.d.ts.map
9
-
10
8
  //#endregion
11
9
  export { detectCountry, detectLocale, routeAutoDetection, routeInterceptor };
12
10
  //# sourceMappingURL=proxy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.d.ts","names":[],"sources":["../../src/route/route.interceptor.ts"],"sourcesContent":[],"mappings":";;;iBAMsB,YAAA,UAAsB,sCAAmC;iBAMzD,aAAA,UAAuB,sCAAmC;AAN1D,iBAuDA,kBAAA,CAvDY,OAAA,EAuDgB,WAvDhB,EAAA,IAAA,EAuDmC,cAvDnC,CAAA,EAuDoD,OAvDpD,CAAA,MAAA,GAAA,SAAA,CAAA;AAAA,iBAmHZ,gBAAA,CAnHY,OAAA,EAmHc,WAnHd,EAAA,IAAA,EAmHiC,cAnHjC,CAAA,EAmH+C,OAnH/C,CAmH+C,YAnH/C,CAAA,OAAA,CAAA,GAAA,SAAA,CAAA"}
1
+ {"version":3,"file":"proxy.d.ts","names":[],"sources":["../../src/route/route.interceptor.ts"],"mappings":";;;iBAMsB,YAAA,CAAa,OAAA,EAAS,WAAA,EAAa,aAAA,YAAsB,OAAA;AAAA,iBAMzD,aAAA,CAAc,OAAA,EAAS,WAAA,EAAa,aAAA,YAAsB,OAAA;AAAA,iBAiD1D,kBAAA,CAAmB,OAAA,EAAS,WAAA,EAAa,IAAA,EAAM,cAAA,GAAiB,OAAA;AAAA,iBA4DhE,gBAAA,CAAiB,OAAA,EAAS,WAAA,EAAa,IAAA,EAAM,cAAA,GAAc,OAAA,CAAA,YAAA"}
@@ -1,16 +1,14 @@
1
- import { getPublicUrl, resolveHref } from "../page-BLbZbnWg.js";
2
- import { resolveRoute } from "../route-k0W3AKyo.js";
3
- import { asEquatable, defaultLocale, defaultMarket, getHost, isDevelopment } from "@websolutespa/bom-core";
1
+ import { n as resolveHref, t as getPublicUrl } from "../page-DUrzmLyV.js";
2
+ import { r as resolveRoute } from "../route-BV0T142s.js";
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
-
7
6
  //#region src/route/route.interceptor.ts
8
- async function detectLocale(request, defaultLocale$1) {
7
+ async function detectLocale(request, defaultLocale) {
9
8
  const acceptLanguage = request.headers.get("accept-language")?.split(",")[0];
10
- const detectedLocale = request.cookies.get("NEXT_LOCALE")?.value || acceptLanguage || defaultLocale$1 || process.env.DEFAULT_LOCALE;
11
- return detectedLocale;
9
+ return request.cookies.get("NEXT_LOCALE")?.value || acceptLanguage || defaultLocale || process.env.DEFAULT_LOCALE;
12
10
  }
13
- async function detectCountry(request, defaultMarket$1) {
11
+ async function detectCountry(request, defaultMarket) {
14
12
  let ip = request.headers.get("x-forwarded-for") || request.headers.get("x-real-ip");
15
13
  if (ip) ip = ip.split(",")[0];
16
14
  const isValidIp = ip?.match(/^(\d+?)\.(\d+?)\.(\d+?)\.(\d+?)$/);
@@ -20,33 +18,23 @@ async function detectCountry(request, defaultMarket$1) {
20
18
  if (token) {
21
19
  const url = isValidIp ? `https://api.ipinfo.io/lite/${ip}/country_code?token=${token}` : `https://api.ipinfo.io/lite/me/country_code?token=${token}`;
22
20
  const response = await fetch(url);
23
- if (response.ok) {
24
- const data = await response.text();
25
- detectedCountry = data.toLowerCase();
26
- }
21
+ if (response.ok) detectedCountry = (await response.text()).toLowerCase();
27
22
  } else {
28
23
  const url = `https://geoip.websolute.it/Ip2Location/get_info.aspx?ipaddress=${isValidIp ? ip : ""}`;
29
24
  const response = await fetch(url);
30
- if (response.ok) {
31
- const xml = await response.text();
32
- detectedCountry = ((xml.split("<CountryCode><![CDATA[")[1] || "").split("]]></CountryCode>")[0] || "").replace("-", "").toLowerCase();
33
- }
25
+ if (response.ok) detectedCountry = (((await response.text()).split("<CountryCode><![CDATA[")[1] || "").split("]]></CountryCode>")[0] || "").replace("-", "").toLowerCase();
34
26
  }
35
- return detectedCountry || defaultMarket$1 || process.env.DEFAULT_MARKET;
27
+ return detectedCountry || defaultMarket || process.env.DEFAULT_MARKET;
36
28
  } catch (error) {
37
29
  console.log("routeInterceptor.detectCountry.error", error);
38
30
  }
39
- return defaultMarket$1 || process.env.DEFAULT_MARKET;
31
+ return defaultMarket || process.env.DEFAULT_MARKET;
40
32
  }
41
33
  async function getMarkets() {
42
- const apiGet = storeStrategy === StoreStrategy.DecoratedApi ? localApiGet : storeApiGet;
43
- const markets = await apiGet("/market?pagination=false");
44
- return markets;
34
+ return await (storeStrategy === StoreStrategy.DecoratedApi ? localApiGet : storeApiGet)("/market?pagination=false");
45
35
  }
46
36
  async function getRootRoutes() {
47
- const apiGet = storeStrategy === StoreStrategy.DecoratedApi ? localApiGet : storeApiGet;
48
- const routes = await apiGet("/route?where[isRoot][equals]=true");
49
- return routes;
37
+ return await (storeStrategy === StoreStrategy.DecoratedApi ? localApiGet : storeApiGet)("/route?where[isRoot][equals]=true");
50
38
  }
51
39
  async function routeAutoDetection(request, next) {
52
40
  let route;
@@ -55,14 +43,12 @@ async function routeAutoDetection(request, next) {
55
43
  const cookie = request.cookies.get("detectedRoute");
56
44
  if (cookie?.value) return cookie.value;
57
45
  const rootRoutes = await getRootRoutes();
58
- const defaultRoute = rootRoutes.find((x) => x.id === "/");
59
- if (defaultRoute) return;
46
+ if (rootRoutes.find((x) => x.id === "/")) return;
60
47
  const markets = await getMarkets();
61
48
  const market = markets.find((x) => x.isDefault) || markets.find((x) => x.id === defaultMarket) || markets[0];
62
49
  const detectedCountry = await detectCountry(request, market.id);
63
50
  const detectedMarket = detectedCountry ? markets.filter((x) => Array.isArray(x.countries)).find((x) => {
64
- const countries = (x.countries || []).map((x$1) => typeof x$1 === "string" ? x$1 : x$1.id);
65
- return countries.includes(detectedCountry);
51
+ return (x.countries || []).map((x) => typeof x === "string" ? x : x.id).includes(detectedCountry);
66
52
  }) || markets.find((x) => !Array.isArray(x.countries)) : void 0;
67
53
  let detectedMarketRoutes = rootRoutes.filter((x) => x.market === detectedMarket?.id);
68
54
  if (detectedMarketRoutes.length === 0) detectedMarketRoutes = rootRoutes.filter((x) => x.market === market.id);
@@ -70,8 +56,8 @@ async function routeAutoDetection(request, next) {
70
56
  const detectedLocale = await detectLocale(request, defaultMarketLocale);
71
57
  const detectedLocaleRoutes = detectedMarketRoutes.filter((x) => x.locale === detectedLocale);
72
58
  const detectedRoute = detectedLocaleRoutes.length > 0 ? detectedLocaleRoutes[0] : detectedMarketRoutes.find((x) => {
73
- const market$1 = markets.find((m) => m.id === x.market);
74
- const marketLocale = market$1.defaultLanguage ? asEquatable(market$1.defaultLanguage) : defaultMarketLocale;
59
+ const market = markets.find((m) => m.id === x.market);
60
+ const marketLocale = market.defaultLanguage ? asEquatable(market.defaultLanguage) : defaultMarketLocale;
75
61
  return x.locale === marketLocale;
76
62
  });
77
63
  if (detectedRoute && detectedRoute.id !== url.pathname) {
@@ -90,9 +76,8 @@ async function routeInterceptor(request, next) {
90
76
  if (redirectUrl) {
91
77
  const resolvedUrl = resolveHref(redirectUrl);
92
78
  const search = request.nextUrl.search;
93
- const isTemporaryRedirect = isDevelopment || search;
94
- const response$1 = NextResponse.redirect(resolvedUrl + search, { status: isTemporaryRedirect ? 303 : 301 });
95
- response$1.cookies.set({
79
+ const response = NextResponse.redirect(resolvedUrl + search, { status: 307 });
80
+ response.cookies.set({
96
81
  expires: new Date(Date.now() + 1440 * 60 * 1e3),
97
82
  httpOnly: true,
98
83
  name: "detectedRoute",
@@ -101,7 +86,7 @@ async function routeInterceptor(request, next) {
101
86
  secure: true,
102
87
  value: redirectUrl
103
88
  });
104
- return response$1;
89
+ return response;
105
90
  }
106
91
  if (storeStrategy === StoreStrategy.DecoratedApi) route = await localApiPost("/route", {
107
92
  pathname: url.pathname,
@@ -122,32 +107,28 @@ async function routeInterceptor(request, next) {
122
107
  console.log("routeInterceptor.3xx", url.pathname, error.status, error.statusText);
123
108
  try {
124
109
  const { redirectUrl } = await error.json();
125
- const response$1 = NextResponse.redirect(redirectUrl, error.status);
126
- return response$1;
127
- } catch (error$1) {
110
+ return NextResponse.redirect(redirectUrl, error.status);
111
+ } catch (error) {
128
112
  const publicUrl = getPublicUrl();
129
113
  console.log("routeInterceptor.3xx.error", `cannot parse response, redirecting to ${publicUrl}`);
130
- const response$1 = NextResponse.redirect(publicUrl, 307);
131
- return response$1;
114
+ return NextResponse.redirect(publicUrl, 307);
132
115
  }
133
116
  } else if (error.status === 410) {
134
117
  console.log("routeInterceptor.410", url.pathname, error.status, error.statusText);
135
118
  url = request.nextUrl.clone();
136
119
  url.pathname = `/${error.status}`;
137
- const response$1 = NextResponse.rewrite(url, {
120
+ return NextResponse.rewrite(url, {
138
121
  status: error.status,
139
122
  statusText: error.statusText,
140
123
  request
141
124
  });
142
- return response$1;
143
125
  } else if (error.status >= 400 && error.status < 500) {
144
126
  console.log("routeInterceptor.4xx", url.pathname, error.status, error.statusText);
145
- const response$1 = NextResponse.next({
127
+ return NextResponse.next({
146
128
  status: error.status,
147
129
  statusText: error.statusText,
148
130
  request
149
131
  });
150
- return response$1;
151
132
  }
152
133
  console.log("routeInterceptor.error", url.pathname, error.url, error.status, error.statusText || error);
153
134
  return;
@@ -155,8 +136,7 @@ async function routeInterceptor(request, next) {
155
136
  url = request.nextUrl.clone();
156
137
  const resolvedPathname = resolveRoute(route);
157
138
  url.pathname = resolvedPathname;
158
- const response = NextResponse.rewrite(url);
159
- return response;
139
+ return NextResponse.rewrite(url);
160
140
  }
161
141
  function getHrefBeforeRedirect(request) {
162
142
  let hrefBeforeRedirect = null;
@@ -169,7 +149,7 @@ function getHrefBeforeRedirect(request) {
169
149
  }
170
150
  return hrefBeforeRedirect;
171
151
  }
172
-
173
152
  //#endregion
174
153
  export { detectCountry, detectLocale, routeAutoDetection, routeInterceptor };
154
+
175
155
  //# sourceMappingURL=proxy.js.map
@@ -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":[],"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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"}
@@ -1,71 +1,59 @@
1
- import { IAddressOptions, IConsentPreference, ILazyStaticProps, ILazyStaticPropsFunc } from "../lazy-JamSYYoh.js";
1
+ import { c as ILazyStaticPropsFunc, f as IConsentPreference, h as IAddressOptions, s as ILazyStaticProps } from "../lazy-CoUsrocX.js";
2
2
  import { IApp, IAppExtended, ICategorized, ICategory, IComponent, IEquatable, ILabel, ILayout, ILocale, IMarket, IMenu, INamedEntity, IPage, IPaginationResult, IRedirect, IRoute, IRouteLink, PageProps, QueryParams } from "@websolutespa/bom-core";
3
- import { NextRequest, NextResponse } from "next/server";
4
3
  import * as _websolutespa_bom_mixer_store_server0 from "@websolutespa/bom-mixer-store/server";
5
4
  import { IronSession } from "iron-session";
5
+ import { NextRequest, NextResponse } from "next/server";
6
6
  import { GetServerSideProps, NextApiRequest, NextApiResponse, Redirect } from "next";
7
7
  import { IncomingMessage, ServerResponse } from "http";
8
8
 
9
9
  //#region src/address/address.service.d.ts
10
10
  declare function getAddressOptions(locale: string): Promise<IAddressOptions>;
11
- //# sourceMappingURL=address.service.d.ts.map
12
11
  //#endregion
13
12
  //#region src/app/app.service.d.ts
14
13
  declare function getApp<T extends IAppExtended = IAppExtended>(params?: QueryParams): Promise<IApp<T> | undefined>;
15
- //# sourceMappingURL=app.service.d.ts.map
16
14
  //#endregion
17
15
  //#region src/captions/captions.handler.d.ts
18
16
  declare const getCaptionsVttProps: GetServerSideProps;
19
- //# sourceMappingURL=captions.handler.d.ts.map
20
17
  //#endregion
21
18
  //#region src/category/category.service.d.ts
22
19
  declare function getCategories(params?: QueryParams): Promise<ICategory[]>;
23
20
  declare function getCategory(id: IEquatable, params?: QueryParams): Promise<ICategory | undefined>;
24
21
  declare function getSegments(item: ICategorized, params?: QueryParams): Promise<ICategory[]>;
25
- //# sourceMappingURL=category.service.d.ts.map
26
22
  //#endregion
27
23
  //#region src/consent_preference/consent_preference.service.d.ts
28
24
  declare function getConsentPreference(id: IEquatable, params?: QueryParams): Promise<IConsentPreference | undefined>;
29
25
  declare function getConsentPreferences(params?: QueryParams): Promise<IConsentPreference[]>;
30
26
  declare function getConsentPreferencesPagination(params?: QueryParams): Promise<IPaginationResult<IConsentPreference>>;
31
- //# sourceMappingURL=consent_preference.service.d.ts.map
32
27
  //#endregion
33
28
  //#region src/country/country.service.d.ts
34
29
  declare function getCountries(locale?: string): Promise<INamedEntity[]>;
35
30
  declare function getCountry(id: IEquatable, params?: QueryParams): Promise<INamedEntity | undefined>;
36
31
  declare function getCountriesPagination(params?: QueryParams): Promise<IPaginationResult<INamedEntity>>;
37
- //# sourceMappingURL=country.service.d.ts.map
38
32
  //#endregion
39
33
  //#region src/label/label.service.d.ts
40
34
  declare function getLabels(params?: QueryParams): Promise<ILabel[]>;
41
35
  declare function getLabel(id: IEquatable, params?: QueryParams): Promise<ILabel | undefined>;
42
36
  declare function resolveLabel(labels: ILabel[], id: string): string;
43
- //# sourceMappingURL=label.service.d.ts.map
44
37
  //#endregion
45
38
  //#region src/layout/layout.service.d.ts
46
39
  declare function getLayout<T extends IAppExtended = IAppExtended>(market: string, locale: string): Promise<ILayout<T>>;
47
- //# sourceMappingURL=layout.service.d.ts.map
48
40
  //#endregion
49
41
  //#region src/lazy/lazy.service.d.ts
50
42
  declare const LAZY_PROPS: ILazyStaticProps;
51
43
  declare function withLazyProps<T>(key: string, getComponentProps: ILazyStaticPropsFunc<T>): Promise<void>;
52
44
  declare function getDecoratedComponents(props: PageProps, extraComponents?: IComponent[]): Promise<void>;
53
- //# sourceMappingURL=lazy.service.d.ts.map
54
45
  //#endregion
55
46
  //#region src/locale/locale.service.d.ts
56
47
  declare function getLocales(params?: QueryParams): Promise<ILocale[]>;
57
48
  declare function getLocale(id: IEquatable, params?: QueryParams): Promise<ILocale | undefined>;
58
- //# sourceMappingURL=locale.service.d.ts.map
59
49
  //#endregion
60
50
  //#region src/market/market.service.d.ts
61
51
  declare function getMarkets(params?: QueryParams): Promise<IMarket[]>;
62
52
  declare function getMarket(id: IEquatable, params?: QueryParams): Promise<IMarket | undefined>;
63
- //# sourceMappingURL=market.service.d.ts.map
64
53
  //#endregion
65
54
  //#region src/menu/menu.service.d.ts
66
55
  declare function getMenus(params?: QueryParams): Promise<IMenu[]>;
67
56
  declare function getMenu(id: IEquatable, params?: QueryParams): Promise<IMenu | undefined>;
68
- //# sourceMappingURL=menu.service.d.ts.map
69
57
  //#endregion
70
58
  //#region src/page/page.service.d.ts
71
59
  declare function findOnePage<T extends ICategorized = ICategorized>(schema: string, id: IEquatable, params?: QueryParams): Promise<T | undefined>;
@@ -91,13 +79,11 @@ type PartialPageProps<T extends ICategorized, B> = Omit<PageProps<T>, 'page'> &
91
79
  declare function getPageProps<T extends ICategorized, B = any>(props: PartialPageProps<T, B>, extraComponents?: IComponent[]): Promise<PageProps<T> & B>;
92
80
  declare function getPublicUrl(): string;
93
81
  declare function resolveHref(href?: string): string;
94
- //# sourceMappingURL=page.service.d.ts.map
95
82
  //#endregion
96
83
  //#region src/province/province.service.d.ts
97
84
  declare function getProvinces(locale?: string): Promise<INamedEntity[]>;
98
85
  declare function getProvince(id: IEquatable, params?: QueryParams): Promise<INamedEntity | undefined>;
99
86
  declare function getProvincesPagination(params?: QueryParams): Promise<IPaginationResult<INamedEntity>>;
100
- //# sourceMappingURL=province.service.d.ts.map
101
87
  //#endregion
102
88
  //#region src/redirect/redirect.service.d.ts
103
89
  declare function getRedirects(locale?: string): Promise<IRedirect[]>;
@@ -109,17 +95,14 @@ declare function redirectTo(layout: ILayout, key?: string): {
109
95
  destination: string;
110
96
  };
111
97
  };
112
- //# sourceMappingURL=redirect.service.d.ts.map
113
98
  //#endregion
114
99
  //#region src/region/region.service.d.ts
115
100
  declare function getRegions(locale?: string): Promise<INamedEntity[]>;
116
101
  declare function getRegion(id: IEquatable, params?: QueryParams): Promise<INamedEntity | undefined>;
117
102
  declare function getRegionsPagination(params?: QueryParams): Promise<IPaginationResult<INamedEntity>>;
118
- //# sourceMappingURL=region.service.d.ts.map
119
103
  //#endregion
120
104
  //#region src/route/route-revalidate.handler.d.ts
121
105
  declare function routeRevalidateHandler(): _websolutespa_bom_mixer_store_server0.IHandler<any>;
122
- //# sourceMappingURL=route-revalidate.handler.d.ts.map
123
106
  //#endregion
124
107
  //#region src/route/route.service.d.ts
125
108
  type StaticPath = {
@@ -143,7 +126,6 @@ declare function getStaticPathsForSchemaAndFallback(schema: string, fallback?: '
143
126
  declare function getBreadcrumbFromSegments(segments: ICategory[], route: IRoute): Promise<IRouteLink[]>;
144
127
  declare function getRouteLinkTree(market: string, locale: string): Promise<IRouteLink | undefined>;
145
128
  declare function getRouteLinkCategory(locale: string, routes: IRoute[], categories: ICategory[], rootCategory: ICategory, category: ICategory): IRouteLink | IRouteLink[] | undefined;
146
- //# sourceMappingURL=route.service.d.ts.map
147
129
  //#endregion
148
130
  //#region src/session/session.service.d.ts
149
131
  declare function getSession<T extends object = Record<string, any>>(request: NextRequest | NextApiRequest | (IncomingMessage & {
@@ -160,13 +142,11 @@ declare function getSessionToken<T extends SessionWithToken>(request: NextReques
160
142
  [key: string]: string;
161
143
  }>;
162
144
  }), response: NextResponse | NextApiResponse | ServerResponse<IncomingMessage>): Promise<string | undefined>;
163
- //# sourceMappingURL=session.service.d.ts.map
164
145
  //#endregion
165
146
  //#region src/sitemap/sitemap.handler.d.ts
166
147
  declare const getSiteMapIndexProps: GetServerSideProps;
167
148
  declare const getSiteMapXMLProps: GetServerSideProps;
168
149
  declare const getSiteMapXSLProps: GetServerSideProps;
169
- //# sourceMappingURL=sitemap.handler.d.ts.map
170
150
  //#endregion
171
151
  //#region src/sitemap/sitemap.service.d.ts
172
152
  type ISiteMap = {
@@ -177,8 +157,6 @@ declare function getSiteMapIndex(origin: string): Promise<string>;
177
157
  declare function escapeHtml(string: string): string;
178
158
  declare function getSiteMapXML(origin: string, marketId?: string, localeId?: string): Promise<string>;
179
159
  declare function getSiteMapXSL(localeId?: string): Promise<string>;
180
- //# sourceMappingURL=sitemap.service.d.ts.map
181
-
182
160
  //#endregion
183
161
  export { ISiteMap, LAZY_PROPS, NotFound, PartialPageProps, SessionWithToken, StaticPath, escapeHtml, findManyPages, findOnePage, getAddressOptions, getApp, getBreadcrumbFromSegments, getCaptionsVttProps, getCategories, getCategory, getConsentPreference, getConsentPreferences, getConsentPreferencesPagination, getCountries, getCountriesPagination, getCountry, getDecoratedComponents, getErrorPageLayout, getLabel, getLabels, getLayout, getLocale, getLocales, getMarket, getMarkets, getMenu, getMenus, getNotFoundRoute, getPage, getPageCategory, getPageProps, getPageRoutes, getProvince, getProvinces, getProvincesPagination, getPublicUrl, getRedirect, getRedirects, getRedirectsPagination, getRegion, getRegions, getRegionsPagination, getRoute, getRouteLinkCategory, getRouteLinkTree, getRoutes, getRoutesForSchemas, getRoutesForTemplates, getSchemaRoutes, getSegments, getSession, getSessionToken, getSiteMapIndex, getSiteMapIndexProps, getSiteMapXML, getSiteMapXMLProps, getSiteMapXSL, getSiteMapXSLProps, getStaticPathsForSchema, getStaticPathsForSchemaAndFallback, redirectTo, resolveHref, resolveLabel, routeRevalidateHandler, withLazyProps };
184
162
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","names":[],"sources":["../../src/address/address.service.ts","../../src/app/app.service.ts","../../src/captions/captions.handler.ts","../../src/category/category.service.ts","../../src/consent_preference/consent_preference.service.ts","../../src/country/country.service.ts","../../src/label/label.service.ts","../../src/layout/layout.service.ts","../../src/lazy/lazy.service.ts","../../src/locale/locale.service.ts","../../src/market/market.service.ts","../../src/menu/menu.service.ts","../../src/page/page.service.ts","../../src/province/province.service.ts","../../src/redirect/redirect.service.ts","../../src/region/region.service.ts","../../src/route/route-revalidate.handler.ts","../../src/route/route.service.ts","../../src/session/session.service.ts","../../src/sitemap/sitemap.handler.ts","../../src/sitemap/sitemap.service.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"server.d.ts","names":[],"sources":["../../src/address/address.service.ts","../../src/app/app.service.ts","../../src/captions/captions.handler.ts","../../src/category/category.service.ts","../../src/consent_preference/consent_preference.service.ts","../../src/country/country.service.ts","../../src/label/label.service.ts","../../src/layout/layout.service.ts","../../src/lazy/lazy.service.ts","../../src/locale/locale.service.ts","../../src/market/market.service.ts","../../src/menu/menu.service.ts","../../src/page/page.service.ts","../../src/province/province.service.ts","../../src/redirect/redirect.service.ts","../../src/region/region.service.ts","../../src/route/route-revalidate.handler.ts","../../src/route/route.service.ts","../../src/session/session.service.ts","../../src/sitemap/sitemap.handler.ts","../../src/sitemap/sitemap.service.ts"],"mappings":"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"}