@qwik.dev/router 2.0.0-beta.43 → 2.0.0-beta.45

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 (38) hide show
  1. package/lib/adapters/azure-swa/vite/index.mjs +2 -1
  2. package/lib/adapters/bun-server/vite/index.mjs +2 -1
  3. package/lib/adapters/cloud-run/vite/index.mjs +2 -1
  4. package/lib/adapters/cloudflare-pages/vite/index.mjs +2 -1
  5. package/lib/adapters/deno-server/vite/index.mjs +2 -1
  6. package/lib/adapters/netlify-edge/vite/index.mjs +2 -1
  7. package/lib/adapters/node-server/vite/index.mjs +2 -1
  8. package/lib/adapters/shared/vite/index.mjs +35 -31
  9. package/lib/adapters/ssg/vite/index.mjs +4 -2
  10. package/lib/adapters/vercel-edge/vite/index.mjs +18 -15
  11. package/lib/chunks/fs.mjs +26 -23
  12. package/lib/chunks/head.qwik.mjs +611 -445
  13. package/lib/chunks/http-error.qwik.mjs +8 -7
  14. package/lib/chunks/pathname.mjs +9 -8
  15. package/lib/chunks/request-path.mjs +8 -4
  16. package/lib/chunks/routes.mjs +14 -14
  17. package/lib/chunks/server-error.mjs +11 -5
  18. package/lib/chunks/{url.mjs → static-file.mjs} +12 -2
  19. package/lib/chunks/system.mjs +18 -17
  20. package/lib/chunks/user-response.mjs +419 -323
  21. package/lib/chunks/worker-thread.mjs +87 -86
  22. package/lib/index.d.ts +47 -59
  23. package/lib/index.qwik.mjs +550 -496
  24. package/lib/middleware/aws-lambda/index.mjs +6 -3
  25. package/lib/middleware/azure-swa/index.mjs +4 -2
  26. package/lib/middleware/bun/index.mjs +12 -12
  27. package/lib/middleware/cloudflare-pages/index.mjs +19 -4
  28. package/lib/middleware/deno/index.mjs +12 -12
  29. package/lib/middleware/firebase/index.mjs +4 -2
  30. package/lib/middleware/netlify-edge/index.mjs +4 -2
  31. package/lib/middleware/node/index.mjs +16 -15
  32. package/lib/middleware/request-handler/index.mjs +35 -24
  33. package/lib/middleware/vercel-edge/index.mjs +4 -2
  34. package/lib/service-worker/index.mjs +2 -1
  35. package/lib/ssg/index.mjs +20 -16
  36. package/lib/vite/index.d.ts +1 -1
  37. package/lib/vite/index.mjs +596 -586
  38. package/package.json +5 -5
@@ -1,4 +1,4 @@
1
- import { C as getRouteLoaderValues, d as loadRoute, w as getRouteLoaders } from "./head.qwik.mjs";
1
+ import { D as getRouteLoaders, E as getRouteLoaderValues, d as loadRoute } from "./head.qwik.mjs";
2
2
  import { l as trimInternalPathname } from "./request-path.mjs";
3
3
  import { i as resolveRequestHandlers, r as renderQwikMiddleware, t as runQwikRouter } from "./user-response.mjs";
4
4
  import { _serialize } from "@qwik.dev/core/internal";
@@ -10,28 +10,71 @@ var staticWorkerThreadDeps = {
10
10
  trimInternalPathname,
11
11
  runQwikRouter
12
12
  };
