@appwarden/middleware 3.8.0 → 3.9.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.
@@ -1,6 +1,414 @@
1
1
  import { NextRequest, NextFetchEvent, NextResponse } from 'next/server';
2
- import { U as UseCSPInput } from '../use-content-security-policy-DUYpyUPy.js';
3
- import 'zod';
2
+ import { z } from 'zod';
3
+
4
+ /**
5
+ * Zod schema for Next.js Cloudflare adapter configuration.
6
+ * Validates the config object returned by the configFn.
7
+ */
8
+ declare const NextJsCloudflareConfigSchema: z.ZodObject<{
9
+ /** The slug/path of the lock page to redirect to when the site is locked */
10
+ lockPageSlug: z.ZodString;
11
+ /** The Appwarden API token for authentication */
12
+ appwardenApiToken: z.ZodEffects<z.ZodString, string, string>;
13
+ /** Optional custom API hostname (defaults to https://api.appwarden.io) */
14
+ appwardenApiHostname: z.ZodOptional<z.ZodString>;
15
+ /** Enable debug logging */
16
+ debug: z.ZodDefault<z.ZodEffects<z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>, boolean, string | boolean | undefined>>;
17
+ /** Optional Content Security Policy configuration (headers only, no HTML rewriting; '{{nonce}}' is not supported) */
18
+ contentSecurityPolicy: z.ZodOptional<z.ZodLazy<z.ZodEffects<z.ZodObject<{
19
+ mode: z.ZodUnion<[z.ZodLiteral<"disabled">, z.ZodLiteral<"report-only">, z.ZodLiteral<"enforced">]>;
20
+ directives: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodObject<{
21
+ "default-src": z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString, z.ZodBoolean]>>;
22
+ "script-src": z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString, z.ZodBoolean]>>;
23
+ "style-src": z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString, z.ZodBoolean]>>;
24
+ "img-src": z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString, z.ZodBoolean]>>;
25
+ "connect-src": z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString, z.ZodBoolean]>>;
26
+ "font-src": z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString, z.ZodBoolean]>>;
27
+ "object-src": z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString, z.ZodBoolean]>>;
28
+ "media-src": z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString, z.ZodBoolean]>>;
29
+ "frame-src": z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString, z.ZodBoolean]>>;
30
+ sandbox: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString, z.ZodBoolean]>>;
31
+ "report-uri": z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString, z.ZodBoolean]>>;
32
+ "child-src": z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString, z.ZodBoolean]>>;
33
+ "form-action": z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString, z.ZodBoolean]>>;
34
+ "frame-ancestors": z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString, z.ZodBoolean]>>;
35
+ "plugin-types": z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString, z.ZodBoolean]>>;
36
+ "base-uri": z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString, z.ZodBoolean]>>;
37
+ "report-to": z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString, z.ZodBoolean]>>;
38
+ "worker-src": z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString, z.ZodBoolean]>>;
39
+ "manifest-src": z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString, z.ZodBoolean]>>;
40
+ "prefetch-src": z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString, z.ZodBoolean]>>;
41
+ "navigate-to": z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString, z.ZodBoolean]>>;
42
+ "require-sri-for": z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString, z.ZodBoolean]>>;
43
+ "block-all-mixed-content": z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString, z.ZodBoolean]>>;
44
+ "upgrade-insecure-requests": z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString, z.ZodBoolean]>>;
45
+ "trusted-types": z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString, z.ZodBoolean]>>;
46
+ "require-trusted-types-for": z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString, z.ZodBoolean]>>;
47
+ }, "strip", z.ZodTypeAny, {
48
+ "default-src"?: string | boolean | string[] | undefined;
49
+ "script-src"?: string | boolean | string[] | undefined;
50
+ "style-src"?: string | boolean | string[] | undefined;
51
+ "img-src"?: string | boolean | string[] | undefined;
52
+ "connect-src"?: string | boolean | string[] | undefined;
53
+ "font-src"?: string | boolean | string[] | undefined;
54
+ "object-src"?: string | boolean | string[] | undefined;
55
+ "media-src"?: string | boolean | string[] | undefined;
56
+ "frame-src"?: string | boolean | string[] | undefined;
57
+ sandbox?: string | boolean | string[] | undefined;
58
+ "report-uri"?: string | boolean | string[] | undefined;
59
+ "child-src"?: string | boolean | string[] | undefined;
60
+ "form-action"?: string | boolean | string[] | undefined;
61
+ "frame-ancestors"?: string | boolean | string[] | undefined;
62
+ "plugin-types"?: string | boolean | string[] | undefined;
63
+ "base-uri"?: string | boolean | string[] | undefined;
64
+ "report-to"?: string | boolean | string[] | undefined;
65
+ "worker-src"?: string | boolean | string[] | undefined;
66
+ "manifest-src"?: string | boolean | string[] | undefined;
67
+ "prefetch-src"?: string | boolean | string[] | undefined;
68
+ "navigate-to"?: string | boolean | string[] | undefined;
69
+ "require-sri-for"?: string | boolean | string[] | undefined;
70
+ "block-all-mixed-content"?: string | boolean | string[] | undefined;
71
+ "upgrade-insecure-requests"?: string | boolean | string[] | undefined;
72
+ "trusted-types"?: string | boolean | string[] | undefined;
73
+ "require-trusted-types-for"?: string | boolean | string[] | undefined;
74
+ }, {
75
+ "default-src"?: string | boolean | string[] | undefined;
76
+ "script-src"?: string | boolean | string[] | undefined;
77
+ "style-src"?: string | boolean | string[] | undefined;
78
+ "img-src"?: string | boolean | string[] | undefined;
79
+ "connect-src"?: string | boolean | string[] | undefined;
80
+ "font-src"?: string | boolean | string[] | undefined;
81
+ "object-src"?: string | boolean | string[] | undefined;
82
+ "media-src"?: string | boolean | string[] | undefined;
83
+ "frame-src"?: string | boolean | string[] | undefined;
84
+ sandbox?: string | boolean | string[] | undefined;
85
+ "report-uri"?: string | boolean | string[] | undefined;
86
+ "child-src"?: string | boolean | string[] | undefined;
87
+ "form-action"?: string | boolean | string[] | undefined;
88
+ "frame-ancestors"?: string | boolean | string[] | undefined;
89
+ "plugin-types"?: string | boolean | string[] | undefined;
90
+ "base-uri"?: string | boolean | string[] | undefined;
91
+ "report-to"?: string | boolean | string[] | undefined;
92
+ "worker-src"?: string | boolean | string[] | undefined;
93
+ "manifest-src"?: string | boolean | string[] | undefined;
94
+ "prefetch-src"?: string | boolean | string[] | undefined;
95
+ "navigate-to"?: string | boolean | string[] | undefined;
96
+ "require-sri-for"?: string | boolean | string[] | undefined;
97
+ "block-all-mixed-content"?: string | boolean | string[] | undefined;
98
+ "upgrade-insecure-requests"?: string | boolean | string[] | undefined;
99
+ "trusted-types"?: string | boolean | string[] | undefined;
100
+ "require-trusted-types-for"?: string | boolean | string[] | undefined;
101
+ }>]>, string | {
102
+ "default-src"?: string | boolean | string[] | undefined;
103
+ "script-src"?: string | boolean | string[] | undefined;
104
+ "style-src"?: string | boolean | string[] | undefined;
105
+ "img-src"?: string | boolean | string[] | undefined;
106
+ "connect-src"?: string | boolean | string[] | undefined;
107
+ "font-src"?: string | boolean | string[] | undefined;
108
+ "object-src"?: string | boolean | string[] | undefined;
109
+ "media-src"?: string | boolean | string[] | undefined;
110
+ "frame-src"?: string | boolean | string[] | undefined;
111
+ sandbox?: string | boolean | string[] | undefined;
112
+ "report-uri"?: string | boolean | string[] | undefined;
113
+ "child-src"?: string | boolean | string[] | undefined;
114
+ "form-action"?: string | boolean | string[] | undefined;
115
+ "frame-ancestors"?: string | boolean | string[] | undefined;
116
+ "plugin-types"?: string | boolean | string[] | undefined;
117
+ "base-uri"?: string | boolean | string[] | undefined;
118
+ "report-to"?: string | boolean | string[] | undefined;
119
+ "worker-src"?: string | boolean | string[] | undefined;
120
+ "manifest-src"?: string | boolean | string[] | undefined;
121
+ "prefetch-src"?: string | boolean | string[] | undefined;
122
+ "navigate-to"?: string | boolean | string[] | undefined;
123
+ "require-sri-for"?: string | boolean | string[] | undefined;
124
+ "block-all-mixed-content"?: string | boolean | string[] | undefined;
125
+ "upgrade-insecure-requests"?: string | boolean | string[] | undefined;
126
+ "trusted-types"?: string | boolean | string[] | undefined;
127
+ "require-trusted-types-for"?: string | boolean | string[] | undefined;
128
+ }, string | {
129
+ "default-src"?: string | boolean | string[] | undefined;
130
+ "script-src"?: string | boolean | string[] | undefined;
131
+ "style-src"?: string | boolean | string[] | undefined;
132
+ "img-src"?: string | boolean | string[] | undefined;
133
+ "connect-src"?: string | boolean | string[] | undefined;
134
+ "font-src"?: string | boolean | string[] | undefined;
135
+ "object-src"?: string | boolean | string[] | undefined;
136
+ "media-src"?: string | boolean | string[] | undefined;
137
+ "frame-src"?: string | boolean | string[] | undefined;
138
+ sandbox?: string | boolean | string[] | undefined;
139
+ "report-uri"?: string | boolean | string[] | undefined;
140
+ "child-src"?: string | boolean | string[] | undefined;
141
+ "form-action"?: string | boolean | string[] | undefined;
142
+ "frame-ancestors"?: string | boolean | string[] | undefined;
143
+ "plugin-types"?: string | boolean | string[] | undefined;
144
+ "base-uri"?: string | boolean | string[] | undefined;
145
+ "report-to"?: string | boolean | string[] | undefined;
146
+ "worker-src"?: string | boolean | string[] | undefined;
147
+ "manifest-src"?: string | boolean | string[] | undefined;
148
+ "prefetch-src"?: string | boolean | string[] | undefined;
149
+ "navigate-to"?: string | boolean | string[] | undefined;
150
+ "require-sri-for"?: string | boolean | string[] | undefined;
151
+ "block-all-mixed-content"?: string | boolean | string[] | undefined;
152
+ "upgrade-insecure-requests"?: string | boolean | string[] | undefined;
153
+ "trusted-types"?: string | boolean | string[] | undefined;
154
+ "require-trusted-types-for"?: string | boolean | string[] | undefined;
155
+ }>, {
156
+ "default-src"?: string | boolean | string[] | undefined;
157
+ "script-src"?: string | boolean | string[] | undefined;
158
+ "style-src"?: string | boolean | string[] | undefined;
159
+ "img-src"?: string | boolean | string[] | undefined;
160
+ "connect-src"?: string | boolean | string[] | undefined;
161
+ "font-src"?: string | boolean | string[] | undefined;
162
+ "object-src"?: string | boolean | string[] | undefined;
163
+ "media-src"?: string | boolean | string[] | undefined;
164
+ "frame-src"?: string | boolean | string[] | undefined;
165
+ sandbox?: string | boolean | string[] | undefined;
166
+ "report-uri"?: string | boolean | string[] | undefined;
167
+ "child-src"?: string | boolean | string[] | undefined;
168
+ "form-action"?: string | boolean | string[] | undefined;
169
+ "frame-ancestors"?: string | boolean | string[] | undefined;
170
+ "plugin-types"?: string | boolean | string[] | undefined;
171
+ "base-uri"?: string | boolean | string[] | undefined;
172
+ "report-to"?: string | boolean | string[] | undefined;
173
+ "worker-src"?: string | boolean | string[] | undefined;
174
+ "manifest-src"?: string | boolean | string[] | undefined;
175
+ "prefetch-src"?: string | boolean | string[] | undefined;
176
+ "navigate-to"?: string | boolean | string[] | undefined;
177
+ "require-sri-for"?: string | boolean | string[] | undefined;
178
+ "block-all-mixed-content"?: string | boolean | string[] | undefined;
179
+ "upgrade-insecure-requests"?: string | boolean | string[] | undefined;
180
+ "trusted-types"?: string | boolean | string[] | undefined;
181
+ "require-trusted-types-for"?: string | boolean | string[] | undefined;
182
+ } | undefined, string | {
183
+ "default-src"?: string | boolean | string[] | undefined;
184
+ "script-src"?: string | boolean | string[] | undefined;
185
+ "style-src"?: string | boolean | string[] | undefined;
186
+ "img-src"?: string | boolean | string[] | undefined;
187
+ "connect-src"?: string | boolean | string[] | undefined;
188
+ "font-src"?: string | boolean | string[] | undefined;
189
+ "object-src"?: string | boolean | string[] | undefined;
190
+ "media-src"?: string | boolean | string[] | undefined;
191
+ "frame-src"?: string | boolean | string[] | undefined;
192
+ sandbox?: string | boolean | string[] | undefined;
193
+ "report-uri"?: string | boolean | string[] | undefined;
194
+ "child-src"?: string | boolean | string[] | undefined;
195
+ "form-action"?: string | boolean | string[] | undefined;
196
+ "frame-ancestors"?: string | boolean | string[] | undefined;
197
+ "plugin-types"?: string | boolean | string[] | undefined;
198
+ "base-uri"?: string | boolean | string[] | undefined;
199
+ "report-to"?: string | boolean | string[] | undefined;
200
+ "worker-src"?: string | boolean | string[] | undefined;
201
+ "manifest-src"?: string | boolean | string[] | undefined;
202
+ "prefetch-src"?: string | boolean | string[] | undefined;
203
+ "navigate-to"?: string | boolean | string[] | undefined;
204
+ "require-sri-for"?: string | boolean | string[] | undefined;
205
+ "block-all-mixed-content"?: string | boolean | string[] | undefined;
206
+ "upgrade-insecure-requests"?: string | boolean | string[] | undefined;
207
+ "trusted-types"?: string | boolean | string[] | undefined;
208
+ "require-trusted-types-for"?: string | boolean | string[] | undefined;
209
+ }>;
210
+ }, "strip", z.ZodTypeAny, {
211
+ mode: "disabled" | "report-only" | "enforced";
212
+ directives?: {
213
+ "default-src"?: string | boolean | string[] | undefined;
214
+ "script-src"?: string | boolean | string[] | undefined;
215
+ "style-src"?: string | boolean | string[] | undefined;
216
+ "img-src"?: string | boolean | string[] | undefined;
217
+ "connect-src"?: string | boolean | string[] | undefined;
218
+ "font-src"?: string | boolean | string[] | undefined;
219
+ "object-src"?: string | boolean | string[] | undefined;
220
+ "media-src"?: string | boolean | string[] | undefined;
221
+ "frame-src"?: string | boolean | string[] | undefined;
222
+ sandbox?: string | boolean | string[] | undefined;
223
+ "report-uri"?: string | boolean | string[] | undefined;
224
+ "child-src"?: string | boolean | string[] | undefined;
225
+ "form-action"?: string | boolean | string[] | undefined;
226
+ "frame-ancestors"?: string | boolean | string[] | undefined;
227
+ "plugin-types"?: string | boolean | string[] | undefined;
228
+ "base-uri"?: string | boolean | string[] | undefined;
229
+ "report-to"?: string | boolean | string[] | undefined;
230
+ "worker-src"?: string | boolean | string[] | undefined;
231
+ "manifest-src"?: string | boolean | string[] | undefined;
232
+ "prefetch-src"?: string | boolean | string[] | undefined;
233
+ "navigate-to"?: string | boolean | string[] | undefined;
234
+ "require-sri-for"?: string | boolean | string[] | undefined;
235
+ "block-all-mixed-content"?: string | boolean | string[] | undefined;
236
+ "upgrade-insecure-requests"?: string | boolean | string[] | undefined;
237
+ "trusted-types"?: string | boolean | string[] | undefined;
238
+ "require-trusted-types-for"?: string | boolean | string[] | undefined;
239
+ } | undefined;
240
+ }, {
241
+ mode: "disabled" | "report-only" | "enforced";
242
+ directives: string | {
243
+ "default-src"?: string | boolean | string[] | undefined;
244
+ "script-src"?: string | boolean | string[] | undefined;
245
+ "style-src"?: string | boolean | string[] | undefined;
246
+ "img-src"?: string | boolean | string[] | undefined;
247
+ "connect-src"?: string | boolean | string[] | undefined;
248
+ "font-src"?: string | boolean | string[] | undefined;
249
+ "object-src"?: string | boolean | string[] | undefined;
250
+ "media-src"?: string | boolean | string[] | undefined;
251
+ "frame-src"?: string | boolean | string[] | undefined;
252
+ sandbox?: string | boolean | string[] | undefined;
253
+ "report-uri"?: string | boolean | string[] | undefined;
254
+ "child-src"?: string | boolean | string[] | undefined;
255
+ "form-action"?: string | boolean | string[] | undefined;
256
+ "frame-ancestors"?: string | boolean | string[] | undefined;
257
+ "plugin-types"?: string | boolean | string[] | undefined;
258
+ "base-uri"?: string | boolean | string[] | undefined;
259
+ "report-to"?: string | boolean | string[] | undefined;
260
+ "worker-src"?: string | boolean | string[] | undefined;
261
+ "manifest-src"?: string | boolean | string[] | undefined;
262
+ "prefetch-src"?: string | boolean | string[] | undefined;
263
+ "navigate-to"?: string | boolean | string[] | undefined;
264
+ "require-sri-for"?: string | boolean | string[] | undefined;
265
+ "block-all-mixed-content"?: string | boolean | string[] | undefined;
266
+ "upgrade-insecure-requests"?: string | boolean | string[] | undefined;
267
+ "trusted-types"?: string | boolean | string[] | undefined;
268
+ "require-trusted-types-for"?: string | boolean | string[] | undefined;
269
+ };
270
+ }>, {
271
+ mode: "disabled" | "report-only" | "enforced";
272
+ directives?: {
273
+ "default-src"?: string | boolean | string[] | undefined;
274
+ "script-src"?: string | boolean | string[] | undefined;
275
+ "style-src"?: string | boolean | string[] | undefined;
276
+ "img-src"?: string | boolean | string[] | undefined;
277
+ "connect-src"?: string | boolean | string[] | undefined;
278
+ "font-src"?: string | boolean | string[] | undefined;
279
+ "object-src"?: string | boolean | string[] | undefined;
280
+ "media-src"?: string | boolean | string[] | undefined;
281
+ "frame-src"?: string | boolean | string[] | undefined;
282
+ sandbox?: string | boolean | string[] | undefined;
283
+ "report-uri"?: string | boolean | string[] | undefined;
284
+ "child-src"?: string | boolean | string[] | undefined;
285
+ "form-action"?: string | boolean | string[] | undefined;
286
+ "frame-ancestors"?: string | boolean | string[] | undefined;
287
+ "plugin-types"?: string | boolean | string[] | undefined;
288
+ "base-uri"?: string | boolean | string[] | undefined;
289
+ "report-to"?: string | boolean | string[] | undefined;
290
+ "worker-src"?: string | boolean | string[] | undefined;
291
+ "manifest-src"?: string | boolean | string[] | undefined;
292
+ "prefetch-src"?: string | boolean | string[] | undefined;
293
+ "navigate-to"?: string | boolean | string[] | undefined;
294
+ "require-sri-for"?: string | boolean | string[] | undefined;
295
+ "block-all-mixed-content"?: string | boolean | string[] | undefined;
296
+ "upgrade-insecure-requests"?: string | boolean | string[] | undefined;
297
+ "trusted-types"?: string | boolean | string[] | undefined;
298
+ "require-trusted-types-for"?: string | boolean | string[] | undefined;
299
+ } | undefined;
300
+ }, {
301
+ mode: "disabled" | "report-only" | "enforced";
302
+ directives: string | {
303
+ "default-src"?: string | boolean | string[] | undefined;
304
+ "script-src"?: string | boolean | string[] | undefined;
305
+ "style-src"?: string | boolean | string[] | undefined;
306
+ "img-src"?: string | boolean | string[] | undefined;
307
+ "connect-src"?: string | boolean | string[] | undefined;
308
+ "font-src"?: string | boolean | string[] | undefined;
309
+ "object-src"?: string | boolean | string[] | undefined;
310
+ "media-src"?: string | boolean | string[] | undefined;
311
+ "frame-src"?: string | boolean | string[] | undefined;
312
+ sandbox?: string | boolean | string[] | undefined;
313
+ "report-uri"?: string | boolean | string[] | undefined;
314
+ "child-src"?: string | boolean | string[] | undefined;
315
+ "form-action"?: string | boolean | string[] | undefined;
316
+ "frame-ancestors"?: string | boolean | string[] | undefined;
317
+ "plugin-types"?: string | boolean | string[] | undefined;
318
+ "base-uri"?: string | boolean | string[] | undefined;
319
+ "report-to"?: string | boolean | string[] | undefined;
320
+ "worker-src"?: string | boolean | string[] | undefined;
321
+ "manifest-src"?: string | boolean | string[] | undefined;
322
+ "prefetch-src"?: string | boolean | string[] | undefined;
323
+ "navigate-to"?: string | boolean | string[] | undefined;
324
+ "require-sri-for"?: string | boolean | string[] | undefined;
325
+ "block-all-mixed-content"?: string | boolean | string[] | undefined;
326
+ "upgrade-insecure-requests"?: string | boolean | string[] | undefined;
327
+ "trusted-types"?: string | boolean | string[] | undefined;
328
+ "require-trusted-types-for"?: string | boolean | string[] | undefined;
329
+ };
330
+ }>>>;
331
+ }, "strip", z.ZodTypeAny, {
332
+ debug: boolean;
333
+ lockPageSlug: string;
334
+ appwardenApiToken: string;
335
+ contentSecurityPolicy?: {
336
+ mode: "disabled" | "report-only" | "enforced";
337
+ directives?: {
338
+ "default-src"?: string | boolean | string[] | undefined;
339
+ "script-src"?: string | boolean | string[] | undefined;
340
+ "style-src"?: string | boolean | string[] | undefined;
341
+ "img-src"?: string | boolean | string[] | undefined;
342
+ "connect-src"?: string | boolean | string[] | undefined;
343
+ "font-src"?: string | boolean | string[] | undefined;
344
+ "object-src"?: string | boolean | string[] | undefined;
345
+ "media-src"?: string | boolean | string[] | undefined;
346
+ "frame-src"?: string | boolean | string[] | undefined;
347
+ sandbox?: string | boolean | string[] | undefined;
348
+ "report-uri"?: string | boolean | string[] | undefined;
349
+ "child-src"?: string | boolean | string[] | undefined;
350
+ "form-action"?: string | boolean | string[] | undefined;
351
+ "frame-ancestors"?: string | boolean | string[] | undefined;
352
+ "plugin-types"?: string | boolean | string[] | undefined;
353
+ "base-uri"?: string | boolean | string[] | undefined;
354
+ "report-to"?: string | boolean | string[] | undefined;
355
+ "worker-src"?: string | boolean | string[] | undefined;
356
+ "manifest-src"?: string | boolean | string[] | undefined;
357
+ "prefetch-src"?: string | boolean | string[] | undefined;
358
+ "navigate-to"?: string | boolean | string[] | undefined;
359
+ "require-sri-for"?: string | boolean | string[] | undefined;
360
+ "block-all-mixed-content"?: string | boolean | string[] | undefined;
361
+ "upgrade-insecure-requests"?: string | boolean | string[] | undefined;
362
+ "trusted-types"?: string | boolean | string[] | undefined;
363
+ "require-trusted-types-for"?: string | boolean | string[] | undefined;
364
+ } | undefined;
365
+ } | undefined;
366
+ appwardenApiHostname?: string | undefined;
367
+ }, {
368
+ lockPageSlug: string;
369
+ appwardenApiToken: string;
370
+ debug?: string | boolean | undefined;
371
+ contentSecurityPolicy?: {
372
+ mode: "disabled" | "report-only" | "enforced";
373
+ directives: string | {
374
+ "default-src"?: string | boolean | string[] | undefined;
375
+ "script-src"?: string | boolean | string[] | undefined;
376
+ "style-src"?: string | boolean | string[] | undefined;
377
+ "img-src"?: string | boolean | string[] | undefined;
378
+ "connect-src"?: string | boolean | string[] | undefined;
379
+ "font-src"?: string | boolean | string[] | undefined;
380
+ "object-src"?: string | boolean | string[] | undefined;
381
+ "media-src"?: string | boolean | string[] | undefined;
382
+ "frame-src"?: string | boolean | string[] | undefined;
383
+ sandbox?: string | boolean | string[] | undefined;
384
+ "report-uri"?: string | boolean | string[] | undefined;
385
+ "child-src"?: string | boolean | string[] | undefined;
386
+ "form-action"?: string | boolean | string[] | undefined;
387
+ "frame-ancestors"?: string | boolean | string[] | undefined;
388
+ "plugin-types"?: string | boolean | string[] | undefined;
389
+ "base-uri"?: string | boolean | string[] | undefined;
390
+ "report-to"?: string | boolean | string[] | undefined;
391
+ "worker-src"?: string | boolean | string[] | undefined;
392
+ "manifest-src"?: string | boolean | string[] | undefined;
393
+ "prefetch-src"?: string | boolean | string[] | undefined;
394
+ "navigate-to"?: string | boolean | string[] | undefined;
395
+ "require-sri-for"?: string | boolean | string[] | undefined;
396
+ "block-all-mixed-content"?: string | boolean | string[] | undefined;
397
+ "upgrade-insecure-requests"?: string | boolean | string[] | undefined;
398
+ "trusted-types"?: string | boolean | string[] | undefined;
399
+ "require-trusted-types-for"?: string | boolean | string[] | undefined;
400
+ };
401
+ } | undefined;
402
+ appwardenApiHostname?: string | undefined;
403
+ }>;
404
+ type NextJsCloudflareConfig = z.infer<typeof NextJsCloudflareConfigSchema>;
405
+ /**
406
+ * Input type for Next.js Cloudflare adapter configuration.
407
+ * This is the pre-transformation type that accepts string | boolean for debug
408
+ * and string | object for CSP directives, allowing users to pass environment
409
+ * variables directly without manual transformation.
410
+ */
411
+ type NextJsCloudflareConfigInput = z.input<typeof NextJsCloudflareConfigSchema>;
4
412
 
