@websolutespa/bom-next 3.0.1 → 3.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (306) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/dist/_virtual/_rolldown/runtime.js +24 -0
  3. package/dist/client/client.d.ts +9 -0
  4. package/dist/client/client.d.ts.map +1 -0
  5. package/dist/client/client.js +18 -0
  6. package/dist/client/client.js.map +1 -0
  7. package/dist/client/extra.d.ts +17 -0
  8. package/dist/client/extra.d.ts.map +1 -0
  9. package/dist/client/extra.js +13 -0
  10. package/dist/client/extra.js.map +1 -0
  11. package/dist/client/label.d.ts +15 -0
  12. package/dist/client/label.d.ts.map +1 -0
  13. package/dist/client/label.js +20 -0
  14. package/dist/client/label.js.map +1 -0
  15. package/dist/client/layout.d.ts +18 -0
  16. package/dist/client/layout.d.ts.map +1 -0
  17. package/dist/client/layout.js +13 -0
  18. package/dist/client/layout.js.map +1 -0
  19. package/dist/client/local.collection.d.ts +32 -0
  20. package/dist/client/local.collection.d.ts.map +1 -0
  21. package/dist/client/local.collection.js +49 -0
  22. package/dist/client/local.collection.js.map +1 -0
  23. package/dist/client/metadata.d.ts +43 -0
  24. package/dist/client/metadata.d.ts.map +1 -0
  25. package/dist/client/metadata.js +146 -0
  26. package/dist/client/metadata.js.map +1 -0
  27. package/dist/client/page.d.ts +404 -0
  28. package/dist/client/page.d.ts.map +1 -0
  29. package/dist/client/page.js +13 -0
  30. package/dist/client/page.js.map +1 -0
  31. package/dist/client/useApi.d.ts +21 -0
  32. package/dist/client/useApi.d.ts.map +1 -0
  33. package/dist/client/useApi.js +65 -0
  34. package/dist/client/useApi.js.map +1 -0
  35. package/dist/client/useCollectionApi.d.ts +21 -0
  36. package/dist/client/useCollectionApi.d.ts.map +1 -0
  37. package/dist/client/useCollectionApi.js +65 -0
  38. package/dist/client/useCollectionApi.js.map +1 -0
  39. package/dist/client/useExtra.d.ts +9 -0
  40. package/dist/client/useExtra.d.ts.map +1 -0
  41. package/dist/client/useExtra.js +13 -0
  42. package/dist/client/useExtra.js.map +1 -0
  43. package/dist/client/useHttp.d.ts +15 -0
  44. package/dist/client/useHttp.d.ts.map +1 -0
  45. package/dist/client/useHttp.js +70 -0
  46. package/dist/client/useHttp.js.map +1 -0
  47. package/dist/client/useLabel.d.ts +9 -0
  48. package/dist/client/useLabel.d.ts.map +1 -0
  49. package/dist/client/useLabel.js +13 -0
  50. package/dist/client/useLabel.js.map +1 -0
  51. package/dist/client/useLayout.d.ts +9 -0
  52. package/dist/client/useLayout.d.ts.map +1 -0
  53. package/dist/client/useLayout.js +13 -0
  54. package/dist/client/useLayout.js.map +1 -0
  55. package/dist/client/useLink.d.ts +7 -0
  56. package/dist/client/useLink.d.ts.map +1 -0
  57. package/dist/client/useLink.js +15 -0
  58. package/dist/client/useLink.js.map +1 -0
  59. package/dist/client/useMetaData.d.ts +9 -0
  60. package/dist/client/useMetaData.d.ts.map +1 -0
  61. package/dist/client/useMetaData.js +13 -0
  62. package/dist/client/useMetaData.js.map +1 -0
  63. package/dist/client/usePage.d.ts +394 -0
  64. package/dist/client/usePage.d.ts.map +1 -0
  65. package/dist/client/usePage.js +13 -0
  66. package/dist/client/usePage.js.map +1 -0
  67. package/dist/client/useUser.d.ts +9 -0
  68. package/dist/client/useUser.d.ts.map +1 -0
  69. package/dist/client/useUser.js +13 -0
  70. package/dist/client/useUser.js.map +1 -0
  71. package/dist/client/user.d.ts +20 -0
  72. package/dist/client/user.d.ts.map +1 -0
  73. package/dist/client/user.js +33 -0
  74. package/dist/client/user.js.map +1 -0
  75. package/dist/exports/client.d.ts +20 -979
  76. package/dist/exports/client.js +19 -5734
  77. package/dist/exports/instrumentation.d.ts +2 -13
  78. package/dist/exports/instrumentation.js +1 -24
  79. package/dist/exports/proxy.d.ts +5 -71
  80. package/dist/exports/proxy.js +4 -253
  81. package/dist/exports/server.d.ts +19 -402
  82. package/dist/exports/server.js +18 -1973
  83. package/dist/index.d.ts +18 -499
  84. package/dist/index.js +10 -200
  85. package/dist/instrumentation/client.d.ts +8 -0
  86. package/dist/instrumentation/client.d.ts.map +1 -0
  87. package/dist/instrumentation/client.js +15 -0
  88. package/dist/instrumentation/client.js.map +1 -0
  89. package/dist/instrumentation/sentry/capture.requestError.js +10 -0
  90. package/dist/instrumentation/sentry/capture.requestError.js.map +1 -0
  91. package/dist/instrumentation/sentry/capture.routerTransitionStart.js +7 -0
  92. package/dist/instrumentation/sentry/capture.routerTransitionStart.js.map +1 -0
  93. package/dist/instrumentation/server.d.ts +13 -0
  94. package/dist/instrumentation/server.d.ts.map +1 -0
  95. package/dist/instrumentation/server.js +19 -0
  96. package/dist/instrumentation/server.js.map +1 -0
  97. package/dist/{types2.d.ts → instrumentation/types.d.ts} +2 -2
  98. package/dist/instrumentation/types.d.ts.map +1 -0
  99. package/dist/lib/breadcrumb.d.ts +15 -0
  100. package/dist/lib/breadcrumb.d.ts.map +1 -0
  101. package/dist/lib/breadcrumb.js +20 -0
  102. package/dist/lib/breadcrumb.js.map +1 -0
  103. package/dist/lib/const.d.ts +9 -0
  104. package/dist/lib/const.d.ts.map +1 -0
  105. package/dist/lib/const.js +9 -0
  106. package/dist/lib/const.js.map +1 -0
  107. package/dist/lib/http.d.ts +36 -0
  108. package/dist/lib/http.d.ts.map +1 -0
  109. package/dist/{http.js → lib/http.js} +1 -1
  110. package/dist/lib/http.js.map +1 -0
  111. package/dist/lib/label.d.ts +16 -0
  112. package/dist/lib/label.d.ts.map +1 -0
  113. package/dist/lib/label.js +33 -0
  114. package/dist/lib/label.js.map +1 -0
  115. package/dist/lib/layout.defaults.d.ts +9 -0
  116. package/dist/lib/layout.defaults.d.ts.map +1 -0
  117. package/dist/lib/layout.defaults.js +161 -0
  118. package/dist/lib/layout.defaults.js.map +1 -0
  119. package/dist/lib/link.d.ts +9 -0
  120. package/dist/lib/link.d.ts.map +1 -0
  121. package/dist/lib/link.js +16 -0
  122. package/dist/lib/link.js.map +1 -0
  123. package/dist/lib/meta-data.d.ts +56 -0
  124. package/dist/lib/meta-data.d.ts.map +1 -0
  125. package/dist/lib/open-graph.d.ts +143 -0
  126. package/dist/lib/open-graph.d.ts.map +1 -0
  127. package/dist/lib/pagination.d.ts +27 -0
  128. package/dist/lib/pagination.d.ts.map +1 -0
  129. package/dist/lib/pagination.js +39 -0
  130. package/dist/lib/pagination.js.map +1 -0
  131. package/dist/lib/route.d.ts +17 -0
  132. package/dist/lib/route.d.ts.map +1 -0
  133. package/dist/{route.js → lib/route.js} +1 -1
  134. package/dist/lib/route.js.map +1 -0
  135. package/dist/lib/store.d.ts +27 -0
  136. package/dist/lib/store.d.ts.map +1 -0
  137. package/dist/{store.js → lib/store.js} +1 -24
  138. package/dist/lib/store.js.map +1 -0
  139. package/dist/lib/structured-data.d.ts +9 -0
  140. package/dist/lib/structured-data.d.ts.map +1 -0
  141. package/dist/lib/twitter-card.d.ts +43 -0
  142. package/dist/lib/twitter-card.d.ts.map +1 -0
  143. package/dist/lib/utils.d.ts +13 -0
  144. package/dist/lib/utils.d.ts.map +1 -0
  145. package/dist/lib/utils.js +35 -0
  146. package/dist/lib/utils.js.map +1 -0
  147. package/dist/mock.d.ts +127 -0
  148. package/dist/mock.d.ts.map +1 -0
  149. package/dist/node_modules/@selderee/plugin-htmlparser2/lib/hp2-builder.js +75 -0
  150. package/dist/node_modules/@selderee/plugin-htmlparser2/lib/hp2-builder.js.map +1 -0
  151. package/dist/node_modules/deepmerge/dist/cjs.js +86 -0
  152. package/dist/node_modules/deepmerge/dist/cjs.js.map +1 -0
  153. package/dist/node_modules/dom-serializer/lib/esm/foreignNames.js +105 -0
  154. package/dist/node_modules/dom-serializer/lib/esm/foreignNames.js.map +1 -0
  155. package/dist/node_modules/dom-serializer/lib/esm/index.js +146 -0
  156. package/dist/node_modules/dom-serializer/lib/esm/index.js.map +1 -0
  157. package/dist/node_modules/domelementtype/lib/esm/index.js +53 -0
  158. package/dist/node_modules/domelementtype/lib/esm/index.js.map +1 -0
  159. package/dist/node_modules/domhandler/lib/esm/index.js +130 -0
  160. package/dist/node_modules/domhandler/lib/esm/index.js.map +1 -0
  161. package/dist/node_modules/domhandler/lib/esm/node.js +307 -0
  162. package/dist/node_modules/domhandler/lib/esm/node.js.map +1 -0
  163. package/dist/node_modules/entities/lib/esm/decode.js +363 -0
  164. package/dist/node_modules/entities/lib/esm/decode.js.map +1 -0
  165. package/dist/node_modules/entities/lib/esm/decode_codepoint.js +59 -0
  166. package/dist/node_modules/entities/lib/esm/decode_codepoint.js.map +1 -0
  167. package/dist/node_modules/entities/lib/esm/escape.js +85 -0
  168. package/dist/node_modules/entities/lib/esm/escape.js.map +1 -0
  169. package/dist/node_modules/entities/lib/esm/generated/decode-data-html.js +6 -0
  170. package/dist/node_modules/entities/lib/esm/generated/decode-data-html.js.map +1 -0
  171. package/dist/node_modules/entities/lib/esm/generated/decode-data-xml.js +6 -0
  172. package/dist/node_modules/entities/lib/esm/generated/decode-data-xml.js.map +1 -0
  173. package/dist/node_modules/html-to-text/lib/html-to-text.js +1816 -0
  174. package/dist/node_modules/html-to-text/lib/html-to-text.js.map +1 -0
  175. package/dist/node_modules/html-to-text/node_modules/htmlparser2/lib/esm/Parser.js +435 -0
  176. package/dist/node_modules/html-to-text/node_modules/htmlparser2/lib/esm/Parser.js.map +1 -0
  177. package/dist/node_modules/html-to-text/node_modules/htmlparser2/lib/esm/Tokenizer.js +736 -0
  178. package/dist/node_modules/html-to-text/node_modules/htmlparser2/lib/esm/Tokenizer.js.map +1 -0
  179. package/dist/node_modules/html-to-text/node_modules/htmlparser2/lib/esm/index.js +19 -0
  180. package/dist/node_modules/html-to-text/node_modules/htmlparser2/lib/esm/index.js.map +1 -0
  181. package/dist/node_modules/leac/lib/leac.js +101 -0
  182. package/dist/node_modules/leac/lib/leac.js.map +1 -0
  183. package/dist/node_modules/parseley/lib/parseley.js +310 -0
  184. package/dist/node_modules/parseley/lib/parseley.js.map +1 -0
  185. package/dist/node_modules/peberminta/lib/core.js +149 -0
  186. package/dist/node_modules/peberminta/lib/core.js.map +1 -0
  187. package/dist/node_modules/selderee/lib/selderee.js +319 -0
  188. package/dist/node_modules/selderee/lib/selderee.js.map +1 -0
  189. package/dist/proxy/protected-route.d.ts +9 -0
  190. package/dist/proxy/protected-route.d.ts.map +1 -0
  191. package/dist/proxy/protected-route.js +40 -0
  192. package/dist/proxy/protected-route.js.map +1 -0
  193. package/dist/proxy/proxy.d.ts +31 -0
  194. package/dist/proxy/proxy.d.ts.map +1 -0
  195. package/dist/proxy/proxy.js +49 -0
  196. package/dist/proxy/proxy.js.map +1 -0
  197. package/dist/proxy/route-auto-detection.d.ts +12 -0
  198. package/dist/proxy/route-auto-detection.d.ts.map +1 -0
  199. package/dist/proxy/route-auto-detection.js +82 -0
  200. package/dist/proxy/route-auto-detection.js.map +1 -0
  201. package/dist/proxy/route-proxy.d.ts +36 -0
  202. package/dist/proxy/route-proxy.d.ts.map +1 -0
  203. package/dist/proxy/route-proxy.js +103 -0
  204. package/dist/proxy/route-proxy.js.map +1 -0
  205. package/dist/server/context.d.ts +30 -0
  206. package/dist/server/context.d.ts.map +1 -0
  207. package/dist/server/context.js +106 -0
  208. package/dist/server/context.js.map +1 -0
  209. package/dist/server/handlers/auth.handler.d.ts +10 -0
  210. package/dist/server/handlers/auth.handler.d.ts.map +1 -0
  211. package/dist/server/handlers/auth.handler.js +29 -0
  212. package/dist/server/handlers/auth.handler.js.map +1 -0
  213. package/dist/server/handlers/captions.handler.d.ts +10 -0
  214. package/dist/server/handlers/captions.handler.d.ts.map +1 -0
  215. package/dist/server/handlers/captions.handler.js +33 -0
  216. package/dist/server/handlers/captions.handler.js.map +1 -0
  217. package/dist/server/handlers/collection.handler.d.ts +36 -0
  218. package/dist/server/handlers/collection.handler.d.ts.map +1 -0
  219. package/dist/server/handlers/collection.handler.js +166 -0
  220. package/dist/server/handlers/collection.handler.js.map +1 -0
  221. package/dist/server/handlers/error-response.js +24 -0
  222. package/dist/server/handlers/error-response.js.map +1 -0
  223. package/dist/server/handlers/index.handler.d.ts +9 -0
  224. package/dist/server/handlers/index.handler.d.ts.map +1 -0
  225. package/dist/server/handlers/index.handler.js +145 -0
  226. package/dist/server/handlers/index.handler.js.map +1 -0
  227. package/dist/server/handlers/preview.handler.d.ts +9 -0
  228. package/dist/server/handlers/preview.handler.d.ts.map +1 -0
  229. package/dist/server/handlers/preview.handler.js +15 -0
  230. package/dist/server/handlers/preview.handler.js.map +1 -0
  231. package/dist/server/handlers/registry.handler.d.ts +16 -0
  232. package/dist/server/handlers/registry.handler.d.ts.map +1 -0
  233. package/dist/server/handlers/registry.handler.js +260 -0
  234. package/dist/server/handlers/registry.handler.js.map +1 -0
  235. package/dist/server/handlers/route.handler.d.ts +20 -0
  236. package/dist/server/handlers/route.handler.d.ts.map +1 -0
  237. package/dist/server/handlers/route.handler.js +122 -0
  238. package/dist/server/handlers/route.handler.js.map +1 -0
  239. package/dist/server/handlers/sitemap.handler.d.ts +30 -0
  240. package/dist/server/handlers/sitemap.handler.d.ts.map +1 -0
  241. package/dist/server/handlers/sitemap.handler.js +338 -0
  242. package/dist/server/handlers/sitemap.handler.js.map +1 -0
  243. package/dist/server/handlers/static-params.handler.d.ts +24 -0
  244. package/dist/server/handlers/static-params.handler.d.ts.map +1 -0
  245. package/dist/server/handlers/static-params.handler.js +56 -0
  246. package/dist/server/handlers/static-params.handler.js.map +1 -0
  247. package/dist/server/handlers/vars.handler.d.ts +10 -0
  248. package/dist/server/handlers/vars.handler.d.ts.map +1 -0
  249. package/dist/server/handlers/vars.handler.js +159 -0
  250. package/dist/server/handlers/vars.handler.js.map +1 -0
  251. package/dist/server/layout.js +88 -0
  252. package/dist/server/layout.js.map +1 -0
  253. package/dist/server/lazy.d.ts +11 -0
  254. package/dist/server/lazy.d.ts.map +1 -0
  255. package/dist/server/lazy.js +33 -0
  256. package/dist/server/lazy.js.map +1 -0
  257. package/dist/server/local-api.d.ts +9 -0
  258. package/dist/server/local-api.d.ts.map +1 -0
  259. package/dist/server/local-api.js +60 -0
  260. package/dist/server/local-api.js.map +1 -0
  261. package/dist/server/metadata.d.ts +21 -0
  262. package/dist/server/metadata.d.ts.map +1 -0
  263. package/dist/server/metadata.js +20 -0
  264. package/dist/server/metadata.js.map +1 -0
  265. package/dist/server/mixer-payload.d.ts +63 -0
  266. package/dist/server/mixer-payload.d.ts.map +1 -0
  267. package/dist/server/mixer.d.ts +214 -0
  268. package/dist/server/mixer.d.ts.map +1 -0
  269. package/dist/server/mixer.js +355 -0
  270. package/dist/server/mixer.js.map +1 -0
  271. package/dist/server/page.d.ts +22 -0
  272. package/dist/server/page.d.ts.map +1 -0
  273. package/dist/server/page.js +57 -0
  274. package/dist/server/page.js.map +1 -0
  275. package/dist/server/utils.d.ts +12 -0
  276. package/dist/server/utils.d.ts.map +1 -0
  277. package/dist/{utils2.js → server/utils.js} +3 -3
  278. package/dist/server/utils.js.map +1 -0
  279. package/dist/server/utmz.d.ts +9 -0
  280. package/dist/server/utmz.d.ts.map +1 -0
  281. package/dist/server/utmz.js +14 -0
  282. package/dist/server/utmz.js.map +1 -0
  283. package/dist/types.d.ts +6 -61
  284. package/dist/types.d.ts.map +1 -1
  285. package/package.json +1 -1
  286. package/dist/exports/client.d.ts.map +0 -1
  287. package/dist/exports/client.js.map +0 -1
  288. package/dist/exports/instrumentation.d.ts.map +0 -1
  289. package/dist/exports/instrumentation.js.map +0 -1
  290. package/dist/exports/proxy.d.ts.map +0 -1
  291. package/dist/exports/proxy.js.map +0 -1
  292. package/dist/exports/server.d.ts.map +0 -1
  293. package/dist/exports/server.js.map +0 -1
  294. package/dist/http.js.map +0 -1
  295. package/dist/index.d.ts.map +0 -1
  296. package/dist/index.js.map +0 -1
  297. package/dist/index2.d.ts +0 -4
  298. package/dist/route.js.map +0 -1
  299. package/dist/store.js.map +0 -1
  300. package/dist/types2.d.ts.map +0 -1
  301. package/dist/utils.js +0 -78
  302. package/dist/utils.js.map +0 -1
  303. package/dist/utils2.js.map +0 -1
  304. /package/dist/{config.client.js → instrumentation/sentry/config.client.js} +0 -0
  305. /package/dist/{config.edge.js → instrumentation/sentry/config.edge.js} +0 -0
  306. /package/dist/{config.server.js → instrumentation/sentry/config.server.js} +0 -0