13
- /** Create a fresh no-op WritableStream (must be a real instance for pipeTo checks). */ var createNoopWritableStream = () => new WritableStream();
14
- function isRedirectMessage(value) {
15
- return typeof value === "object" && value !== null && value.constructor?.name === "RedirectMessage";
16
- }
17
- async function requestHandlerForSsg(serverRequestEv, opts, deps) {
18
- const { render, checkOrigin, qwikRouterConfig } = opts;
19
- if (!qwikRouterConfig) throw new Error("qwikRouterConfig is required.");
20
- const pathname = deps.trimInternalPathname(serverRequestEv.url.pathname);
21
- if (pathname === "/.well-known" || pathname.startsWith("/.well-known/")) return null;
22
- const { routes, serverPlugins, cacheModules } = qwikRouterConfig;
23
- const loadedRoute = await deps.loadRoute(routes, cacheModules, pathname);
24
- const requestHandlers = deps.resolveRequestHandlers(serverPlugins, loadedRoute, serverRequestEv.request.method, checkOrigin ?? true, deps.renderQwikMiddleware(render));
25
- if (qwikRouterConfig.fallthrough && loadedRoute.$notFound$ && !pathname.endsWith("/404.html")) return null;
26
- const rebuildRouteInfo = async (url) => {
27
- const cleanPathname = deps.trimInternalPathname(url.pathname);
28
- const loadedRoute = await deps.loadRoute(routes, cacheModules, cleanPathname);
29
- return {
30
- loadedRoute,
31
- requestHandlers: deps.resolveRequestHandlers(serverPlugins, loadedRoute, serverRequestEv.request.method, checkOrigin ?? true, deps.renderQwikMiddleware(render))
32
- };
13
+ async function workerThread(sys) {
14
+ const opts = sys.getOptions();
15
+ const pendingPromises = /* @__PURE__ */ new Set();
16
+ const deps = {
17
+ ...staticWorkerThreadDeps,
18
+ serialize: _serialize
33
19
  };
34
- return deps.runQwikRouter(serverRequestEv, loadedRoute, requestHandlers, rebuildRouteInfo, qwikRouterConfig.basePathname);
20
+ process.on("uncaughtException", (e) => {
21
+ console.error("Worker uncaught exception (suppressed):", e.message);
22
+ });
23
+ process.on("unhandledRejection", (e) => {
24
+ console.error("Worker unhandled rejection (suppressed):", e instanceof Error ? e.message : e);
25
+ });
26
+ const onMessage = async (msg) => {
27
+ switch (msg.type) {
28
+ case "render": return new Promise((resolve) => {
29
+ workerRender(sys, opts, msg, pendingPromises, resolve, deps).catch((e) => {
30
+ console.error("Error during render", msg.pathname, e);
31
+ resolve({
32
+ type: "render",
33
+ pathname: msg.pathname,
34
+ url: "",
35
+ ok: false,
36
+ error: {
37
+ message: e instanceof Error ? e.message : String(e),
38
+ stack: e instanceof Error ? e.stack : void 0
39
+ },
40
+ filePath: null,
41
+ contentType: null,
42
+ resourceType: null
43
+ });
44
+ });
45
+ });
46
+ case "close":
47
+ if (pendingPromises.size) {
48
+ const promises = Array.from(pendingPromises);
49
+ pendingPromises.clear();
50
+ await Promise.all(promises);
51
+ }
52
+ return { type: "close" };
53
+ }
54
+ };
55
+ parentPort?.on("message", async (msg) => {
56
+ try {
57
+ parentPort?.postMessage(await onMessage(msg));
58
+ } catch (e) {
59
+ if (msg.type === "render") {
60
+ const error = e instanceof Error ? e : new Error(String(e));
61
+ parentPort?.postMessage({
62
+ type: "render",
63
+ pathname: msg.pathname,
64
+ url: "",
65
+ ok: false,
66
+ error: {
67
+ message: error.message,
68
+ stack: error.stack
69
+ },
70
+ filePath: null,
71
+ contentType: null,
72
+ resourceType: null
73
+ });
74
+ } else console.error("Worker message handler error", e);
75
+ }
76
+ if (msg.type === "close") parentPort?.close();
77
+ });
35
78
  }
36
79
  async function workerRender(sys, opts, staticRoute, pendingPromises, callback, deps) {
37
80
  const url = new URL(staticRoute.pathname, opts.origin);
@@ -203,70 +246,28 @@ async function workerRender(sys, opts, staticRoute, pendingPromises, callback, d
203
246
  callback(result);
204
247
  }
205
248
  }
206
- async function workerThread(sys) {
207
- const opts = sys.getOptions();
208
- const pendingPromises = /* @__PURE__ */ new Set();
209
- const deps = {
210
- ...staticWorkerThreadDeps,
211
- serialize: _serialize
212
- };
213
- process.on("uncaughtException", (e) => {
214
- console.error("Worker uncaught exception (suppressed):", e.message);
215
- });
216
- process.on("unhandledRejection", (e) => {
217
- console.error("Worker unhandled rejection (suppressed):", e instanceof Error ? e.message : e);
218
- });
219
- const onMessage = async (msg) => {
220
- switch (msg.type) {
221
- case "render": return new Promise((resolve) => {
222
- workerRender(sys, opts, msg, pendingPromises, resolve, deps).catch((e) => {
223
- console.error("Error during render", msg.pathname, e);
224
- resolve({
225
- type: "render",
226
- pathname: msg.pathname,
227
- url: "",
228
- ok: false,
229
- error: {
230
- message: e instanceof Error ? e.message : String(e),
231
- stack: e instanceof Error ? e.stack : void 0
232
- },
233
- filePath: null,
234
- contentType: null,
235
- resourceType: null
236
- });
237
- });
238
- });
239
- case "close":
240
- if (pendingPromises.size) {
241
- const promises = Array.from(pendingPromises);
242
- pendingPromises.clear();
243
- await Promise.all(promises);
244
- }
245
- return { type: "close" };
246
- }
249
+ /** Create a fresh no-op WritableStream (must be a real instance for pipeTo checks). */
250
+ var createNoopWritableStream = () => new WritableStream();
251
+ function isRedirectMessage(value) {
252
+ return typeof value === "object" && value !== null && value.constructor?.name === "RedirectMessage";
253
+ }
254
+ async function requestHandlerForSsg(serverRequestEv, opts, deps) {
255
+ const { render, checkOrigin, qwikRouterConfig } = opts;
256
+ if (!qwikRouterConfig) throw new Error("qwikRouterConfig is required.");
257
+ const pathname = deps.trimInternalPathname(serverRequestEv.url.pathname);
258
+ if (pathname === "/.well-known" || pathname.startsWith("/.well-known/")) return null;
259
+ const { routes, serverPlugins, cacheModules } = qwikRouterConfig;
260
+ const loadedRoute = await deps.loadRoute(routes, cacheModules, pathname);
261
+ const requestHandlers = deps.resolveRequestHandlers(serverPlugins, loadedRoute, serverRequestEv.request.method, checkOrigin ?? true, deps.renderQwikMiddleware(render));
262
+ if (qwikRouterConfig.fallthrough && loadedRoute.$notFound$ && !pathname.endsWith("/404.html")) return null;
263
+ const rebuildRouteInfo = async (url) => {
264
+ const cleanPathname = deps.trimInternalPathname(url.pathname);
265
+ const loadedRoute = await deps.loadRoute(routes, cacheModules, cleanPathname);
266
+ return {
267
+ loadedRoute,
268
+ requestHandlers: deps.resolveRequestHandlers(serverPlugins, loadedRoute, serverRequestEv.request.method, checkOrigin ?? true, deps.renderQwikMiddleware(render))
269
+ };
247
270
  };
248
- parentPort?.on("message", async (msg) => {
249
- try {
250
- parentPort?.postMessage(await onMessage(msg));
251
- } catch (e) {
252
- if (msg.type === "render") {
253
- const error = e instanceof Error ? e : new Error(String(e));
254
- parentPort?.postMessage({
255
- type: "render",
256
- pathname: msg.pathname,
257
- url: "",
258
- ok: false,
259
- error: {
260
- message: error.message,
261
- stack: error.stack
262
- },
263
- filePath: null,
264
- contentType: null,
265
- resourceType: null
266
- });
267
- } else console.error("Worker message handler error", e);
268
- }
269
- if (msg.type === "close") parentPort?.close();
270
- });
271
+ return deps.runQwikRouter(serverRequestEv, loadedRoute, requestHandlers, rebuildRouteInfo, qwikRouterConfig.basePathname);
271
272
  }
272
273
  export { workerThread };
package/lib/index.d.ts CHANGED
@@ -28,11 +28,11 @@ import type { ResolveSyncValue } from '@qwik.dev/router/middleware/request-handl
28
28
  import type { SerializationStrategy } from '@qwik.dev/core/internal';
29
29
  import type { ServerError } from '@qwik.dev/router/middleware/request-handler';
30
30
  import type { Signal } from '@qwik.dev/core';
31
- import type * as v from 'valibot';
32
- import type { ValueOrPromise } from '@qwik.dev/core';
31
+ import * as v from 'valibot';
32
+ import { ValueOrPromise } from '@qwik.dev/core';
33
33
  import { ValueOrPromise as ValueOrPromise_2 } from '@qwik.dev/core/internal';
34
34
  import { z } from 'zod';
35
- import type * as z_2 from 'zod';
35
+ import * as z_2 from 'zod';
36
36
 
37
37
  /** @public */
38
38
  export declare type Action<RETURN, INPUT = Record<string, unknown>, OPTIONAL extends boolean = true> = {
@@ -61,23 +61,6 @@ export declare type ActionConstructor = {
61
61
  <OBJ>(actionQrl: (form: JSONObject, event: RequestEventAction) => ValueOrPromise<OBJ>, options?: ActionOptions): Action<StrictUnion<OBJ>>;
62
62
  };
63
63
 
64
- /** @public */
65
- declare type ActionConstructorQRL = {
66
- <OBJ extends Record<string, any> | void | null, VALIDATOR extends TypedDataValidator, REST extends [DataValidator, ...DataValidator[]]>(actionQrl: QRL<(data: GetValidatorOutputType<VALIDATOR>, event: RequestEventAction) => ValueOrPromise<OBJ>>, options: ActionOptions & {
67
- readonly validation: [VALIDATOR, ...REST];
68
- }): Action<StrictUnion<OBJ | FailReturn<ValidatorErrorType<GetValidatorInputType<VALIDATOR>>> | FailReturn<FailOfRest<REST>>>, GetValidatorInputType<VALIDATOR>, false>;
69
- <OBJ extends Record<string, any> | void | null, VALIDATOR extends TypedDataValidator>(actionQrl: QRL<(data: GetValidatorOutputType<VALIDATOR>, event: RequestEventAction) => ValueOrPromise<OBJ>>, options: ActionOptions & {
70
- readonly validation: [VALIDATOR];
71
- }): Action<StrictUnion<OBJ | FailReturn<ValidatorErrorType<GetValidatorInputType<VALIDATOR>>>>, GetValidatorInputType<VALIDATOR>, false>;
72
- <OBJ extends Record<string, any> | void | null, REST extends [DataValidator, ...DataValidator[]]>(actionQrl: QRL<(data: JSONObject, event: RequestEventAction) => ValueOrPromise<OBJ>>, options: ActionOptions & {
73
- readonly validation: REST;
74
- }): Action<StrictUnion<OBJ | FailReturn<FailOfRest<REST>>>>;
75
- <OBJ extends Record<string, any> | void | null, VALIDATOR extends TypedDataValidator, REST extends [DataValidator, ...DataValidator[]]>(actionQrl: QRL<(data: GetValidatorOutputType<VALIDATOR>, event: RequestEventAction) => ValueOrPromise<OBJ>>, options: VALIDATOR, ...rest: REST): Action<StrictUnion<OBJ | FailReturn<ValidatorErrorType<GetValidatorInputType<VALIDATOR>>> | FailReturn<FailOfRest<REST>>>, GetValidatorInputType<VALIDATOR>, false>;
76
- <OBJ extends Record<string, any> | void | null, VALIDATOR extends TypedDataValidator>(actionQrl: QRL<(data: GetValidatorOutputType<VALIDATOR>, event: RequestEventAction) => ValueOrPromise<OBJ>>, options: VALIDATOR): Action<StrictUnion<OBJ | FailReturn<ValidatorErrorType<GetValidatorInputType<VALIDATOR>>>>, GetValidatorInputType<VALIDATOR>, false>;
77
- <OBJ extends Record<string, any> | void | null, REST extends [DataValidator, ...DataValidator[]]>(actionQrl: QRL<(form: JSONObject, event: RequestEventAction) => ValueOrPromise<OBJ>>, ...rest: REST): Action<StrictUnion<OBJ | FailReturn<FailOfRest<REST>>>>;
78
- <OBJ>(actionQrl: QRL<(form: JSONObject, event: RequestEventAction) => ValueOrPromise<OBJ>>, options?: ActionOptions): Action<StrictUnion<OBJ>>;
79
- };
80
-
81
64
  /** @public */
82
65
  export declare type ActionOptions = {
83
66
  readonly id?: string;
@@ -380,6 +363,11 @@ export declare type DocumentStyle = Readonly<((Omit<QwikIntrinsicElements['style
380
363
  style?: never;
381
364
  })>;
382
365
 
366
+ /** @public */
367
+ export declare type Editable<T> = {
368
+ -readonly [P in keyof T]: T[P];
369
+ };
370
+
383
371
  declare type EndpointModuleLoader = () => ValueOrPromise<RouteModule>;
384
372
 
385
373
  declare interface EndpointResponse {
@@ -571,11 +559,19 @@ declare type LoaderConstructor = {
571
559
  <OBJ extends Record<string, any> | void | null, REST extends readonly DataValidator[]>(loaderFn: (event: RequestEventLoader) => ValueOrPromise<OBJ>, ...rest: REST): Loader_2<StrictUnion<OBJ | FailReturn<FailOfRest<REST>>>>;
572
560
  };
573
561
 
574
- /** @public */
575
- declare type LoaderConstructorQRL = {
576
- <OBJ>(loaderQrl: QRL<(event: RequestEventLoader) => ValueOrPromise<OBJ>>, options?: LoaderOptions): Loader_2<[Extract<OBJ, Failed>] extends [never] ? OBJ : StrictUnion<OBJ>>;
577
- <OBJ extends Record<string, any> | void | null, REST extends readonly DataValidator[]>(loaderQrl: QRL<(event: RequestEventLoader) => ValueOrPromise<OBJ>>, ...rest: REST): Loader_2<StrictUnion<OBJ | FailReturn<FailOfRest<REST>>>>;
578
- };
562
+ declare interface LoaderInternal extends Loader_2<any> {
563
+ readonly __brand?: 'server_loader';
564
+ __qrl: QRL<(event: RequestEventLoader) => ValueOrPromise<unknown>>;
565
+ __id: string;
566
+ __validators: DataValidator[] | undefined;
567
+ __serializationStrategy: SerializationStrategy;
568
+ __cacheControl: CacheControl | ((ev: RequestEvent) => CacheControl | null) | undefined;
569
+ __eTag: string | ((ev: RequestEvent) => string | null) | undefined;
570
+ __cacheKey: CacheKeyFn | undefined;
571
+ __search: string[] | undefined;
572
+ __blockSSR: boolean;
573
+ (): LoaderSignal<unknown>;
574
+ }
579
575
 
580
576
  /** @public */
581
577
  declare type LoaderOptions = {
@@ -663,7 +659,7 @@ declare type LoaderOptions = {
663
659
  };
664
660
 
665
661
  /** @public */
666
- export declare type LoaderSignal<TYPE> = (TYPE extends () => ValueOrPromise<infer VALIDATOR> ? Signal<ValueOrPromise<VALIDATOR>> : Signal<TYPE>) & Pick<ComputedSignal<any>, 'promise' | 'pending' | 'error' | 'loading'>;
662
+ export declare type LoaderSignal<TYPE> = (TYPE extends () => ValueOrPromise<infer VALIDATOR> ? Signal<ValueOrPromise<VALIDATOR>> : Signal<TYPE>) & Pick<ComputedSignal<any>, 'promise'>;
667
663
 
668
664
  declare interface MenuModule {
669
665
  readonly default: ContentMenu;
@@ -784,6 +780,12 @@ export declare interface QwikRouterConfig {
784
780
  readonly cacheModules?: boolean;
785
781
  /** When true, return null instead of rendering the 404 page, letting the adapter handle it */
786
782
  readonly fallthrough?: boolean;
783
+ /**
784
+ * Imports the modules containing `server$` functions so their registration side effects run.
785
+ * Called by the request handler before serving; deliberately async so the config module itself
786
+ * evaluates without touching the runtime (see the import-cycle notes in `route-loaders.ts`).
787
+ */
788
+ readonly importEagerModules?: () => Promise<unknown>;
787
789
  }
788
790
 
789
791
  /** @public */
@@ -927,8 +929,21 @@ export declare type ResolvedDocumentHead<FrontMatter extends Record<string, any>
927
929
  */
928
930
  export declare const routeAction$: ActionConstructor;
929
931
 
930
- /** @public */
931
- export declare const routeActionQrl: ActionConstructorQRL;
932
+ /**
933
+ * Hoisted function declarations (not consts) on purpose, like `routeLoaderQrl`: generated route
934
+ * modules call these factories back during their own evaluation via the `@qwik-router-config`
935
+ * cycle, where a `const` binding would throw a TDZ ReferenceError.
936
+ *
937
+ * @public
938
+ */
939
+ export declare function routeActionQrl(actionQrl: QRL<(form: JSONObject, event: RequestEventAction) => unknown>, ...rest: (ActionOptions | DataValidator)[]): {
940
+ (): Editable<ActionStore<unknown, unknown>>;
941
+ __brand: "server_action";
942
+ __validators: DataValidator[];
943
+ __qrl: QRL<(form: JSONObject, event: RequestEventAction) => unknown>;
944
+ __id: string;
945
+ __invalidate: string[] | undefined;
946
+ };
932
947
 
933
948
  declare type RouteActionResolver = {
934
949
  status: number;
@@ -1002,8 +1017,10 @@ export declare interface RouteData {
1002
1017
  _M?: RouteData[];
1003
1018
  /** Menu loader for this subtree (from menu.md). Runtime uses nearest ancestor during traversal. */
1004
1019
  _N?: MenuModuleLoader;
1005
- /** Array of routeLoader$ hashes for this node's loaders */
1020
+ /** Inherited layout and server plugin routeLoader$ hashes. */
1006
1021
  _R?: string[];
1022
+ /** Page loader hashes; override pages include their selected layouts and plugins. */
1023
+ _D?: string[];
1007
1024
  /** Child route segments (any key not starting with `_`) */
1008
1025
  [part: string]: RouteData | RouteData[] | ModuleLoader[] | ContentModuleLoader | MenuModuleLoader | string[] | string | undefined;
1009
1026
  }
@@ -1037,24 +1054,13 @@ export declare interface RouteData {
1037
1054
  */
1038
1055
  export declare const routeLoader$: LoaderConstructor;
1039
1056
 
1040
- /**
1041
- * Reactive context for route loaders. On the server this is stored in sharedMap, on the client it's
1042
- * a store that gets updated on navigation.
1043
- *
1044
- * - `loaderPaths`: loader ID → fetch path (the longest route path for that loader)
1045
- * - `pagePathname` / `pageSearch`: client-only navigation state used for loader invalidation and
1046
- * q-loader fetches. They are intentionally omitted from SSR state and fall back to `location`
1047
- * until the first SPA navigation.
1048
- */
1057
+ /** Shared SSR paths and client-only loader navigation state. */
1049
1058
  declare type RouteLoaderCtx = {
1050
1059
  loaderPaths: Record<string, string | undefined>;
1051
- pagePathname?: string;
1052
- pageSearch?: string;
1053
1060
  /** SPA navigation function. Client-only and intentionally omitted from SSR state. */
1054
1061
  goto?: NoSerialize<RouteNavigate>;
1055
1062
  /** Client manifest hash for q-loader fetch URLs. */
1056
1063
  manifestHash?: string;
1057
- routeLoaderCandidates?: Record<string, string>;
1058
1064
  };
1059
1065
 
1060
1066
  /* Excluded from this release type: routeLoaderQrl */
@@ -1246,12 +1252,6 @@ declare type ValibotConstructor = {
1246
1252
  <T extends v.GenericSchema | v.GenericSchemaAsync>(schema: (ev: RequestEvent) => T): ValibotDataValidator<T>;
1247
1253
  };
1248
1254
 
1249
- /** @beta */
1250
- declare type ValibotConstructorQRL = {
1251
- <T extends v.GenericSchema | v.GenericSchemaAsync>(schema: QRL<T>): ValibotDataValidator<T>;
1252
- <T extends v.GenericSchema | v.GenericSchemaAsync>(schema: QRL<(ev: RequestEvent) => T>): ValibotDataValidator<T>;
1253
- };
1254
-
1255
1255
  /** @beta */
1256
1256
  declare type ValibotDataValidator<T extends v.GenericSchema | v.GenericSchemaAsync = v.GenericSchema | v.GenericSchemaAsync> = {
1257
1257
  readonly __brand: 'valibot';
@@ -1267,10 +1267,6 @@ declare type ValidatorConstructor = {
1267
1267
  <T extends ValidatorReturn>(validator: (ev: RequestEvent, data: unknown) => ValueOrPromise<T>): T extends ValidatorReturnFail<infer ERROR> ? DataValidator<ERROR> : DataValidator<never>;
1268
1268
  };
1269
1269
 
1270
- declare type ValidatorConstructorQRL = {
1271
- <T extends ValidatorReturn>(validator: QRL<(ev: RequestEvent, data: unknown) => ValueOrPromise<T>>): T extends ValidatorReturnFail<infer ERROR> ? DataValidator<ERROR> : DataValidator<never>;
1272
- };
1273
-
1274
1270
  /** @public */
1275
1271
  export declare type ValidatorErrorKeyDotNotation<T, Prefix extends string = ''> = IsAny<T> extends true ? never : T extends object ? {
1276
1272
  [K in keyof T & string]: IsAny<T[K]> extends true ? never : T[K] extends (infer U)[] ? IsAny<U> extends true ? never : U extends object ? `${Prefix}${K}[]` | ValidatorErrorKeyDotNotation<U, `${Prefix}${K}[].`> : `${Prefix}${K}[]` : T[K] extends object ? ValidatorErrorKeyDotNotation<T[K], `${Prefix}${K}.`> : `${Prefix}${K}`;
@@ -1313,14 +1309,6 @@ export declare type ZodConstructor = {
1313
1309
  <T extends z_2.ZodType>(schema: (zod: typeof z_2.z, ev: RequestEvent) => T): ZodDataValidator<T>;
1314
1310
  };
1315
1311
 
1316
- /** @public */
1317
- declare type ZodConstructorQRL = {
1318
- <T extends z_2.ZodRawShape>(schema: QRL<T>): ZodDataValidator<z_2.ZodObject<T>>;
1319
- <T extends z_2.ZodRawShape>(schema: QRL<(zod: typeof z_2.z, ev: RequestEvent) => T>): ZodDataValidator<z_2.ZodObject<T>>;
1320
- <T extends z_2.ZodType>(schema: QRL<T>): ZodDataValidator<T>;
1321
- <T extends z_2.ZodType>(schema: QRL<(zod: typeof z_2.z, ev: RequestEvent) => T>): ZodDataValidator<T>;
1322
- };
1323
-
1324
1312
  /** @public */
1325
1313
  declare type ZodDataValidator<T extends z_2.ZodType = z_2.ZodType> = {
1326
1314
  readonly __brand: 'zod';