@websolutespa/bom-mixer-models 3.0.5 → 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,21 @@
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
+
3
19
  ## 3.0.5
4
20
 
5
21
  ### 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";
1
+ import { n as resolveHref, t as getPublicUrl } from "../page-DUrzmLyV.js";
2
+ import { r as resolveRoute } from "../route-BV0T142s.js";
3
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,8 +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 response$1 = NextResponse.redirect(resolvedUrl + search, { status: 307 });
94
- response$1.cookies.set({
79
+ const response = NextResponse.redirect(resolvedUrl + search, { status: 307 });
80
+ response.cookies.set({
95
81
  expires: new Date(Date.now() + 1440 * 60 * 1e3),
96
82
  httpOnly: true,
97
83
  name: "detectedRoute",
@@ -100,7 +86,7 @@ async function routeInterceptor(request, next) {
100
86
  secure: true,
101
87
  value: redirectUrl
102
88
  });
103
- return response$1;
89
+ return response;
104
90
  }
105
91
  if (storeStrategy === StoreStrategy.DecoratedApi) route = await localApiPost("/route", {
106
92
  pathname: url.pathname,
@@ -121,32 +107,28 @@ async function routeInterceptor(request, next) {
121
107
  console.log("routeInterceptor.3xx", url.pathname, error.status, error.statusText);
122
108
  try {
123
109
  const { redirectUrl } = await error.json();
124
- const response$1 = NextResponse.redirect(redirectUrl, error.status);
125
- return response$1;
126
- } catch (error$1) {
110
+ return NextResponse.redirect(redirectUrl, error.status);
111
+ } catch (error) {
127
112
  const publicUrl = getPublicUrl();
128
113
  console.log("routeInterceptor.3xx.error", `cannot parse response, redirecting to ${publicUrl}`);
129
- const response$1 = NextResponse.redirect(publicUrl, 307);
130
- return response$1;
114
+ return NextResponse.redirect(publicUrl, 307);
131
115
  }
132
116
  } else if (error.status === 410) {
133
117
  console.log("routeInterceptor.410", url.pathname, error.status, error.statusText);
134
118
  url = request.nextUrl.clone();
135
119
  url.pathname = `/${error.status}`;
136
- const response$1 = NextResponse.rewrite(url, {
120
+ return NextResponse.rewrite(url, {
137
121
  status: error.status,
138
122
  statusText: error.statusText,
139
123
  request
140
124
  });
141
- return response$1;
142
125
  } else if (error.status >= 400 && error.status < 500) {
143
126
  console.log("routeInterceptor.4xx", url.pathname, error.status, error.statusText);
144
- const response$1 = NextResponse.next({
127
+ return NextResponse.next({
145
128
  status: error.status,
146
129
  statusText: error.statusText,
147
130
  request
148
131
  });
149
- return response$1;
150
132
  }
151
133
  console.log("routeInterceptor.error", url.pathname, error.url, error.status, error.statusText || error);
152
134
  return;
@@ -154,8 +136,7 @@ async function routeInterceptor(request, next) {
154
136
  url = request.nextUrl.clone();
155
137
  const resolvedPathname = resolveRoute(route);
156
138
  url.pathname = resolvedPathname;
157
- const response = NextResponse.rewrite(url);
158
- return response;
139
+ return NextResponse.rewrite(url);
159
140
  }
160
141
  function getHrefBeforeRedirect(request) {
161
142
  let hrefBeforeRedirect = null;
@@ -168,7 +149,7 @@ function getHrefBeforeRedirect(request) {
168
149
  }
169
150
  return hrefBeforeRedirect;
170
151
  }
171
-
172
152
  //#endregion
173
153
  export { detectCountry, detectLocale, routeAutoDetection, routeInterceptor };
154
+
174
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 } 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
+ {"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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"}