@pyreon/zero 0.12.2 → 0.12.4

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 (145) hide show
  1. package/lib/actions.js +97 -0
  2. package/lib/actions.js.map +1 -0
  3. package/lib/ai.js +503 -0
  4. package/lib/ai.js.map +1 -0
  5. package/lib/api-routes.js +137 -0
  6. package/lib/api-routes.js.map +1 -0
  7. package/lib/compression.js +80 -0
  8. package/lib/compression.js.map +1 -0
  9. package/lib/cors.js +57 -0
  10. package/lib/cors.js.map +1 -0
  11. package/lib/csp.js +119 -0
  12. package/lib/csp.js.map +1 -0
  13. package/lib/env.js +217 -0
  14. package/lib/env.js.map +1 -0
  15. package/lib/favicon.js +424 -0
  16. package/lib/favicon.js.map +1 -0
  17. package/lib/i18n-routing.js +167 -0
  18. package/lib/i18n-routing.js.map +1 -0
  19. package/lib/index.js +340 -4015
  20. package/lib/index.js.map +1 -1
  21. package/lib/link.js +5 -0
  22. package/lib/link.js.map +1 -1
  23. package/lib/logger.js +78 -0
  24. package/lib/logger.js.map +1 -0
  25. package/lib/meta.js +310 -0
  26. package/lib/meta.js.map +1 -0
  27. package/lib/middleware.js +53 -0
  28. package/lib/middleware.js.map +1 -0
  29. package/lib/og-image.js +233 -0
  30. package/lib/og-image.js.map +1 -0
  31. package/lib/rate-limit.js +76 -0
  32. package/lib/rate-limit.js.map +1 -0
  33. package/lib/server.js +1534 -0
  34. package/lib/server.js.map +1 -0
  35. package/lib/testing.js +179 -0
  36. package/lib/testing.js.map +1 -0
  37. package/lib/theme.js +11 -2
  38. package/lib/theme.js.map +1 -1
  39. package/lib/types/actions.d.ts +27 -24
  40. package/lib/types/actions.d.ts.map +1 -1
  41. package/lib/types/ai.d.ts +76 -95
  42. package/lib/types/ai.d.ts.map +1 -1
  43. package/lib/types/api-routes.d.ts +37 -33
  44. package/lib/types/api-routes.d.ts.map +1 -1
  45. package/lib/types/cache.d.ts +26 -22
  46. package/lib/types/cache.d.ts.map +1 -1
  47. package/lib/types/client.d.ts +13 -9
  48. package/lib/types/client.d.ts.map +1 -1
  49. package/lib/types/compression.d.ts +14 -10
  50. package/lib/types/compression.d.ts.map +1 -1
  51. package/lib/types/config.d.ts +39 -4
  52. package/lib/types/config.d.ts.map +1 -1
  53. package/lib/types/cors.d.ts +20 -16
  54. package/lib/types/cors.d.ts.map +1 -1
  55. package/lib/types/csp.d.ts +42 -61
  56. package/lib/types/csp.d.ts.map +1 -1
  57. package/lib/types/env.d.ts +26 -26
  58. package/lib/types/env.d.ts.map +1 -1
  59. package/lib/types/favicon.d.ts +58 -54
  60. package/lib/types/favicon.d.ts.map +1 -1
  61. package/lib/types/font.d.ts +68 -65
  62. package/lib/types/font.d.ts.map +1 -1
  63. package/lib/types/i18n-routing.d.ts +43 -37
  64. package/lib/types/i18n-routing.d.ts.map +1 -1
  65. package/lib/types/image-plugin.d.ts +49 -45
  66. package/lib/types/image-plugin.d.ts.map +1 -1
  67. package/lib/types/image.d.ts +47 -36
  68. package/lib/types/image.d.ts.map +1 -1
  69. package/lib/types/index.d.ts +594 -56
  70. package/lib/types/index.d.ts.map +1 -1
  71. package/lib/types/link.d.ts +61 -56
  72. package/lib/types/link.d.ts.map +1 -1
  73. package/lib/types/logger.d.ts +37 -48
  74. package/lib/types/logger.d.ts.map +1 -1
  75. package/lib/types/meta.d.ts +145 -105
  76. package/lib/types/meta.d.ts.map +1 -1
  77. package/lib/types/middleware.d.ts +8 -4
  78. package/lib/types/middleware.d.ts.map +1 -1
  79. package/lib/types/og-image.d.ts +63 -59
  80. package/lib/types/og-image.d.ts.map +1 -1
  81. package/lib/types/rate-limit.d.ts +20 -16
  82. package/lib/types/rate-limit.d.ts.map +1 -1
  83. package/lib/types/script.d.ts +23 -19
  84. package/lib/types/script.d.ts.map +1 -1
  85. package/lib/types/seo.d.ts +47 -43
  86. package/lib/types/seo.d.ts.map +1 -1
  87. package/lib/types/server.d.ts +455 -0
  88. package/lib/types/server.d.ts.map +1 -0
  89. package/lib/types/testing.d.ts +64 -27
  90. package/lib/types/testing.d.ts.map +1 -1
  91. package/lib/types/theme.d.ts +22 -12
  92. package/lib/types/theme.d.ts.map +1 -1
  93. package/package.json +17 -12
  94. package/src/actions.ts +1 -3
  95. package/src/adapters/bun.ts +2 -0
  96. package/src/adapters/cloudflare.ts +2 -0
  97. package/src/adapters/netlify.ts +2 -0
  98. package/src/adapters/node.ts +2 -0
  99. package/src/adapters/validate.ts +16 -0
  100. package/src/adapters/vercel.ts +2 -0
  101. package/src/compression.ts +19 -3
  102. package/src/entry-server.ts +28 -5
  103. package/src/index.ts +20 -182
  104. package/src/link.tsx +6 -0
  105. package/src/meta.tsx +78 -16
  106. package/src/rate-limit.ts +11 -9
  107. package/src/server.ts +70 -0
  108. package/src/theme.tsx +12 -1
  109. package/src/vite-plugin.ts +5 -1
  110. package/lib/fs-router-Dil4IKZR.js +0 -290
  111. package/lib/fs-router-Dil4IKZR.js.map +0 -1
  112. package/lib/types/adapters/bun.d.ts +0 -6
  113. package/lib/types/adapters/bun.d.ts.map +0 -1
  114. package/lib/types/adapters/cloudflare.d.ts +0 -26
  115. package/lib/types/adapters/cloudflare.d.ts.map +0 -1
  116. package/lib/types/adapters/index.d.ts +0 -13
  117. package/lib/types/adapters/index.d.ts.map +0 -1
  118. package/lib/types/adapters/netlify.d.ts +0 -21
  119. package/lib/types/adapters/netlify.d.ts.map +0 -1
  120. package/lib/types/adapters/node.d.ts +0 -6
  121. package/lib/types/adapters/node.d.ts.map +0 -1
  122. package/lib/types/adapters/static.d.ts +0 -7
  123. package/lib/types/adapters/static.d.ts.map +0 -1
  124. package/lib/types/adapters/vercel.d.ts +0 -21
  125. package/lib/types/adapters/vercel.d.ts.map +0 -1
  126. package/lib/types/app.d.ts +0 -24
  127. package/lib/types/app.d.ts.map +0 -1
  128. package/lib/types/entry-server.d.ts +0 -37
  129. package/lib/types/entry-server.d.ts.map +0 -1
  130. package/lib/types/error-overlay.d.ts +0 -6
  131. package/lib/types/error-overlay.d.ts.map +0 -1
  132. package/lib/types/fs-router.d.ts +0 -47
  133. package/lib/types/fs-router.d.ts.map +0 -1
  134. package/lib/types/isr.d.ts +0 -9
  135. package/lib/types/isr.d.ts.map +0 -1
  136. package/lib/types/not-found.d.ts +0 -7
  137. package/lib/types/not-found.d.ts.map +0 -1
  138. package/lib/types/types.d.ts +0 -111
  139. package/lib/types/types.d.ts.map +0 -1
  140. package/lib/types/utils/use-intersection-observer.d.ts +0 -10
  141. package/lib/types/utils/use-intersection-observer.d.ts.map +0 -1
  142. package/lib/types/utils/with-headers.d.ts +0 -6
  143. package/lib/types/utils/with-headers.d.ts.map +0 -1
  144. package/lib/types/vite-plugin.d.ts +0 -17
  145. package/lib/types/vite-plugin.d.ts.map +0 -1
