@sitecore-content-sdk/nextjs 1.3.0-canary.9 → 1.4.0-canary.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.
- package/README.md +11 -11
- package/dist/cjs/client/index.js +10 -10
- package/dist/cjs/client/models.js +2 -2
- package/dist/cjs/client/sitecore-nextjs-client.js +160 -156
- package/dist/cjs/components/BYOCWrapper.js +31 -30
- package/dist/cjs/components/ComponentPropsContext.js +66 -59
- package/dist/cjs/components/FEaaSWrapper.js +33 -32
- package/dist/cjs/components/Link.js +117 -90
- package/dist/cjs/components/NextImage.js +66 -62
- package/dist/cjs/components/Placeholder.js +55 -50
- package/dist/cjs/components/RichText.js +133 -128
- package/dist/cjs/config/define-config.js +26 -25
- package/dist/cjs/config/index.js +5 -5
- package/dist/cjs/config-cli/define-cli-config.js +40 -39
- package/dist/cjs/config-cli/index.js +5 -5
- package/dist/cjs/editing/codegen/import-map.js +129 -118
- package/dist/cjs/editing/codegen/index.js +6 -6
- package/dist/cjs/editing/constants.js +10 -10
- package/dist/cjs/editing/editing-config-middleware.js +70 -69
- package/dist/cjs/editing/editing-render-middleware.js +145 -144
- package/dist/cjs/editing/feaas-render-middleware.js +102 -101
- package/dist/cjs/editing/index.js +19 -19
- package/dist/cjs/editing/render-middleware.js +46 -46
- package/dist/cjs/editing/utils.js +260 -257
- package/dist/cjs/index.js +132 -131
- package/dist/cjs/middleware/app-router-multisite-middleware.js +41 -20
- package/dist/cjs/middleware/index.js +30 -30
- package/dist/cjs/middleware/locale-middleware.js +85 -84
- package/dist/cjs/middleware/middleware.js +195 -192
- package/dist/cjs/middleware/multisite-middleware.js +141 -118
- package/dist/cjs/middleware/personalize-middleware.js +240 -236
- package/dist/cjs/middleware/redirects-middleware.js +323 -297
- package/dist/cjs/middleware/robots-middleware.js +45 -44
- package/dist/cjs/middleware/sitemap-middleware.js +50 -49
- package/dist/cjs/monitoring/healthcheck-middleware.js +31 -30
- package/dist/cjs/monitoring/index.js +5 -5
- package/dist/cjs/route-handler/editing-config-route-handler.js +110 -106
- package/dist/cjs/route-handler/editing-render-route-handler.js +270 -165
- package/dist/cjs/route-handler/index.js +11 -11
- package/dist/cjs/route-handler/robots-route-handler.js +69 -68
- package/dist/cjs/route-handler/sitemap-route-handler.js +66 -65
- package/dist/cjs/search/index.js +17 -0
- package/dist/cjs/services/component-props-service.js +142 -138
- package/dist/cjs/sharedTypes/component-props.js +2 -2
- package/dist/cjs/sharedTypes/sitecore-page-props.js +2 -2
- package/dist/cjs/site/index.js +5 -5
- package/dist/cjs/tools/codegen/import-map.js +15 -0
- package/dist/cjs/tools/component-props.loader.js +95 -95
- package/dist/cjs/tools/generate-map.js +317 -317
- package/dist/cjs/tools/index.js +14 -13
- package/dist/cjs/tools/templating/byoc-component.js +36 -36
- package/dist/cjs/tools/templating/constants.js +7 -7
- package/dist/cjs/tools/templating/default-component.js +35 -35
- package/dist/cjs/tools/templating/utils.js +200 -0
- package/dist/cjs/utils/index.js +14 -14
- package/dist/cjs/utils/utils.js +82 -73
- package/dist/esm/client/index.js +2 -2
- package/dist/esm/client/models.js +1 -1
- package/dist/esm/client/sitecore-nextjs-client.js +156 -152
- package/dist/esm/components/BYOCWrapper.js +27 -26
- package/dist/esm/components/ComponentPropsContext.js +28 -21
- package/dist/esm/components/FEaaSWrapper.js +29 -28
- package/dist/esm/components/Link.js +78 -51
- package/dist/esm/components/NextImage.js +60 -56
- package/dist/esm/components/Placeholder.js +18 -13
- package/dist/esm/components/RichText.js +96 -91
- package/dist/esm/config/define-config.js +21 -20
- package/dist/esm/config/index.js +1 -1
- package/dist/esm/config-cli/define-cli-config.js +36 -35
- package/dist/esm/config-cli/index.js +1 -1
- package/dist/esm/editing/codegen/import-map.js +92 -81
- package/dist/esm/editing/codegen/index.js +1 -1
- package/dist/esm/editing/constants.js +7 -7
- package/dist/esm/editing/editing-config-middleware.js +66 -65
- package/dist/esm/editing/editing-render-middleware.js +141 -140
- package/dist/esm/editing/feaas-render-middleware.js +98 -97
- package/dist/esm/editing/index.js +6 -6
- package/dist/esm/editing/render-middleware.js +42 -42
- package/dist/esm/editing/utils.js +246 -243
- package/dist/esm/index.js +25 -25
- package/dist/esm/middleware/app-router-multisite-middleware.js +37 -16
- package/dist/esm/middleware/index.js +11 -11
- package/dist/esm/middleware/locale-middleware.js +81 -80
- package/dist/esm/middleware/middleware.js +189 -186
- package/dist/esm/middleware/multisite-middleware.js +137 -114
- package/dist/esm/middleware/personalize-middleware.js +236 -232
- package/dist/esm/middleware/redirects-middleware.js +316 -290
- package/dist/esm/middleware/robots-middleware.js +41 -40
- package/dist/esm/middleware/sitemap-middleware.js +46 -45
- package/dist/esm/monitoring/healthcheck-middleware.js +27 -26
- package/dist/esm/monitoring/index.js +1 -1
- package/dist/esm/route-handler/editing-config-route-handler.js +106 -102
- package/dist/esm/route-handler/editing-render-route-handler.js +265 -160
- package/dist/esm/route-handler/index.js +4 -4
- package/dist/esm/route-handler/robots-route-handler.js +65 -64
- package/dist/esm/route-handler/sitemap-route-handler.js +63 -62
- package/dist/esm/search/index.js +1 -0
- package/dist/esm/services/component-props-service.js +135 -131
- package/dist/esm/sharedTypes/component-props.js +1 -1
- package/dist/esm/sharedTypes/sitecore-page-props.js +1 -1
- package/dist/esm/site/index.js +1 -1
- package/dist/esm/tools/codegen/import-map.js +11 -0
- package/dist/esm/tools/component-props.loader.js +59 -59
- package/dist/esm/tools/generate-map.js +279 -279
- package/dist/esm/tools/index.js +3 -2
- package/dist/esm/tools/templating/byoc-component.js +30 -30
- package/dist/esm/tools/templating/constants.js +4 -4
- package/dist/esm/tools/templating/default-component.js +29 -29
- package/dist/esm/tools/templating/utils.js +190 -0
- package/dist/esm/utils/index.js +3 -3
- package/dist/esm/utils/utils.js +74 -65
- package/package.json +87 -13
- package/search.d.ts +1 -0
- package/types/client/index.d.ts +3 -2
- package/types/client/index.d.ts.map +1 -0
- package/types/client/models.d.ts +9 -8
- package/types/client/models.d.ts.map +1 -0
- package/types/client/sitecore-nextjs-client.d.ts +68 -63
- package/types/client/sitecore-nextjs-client.d.ts.map +1 -0
- package/types/components/BYOCWrapper.d.ts +16 -14
- package/types/components/BYOCWrapper.d.ts.map +1 -0
- package/types/components/ComponentPropsContext.d.ts +30 -18
- package/types/components/ComponentPropsContext.d.ts.map +1 -0
- package/types/components/FEaaSWrapper.d.ts +17 -15
- package/types/components/FEaaSWrapper.d.ts.map +1 -0
- package/types/components/Link.d.ts +25 -15
- package/types/components/Link.d.ts.map +1 -0
- package/types/components/NextImage.d.ts +11 -6
- package/types/components/NextImage.d.ts.map +1 -0
- package/types/components/Placeholder.d.ts +14 -8
- package/types/components/Placeholder.d.ts.map +1 -0
- package/types/components/RichText.d.ts +35 -25
- package/types/components/RichText.d.ts.map +1 -0
- package/types/config/define-config.d.ts +42 -38
- package/types/config/define-config.d.ts.map +1 -0
- package/types/config/index.d.ts +2 -1
- package/types/config/index.d.ts.map +1 -0
- package/types/config-cli/define-cli-config.d.ts +10 -8
- package/types/config-cli/define-cli-config.d.ts.map +1 -0
- package/types/config-cli/index.d.ts +2 -1
- package/types/config-cli/index.d.ts.map +1 -0
- package/types/editing/codegen/import-map.d.ts +15 -3
- package/types/editing/codegen/import-map.d.ts.map +1 -0
- package/types/editing/codegen/index.d.ts +3 -2
- package/types/editing/codegen/index.d.ts.map +1 -0
- package/types/editing/constants.d.ts +8 -7
- package/types/editing/constants.d.ts.map +1 -0
- package/types/editing/editing-config-middleware.d.ts +37 -31
- package/types/editing/editing-config-middleware.d.ts.map +1 -0
- package/types/editing/editing-render-middleware.d.ts +47 -44
- package/types/editing/editing-render-middleware.d.ts.map +1 -0
- package/types/editing/feaas-render-middleware.d.ts +35 -32
- package/types/editing/feaas-render-middleware.d.ts.map +1 -0
- package/types/editing/index.d.ts +7 -6
- package/types/editing/index.d.ts.map +1 -0
- package/types/editing/render-middleware.d.ts +26 -25
- package/types/editing/render-middleware.d.ts.map +1 -0
- package/types/editing/utils.d.ts +110 -106
- package/types/editing/utils.d.ts.map +1 -0
- package/types/index.d.ts +25 -24
- package/types/index.d.ts.map +1 -0
- package/types/middleware/app-router-multisite-middleware.d.ts +28 -13
- package/types/middleware/app-router-multisite-middleware.d.ts.map +1 -0
- package/types/middleware/index.d.ts +12 -11
- package/types/middleware/index.d.ts.map +1 -0
- package/types/middleware/locale-middleware.d.ts +35 -32
- package/types/middleware/locale-middleware.d.ts.map +1 -0
- package/types/middleware/middleware.d.ts +135 -127
- package/types/middleware/middleware.d.ts.map +1 -0
- package/types/middleware/multisite-middleware.d.ts +54 -37
- package/types/middleware/multisite-middleware.d.ts.map +1 -0
- package/types/middleware/personalize-middleware.d.ts +81 -65
- package/types/middleware/personalize-middleware.d.ts.map +1 -0
- package/types/middleware/redirects-middleware.d.ts +68 -65
- package/types/middleware/redirects-middleware.d.ts.map +1 -0
- package/types/middleware/robots-middleware.d.ts +15 -13
- package/types/middleware/robots-middleware.d.ts.map +1 -0
- package/types/middleware/sitemap-middleware.d.ts +16 -14
- package/types/middleware/sitemap-middleware.d.ts.map +1 -0
- package/types/monitoring/healthcheck-middleware.d.ts +14 -12
- package/types/monitoring/healthcheck-middleware.d.ts.map +1 -0
- package/types/monitoring/index.d.ts +2 -1
- package/types/monitoring/index.d.ts.map +1 -0
- package/types/route-handler/editing-config-route-handler.d.ts +30 -24
- package/types/route-handler/editing-config-route-handler.d.ts.map +1 -0
- package/types/route-handler/editing-render-route-handler.d.ts +33 -25
- package/types/route-handler/editing-render-route-handler.d.ts.map +1 -0
- package/types/route-handler/index.d.ts +5 -4
- package/types/route-handler/index.d.ts.map +1 -0
- package/types/route-handler/robots-route-handler.d.ts +30 -28
- package/types/route-handler/robots-route-handler.d.ts.map +1 -0
- package/types/route-handler/sitemap-route-handler.d.ts +30 -28
- package/types/route-handler/sitemap-route-handler.d.ts.map +1 -0
- package/types/search/index.d.ts +2 -0
- package/types/search/index.d.ts.map +1 -0
- package/types/services/component-props-service.d.ts +62 -57
- package/types/services/component-props-service.d.ts.map +1 -0
- package/types/sharedTypes/component-props.d.ts +62 -47
- package/types/sharedTypes/component-props.d.ts.map +1 -0
- package/types/sharedTypes/sitecore-page-props.d.ts +14 -9
- package/types/sharedTypes/sitecore-page-props.d.ts.map +1 -0
- package/types/site/index.d.ts +2 -1
- package/types/site/index.d.ts.map +1 -0
- package/types/tools/codegen/import-map.d.ts +10 -0
- package/types/tools/codegen/import-map.d.ts.map +1 -0
- package/types/tools/component-props.loader.d.ts +8 -7
- package/types/tools/component-props.loader.d.ts.map +1 -0
- package/types/tools/generate-map.d.ts +26 -24
- package/types/tools/generate-map.d.ts.map +1 -0
- package/types/tools/index.d.ts +4 -2
- package/types/tools/index.d.ts.map +1 -0
- package/types/tools/templating/byoc-component.d.ts +3 -2
- package/types/tools/templating/byoc-component.d.ts.map +1 -0
- package/types/tools/templating/constants.d.ts +5 -4
- package/types/tools/templating/constants.d.ts.map +1 -0
- package/types/tools/templating/default-component.d.ts +3 -2
- package/types/tools/templating/default-component.d.ts.map +1 -0
- package/types/tools/templating/utils.d.ts +44 -0
- package/types/tools/templating/utils.d.ts.map +1 -0
- package/types/utils/index.d.ts +4 -3
- package/types/utils/index.d.ts.map +1 -0
- package/types/utils/utils.d.ts +34 -24
- package/types/utils/utils.d.ts.map +1 -0
- package/client.js +0 -1
- package/codegen.js +0 -1
- package/config-cli.js +0 -1
- package/config.js +0 -1
- package/editing.js +0 -1
- package/middleware.js +0 -1
- package/monitoring.js +0 -1
- package/route-handler.js +0 -1
- package/site.js +0 -1
- package/tools.js +0 -1
- package/utils.js +0 -1
|
@@ -1,192 +1,195 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.defineMiddleware = exports.MiddlewareBase = exports.Middleware = exports.LOCALE_HEADER_NAME = exports.REWRITE_HEADER_NAME = void 0;
|
|
13
|
-
const site_1 = require("@sitecore-content-sdk/core/site");
|
|
14
|
-
const core_1 = require("@sitecore-content-sdk/core");
|
|
15
|
-
const server_1 = require("next/server");
|
|
16
|
-
const client_1 = require("@sitecore-content-sdk/core/client");
|
|
17
|
-
exports.REWRITE_HEADER_NAME = 'x-sc-rewrite';
|
|
18
|
-
exports.LOCALE_HEADER_NAME = 'x-sc-locale';
|
|
19
|
-
/**
|
|
20
|
-
* Middleware class to be extended by all middleware implementations
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
this.
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
*
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
*
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
*
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
const
|
|
62
|
-
const
|
|
63
|
-
const
|
|
64
|
-
const
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
(
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
*
|
|
96
|
-
* @
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
*
|
|
129
|
-
* @
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
//
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
*
|
|
154
|
-
* @param {
|
|
155
|
-
* @param {
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
const
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
*
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
const
|
|
187
|
-
core_1.debug.common('middleware
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.defineMiddleware = exports.MiddlewareBase = exports.Middleware = exports.LOCALE_HEADER_NAME = exports.REWRITE_HEADER_NAME = void 0;
|
|
13
|
+
const site_1 = require("@sitecore-content-sdk/core/site");
|
|
14
|
+
const core_1 = require("@sitecore-content-sdk/core");
|
|
15
|
+
const server_1 = require("next/server");
|
|
16
|
+
const client_1 = require("@sitecore-content-sdk/core/client");
|
|
17
|
+
exports.REWRITE_HEADER_NAME = 'x-sc-rewrite';
|
|
18
|
+
exports.LOCALE_HEADER_NAME = 'x-sc-locale';
|
|
19
|
+
/**
|
|
20
|
+
* Middleware class to be extended by all middleware implementations
|
|
21
|
+
* @public
|
|
22
|
+
*/
|
|
23
|
+
class Middleware {
|
|
24
|
+
}
|
|
25
|
+
exports.Middleware = Middleware;
|
|
26
|
+
/**
|
|
27
|
+
* Base middleware class with common methods
|
|
28
|
+
* @public
|
|
29
|
+
*/
|
|
30
|
+
class MiddlewareBase extends Middleware {
|
|
31
|
+
constructor(config) {
|
|
32
|
+
super();
|
|
33
|
+
this.config = config;
|
|
34
|
+
this.siteResolver = new site_1.SiteResolver(config.sites);
|
|
35
|
+
this.defaultHostname = config.defaultHostname || 'localhost';
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Determines if mode is preview
|
|
39
|
+
* @param {NextRequest} req request
|
|
40
|
+
* @returns {boolean} is preview
|
|
41
|
+
*/
|
|
42
|
+
isPreview(req) {
|
|
43
|
+
var _a, _b;
|
|
44
|
+
return !!(((_a = req.cookies.get("__prerender_bypass" /* PreviewCookies.PRERENDER_BYPASS */)) === null || _a === void 0 ? void 0 : _a.value) ||
|
|
45
|
+
((_b = req.cookies.get("__next_preview_data" /* PreviewCookies.PREVIEW_DATA */)) === null || _b === void 0 ? void 0 : _b.value));
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Determines if the application is using the app router based on the locale header
|
|
49
|
+
* @param {NextResponse} res response
|
|
50
|
+
* @returns {boolean} true if app router is used
|
|
51
|
+
*/
|
|
52
|
+
isAppRouter(res) {
|
|
53
|
+
return !!this.getLanguageFromHeader(res);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Determines if the request is a Next.js (next/link) prefetch request
|
|
57
|
+
* @param {NextRequest} req request
|
|
58
|
+
* @returns {boolean} is prefetch
|
|
59
|
+
*/
|
|
60
|
+
isPrefetch(req) {
|
|
61
|
+
const isMobile = req.headers.get('sec-ch-ua-mobile') === '?1';
|
|
62
|
+
const userAgent = req.headers.get('user-agent') || '';
|
|
63
|
+
const isKnownPlatform = /iPhone|Mac|Linux|Windows|Android/i.test(userAgent);
|
|
64
|
+
const isKnownDevice = isMobile || isKnownPlatform;
|
|
65
|
+
const purpose = req.headers.get('purpose');
|
|
66
|
+
const nextRouterPrefetch = req.headers.get('Next-Router-Prefetch');
|
|
67
|
+
const middlewarePrefetch = req.headers.get('x-middleware-prefetch');
|
|
68
|
+
// Some real navigations on different devices may incorrectly include 'prefetch' headers.
|
|
69
|
+
// To avoid skipping personalization in such cases, we treat 'x-middleware-prefetch' as a more reliable signal of true prefetch behavior.
|
|
70
|
+
if (isKnownDevice && middlewarePrefetch === '1') {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
// Otherwise, standard prefetch detection
|
|
74
|
+
return purpose === 'prefetch' || nextRouterPrefetch === '1' || middlewarePrefetch === '1';
|
|
75
|
+
}
|
|
76
|
+
disabled(req, res) {
|
|
77
|
+
const { pathname } = req.nextUrl;
|
|
78
|
+
return (pathname.startsWith('/api/') || // Ignore Next.js API calls
|
|
79
|
+
pathname.startsWith('/sitecore/') || // Ignore Sitecore API calls
|
|
80
|
+
pathname.startsWith('/_next') || // Ignore next service calls
|
|
81
|
+
(this.config.skip && this.config.skip(req, res)));
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Safely extract all headers for debug logging
|
|
85
|
+
* Necessary to avoid middleware issue https://github.com/vercel/next.js/issues/39765
|
|
86
|
+
* @param {Headers} incomingHeaders Incoming headers
|
|
87
|
+
* @returns Object with headers as key/value pairs
|
|
88
|
+
*/
|
|
89
|
+
extractDebugHeaders(incomingHeaders) {
|
|
90
|
+
const headers = {};
|
|
91
|
+
incomingHeaders.forEach((value, key) => (headers[key] = value));
|
|
92
|
+
return headers;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Provides used language
|
|
96
|
+
* @param {NextRequest} req request
|
|
97
|
+
* @param {NextResponse} res response
|
|
98
|
+
* @returns {string} language
|
|
99
|
+
*/
|
|
100
|
+
getLanguage(req, res) {
|
|
101
|
+
return (this.getLanguageFromHeader(res) ||
|
|
102
|
+
req.nextUrl.locale ||
|
|
103
|
+
req.nextUrl.defaultLocale ||
|
|
104
|
+
this.config.defaultLanguage ||
|
|
105
|
+
'en');
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Extract language from locale header of the response
|
|
109
|
+
* set by LocaleMiddleware for app router application
|
|
110
|
+
* @param {NextResponse} res response
|
|
111
|
+
* @returns {string | undefined} language or undefined if not found
|
|
112
|
+
*/
|
|
113
|
+
getLanguageFromHeader(res) {
|
|
114
|
+
var _a;
|
|
115
|
+
return (_a = res === null || res === void 0 ? void 0 : res.headers.get(exports.LOCALE_HEADER_NAME)) !== null && _a !== void 0 ? _a : undefined;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Extract 'host' header
|
|
119
|
+
* @param {NextRequest} req request
|
|
120
|
+
*/
|
|
121
|
+
getHostHeader(req) {
|
|
122
|
+
var _a;
|
|
123
|
+
return (_a = req.headers.get('host')) === null || _a === void 0 ? void 0 : _a.split(':')[0];
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Get site information. If site name is stored in cookie, use it, otherwise resolve by hostname
|
|
127
|
+
* - If site can't be resolved by site name cookie use default site info based on provided parameters
|
|
128
|
+
* - If site can't be resolved by hostname throw an error
|
|
129
|
+
* @param {NextRequest} req request
|
|
130
|
+
* @param {NextResponse} [res] response
|
|
131
|
+
* @returns {SiteInfo} site information
|
|
132
|
+
*/
|
|
133
|
+
getSite(req, res) {
|
|
134
|
+
var _a;
|
|
135
|
+
const siteNameCookie = (_a = res === null || res === void 0 ? void 0 : res.cookies.get(site_1.SITE_KEY)) === null || _a === void 0 ? void 0 : _a.value;
|
|
136
|
+
const hostname = this.getHostHeader(req) || this.defaultHostname;
|
|
137
|
+
if (siteNameCookie) {
|
|
138
|
+
// Usually we should be able to resolve site by cookie
|
|
139
|
+
// in case of Sitecore Preview mode, there can be a case that new site was created
|
|
140
|
+
// but it's not present in the sitemap, so we fallback to default site info
|
|
141
|
+
return (this.siteResolver.getByName(siteNameCookie) || {
|
|
142
|
+
name: siteNameCookie,
|
|
143
|
+
language: this.getLanguage(req),
|
|
144
|
+
hostName: '*',
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
return this.siteResolver.getByHost(hostname);
|
|
148
|
+
}
|
|
149
|
+
getClientFactory(graphQLOptions) {
|
|
150
|
+
return (0, client_1.createGraphQLClientFactory)(graphQLOptions);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Create a rewrite response
|
|
154
|
+
* @param {string} rewritePath the destionation path
|
|
155
|
+
* @param {NextRequest} req the current request
|
|
156
|
+
* @param {NextResponse} res the current response
|
|
157
|
+
* @param {boolean} [skipHeader] don't write 'x-sc-rewrite' header
|
|
158
|
+
*/
|
|
159
|
+
rewrite(rewritePath, req, res, skipHeader) {
|
|
160
|
+
// Note an absolute URL is required: https://nextjs.org/docs/messages/middleware-relative-urls
|
|
161
|
+
const rewriteUrl = req.nextUrl.clone();
|
|
162
|
+
rewriteUrl.pathname = rewritePath;
|
|
163
|
+
const response = server_1.NextResponse.rewrite(rewriteUrl, res);
|
|
164
|
+
// Share rewrite path with following executed middlewares
|
|
165
|
+
if (!skipHeader) {
|
|
166
|
+
response.headers.set(exports.REWRITE_HEADER_NAME, rewritePath);
|
|
167
|
+
}
|
|
168
|
+
return response;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
exports.MiddlewareBase = MiddlewareBase;
|
|
172
|
+
/**
|
|
173
|
+
* Define a middleware with a list of middlewares
|
|
174
|
+
* @param {Middleware[]} middlewares List of middlewares to execute
|
|
175
|
+
* @public
|
|
176
|
+
*/
|
|
177
|
+
const defineMiddleware = (...middlewares) => {
|
|
178
|
+
return {
|
|
179
|
+
/**
|
|
180
|
+
* Execute all middlewares
|
|
181
|
+
* @param {NextRequest} req request
|
|
182
|
+
* @param {NextFetchEvent} ev fetch event
|
|
183
|
+
* @param {NextResponse} [res] response
|
|
184
|
+
*/
|
|
185
|
+
exec: (req, ev, res) => __awaiter(void 0, void 0, void 0, function* () {
|
|
186
|
+
const response = res || server_1.NextResponse.next();
|
|
187
|
+
core_1.debug.common('middleware start');
|
|
188
|
+
const start = Date.now();
|
|
189
|
+
const middlewareResponse = yield middlewares.reduce((p, middleware) => p.then((res) => middleware.handle(req, res, ev)), Promise.resolve(response));
|
|
190
|
+
core_1.debug.common('middleware end in %dms', Date.now() - start);
|
|
191
|
+
return middlewareResponse;
|
|
192
|
+
}),
|
|
193
|
+
};
|
|
194
|
+
};
|
|
195
|
+
exports.defineMiddleware = defineMiddleware;
|