5
413
  /**
6
414
  * Cloudflare runtime context provided by @opennextjs/cloudflare.
@@ -12,24 +420,19 @@ interface NextJsCloudflareRuntime {
12
420
  }
13
421
  /**
14
422
  * Configuration for the Appwarden middleware.
423
+ *
424
+ * This is an alias of the validated output type from
425
+ * NextJsCloudflareConfigSchema, so it always stays in sync with the
426
+ * actual runtime config contract.
15
427
  */
16
- interface NextJsCloudflareAppwardenConfig {
17
- /** The slug/path of the lock page to redirect to when the site is locked */
18
- lockPageSlug: string;
19
- /** The Appwarden API token for authentication */
20
- appwardenApiToken: string;
21
- /** Optional custom API hostname (defaults to https://api.appwarden.io) */
22
- appwardenApiHostname?: string;
23
- /** Enable debug logging */
24
- debug?: boolean;
25
- /** Optional Content Security Policy configuration (headers only, no HTML rewriting; `{{nonce}}` placeholders are not supported) */
26
- contentSecurityPolicy?: UseCSPInput;
27
- }
428
+ type NextJsCloudflareAppwardenConfig = NextJsCloudflareConfig;
429
+
28
430
  /**
29
431
  * Configuration function that receives the Cloudflare runtime and returns the config.
30
432
  * This allows dynamic configuration based on environment variables.
433
+ * Accepts pre-transformation input types (e.g., string | boolean for debug, string | object for CSP directives).
31
434
  */