@@ -0,0 +1,455 @@
1
+ import * as _pyreon_core0 from "@pyreon/core";
2
+ import { ComponentFn } from "@pyreon/core";
3
+ import * as _pyreon_router0 from "@pyreon/router";
4
+ import { RouteRecord } from "@pyreon/router";
5
+ import { Middleware, MiddlewareContext } from "@pyreon/server";
6
+ import { Plugin } from "vite";
7
+ //#region src/app.d.ts
8
+ interface CreateAppOptions {
9
+ /** Route definitions (from file-based routing or manual). */
10
+ routes: RouteRecord[];
11
+ /** Router mode. Default: "history" for SSR, "hash" for SPA. */
12
+ routerMode?: 'hash' | 'history';
13
+ /** Initial URL for SSR. */
14
+ url?: string;
15
+ /** Root layout component wrapping all routes. */
16
+ layout?: ComponentFn;
17
+ /** Global error component. */
18
+ errorComponent?: ComponentFn;
19
+ }
20
+ /**
21
+ * Create a full Zero app — assembles router, head provider, and root layout.
22
+ *
23
+ * Used internally by entry-server and entry-client.
24
+ */
25
+ declare function createApp(options: CreateAppOptions): {
26
+ App: () => _pyreon_core0.VNode;
27
+ router: _pyreon_router0.Router;
28
+ };
29
+ //#endregion
30
+ //#region src/api-routes.d.ts
31
+ /** Context passed to API route handlers. */
32
+ interface ApiContext {
33
+ /** The incoming request. */
34
+ request: Request;
35
+ /** Parsed URL. */
36
+ url: URL;
37
+ /** URL path. */
38
+ path: string;
39
+ /** Dynamic route parameters (e.g., { id: "123" }). */
40
+ params: Record<string, string>;
41
+ /** Request headers. */
42
+ headers: Headers;
43
+ }
44
+ /** An API route handler function. */
45
+ type ApiHandler = (ctx: ApiContext) => Response | Promise<Response>;
46
+ /** An API route module — exports named HTTP method handlers. */
47
+ interface ApiRouteModule {
48
+ GET?: ApiHandler;
49
+ POST?: ApiHandler;
50
+ PUT?: ApiHandler;
51
+ PATCH?: ApiHandler;
52
+ DELETE?: ApiHandler;
53
+ HEAD?: ApiHandler;
54
+ OPTIONS?: ApiHandler;
55
+ }
56
+ /** A registered API route entry. */
57
+ interface ApiRouteEntry {
58
+ /** URL pattern (e.g., "/api/posts/:id"). */
59
+ pattern: string;
60
+ /** The route module with method handlers. */
61
+ module: ApiRouteModule;
62
+ }
63
+ //#endregion
64
+ //#region src/types.d.ts
65
+ type RenderMode = 'ssr' | 'ssg' | 'spa' | 'isr';
66
+ interface ISRConfig {
67
+ /** Revalidation interval in seconds. */
68
+ revalidate: number;
69
+ }
70
+ interface ZeroConfig {
71
+ /** Default rendering mode. Default: "ssr" */
72
+ mode?: RenderMode;
73
+ /** Vite config overrides. */
74
+ vite?: Record<string, unknown>;
75
+ /** SSR options. */
76
+ ssr?: {
77
+ /** Streaming mode. Default: "string" */mode?: 'string' | 'stream';
78
+ };
79
+ /** SSG options — only used when mode is "ssg". */
80
+ ssg?: {
81
+ /** Paths to prerender (or function returning paths). */paths?: string[] | (() => string[] | Promise<string[]>);
82
+ };
83
+ /** ISR config — only used when mode is "isr". */
84
+ isr?: ISRConfig;
85
+ /** Deploy adapter. Default: "node" */
86
+ adapter?: 'node' | 'bun' | 'static' | 'vercel' | 'cloudflare' | 'netlify';
87
+ /** Base URL path. Default: "/" */
88
+ base?: string;
89
+ /** App-level middleware applied to all routes. */
90
+ middleware?: Middleware[];
91
+ /** Server port for dev/preview. Default: 3000 */
92
+ port?: number;
93
+ }
94
+ /** Internal representation of a file-system route before conversion to RouteRecord. */
95
+ interface FileRoute {
96
+ /** File path relative to routes dir (e.g. "users/[id].tsx") */
97
+ filePath: string;
98
+ /** Parsed URL path pattern (e.g. "/users/:id") */
99
+ urlPath: string;
100
+ /** Directory path for grouping (e.g. "users" or "" for root) */
101
+ dirPath: string;
102
+ /** Route segment depth for nesting. */
103
+ depth: number;
104
+ /** Whether this is a layout file. */
105
+ isLayout: boolean;
106
+ /** Whether this is an error boundary file. */
107
+ isError: boolean;
108
+ /** Whether this is a loading fallback file. */
109
+ isLoading: boolean;
110
+ /** Whether this is a not-found (404) file. */
111
+ isNotFound: boolean;
112
+ /** Whether this is a catch-all route. */
113
+ isCatchAll: boolean;
114
+ /** Resolved rendering mode. */
115
+ renderMode: RenderMode;
116
+ }
117
+ /** Entry mapping a URL pattern to its route-level middleware. */
118
+ interface RouteMiddlewareEntry {
119
+ pattern: string;
120
+ middleware: Middleware | Middleware[];
121
+ }
122
+ interface Adapter {
123
+ name: string;
124
+ /** Build the production server/output for this adapter. */
125
+ build(options: AdapterBuildOptions): Promise<void>;
126
+ }
127
+ interface AdapterBuildOptions {
128
+ /** Path to the built server entry. */
129
+ serverEntry: string;
130
+ /** Path to the client build output. */
131
+ clientOutDir: string;
132
+ /** Final output directory. */
133
+ outDir: string;
134
+ config: ZeroConfig;
135
+ }
136
+ //#endregion
137
+ //#region src/entry-server.d.ts
138
+ interface CreateServerOptions {
139
+ /** Route definitions. */
140
+ routes: RouteRecord[];
141
+ /** Zero config. */
142
+ config?: ZeroConfig;
143
+ /** Additional middleware. */
144
+ middleware?: Middleware[];
145
+ /** Per-route middleware from virtual:zero/route-middleware. */
146
+ routeMiddleware?: RouteMiddlewareEntry[];
147
+ /** API route entries from virtual:zero/api-routes. */
148
+ apiRoutes?: ApiRouteEntry[];
149
+ /** HTML template override. */
150
+ template?: string;
151
+ /** Client entry path. */
152
+ clientEntry?: string;
153
+ /** Component to render when no route matches (from _404.tsx). */
154
+ notFoundComponent?: ComponentFn;
155
+ }
156
+ /**
157
+ * Create the SSR request handler for production.
158
+ *
159
+ * @example
160
+ * import { routes } from "virtual:zero/routes"
161
+ * import { routeMiddleware } from "virtual:zero/route-middleware"
162
+ * import { createServer } from "@pyreon/zero"
163
+ *
164
+ * export default createServer({ routes, routeMiddleware, apiRoutes })
165
+ */
166
+ declare function createServer(options: CreateServerOptions): (req: Request) => Promise<Response>;
167
+ //#endregion
168
+ //#region src/config.d.ts
169
+ /**
170
+ * Define a Zero configuration.
171
+ * Used in `zero.config.ts` at the project root.
172
+ *
173
+ * @example
174
+ * import { defineConfig } from "@pyreon/zero/config"
175
+ *
176
+ * export default defineConfig({
177
+ * mode: "ssr",
178
+ * ssr: { mode: "stream" },
179
+ * port: 3000,
180
+ * })
181
+ */
182
+ declare function defineConfig(config: ZeroConfig): ZeroConfig;
183
+ /** Merge user config with defaults. */
184
+ declare function resolveConfig(userConfig?: ZeroConfig): Required<Pick<ZeroConfig, 'mode' | 'base' | 'port' | 'adapter'>> & ZeroConfig;
185
+ //#endregion
186
+ //#region src/fs-router.d.ts
187
+ /**
188
+ * Parse a set of file paths (relative to routes dir) into FileRoute objects.
189
+ *
190
+ * @param files Array of file paths like ["index.tsx", "users/[id].tsx"]
191
+ * @param defaultMode Default rendering mode from config
192
+ */
193
+ declare function parseFileRoutes(files: string[], defaultMode?: RenderMode): FileRoute[];
194
+ /**
195
+ * Convert a file path (without extension) to a URL path pattern.
196
+ *
197
+ * Examples:
198
+ * "index" → "/"
199
+ * "about" → "/about"
200
+ * "users/index" → "/users"
201
+ * "users/[id]" → "/users/:id"
202
+ * "blog/[...slug]" → "/blog/:slug*"
203
+ * "(auth)/login" → "/login" (group stripped)
204
+ * "_layout" → "/" (layout marker)
205
+ */
206
+ declare function filePathToUrlPath(filePath: string): string;
207
+ /**
208
+ * Generate a virtual module that exports a nested route tree.
209
+ * Wires up layouts as parent routes with children, loaders, guards,
210
+ * error/loading components, middleware, and meta from route module exports.
211
+ */
212
+ interface GenerateRouteModuleOptions {
213
+ /**
214
+ * When true, skip lazy() for route components and use static imports.
215
+ * Use for SSG/prerender mode where all routes are rendered at build time
216
+ * and code splitting provides no benefit. Avoids Rolldown warnings about
217
+ * static + dynamic imports of the same module.
218
+ */
219
+ staticImports?: boolean;
220
+ }
221
+ declare function generateRouteModule(files: string[], routesDir: string, options?: GenerateRouteModuleOptions): string;
222
+ /**
223
+ * Generate a virtual module that maps URL patterns to their middleware exports.
224
+ * Used by the server entry to dispatch per-route middleware.
225
+ */
226
+ declare function generateMiddlewareModule(files: string[], routesDir: string): string;
227
+ /**
228
+ * Scan a directory for route files.
229
+ * Returns paths relative to the routes directory.
230
+ */
231
+ declare function scanRouteFiles(routesDir: string): Promise<string[]>;
232
+ //#endregion
233
+ //#region src/isr.d.ts
234
+ /**
235
+ * In-memory ISR cache with stale-while-revalidate semantics.
236
+ *
237
+ * Wraps an SSR handler and caches responses per URL path.
238
+ * Serves stale content immediately while revalidating in the background.
239
+ */
240
+ declare function createISRHandler(handler: (req: Request) => Promise<Response>, config: ISRConfig): (req: Request) => Promise<Response>;
241
+ //#endregion
242
+ //#region src/adapters/bun.d.ts
243
+ /**
244
+ * Bun adapter — generates a standalone Bun.serve() entry.
245
+ */
246
+ declare function bunAdapter(): Adapter;
247
+ //#endregion
248
+ //#region src/adapters/cloudflare.d.ts
249
+ /**
250
+ * Cloudflare Pages adapter — generates output for Cloudflare Pages with Functions.
251
+ *
252
+ * Produces:
253
+ * - Client assets in the output directory root (served as static)
254
+ * - `_worker.js` — Cloudflare Pages Function for SSR
255
+ *
256
+ * Note: Cloudflare Pages Functions have a ~1MB module size limit.
257
+ * For large apps, configure Vite's SSR build to bundle server code:
258
+ * `ssr: { noExternal: true }` in vite.config.ts.
259
+ *
260
+ * Deploy with: `npx wrangler pages deploy ./dist`
261
+ *
262
+ * @example
263
+ * ```ts
264
+ * // zero.config.ts
265
+ * import { defineConfig } from "@pyreon/zero"
266
+ *
267
+ * export default defineConfig({
268
+ * adapter: "cloudflare",
269
+ * })
270
+ * ```
271
+ */
272
+ declare function cloudflareAdapter(): Adapter;
273
+ //#endregion
274
+ //#region src/adapters/netlify.d.ts
275
+ /**
276
+ * Netlify adapter — generates output for Netlify Functions (v2).
277
+ *
278
+ * Produces:
279
+ * - Client assets in `publish/` directory
280
+ * - `netlify/functions/ssr.mjs` — Netlify Function for SSR
281
+ * - `netlify.toml` — routing configuration
282
+ *
283
+ * @example
284
+ * ```ts
285
+ * // zero.config.ts
286
+ * import { defineConfig } from "@pyreon/zero"
287
+ *
288
+ * export default defineConfig({
289
+ * adapter: "netlify",
290
+ * })
291
+ * ```
292
+ */
293
+ declare function netlifyAdapter(): Adapter;
294
+ //#endregion
295
+ //#region src/adapters/node.d.ts
296
+ /**
297
+ * Node.js adapter — generates a standalone server entry using node:http.
298
+ */
299
+ declare function nodeAdapter(): Adapter;
300
+ //#endregion
301
+ //#region src/adapters/static.d.ts
302
+ /**
303
+ * Static adapter — just copies the client build output.
304
+ * Used with SSG mode where all pages are pre-rendered at build time.
305
+ */
306
+ declare function staticAdapter(): Adapter;
307
+ //#endregion
308
+ //#region src/adapters/vercel.d.ts
309
+ /**
310
+ * Vercel adapter — generates output for Vercel's Build Output API v3.
311
+ *
312
+ * Produces a `.vercel/output` directory with:
313
+ * - `static/` — client-side assets (JS, CSS, images)
314
+ * - `functions/ssr.func/` — serverless function for SSR
315
+ * - `config.json` — routing configuration
316
+ *
317
+ * @example
318
+ * ```ts
319
+ * // zero.config.ts
320
+ * import { defineConfig } from "@pyreon/zero"
321
+ *
322
+ * export default defineConfig({
323
+ * adapter: "vercel",
324
+ * })
325
+ * ```
326
+ */
327
+ declare function vercelAdapter(): Adapter;
328
+ //#endregion
329
+ //#region src/adapters/index.d.ts
330
+ /**
331
+ * Resolve the adapter from config.
332
+ * Returns a built-in adapter or throws if unknown.
333
+ */
334
+ declare function resolveAdapter(config: ZeroConfig): Adapter;
335
+ //#endregion
336
+ //#region src/not-found.d.ts
337
+ /**
338
+ * Render a 404 component to a full HTML string.
339
+ * If no component is provided, returns a default 404 page.
340
+ */
341
+ declare function render404Page(component: ComponentFn | undefined, template?: string): Promise<string>;
342
+ //#endregion
343
+ //#region src/middleware.d.ts
344
+ /**
345
+ * Compose multiple middleware into a single middleware function.
346
+ * Middleware runs sequentially — if any returns a Response, the chain stops.
347
+ *
348
+ * @example
349
+ * import { compose } from "@pyreon/zero/middleware"
350
+ * import { corsMiddleware } from "@pyreon/zero/cors"
351
+ * import { rateLimitMiddleware } from "@pyreon/zero/rate-limit"
352
+ *
353
+ * const combined = compose(
354
+ * corsMiddleware({ origin: "*" }),
355
+ * rateLimitMiddleware({ max: 100 }),
356
+ * cacheMiddleware(),
357
+ * )
358
+ */
359
+ declare function compose(...middlewares: Middleware[]): Middleware;
360
+ /**
361
+ * Get the shared Zero context from a middleware context.
362
+ * Creates one if it doesn't exist. Middleware can use this to
363
+ * pass data to downstream middleware without polluting `ctx.locals`.
364
+ *
365
+ * @example
366
+ * const authMiddleware: Middleware = (ctx) => {
367
+ * const zctx = getContext(ctx)
368
+ * zctx.userId = "user_123"
369
+ * }
370
+ *
371
+ * const loggingMiddleware: Middleware = (ctx) => {
372
+ * const zctx = getContext(ctx)
373
+ * console.log("User:", zctx.userId)
374
+ * }
375
+ */
376
+ declare function getContext(ctx: MiddlewareContext): Record<string, unknown>;
377
+ //#endregion
378
+ //#region src/vite-plugin.d.ts
379
+ /**
380
+ * Zero Vite plugin — adds file-based routing and zero-config conventions
381
+ * on top of @pyreon/vite-plugin.
382
+ *
383
+ * @example
384
+ * // vite.config.ts
385
+ * import pyreon from "@pyreon/vite-plugin"
386
+ * import zero from "@pyreon/zero"
387
+ *
388
+ * export default {
389
+ * plugins: [pyreon(), zero()],
390
+ * }
391
+ */
392
+ declare function zeroPlugin(userConfig?: ZeroConfig): Plugin;
393
+ //#endregion
394
+ //#region src/i18n-routing.d.ts
395
+ interface I18nRoutingConfig {
396
+ /** Supported locales. e.g. ["en", "de", "cs"] */
397
+ locales: string[];
398
+ /** Default locale — served without prefix (/ instead of /en/). */
399
+ defaultLocale: string;
400
+ /** Redirect root to detected locale. Default: true */
401
+ detectLocale?: boolean;
402
+ /** Cookie name to persist locale preference. Default: "locale" */
403
+ cookieName?: string;
404
+ /** URL strategy. Default: "prefix-except-default" */
405
+ strategy?: 'prefix' | 'prefix-except-default';
406
+ }
407
+ interface LocaleContext {
408
+ /** Current locale code. e.g. "en", "de" */
409
+ locale: string;
410
+ /** All supported locales. */
411
+ locales: string[];
412
+ /** Default locale. */
413
+ defaultLocale: string;
414
+ /** Build a localized path. e.g. localePath("/about", "de") → "/de/about" */
415
+ localePath: (path: string, locale?: string) => string;
416
+ /** Get hreflang alternates for the current path. */
417
+ alternates: () => Array<{
418
+ locale: string;
419
+ url: string;
420
+ }>;
421
+ }
422
+ /**
423
+ * Detect preferred locale from Accept-Language header.
424
+ */
425
+ declare function detectLocaleFromHeader(acceptLanguage: string | null | undefined, locales: string[], defaultLocale: string): string;
426
+ /**
427
+ * Create a LocaleContext for use in components and loaders.
428
+ */
429
+ declare function createLocaleContext(locale: string, path: string, config: I18nRoutingConfig): LocaleContext;
430
+ /**
431
+ * I18n routing middleware for Zero's server.
432
+ *
433
+ * - Detects locale from URL prefix or Accept-Language header
434
+ * - Redirects root to preferred locale (when detectLocale is true)
435
+ * - Sets locale context for loaders and components
436
+ *
437
+ * @example
438
+ * ```ts
439
+ * // zero.config.ts
440
+ * import { i18nRouting } from "@pyreon/zero"
441
+ *
442
+ * export default defineConfig({
443
+ * plugins: [
444
+ * i18nRouting({
445
+ * locales: ["en", "de", "cs"],
446
+ * defaultLocale: "en",
447
+ * }),
448
+ * ],
449
+ * })
450
+ * ```
451
+ */
452
+ declare function i18nRouting(config: I18nRoutingConfig): Plugin;
453
+ //#endregion
454
+ export { type CreateAppOptions, type CreateServerOptions, type GenerateRouteModuleOptions, bunAdapter, cloudflareAdapter, compose, createApp, createISRHandler, createLocaleContext, createServer, zeroPlugin as default, defineConfig, detectLocaleFromHeader, filePathToUrlPath, generateMiddlewareModule, generateRouteModule, getContext, i18nRouting, netlifyAdapter, nodeAdapter, parseFileRoutes, render404Page, resolveAdapter, resolveConfig, scanRouteFiles, staticAdapter, vercelAdapter };
455
+ //# sourceMappingURL=server2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server2.d.ts","names":[],"sources":["../../../src/app.ts","../../../src/api-routes.ts","../../../src/types.ts","../../../src/entry-server.ts","../../../src/config.ts","../../../src/fs-router.ts","../../../src/isr.ts","../../../src/adapters/bun.ts","../../../src/adapters/cloudflare.ts","../../../src/adapters/netlify.ts","../../../src/adapters/node.ts","../../../src/adapters/static.ts","../../../src/adapters/vercel.ts","../../../src/adapters/index.ts","../../../src/not-found.ts","../../../src/middleware.ts","../../../src/vite-plugin.ts","../../../src/i18n-routing.ts"],"mappings":"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"}
@@ -1,5 +1,40 @@
1
- import type { Middleware, MiddlewareContext } from '@pyreon/server';
2
- import type { ApiHandler, ApiRouteEntry } from './api-routes';
1
+ import { Middleware, MiddlewareContext } from "@pyreon/server";
2
+
3
+ //#region src/api-routes.d.ts
4
+ /** Context passed to API route handlers. */
5
+ interface ApiContext {
6
+ /** The incoming request. */
7
+ request: Request;
8
+ /** Parsed URL. */
9
+ url: URL;
10
+ /** URL path. */
11
+ path: string;
12
+ /** Dynamic route parameters (e.g., { id: "123" }). */
13
+ params: Record<string, string>;
14
+ /** Request headers. */
15
+ headers: Headers;
16
+ }
17
+ /** An API route handler function. */
18
+ type ApiHandler = (ctx: ApiContext) => Response | Promise<Response>;
19
+ /** An API route module — exports named HTTP method handlers. */
20
+ interface ApiRouteModule {
21
+ GET?: ApiHandler;
22
+ POST?: ApiHandler;
23
+ PUT?: ApiHandler;
24
+ PATCH?: ApiHandler;
25
+ DELETE?: ApiHandler;
26
+ HEAD?: ApiHandler;
27
+ OPTIONS?: ApiHandler;
28
+ }
29
+ /** A registered API route entry. */
30
+ interface ApiRouteEntry {
31
+ /** URL pattern (e.g., "/api/posts/:id"). */
32
+ pattern: string;
33
+ /** The route module with method handlers. */
34
+ module: ApiRouteModule;
35
+ }
36
+ //#endregion
37
+ //#region src/testing.d.ts
3
38
  /**
4
39
  * Create a mock MiddlewareContext for testing middleware.
5
40
  *
@@ -9,10 +44,10 @@ import type { ApiHandler, ApiRouteEntry } from './api-routes';
9
44
  * const ctx = createTestContext("/api/posts", { method: "POST", body: { title: "Hello" } })
10
45
  * const result = await myMiddleware(ctx)
11
46
  */