@@ -1,13 +1,2 @@
1
- import { n as RequestInfo, t as ErrorContext } from "../types2.js";
2
-
3
- //#region src/instrumentation/server.d.ts
4
- declare function registerIntrumentation(): Promise<void>;
5
- /**
6
- * Reports errors passed to the the Next.js `onRequestError` instrumentation hook.
7
- */
8
- declare function captureRequestError(error: unknown, request: RequestInfo, errorContext: ErrorContext): void;
9
- //# sourceMappingURL=server.d.ts.map
10
-
11
- //#endregion
12
- export { captureRequestError, registerIntrumentation };
13
- //# sourceMappingURL=instrumentation.d.ts.map
1
+ import { captureRequestError, registerIntrumentation } from "../instrumentation/server.js";
2
+ export { captureRequestError, registerIntrumentation };
@@ -1,25 +1,2 @@
1
- import * as Sentry from "@sentry/nextjs";
2
- //#region src/instrumentation/sentry/capture.requestError.ts
3
- /**
4
- * Reports errors passed to the the Next.js `onRequestError` instrumentation hook.
5
- */
6
- const captureRequestError$1 = Sentry.captureRequestError;
7
- //#endregion
8
- //#region src/instrumentation/server.ts
9
- async function registerIntrumentation() {
10
- if (process.env.NEXT_PUBLIC_SENTRY_DSN) {
11
- if (process.env.NEXT_RUNTIME === "nodejs") await import("../config.server.js");
12
- if (process.env.NEXT_RUNTIME === "edge") await import("../config.edge.js");
13
- }
14
- }
15
- /**
16
- * Reports errors passed to the the Next.js `onRequestError` instrumentation hook.
17
- */
18
- function captureRequestError(error, request, errorContext) {
19
- if (process.env.NEXT_PUBLIC_SENTRY_DSN) return captureRequestError$1(error, request, errorContext);
20
- else console.log("Instrumentation.captureRequestError", error, errorContext);
21
- }
22
- //#endregion
1
+ import { captureRequestError, registerIntrumentation } from "../instrumentation/server.js";
23
2
  export { captureRequestError, registerIntrumentation };