32
- type NextJsCloudflareConfigFn = (runtime: NextJsCloudflareRuntime) => NextJsCloudflareAppwardenConfig;
435
+ type NextJsCloudflareConfigFn = (runtime: NextJsCloudflareRuntime) => NextJsCloudflareConfigInput;
33
436
  /**
34
437
  * Next.js middleware function signature.
35
438
  * Compatible with both middleware.ts and proxy.ts (Next.js 16+).
@@ -61,4 +464,4 @@ type NextJsMiddlewareFunction = (request: NextRequest, event?: NextFetchEvent) =
61
464
  */
62
465
  declare function createAppwardenMiddleware(configFn: NextJsCloudflareConfigFn): NextJsMiddlewareFunction;
63
466
 
64
- export { createAppwardenMiddleware };
467
+ export { type NextJsCloudflareAppwardenConfig, type NextJsCloudflareConfig, type NextJsCloudflareConfigFn, type NextJsCloudflareConfigInput, type NextJsCloudflareRuntime, type NextJsMiddlewareFunction, createAppwardenMiddleware };
@@ -1,29 +1,27 @@
1
- import {
2
- validateConfig
3
- } from "../chunk-MNGMTDH3.js";
4
1
  import {
5
2
  getNowMs
6
3
  } from "../chunk-X7WZVYQS.js";