12
- export declare function createTestContext(path: string, options?: {
13
- method?: string;
14
- headers?: Record<string, string>;
15
- body?: unknown;
47
+ declare function createTestContext(path: string, options?: {
48
+ method?: string;
49
+ headers?: Record<string, string>;
50
+ body?: unknown;
16
51
  }): MiddlewareContext;
17
52
  /**
18
53
  * Test a middleware by running it with a mock context and returning
@@ -27,13 +62,13 @@ export declare function createTestContext(path: string, options?: {
27
62
  * )
28
63
  * expect(headers.get("Access-Control-Allow-Origin")).toBe("*")
29
64
  */
30
- export declare function testMiddleware(middleware: Middleware, path: string, options?: {
31
- method?: string;
32
- headers?: Record<string, string>;
33
- body?: unknown;
65
+ declare function testMiddleware(middleware: Middleware, path: string, options?: {
66
+ method?: string;
67
+ headers?: Record<string, string>;
68
+ body?: unknown;
34
69
  }): Promise<{
35
- response: Response | undefined;
36
- headers: Headers;
70
+ response: Response | undefined;
71
+ headers: Headers;
37
72
  }>;
38
73
  /**
39
74
  * Create a test server for API routes. Returns a function that
@@ -53,12 +88,12 @@ export declare function testMiddleware(middleware: Middleware, path: string, opt
53
88
  * const data = await server.request("/api/posts", { method: "POST", body: { title: "Hi" } })
54
89
  * expect(data.status).toBe(201)
55
90
  */
56
- export declare function createTestApiServer(routes: ApiRouteEntry[]): {
57
- request(path: string, options?: {
58
- method?: string;
59
- headers?: Record<string, string>;
60
- body?: unknown;
61
- }): Promise<Response>;
91
+ declare function createTestApiServer(routes: ApiRouteEntry[]): {
92
+ request(path: string, options?: {
93
+ method?: string;
94
+ headers?: Record<string, string>;
95
+ body?: unknown;
96
+ }): Promise<Response>;
62
97
  };
63
98
  /**
64
99
  * Create a mock API handler for testing.
@@ -72,14 +107,16 @@ export declare function createTestApiServer(routes: ApiRouteEntry[]): {
72
107
  * expect(handler.calls).toHaveLength(1)
73
108
  * expect(handler.calls[0].params).toEqual({ id: "123" })
74
109
  */
75
- export declare function createMockHandler(responseConfig?: {
76
- status?: number;
77
- body?: unknown;
78
- headers?: Record<string, string>;
110
+ declare function createMockHandler(responseConfig?: {
111
+ status?: number;
112
+ body?: unknown;
113
+ headers?: Record<string, string>;
79
114
  }): ApiHandler & {
80
- calls: Array<{
81
- path: string;
82
- params: Record<string, string>;
83
- }>;
115
+ calls: Array<{
116
+ path: string;
117
+ params: Record<string, string>;
118
+ }>;
84
119
  };
85
- //# sourceMappingURL=testing.d.ts.map
120
+ //#endregion
121
+ export { createMockHandler, createTestApiServer, createTestContext, testMiddleware };
122
+ //# sourceMappingURL=testing2.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../src/testing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAK7D;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,IAAI,CAAC,EAAE,OAAO,CAAA;CACV,GACL,iBAAiB,CAyBnB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,IAAI,CAAC,EAAE,OAAO,CAAA;CACV,GACL,OAAO,CAAC;IAAE,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAI/D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,EAAE;kBAK/C,MAAM,YACH;QACP,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAChC,IAAI,CAAC,EAAE,OAAO,CAAA;KACf,GACA,OAAO,CAAC,QAAQ,CAAC;EASvB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,cAAc,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAO,GACzF,UAAU,GAAG;IACd,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC,CAAA;CAC/D,CAaA"}
1
+ {"version":3,"file":"testing2.d.ts","names":[],"sources":["../../../src/api-routes.ts","../../../src/testing.ts"],"mappings":";;;AAQA;AAAA,UAAiB,UAAA;;EAEf,OAAA,EAAS,OAAA;EAEJ;EAAL,GAAA,EAAK,GAAA;EAMI;EAJT,IAAA;EAIgB;EAFhB,MAAA,EAAQ,MAAA;EANC;EAQT,OAAA,EAAS,OAAA;AAAA;;KAIC,UAAA,IAAc,GAAA,EAAK,UAAA,KAAe,QAAA,GAAW,OAAA,CAAQ,QAAA;;UAGhD,cAAA;EACf,GAAA,GAAM,UAAA;EACN,IAAA,GAAO,UAAA;EACP,GAAA,GAAM,UAAA;EACN,KAAA,GAAQ,UAAA;EACR,MAAA,GAAS,UAAA;EACT,IAAA,GAAO,UAAA;EACP,OAAA,GAAU,UAAA;AAAA;;UAIK,aAAA;EAd+C;EAgB9D,OAAA;EAhB6B;EAkB7B,MAAA,EAAQ,cAAA;AAAA;;;;AAhCV;;;;;;;;iBCOgB,iBAAA,CACd,IAAA,UACA,OAAA;EACE,MAAA;EACA,OAAA,GAAU,MAAA;EACV,IAAA;AAAA,IAED,iBAAA;;;;;;;;ADAH;;;;;;iBCwCsB,cAAA,CACpB,UAAA,EAAY,UAAA,EACZ,IAAA,UACA,OAAA;EACE,MAAA;EACA,OAAA,GAAU,MAAA;EACV,IAAA;AAAA,IAED,OAAA;EAAU,QAAA,EAAU,QAAA;EAAsB,OAAA,EAAS,OAAA;AAAA;;;AD7CtD;;;;;;;;;;;;;;;;iBCqEgB,mBAAA,CAAoB,MAAA,EAAQ,aAAA;wBAK1B,OAAA;IAEV,MAAA;IACA,OAAA,GAAU,MAAA;IACV,IAAA;EAAA,IAED,OAAA,CAAQ,QAAA;AAAA;;;;;;ADrEf;;;;;;;iBC4FgB,iBAAA,CACd,cAAA;EAAkB,MAAA;EAAiB,IAAA;EAAgB,OAAA,GAAU,MAAA;AAAA,IAC5D,UAAA;EACD,KAAA,EAAO,KAAA;IAAQ,IAAA;IAAc,MAAA,EAAQ,MAAA;EAAA;AAAA"}
@@ -1,18 +1,26 @@
1
- import type { VNodeChild } from '@pyreon/core';
2
- export type Theme = 'light' | 'dark' | 'system';
1
+ import * as _pyreon_reactivity0 from "@pyreon/reactivity";
2
+ import { VNodeChild } from "@pyreon/core";
3
+
4
+ //#region src/theme.d.ts
5
+ type Theme = 'light' | 'dark' | 'system';
3
6
  /** Reactive theme signal. */
4
- export declare const theme: import("@pyreon/reactivity").Signal<Theme>;
7
+ declare const theme: _pyreon_reactivity0.Signal<Theme>;
8
+ /**
9
+ * Set the default theme for SSR (when `matchMedia` is unavailable).
10
+ * Call once at server startup before rendering.
11
+ */
12
+ declare function setSSRThemeDefault(value: 'light' | 'dark'): void;
5
13
  /** Computed resolved theme (what's actually applied). */
6
- export declare function resolvedTheme(): 'light' | 'dark';
14
+ declare function resolvedTheme(): 'light' | 'dark';
7
15
  /** Toggle between light and dark. */
8
- export declare function toggleTheme(): void;
16
+ declare function toggleTheme(): void;
9
17
  /** Set theme explicitly. */
10
- export declare function setTheme(t: Theme): void;
18
+ declare function setTheme(t: Theme): void;
11
19
  /**
12
20
  * Initialize the theme system. Call once in your app entry or layout.
13
21
  * Reads from localStorage, listens for system preference changes.
14
22
  */
15
- export declare function initTheme(): void;
23
+ declare function initTheme(): void;
16
24
  /**
17
25
  * Theme toggle button component.
18
26
  *
@@ -20,9 +28,9 @@ export declare function initTheme(): void;
20
28
  * import { ThemeToggle } from "@pyreon/zero/theme"
21
29
  * <ThemeToggle />
22
30
  */
23
- export declare function ThemeToggle(props: {
24
- class?: string;
25
- style?: string;
31
+ declare function ThemeToggle(props: {
32
+ class?: string;
33
+ style?: string;
26
34
  }): VNodeChild;
27
35
  /**
28
36
  * Inline script to prevent flash of wrong theme.
@@ -35,5 +43,7 @@ export declare function ThemeToggle(props: {
35
43
  * ...
36
44
  * </head>
37
45
  */
38
- export declare const themeScript = "(function(){try{var t=localStorage.getItem(\"zero-theme\");var r=t===\"light\"?\"light\":t===\"dark\"?\"dark\":window.matchMedia(\"(prefers-color-scheme:dark)\").matches?\"dark\":\"light\";document.documentElement.dataset.theme=r}catch(e){}})()";
39
- //# sourceMappingURL=theme.d.ts.map
46
+ declare const themeScript = "(function(){try{var t=localStorage.getItem(\"zero-theme\");var r=t===\"light\"?\"light\":t===\"dark\"?\"dark\":window.matchMedia(\"(prefers-color-scheme:dark)\").matches?\"dark\":\"light\";document.documentElement.dataset.theme=r}catch(e){}})()";
47
+ //#endregion
48
+ export { Theme, ThemeToggle, initTheme, resolvedTheme, setSSRThemeDefault, setTheme, theme, themeScript, toggleTheme };
49
+ //# sourceMappingURL=theme2.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/theme.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAY9C,MAAM,MAAM,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAA;AAI/C,6BAA6B;AAC7B,eAAO,MAAM,KAAK,4CAA0B,CAAA;AAE5C,yDAAyD;AACzD,wBAAgB,aAAa,IAAI,OAAO,GAAG,MAAM,CAOhD;AAED,qCAAqC;AACrC,wBAAgB,WAAW,SAG1B;AAED,4BAA4B;AAC5B,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,QAUhC;AAED;;;GAGG;AACH,wBAAgB,SAAS,SAiCxB;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,UAAU,CAqDjF;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,yPAA6O,CAAA"}
1
+ {"version":3,"file":"theme2.d.ts","names":[],"sources":["../../../src/theme.tsx"],"mappings":";;;;KAYY,KAAA;;cAKC,KAAA,EAAK,mBAAA,CAAA,MAAA,CAAA,KAAA;AALlB;;;;AAAA,iBAcgB,kBAAA,CAAmB,KAAA;AATnC;AAAA,iBAcgB,aAAA,CAAA;;iBAUA,WAAA,CAAA;;iBAMA,QAAA,CAAS,CAAA,EAAG,KAAA;;;;;iBAgBZ,SAAA,CAAA;;;;;AAtBhB;;;iBAgEgB,WAAA,CAAY,KAAA;EAAS,KAAA;EAAgB,KAAA;AAAA,IAAmB,UAAA;;;;AA1CxE;;;;;AA0CA;;;cAkEa,WAAA"}