24
-
25
- //# sourceMappingURL=instrumentation.js.map
@@ -1,71 +1,5 @@
1
- import { IRoute } from "@websolutespa/bom-core";
2
- import { NextFetchEvent, NextRequest } from "next/server";
3
- import { NextMiddlewareResult } from "next/dist/server/web/types";
4
-
5
- //#region src/proxy/proxy.d.ts
6
- type MiddlewareOptions = {
7
- request: NextRequest;
8
- next: NextFetchEvent;
9
- disabled?: boolean;
10
- };
11
- type Middleware = (props: MiddlewareOptions) => NextMiddlewareResult | Promise<NextMiddlewareResult>;
12
- /**
13
- * Returns the externally visible origin for an internal middleware request.
14
- *
15
- * Deployments commonly terminate TLS or change ports before forwarding to
16
- * Next.js. Honoring valid forwarded headers keeps resolver requests on the
17
- * public host and prevents an avoidable proxy redirect; direct-origin fallback
18
- * keeps local development and untrusted/invalid header values deterministic.
19
- */
20
- declare function getRequestOrigin(request: NextRequest): string;
21
- /**
22
- * Composes middleware into an ordered, short-circuiting proxy pipeline.
23
- *
24
- * A disabled proxy returns immediately, avoiding all downstream request work.
25
- * Otherwise each middleware can claim the response; stopping at its first
26
- * result prevents duplicate rewrites, redirects, and expensive policy checks.
27
- */
28
- declare function createProxy(...proxies: Middleware[]): Middleware;
29
- //# sourceMappingURL=proxy.d.ts.map
30
- //#endregion
31
- //#region src/proxy/route-proxy.d.ts
32
- type Proxy = (request: NextRequest, next: NextFetchEvent) => Promise<NextMiddlewareResult>;
33
- type RouteMiddlewareOptions = {
34
- request: NextRequest;
35
- next: NextFetchEvent;
36
- route: IRoute;
37
- disabled?: boolean;
38
- };
39
- type RouteMiddleware = (props: RouteMiddlewareOptions) => NextMiddlewareResult | Promise<NextMiddlewareResult>;
40
- type RouteInterceptorProxy = (route: IRoute, request: NextRequest, next: NextFetchEvent) => Promise<NextMiddlewareResult>;
41
- type ResolvedRoute = IRoute & {
42
- splat?: string;
43
- };
44
- type RouteResolverResponse = {
45
- parent?: IRoute;
46
- route?: ResolvedRoute;
47
- };
48
- /**
49
- * Resolves a public request to a CMS route, then rewrites it to the internal
50
- * Next.js page while preserving the original browser URL.
51
- *
52
- * The resolver call is deliberately made to this request's public origin so it
53
- * works behind reverse proxies and deployment hosts. A rewrite keeps routing
54
- * server-side, avoiding an extra browser round trip that a redirect would add.
55
- */
56
- declare function createRouteProxy(...middlewares: RouteMiddleware[]): Middleware;
57
- //# sourceMappingURL=route-proxy.d.ts.map
58
- //#endregion
59
- //#region src/proxy/protected-route.d.ts
60
- declare const protectedRouteProxy: RouteMiddleware;
61
- //# sourceMappingURL=protected-route.d.ts.map
62
- //#endregion
63
- //#region src/proxy/route-auto-detection.d.ts
64
- declare function detectLocale(request: NextRequest, defaultLocale?: string): Promise<string>;
65
- declare function detectCountry(request: NextRequest, defaultMarket?: string): Promise<string | undefined>;
66
- declare const routeAutoDetection: Middleware;
67
- //# sourceMappingURL=route-auto-detection.d.ts.map
68
-
69
- //#endregion
70
- export { Middleware, MiddlewareOptions, Proxy, ResolvedRoute, RouteInterceptorProxy, RouteMiddleware, RouteMiddlewareOptions, RouteResolverResponse, createProxy, createRouteProxy, detectCountry, detectLocale, getRequestOrigin, protectedRouteProxy, routeAutoDetection };
71
- //# sourceMappingURL=proxy.d.ts.map
1
+ import { Middleware, MiddlewareOptions, createProxy, getRequestOrigin } from "../proxy/proxy.js";
2
+ import { Proxy, ResolvedRoute, RouteInterceptorProxy, RouteMiddleware, RouteMiddlewareOptions, RouteResolverResponse, createRouteProxy } from "../proxy/route-proxy.js";
3
+ import { protectedRouteProxy } from "../proxy/protected-route.js";
4
+ import { detectCountry, detectLocale, routeAutoDetection } from "../proxy/route-auto-detection.js";
5
+ export { Middleware, MiddlewareOptions, Proxy, ResolvedRoute, RouteInterceptorProxy, RouteMiddleware, RouteMiddlewareOptions, RouteResolverResponse, createProxy, createRouteProxy, detectCountry, detectLocale, getRequestOrigin, protectedRouteProxy, routeAutoDetection };
@@ -1,254 +1,5 @@
1
- import { o as localApiGet } from "../http.js";
2
- import { n as getNextUrl, t as getHrefBeforeRedirect } from "../utils2.js";
3
- import { asEquatable, defaultLocale, defaultMarket } from "@websolutespa/bom-core";
4
- import { NextResponse } from "next/server";
5
- //#region src/proxy/proxy.ts
6
- /**
7
- * Returns the externally visible origin for an internal middleware request.
8
- *
9
- * Deployments commonly terminate TLS or change ports before forwarding to
10
- * Next.js. Honoring valid forwarded headers keeps resolver requests on the
11
- * public host and prevents an avoidable proxy redirect; direct-origin fallback
12
- * keeps local development and untrusted/invalid header values deterministic.
13
- */
14
- function getRequestOrigin(request) {
15
- const forwardedHost = request.headers.get("x-forwarded-host")?.split(",")[0]?.trim();
16
- const forwardedProtocol = request.headers.get("x-forwarded-proto")?.split(",")[0]?.trim();
17
- const forwardedPort = request.headers.get("x-forwarded-port")?.split(",")[0]?.trim();
18
- if (!forwardedHost || !["http", "https"].includes(forwardedProtocol || "")) return request.nextUrl.origin;
19
- const protocol = forwardedProtocol;
20
- const defaultPort = protocol === "https" ? "443" : "80";
21
- const includesPort = forwardedHost.startsWith("[") ? forwardedHost.includes("]:") : forwardedHost.includes(":");
22
- return `${protocol}://${forwardedPort && forwardedPort !== defaultPort && !includesPort ? `${forwardedHost}:${forwardedPort}` : forwardedHost}`;
23
- }
24
- /**
25
- * Composes middleware into an ordered, short-circuiting proxy pipeline.
26
- *
27
- * A disabled proxy returns immediately, avoiding all downstream request work.
28
- * Otherwise each middleware can claim the response; stopping at its first
29
- * result prevents duplicate rewrites, redirects, and expensive policy checks.
30
- */
31
- function createProxy(...proxies) {
32
- return async function({ request, next, disabled }) {
33
- if (disabled) return NextResponse.next();
34
- let proxyResponse, i = 0;
35
- while (i < proxies.length && !proxyResponse) {
36
- const proxy = proxies[i];
37
- if (typeof proxy === "function") {
38
- proxyResponse = await proxy({
39
- request,
40
- next
41
- });
42
- if (proxyResponse) return proxyResponse;
43
- }
44
- i++;
45
- }
46
- return NextResponse.next();
47
- };
48
- }
49
- //#endregion
50
- //#region src/proxy/protected-route.ts
51
- function getPublicRedirectUrl(request, href) {
52
- if (!href.startsWith("/") || href.startsWith("//")) return;
53
- const url = new URL(href, getRequestOrigin(request));
54
- return url.pathname === request.nextUrl.pathname ? void 0 : url;
55
- }
56
- const protectedRouteProxy = async ({ request, route }) => {
57
- if (route.isProtected) {
58
- const isAuthenticated = request.cookies.get("payload-token");
59
- console.log("protectedRouteProxy.isAuthenticated", isAuthenticated);
60
- if (!isAuthenticated) {
61
- if (route.publicRedirect) {
62
- const redirectUrl = getPublicRedirectUrl(request, route.publicRedirect);
63
- if (redirectUrl) return NextResponse.redirect(redirectUrl);
64
- }
65
- const { pathname } = request.nextUrl;
66
- const reqHeaders = new Headers(request.headers);
67
- reqHeaders.set("x-pathname", pathname);
68
- const nextRoute = (await localApiGet(`/-route?schema=login&market=${encodeURIComponent(route.market)}&locale=${encodeURIComponent(route.locale)}`, {}, void 0, getRequestOrigin(request)))?.route;
69
- if (nextRoute) {
70
- const nextUrl = getNextUrl(request, nextRoute);
71
- reqHeaders.set("x-market", nextRoute.market);
72
- reqHeaders.set("x-locale", nextRoute.locale);
73
- reqHeaders.set("x-schema", nextRoute.schema);
74
- reqHeaders.set("x-id", String(nextRoute.page));
75
- reqHeaders.set("x-forwarded-pathname", nextUrl.pathname);
76
- console.log("protectedRouteProxy.Protected", pathname, ">", nextUrl.pathname);
77
- return NextResponse.rewrite(nextUrl, { request: { headers: reqHeaders } });
78
- }
79
- }
80
- }
81
- };
82
- //#endregion
83
- //#region src/proxy/route-auto-detection.ts
84
- async function detectLocale(request, defaultLocale) {
85
- const acceptLanguage = request.headers.get("accept-language")?.split(",")[0];
86
- return request.cookies.get("NEXT_LOCALE")?.value || acceptLanguage || defaultLocale || process.env.DEFAULT_LOCALE;
87
- }
88
- async function detectCountry(request, defaultMarket) {
89
- let ip = request.headers.get("x-forwarded-for") || request.headers.get("x-real-ip");
90
- if (ip) ip = ip.split(",")[0];
91
- const isValidIp = ip?.match(/^(\d+?)\.(\d+?)\.(\d+?)\.(\d+?)$/);
92
- let detectedCountry = "";
93
- try {
94
- const token = process.env.IPINFO_TOKEN;
95
- if (token) {
96
- const url = isValidIp ? `https://api.ipinfo.io/lite/${ip}/country_code?token=${token}` : `https://api.ipinfo.io/lite/me/country_code?token=${token}`;
97
- const response = await fetch(url);
98
- if (response.ok) detectedCountry = (await response.text()).toLowerCase();
99
- } else {
100
- const url = `https://geoip.websolute.it/Ip2Location/get_info.aspx?ipaddress=${isValidIp ? ip : ""}`;
101
- const response = await fetch(url);
102
- if (response.ok) detectedCountry = (((await response.text()).split("<CountryCode><![CDATA[")[1] || "").split("]]></CountryCode>")[0] || "").replace("-", "").toLowerCase();
103
- }
104
- return detectedCountry || defaultMarket || process.env.DEFAULT_MARKET;
105
- } catch (error) {
106
- console.log("routeInterceptor.detectCountry.error", error);
107
- }
108
- return defaultMarket || process.env.DEFAULT_MARKET;
109
- }
110
- const routeAutoDetection = async ({ request }) => {
111
- let redirectUrl = void 0;
112
- const url = request.nextUrl;
113
- const origin = getRequestOrigin(request);
114
- if (url.pathname === "/") {
115
- const cookie = request.cookies.get("detectedRoute");
116
- if (cookie?.value) redirectUrl = cookie.value;
117
- const rootRoutes = await localApiGet("/-route?where[isRoot][equals]=true", {}, void 0, origin);
118
- if (rootRoutes.find((x) => x.id === "/")) return;
119
- const markets = await localApiGet("/market?pagination=false", {}, void 0, origin);
120
- const market = markets.find((x) => x.isDefault) || markets.find((x) => x.id === defaultMarket) || markets[0];
121
- const detectedCountry = await detectCountry(request, market.id);
122
- const detectedMarket = detectedCountry ? markets.filter((x) => Array.isArray(x.countries)).find((x) => {
123
- return (x.countries || []).map((x) => typeof x === "string" ? x : x.id).includes(detectedCountry);
124
- }) || markets.find((x) => !Array.isArray(x.countries)) : void 0;
125
- let detectedMarketRoutes = rootRoutes.filter((x) => x.market === detectedMarket?.id);
126
- if (detectedMarketRoutes.length === 0) detectedMarketRoutes = rootRoutes.filter((x) => x.market === market.id);
127
- const defaultMarketLocale = market.defaultLanguage ? typeof market.defaultLanguage === "string" ? market.defaultLanguage : market.defaultLanguage.id : defaultLocale;
128
- const detectedLocale = await detectLocale(request, defaultMarketLocale);
129
- const detectedLocaleRoutes = detectedMarketRoutes.filter((x) => x.locale === detectedLocale);
130
- const detectedRoute = detectedLocaleRoutes.length > 0 ? detectedLocaleRoutes[0] : detectedMarketRoutes.find((x) => {
131
- const market = markets.find((m) => m.id === x.market);
132
- const marketLocale = market.defaultLanguage ? asEquatable(market.defaultLanguage) : defaultMarketLocale;
133
- return x.locale === marketLocale;
134
- });
135
- if (detectedRoute && detectedRoute.id !== url.pathname) {
136
- console.log("routeInterceptor.routeAutoDetection", detectedLocale, detectedCountry, detectedRoute.id);
137
- redirectUrl = detectedRoute.id;
138
- }
139
- }
140
- if (redirectUrl) {
141
- const resolvedUrl = new URL(redirectUrl, origin).href;
142
- const search = request.nextUrl.search;
143
- const response = NextResponse.redirect(resolvedUrl + search, { status: 307 });
144
- response.cookies.set({
145
- expires: new Date(Date.now() + 864e5),
146
- httpOnly: true,
147
- name: "detectedRoute",
148
- path: "/",
149
- sameSite: "lax",
150
- secure: true,
151
- value: redirectUrl
152
- });
153
- return response;
154
- }
155
- };
156
- //#endregion
157
- //#region src/proxy/route-proxy.ts
158
- /**
159
- * Resolves a public request to a CMS route, then rewrites it to the internal
160
- * Next.js page while preserving the original browser URL.
161
- *
162
- * The resolver call is deliberately made to this request's public origin so it
163
- * works behind reverse proxies and deployment hosts. A rewrite keeps routing
164
- * server-side, avoiding an extra browser round trip that a redirect would add.
165
- */
166
- function createRouteProxy(...middlewares) {
167
- return async function({ request, next }) {
168
- const url = request.nextUrl;
169
- const origin = getRequestOrigin(request);
170
- const hrefBeforeRedirect = getHrefBeforeRedirect(request);
171
- const { pathname } = url;
172
- const headers = new Headers(request.headers);
173
- headers.set("x-pathname", pathname);
174
- try {
175
- const draftMode = request.cookies.has("__prerender_bypass");
176
- console.log("draftMode", draftMode);
177
- if (draftMode) return;
178
- const resolution = await localApiGet(`/-route?pathname=${url.pathname}&href=${url.href}&hrefBeforeRedirect=${hrefBeforeRedirect}`, {}, void 0, origin);
179
- const route = resolution?.route;
180
- if (route) {
181
- let middlewareResponse, i = 0;
182
- while (i < middlewares.length && !middlewareResponse) {
183
- const middleware = middlewares[i];
184
- if (typeof middleware === "function") {
185
- middlewareResponse = await middleware({
186
- request,
187
- next,
188
- route
189
- });
190
- if (middlewareResponse) return middlewareResponse;
191
- }
192
- i++;
193
- }
194
- const nextUrl = getNextUrl(request, route);
195
- console.log("createRouteProxy.Found", pathname, ">", nextUrl.pathname);
196
- headers.set("x-market", route.market);
197
- headers.set("x-locale", route.locale);
198
- headers.set("x-schema", route.schema);
199
- headers.set("x-id", String(route.page));
200
- headers.set("x-forwarded-pathname", nextUrl.pathname);
201
- return NextResponse.rewrite(nextUrl, { request: { headers } });
202
- } else {
203
- const parentRoute = resolution?.parent;
204
- const market = parentRoute?.market || defaultMarket;
205
- const locale = parentRoute?.locale || defaultLocale;
206
- const nextUrl = request.nextUrl.clone();
207
- nextUrl.pathname = `/${market}/${locale}/404`;
208
- headers.set("x-market", market);
209
- headers.set("x-locale", locale);
210
- headers.set("x-schema", "not_found");
211
- headers.set("x-id", "404");
212
- headers.set("x-forwarded-pathname", nextUrl.pathname);
213
- console.log("createRouteProxy.NotFound", pathname);
214
- return NextResponse.rewrite(nextUrl, { request: { headers } });
215
- }
216
- } catch (error) {
217
- const routeError = error && typeof error === "object" ? error : {};
218
- if (routeError.status && routeError.status >= 300 && routeError.status < 400) {
219
- console.log("createRouteProxy.3xx", url.pathname, routeError.status, routeError.statusText);
220
- const nextUrl = request.nextUrl.clone();
221
- nextUrl.pathname = "/";
222
- headers.set("x-forwarded-pathname", nextUrl.pathname);
223
- return NextResponse.redirect(nextUrl, 307);
224
- } else if (routeError.status && routeError.status >= 400 && routeError.status < 500) {
225
- if (routeError.status === 404)
226
- /**
227
- * A resolver miss is not necessarily a CMS 404: it may be a Next.js
228
- * file-system route such as an API endpoint or static asset. Letting
229
- * Next continue avoids routing those requests through a fallback
230
- * render and keeps their fast native handling intact.
231
- */
232
- return;
233
- console.log("createRouteProxy.4xx", url.pathname, routeError.status, routeError.statusText);
234
- const market = defaultMarket;
235
- const locale = defaultLocale;
236
- const nextUrl = request.nextUrl.clone();
237
- nextUrl.pathname = `/${market}/${locale}/404`;
238
- headers.set("x-market", market);
239
- headers.set("x-locale", locale);
240
- headers.set("x-schema", "not_found");
241
- headers.set("x-id", "404");
242
- headers.set("x-forwarded-pathname", nextUrl.pathname);
243
- console.log("createRouteProxy.NotFound", pathname);
244
- return NextResponse.rewrite(nextUrl, { request: { headers } });
245
- }
246
- console.log("createRouteProxy.error.5xx", url.pathname, routeError.url, routeError.status, routeError.statusText || error);
247
- return;
248
- }
249
- };
250
- }
251
- //#endregion
1
+ import { createProxy, getRequestOrigin } from "../proxy/proxy.js";
2
+ import { protectedRouteProxy } from "../proxy/protected-route.js";
3
+ import { detectCountry, detectLocale, routeAutoDetection } from "../proxy/route-auto-detection.js";
4
+ import { createRouteProxy } from "../proxy/route-proxy.js";
252
5
  export { createProxy, createRouteProxy, detectCountry, detectLocale, getRequestOrigin, protectedRouteProxy, routeAutoDetection };
253
-
254
- //# sourceMappingURL=proxy.js.map