7
4
  import {
8
5
  checkLockStatus
9
- } from "../chunk-G5FWKV2Q.js";
6
+ } from "../chunk-MYIKUPTR.js";
10
7
  import {
11
8
  TEMPORARY_REDIRECT_STATUS,
12
9
  buildLockPageUrl,
13
10
  debug,
14
11
  isOnLockPage
15
- } from "../chunk-EPJ4ZVO6.js";
12
+ } from "../chunk-Z7FIMIZS.js";
16
13
  import {
17
14
  UseCSPInputSchema,
18
15
  isHTMLRequest
19
- } from "../chunk-HCGLR3Z3.js";
16
+ } from "../chunk-UIIYORBW.js";
20
17
  import {
21
18
  AppwardenApiTokenSchema,
22
19
  BooleanSchema,
23
20
  printMessage
24
- } from "../chunk-GK6JL5NZ.js";
21
+ } from "../chunk-QGXPAVOA.js";
25
22
 
26
23
  // src/adapters/nextjs-cloudflare.ts
24
+ import { waitUntil } from "cloudflare:workers";
27
25
  import {
28
26
  NextResponse
29
27
  } from "next/server";
@@ -61,8 +59,18 @@ function createAppwardenMiddleware(configFn) {
61
59
  try {
62
60
  const { getCloudflareContext } = await import("@opennextjs/cloudflare");
63
61
  const { env, ctx } = await getCloudflareContext();
64
- const config = configFn({ env, ctx });
65
- const debugFn = debug(config.debug ?? false);
62
+ const rawConfig = configFn({ env, ctx });
63
+ const validationResult = NextJsCloudflareConfigSchema.safeParse(rawConfig);
64
+ if (!validationResult.success) {
65
+ console.error(
66
+ printMessage(
67
+ `Config validation failed: ${validationResult.error.message}`
68
+ )
69
+ );
70
+ return NextResponse.next();
71
+ }
72
+ const config = validationResult.data;
73
+ const debugFn = debug(config.debug);
66
74
  const requestUrl = new URL(request.url);
67
75
  const isHTML = isHTMLRequest(request);
68
76
  debugFn(
@@ -72,10 +80,6 @@ function createAppwardenMiddleware(configFn) {
72
80
  if (!isHTML) {
73
81
  return NextResponse.next();
74
82
  }
75
- const hasError = validateConfig(config, NextJsCloudflareConfigSchema);
76
- if (hasError) {
77
- return NextResponse.next();
78
- }
79
83
  if (isOnLockPage(config.lockPageSlug, request.url)) {
80
84
  debugFn("Already on lock page - skipping");
81
85
  return NextResponse.next();
@@ -86,7 +90,7 @@ function createAppwardenMiddleware(configFn) {
86
90
  appwardenApiHostname: config.appwardenApiHostname,
87
91
  debug: config.debug,
88
92
  lockPageSlug: config.lockPageSlug,
89
- waitUntil: (fn) => ctx.waitUntil(fn)
93
+ waitUntil
90
94
  });
91
95
  if (result.isLocked) {
92
96
  const lockPageUrl = buildLockPageUrl(config.lockPageSlug, request.url);
@@ -98,7 +102,7 @@ function createAppwardenMiddleware(configFn) {
98
102
  debugFn(
99
103
  `Applying CSP headers in ${config.contentSecurityPolicy.mode} mode`
100
104
  );
101
- const { makeCSPHeader } = await import("../cloudflare-K5EFFMNI.js");
105
+ const { makeCSPHeader } = await import("../cloudflare-PE3JKP3X.js");
102
106
  const [headerName, headerValue] = makeCSPHeader(
103
107
  "",
104
108
  config.contentSecurityPolicy.directives,