@finesoft/front 0.1.39 → 0.1.41

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 (41) hide show
  1. package/dist/app-re7jUCuM.mjs +178 -0
  2. package/dist/app-re7jUCuM.mjs.map +1 -0
  3. package/dist/index.d.mts +1276 -0
  4. package/dist/index.d.mts.map +1 -0
  5. package/dist/index.mjs +2749 -0
  6. package/dist/index.mjs.map +1 -0
  7. package/dist/locale-D2Bu7w47.mjs +27 -0
  8. package/dist/locale-D2Bu7w47.mjs.map +1 -0
  9. package/dist/rolldown-runtime-wcPFST8Q.mjs +13 -0
  10. package/dist/server-peer-modules-BSSsxBaF.d.mts +41 -0
  11. package/dist/server-peer-modules-BSSsxBaF.d.mts.map +1 -0
  12. package/package.json +21 -32
  13. package/README.md +0 -1136
  14. package/dist/app-XEMPAI6H.js +0 -10
  15. package/dist/app-XEMPAI6H.js.map +0 -1
  16. package/dist/browser.cjs +0 -1465
  17. package/dist/browser.cjs.map +0 -1
  18. package/dist/browser.d.cts +0 -904
  19. package/dist/browser.d.ts +0 -904
  20. package/dist/browser.js +0 -115
  21. package/dist/browser.js.map +0 -1
  22. package/dist/chunk-4PPCVAKZ.js +0 -463
  23. package/dist/chunk-4PPCVAKZ.js.map +0 -1
  24. package/dist/chunk-OYTIGVEG.js +0 -193
  25. package/dist/chunk-OYTIGVEG.js.map +0 -1
  26. package/dist/chunk-PSPVIVC2.js +0 -25
  27. package/dist/chunk-PSPVIVC2.js.map +0 -1
  28. package/dist/chunk-SDPWQT2T.js +0 -936
  29. package/dist/chunk-SDPWQT2T.js.map +0 -1
  30. package/dist/chunk-XQ3UWZOS.js +0 -187
  31. package/dist/chunk-XQ3UWZOS.js.map +0 -1
  32. package/dist/index.cjs +0 -3661
  33. package/dist/index.cjs.map +0 -1
  34. package/dist/index.d.cts +0 -582
  35. package/dist/index.d.ts +0 -582
  36. package/dist/index.js +0 -1648
  37. package/dist/index.js.map +0 -1
  38. package/dist/locale-CAZ4INCX.js +0 -7
  39. package/dist/locale-CAZ4INCX.js.map +0 -1
  40. package/dist/src-XNC7QNVI.js +0 -21
  41. package/dist/src-XNC7QNVI.js.map +0 -1
package/dist/index.d.cts DELETED
@@ -1,582 +0,0 @@
1
- import { FrameworkConfig, Framework, BasePage, PrefetchedIntent } from './browser.cjs';
2
- export { ACTION_KINDS, Action, ActionDispatcher, ActionHandler, ActionHandlerDependencies, AfterLoadGuard, AsyncMapper, BaseController, BaseItem, BaseLogger, BaseShelf, BeforeLoadGuard, BrowserAppConfig, BrowserContextOptions, CompositeLogger, CompositeLoggerFactory, CompoundAction, ConsoleLogger, ConsoleLoggerFactory, Container, DEP_KEYS, DenyResult, ExternalUrlAction, ExternalUrlDependencies, FeatureFlags, FlowAction, FlowActionCallbacks, FlowActionDependencies, History, HttpClient, HttpClientConfig, HttpError, Intent, IntentController, IntentDispatcher, Locale, Logger, LoggerFactory, Logger as LoggerInterface, LruMap, Mapper, MetricsRecorder, MiddlewareResult, NavigationContext, Net, NextResult, None, Optional, PostLoadContext, PrefetchedIntents, RedirectResult, RenderMode, RewriteResult, RouteAddOptions, RouteDefinition, RouteMatch, Router, ServerContextOptions, Storage, buildUrl, createBrowserContext, createPrefetchedIntentsFromDom, createServerContext, defineRoutes, deny, deserializeServerData, generateUuid, getBaseUrl, isCompoundAction, isExternalUrlAction, isFlowAction, isNone, isSome, makeDependencies, makeExternalUrlAction, makeFlowAction, mapEach, next, pipe, pipeAsync, redirect, registerActionHandlers, registerExternalUrlHandler, registerFlowActionHandler, removeHost, removeQueryParams, removeScheme, resetFilterCache, rewrite, runAfterLoadGuards, runBeforeLoadGuards, shouldLog, stableStringify, startBrowserApp, tryScroll } from './browser.cjs';
3
- import * as node_fs from 'node:fs';
4
- import { Hono } from 'hono';
5
- import { ViteDevServer } from 'vite';
6
-
7
- /**
8
- * ssrRender — 通用 SSR 渲染管线
9
- *
10
- * 1. 创建 Framework + 注册 Controllers
11
- * 2. routeUrl → Intent
12
- * 3. dispatch → Page 数据
13
- * 4. 调用应用层提供的渲染函数
14
- */
15
-
16
- interface SSRRenderOptions {
17
- /** 请求 URL */
18
- url: string;
19
- /** Framework 配置(含路由注册等) */
20
- frameworkConfig: FrameworkConfig;
21
- /** 注册 controllers 和路由的引导函数 */
22
- bootstrap: (framework: Framework) => void;
23
- /** 获取错误页面 */
24
- getErrorPage: (status: number, message: string) => BasePage;
25
- /** 应用层渲染函数(如 Svelte SSR render) */
26
- renderApp: (page: BasePage, framework: Framework) => SSRAppResult;
27
- /** 可选的 SSR 请求上下文(如自定义 fetch) */
28
- ssrContext?: SSRContext;
29
- }
30
- /** SSR 请求级上下文 */
31
- interface SSRContext {
32
- /** 自定义 fetch(如 Hono 内部路由回环) */
33
- fetch?: typeof globalThis.fetch;
34
- /** 原始 Request 对象(用于中间件读取 cookie/header) */
35
- request?: Request;
36
- }
37
- interface SSRAppResult {
38
- html: string;
39
- head: string;
40
- css: string;
41
- }
42
- interface SSRRenderResult {
43
- html: string;
44
- head: string;
45
- css: string;
46
- serverData: PrefetchedIntent[];
47
- /** 该路由的渲染模式(由 Router 返回) */
48
- renderMode?: string;
49
- /** 中间件要求的重定向(服务端应返回 HTTP 301/302) */
50
- redirect?: {
51
- url: string;
52
- status: number;
53
- };
54
- }
55
- declare function ssrRender(options: SSRRenderOptions): Promise<SSRRenderResult>;
56
-
57
- /**
58
- * createSSRRender — 工厂函数,返回可直接被 SSR 服务器调用的 render 函数
59
- *
60
- * 将一次性配置(bootstrap / getErrorPage / renderApp)绑定后,
61
- * 返回 `(url, locale) => Promise<SSRRenderResult>` 签名,
62
- * 与 @finesoft/server 的 SSRModule 接口对齐。
63
- */
64
-
65
- interface SSRRenderConfig {
66
- /** 注册 controllers 和路由的引导函数 */
67
- bootstrap: (framework: Framework) => void;
68
- /** 获取错误页面 */
69
- getErrorPage: (status: number, message: string) => BasePage;
70
- /**
71
- * 应用层渲染函数
72
- *
73
- * @param page - 当前页面数据
74
- * @param locale - 当前语言
75
- * @returns SSR 渲染结果 { html, head, css }
76
- */
77
- renderApp: (page: BasePage, locale: string) => SSRAppResult;
78
- /** Framework 构造配置(可选) */
79
- frameworkConfig?: FrameworkConfig;
80
- }
81
- /**
82
- * 创建 render 函数
83
- *
84
- * @returns `render(url, locale, ssrContext?)` — 供 @finesoft/server SSRModule 使用
85
- */
86
- declare function createSSRRender(config: SSRRenderConfig): (url: string, locale: string, ssrContext?: SSRContext) => Promise<SSRRenderResult>;
87
-
88
- /**
89
- * injectSSRContent — 将 SSR 渲染结果注入 HTML 模板
90
- */
91
- /** SSR HTML 模板占位符常量 */
92
- declare const SSR_PLACEHOLDERS: {
93
- readonly LANG: "<!--ssr-lang-->";
94
- readonly HEAD: "<!--ssr-head-->";
95
- readonly BODY: "<!--ssr-body-->";
96
- readonly DATA: "<!--ssr-data-->";
97
- };
98
- interface InjectSSROptions {
99
- template: string;
100
- locale: string;
101
- head: string;
102
- css: string;
103
- html: string;
104
- serializedData: string;
105
- }
106
- declare function injectSSRContent(options: InjectSSROptions): string;
107
- /**
108
- * CSR 空壳注入 — 只替换 lang,清空 body/head/data 占位符
109
- * 用于 renderMode === "csr" 的路由
110
- */
111
- declare function injectCSRShell(template: string, locale: string): string;
112
-
113
- /**
114
- * serializeServerData — 将 PrefetchedIntents 数据序列化为安全的 JSON
115
- *
116
- * 返回值可安全嵌入 <script> 标签。
117
- */
118
-
119
- declare function serializeServerData(data: PrefetchedIntent[]): string;
120
-
121
- /**
122
- * 框架级声明式代理路由
123
- *
124
- * 将代理路由从业务层手写 Hono 路由,改为框架级配置。
125
- * 框架统一执行路径校验(SSRF 防护)、Host 限制、错误处理、响应头控制。
126
- */
127
-
128
- /** 代理路由认证配置 */
129
- interface ProxyAuthConfig {
130
- /** 认证类型 */
131
- type: "bearer" | "basic";
132
- /** 环境变量名称(运行时从 process.env 读取) */
133
- envKey: string;
134
- }
135
- /** 声明式代理路由配置 */
136
- interface ProxyRouteConfig {
137
- /** URL 前缀,如 "/api/apple"(必须以 "/" 开头) */
138
- prefix: string;
139
- /** 代理目标地址(必须以 "https://" 开头) */
140
- target: string;
141
- /** HTTP 方法(默认 ["all"]) */
142
- methods?: ("all" | "get" | "post" | "put" | "delete" | "patch")[];
143
- /** 附加到代理请求的头部 */
144
- headers?: Record<string, string>;
145
- /** 认证配置 */
146
- auth?: ProxyAuthConfig;
147
- /** Cache-Control 响应头 */
148
- cache?: string;
149
- /** 是否跟随重定向(默认 false) */
150
- followRedirects?: boolean;
151
- }
152
- /**
153
- * 注册声明式代理路由到 Hono app(运行时使用:dev / preview / createServer)
154
- */
155
- declare function registerProxyRoutes(app: Hono, configs: ProxyRouteConfig[]): void;
156
- /**
157
- * 生成代理路由的内联代码(用于 serverless/edge 入口,避免运行时依赖)
158
- */
159
- declare function generateProxyCode(configs: ProxyRouteConfig[]): string;
160
-
161
- /** 适配器上下文 — 由 vite-plugin 的 closeBundle 构造后传入 adapter.build() */
162
- interface AdapterContext {
163
- /** 项目根路径 */
164
- root: string;
165
- /** SSR 入口文件相对路径(如 "src/ssr.ts") */
166
- ssrEntry: string;
167
- /** setup 文件相对路径(如 "src/proxies.ts"),仅当 options.setup 为 string 时有值 */
168
- setupPath?: string;
169
- /** 路由定义入口文件(用于预渲染时加载路由),如 "src/lib/bootstrap.ts" */
170
- bootstrapEntry?: string;
171
- /** 支持的语言列表 */
172
- locales: string[];
173
- /** 默认语言 */
174
- defaultLocale: string;
175
- /** dist/client/index.html 的内容 */
176
- templateHtml: string;
177
- /** Vite 的 resolve 配置 */
178
- resolvedResolve: unknown;
179
- /** Vite 的 css 配置 */
180
- resolvedCss: unknown;
181
- /**
182
- * 按路由覆盖的渲染模式。
183
- * key: 精确路径或 glob 模式,value: "ssr" | "csr" | "prerender"
184
- */
185
- renderModes?: Record<string, string>;
186
- /** 声明式代理路由配置 */
187
- proxies?: ProxyRouteConfig[];
188
- vite: any;
189
- fs: typeof node_fs;
190
- path: {
191
- resolve: (...args: string[]) => string;
192
- join: (...args: string[]) => string;
193
- };
194
- /** 生成 serverless/edge function 入口源码 */
195
- generateSSREntry(opts: GenerateSSREntryOptions): string;
196
- /** 用 Vite SSR 模式构建 bundle */
197
- buildBundle(opts: BuildBundleOptions): Promise<void>;
198
- /** 复制 dist/client 静态资源到目标目录 */
199
- copyStaticAssets(destDir: string, opts?: CopyStaticAssetsOptions): void;
200
- }
201
- interface GenerateSSREntryOptions {
202
- /** 平台特定的导入语句(如 `import { handle } from "hono/vercel";`) */
203
- platformImport: string;
204
- /** 平台特定的导出语句(如 `export default handle(app);`) */
205
- platformExport: string;
206
- /**
207
- * 平台特定的 ISR 缓存实现代码(可选)。
208
- * 需提供 `async function platformCacheGet(url)` 返回 string|null,
209
- * 和 `async function platformCacheSet(url, html)` 的函数定义。
210
- * 不提供时使用内置的内存 Map 缓存。
211
- */
212
- platformCache?: string;
213
- /**
214
- * 平台特定的响应后处理代码(可选)。
215
- * 在 prerender 路由返回前执行,可用于设置 CDN 缓存头等。
216
- * 代码中可使用变量 `c`(Hono Context)。
217
- */
218
- platformPrerenderResponseHook?: string;
219
- /**
220
- * 平台特定的中间件代码(可选)。
221
- * 插入在 catch-all GET 路由之前,可用于添加静态文件服务等。
222
- * 代码中可使用变量 `app`(Hono 实例)。
223
- */
224
- platformMiddleware?: string;
225
- }
226
- interface BuildBundleOptions {
227
- /** 临时入口文件路径 */
228
- entry: string;
229
- /** 输出目录 */
230
- outDir: string;
231
- /** 构建 target(默认 "node18") */
232
- target?: string;
233
- /** 输出文件名(默认 "index.mjs") */
234
- fileName?: string;
235
- /** 排除的模块(默认 ["vite", "esbuild", "rollup", "fsevents", "lightningcss"]) */
236
- external?: string[];
237
- /** 是否打包所有依赖(默认 true) */
238
- noExternal?: boolean;
239
- }
240
- interface CopyStaticAssetsOptions {
241
- /** 是否排除 index.html(默认 true) */
242
- excludeHtml?: boolean;
243
- }
244
- /** 适配器接口 */
245
- interface Adapter {
246
- /** 适配器名称(用于日志) */
247
- name: string;
248
- /** 生成目标平台部署产物 */
249
- build(ctx: AdapterContext): Promise<void>;
250
- }
251
-
252
- /**
253
- * Auto 适配器 — 根据环境变量自动选择目标平台
254
- *
255
- * 检测顺序:
256
- * VERCEL → vercel
257
- * CF_PAGES → cloudflare
258
- * NETLIFY → netlify
259
- * (default) → node
260
- */
261
-
262
- declare function autoAdapter(): Adapter;
263
-
264
- /**
265
- * Cloudflare Pages 适配器
266
- *
267
- * 生成 dist/cloudflare/ 目录:
268
- * - _worker.js — Workers 入口(Hono 原生支持 CF fetch 接口)
269
- * - assets/ — 静态资源
270
- *
271
- * 注意:Cloudflare Workers 不支持原生 Node.js API。
272
- * 若 setup 代理使用了 process.env,需在 wrangler.toml 启用 nodejs_compat。
273
- */
274
-
275
- declare function cloudflareAdapter(): Adapter;
276
-
277
- /**
278
- * Netlify 适配器 — Netlify Functions v2
279
- *
280
- * 生成:
281
- * - .netlify/functions-internal/ssr/index.mjs — Serverless Function
282
- * - dist/client/_redirects — 路由重写规则
283
- */
284
-
285
- declare function netlifyAdapter(): Adapter;
286
-
287
- /**
288
- * Node 适配器 — 独立 HTTP 服务器
289
- *
290
- * 生成 dist/server/index.mjs,使用 @hono/node-server 监听端口。
291
- * 运行:node dist/server/index.mjs
292
- */
293
-
294
- declare function nodeAdapter(): Adapter;
295
-
296
- /**
297
- * resolveAdapter — 字符串 → Adapter 映射
298
- */
299
-
300
- declare function resolveAdapter(value: string | Adapter): Adapter;
301
-
302
- /**
303
- * Static 适配器 — 构建时预渲染
304
- *
305
- * 加载 SSR 模块和路由定义,将无参数路由自动预渲染为静态 HTML。
306
- * 动态参数路由通过 dynamicRoutes 选项补充具体 URL。
307
- *
308
- * 输出:dist/static/ — 纯静态站点,可部署到任何静态托管。
309
- */
310
-
311
- interface StaticAdapterOptions {
312
- /**
313
- * 导出 routes 数组的文件路径(相对于项目根目录)。
314
- * 默认 "src/lib/bootstrap.ts"。
315
- * 文件需 export 一个 RouteDefinition[] 类型的 routes 变量。
316
- */
317
- routesExport?: string;
318
- /**
319
- * 额外的动态路由 URL(带具体参数值),如:
320
- * ["/product/123", "/list/games"]
321
- */
322
- dynamicRoutes?: string[];
323
- }
324
- declare function staticAdapter(opts?: StaticAdapterOptions): Adapter;
325
-
326
- /**
327
- * Vercel 适配器 — Build Output API v3
328
- *
329
- * 生成 .vercel/output/ 目录:
330
- * - config.json — 路由规则
331
- * - static/ — 静态资源
332
- * - functions/ssr.func/ — Serverless Function
333
- */
334
-
335
- declare function vercelAdapter(): Adapter;
336
-
337
- /**
338
- * createSSRApp — 创建 Hono SSR 应用
339
- *
340
- * 提供 SSR 通配路由,读取模板、加载 SSR 模块、渲染。
341
- * 应用层可在此之上追加自定义路由(API 代理等)。
342
- */
343
-
344
- interface SSRModule {
345
- render: (url: string, locale: string, ssrContext?: {
346
- fetch?: typeof globalThis.fetch;
347
- request?: Request;
348
- }) => Promise<{
349
- html: string;
350
- head: string;
351
- css: string;
352
- serverData: unknown;
353
- renderMode?: string;
354
- redirect?: {
355
- url: string;
356
- status: number;
357
- };
358
- }>;
359
- serializeServerData: (data: unknown) => string;
360
- }
361
- interface SSRAppOptions {
362
- /** 项目根路径 */
363
- root: string;
364
- /** Vite dev server(仅开发模式) */
365
- vite?: ViteDevServer;
366
- /** 是否生产环境 */
367
- isProduction: boolean;
368
- /** SSR 入口文件路径(开发用,如 "/src/ssr.ts") */
369
- ssrEntryPath?: string;
370
- /** 生产环境 SSR 模块路径(如 "../dist/server/ssr.js") */
371
- ssrProductionModule?: string;
372
- /** 支持的语言列表 */
373
- supportedLocales?: string[];
374
- /** 默认语言 */
375
- defaultLocale?: string;
376
- /**
377
- * 父级 Hono app 的 fetch 函数,用于 SSR 内部路由回环。
378
- * SSR 渲染时,控制器的 fetch 请求(如 /api/apple/*)会通过此函数
379
- * 直接在进程内路由到代理 handler,避免网络自请求死锁。
380
- */
381
- parentFetch?: (request: Request) => Response | Promise<Response>;
382
- /**
383
- * 按路由覆盖渲染模式(精确路径或 glob 模式)。
384
- * 优先级高于路由级 renderMode。
385
- */
386
- renderModes?: Record<string, string>;
387
- }
388
- declare function createSSRApp(options: SSRAppOptions): Hono;
389
-
390
- /**
391
- * runtime — 运行时检测 + 项目根路径推导
392
- */
393
- interface RuntimeInfo {
394
- isDeno: boolean;
395
- isBun: boolean;
396
- isVercel: boolean;
397
- isProduction: boolean;
398
- }
399
- /** 检测当前运行时环境 */
400
- declare function detectRuntime(): RuntimeInfo;
401
- /**
402
- * 从 `import.meta.url` 推导项目根路径
403
- *
404
- * @param importMetaUrl - 调用方的 `import.meta.url`
405
- * @param levelsUp - 向上移动多少级(默认 0,即调用方所在目录就是项目根)
406
- */
407
- declare function resolveRoot(importMetaUrl: string, levelsUp?: number): Promise<string>;
408
-
409
- /**
410
- * createServer — 一站式服务器工厂
411
- *
412
- * 封装 env 加载、运行时检测、Vite 创建、Hono app、SSR、启动。
413
- * 保留 setup() 钩子用于注册业务路由。
414
- */
415
-
416
- interface ServerConfig {
417
- /** 项目根路径(默认 process.cwd()) */
418
- root?: string;
419
- /** 支持的语言列表 */
420
- locales?: string[];
421
- /** 默认语言 */
422
- defaultLocale?: string;
423
- /** 端口号(默认 3000) */
424
- port?: number;
425
- /** 注册自定义路由(在 SSR catch-all 之前调用,但在声明式代理之后) */
426
- setup?: (app: Hono) => void | Promise<void>;
427
- /** 声明式代理路由配置 */
428
- proxies?: ProxyRouteConfig[];
429
- /** SSR 相关选项(透传给 createSSRApp) */
430
- ssr?: Pick<SSRAppOptions, "ssrEntryPath" | "ssrProductionModule">;
431
- }
432
- interface ServerInstance {
433
- app: Hono;
434
- vite?: ViteDevServer;
435
- runtime: RuntimeInfo;
436
- }
437
- /**
438
- * 创建并启动 SSR 服务器
439
- *
440
- * @example
441
- * ```ts
442
- * const { app } = await createServer({
443
- * locales: ["zh", "en"],
444
- * setup: (app) => registerProxies(app),
445
- * });
446
- * export { app };
447
- * ```
448
- */
449
- declare function createServer(config?: ServerConfig): Promise<ServerInstance>;
450
-
451
- /**
452
- * Accept-Language 解析
453
- */
454
- declare function parseAcceptLanguage(header: string | undefined, supported?: string[], fallback?: string): string;
455
-
456
- /**
457
- * startServer — 多运行时自动启动
458
- *
459
- * 支持 Node.js (dev HMR + prod)、Deno、Bun、Vercel。
460
- */
461
-
462
- interface StartServerOptions {
463
- /** 最终的 Hono app(已包含 SSR + 自定义路由) */
464
- app: Hono;
465
- /** 项目根路径 */
466
- root: string;
467
- /** 端口号 */
468
- port?: number;
469
- /** 是否生产环境 */
470
- isProduction: boolean;
471
- /** Vite dev server(仅开发模式传入) */
472
- vite?: ViteDevServer;
473
- /** 运行时信息(可选,不传时自动检测) */
474
- runtime?: RuntimeInfo;
475
- /** 已注册的路由列表(用于启动日志) */
476
- routes?: string[];
477
- /** 支持的语言列表(用于启动日志) */
478
- locales?: string[];
479
- /** SSR 入口路径(用于启动日志) */
480
- ssrEntryPath?: string;
481
- }
482
- declare function startServer(options: StartServerOptions): Promise<{
483
- vite?: ViteDevServer;
484
- }>;
485
-
486
- /**
487
- * finesoftFrontViteConfig — Vite 插件
488
- *
489
- * 将 Hono SSR 服务器集成到 Vite 的 dev / build / preview 生命周期中,
490
- * 使 template-project 只需 `vite` / `vite build` / `vite preview` 即可运行。
491
- *
492
- * 支持多平台 adapter: "vercel" | "cloudflare" | "netlify" | "node" | "static" | "auto"
493
- * 或自定义 Adapter 对象。
494
- */
495
-
496
- interface FinesoftFrontViteOptions {
497
- /** 支持的语言列表 */
498
- locales?: string[];
499
- /** 默认语言 */
500
- defaultLocale?: string;
501
- /** SSR 配置 */
502
- ssr?: {
503
- /** SSR 入口文件路径(默认 "src/ssr.ts") */
504
- entry?: string;
505
- };
506
- /**
507
- * 声明式代理路由配置。
508
- * 框架统一执行路径校验(SSRF 防护)、Host 限制、错误处理、响应头控制。
509
- * 代理路由在 setup 之前注册,优先级高于自定义路由。
510
- */
511
- proxies?: ProxyRouteConfig[];
512
- /**
513
- * 注册自定义路由(非代理类)。
514
- * - 传入 Function:仅 dev/preview 时可用。
515
- * - 传入 string(文件路径):dev/preview/adapter 均可用,
516
- * 文件需 export default 一个 (app: Hono) => void 函数。
517
- * 注意:代理路由请使用 proxies 选项,不要在 setup 中手写代理。
518
- */
519
- setup?: ((app: Hono) => void | Promise<void>) | string;
520
- /**
521
- * 部署适配器。
522
- * - 字符串快捷方式:"vercel" | "cloudflare" | "netlify" | "node" | "static" | "auto"
523
- * - 自定义 Adapter 对象:{ name, build(ctx) }
524
- * - 不设置则不生成部署产物
525
- */
526
- adapter?: string | Adapter;
527
- /**
528
- * 按路由覆盖渲染模式(优先级高于 RouteDefinition.renderMode)。
529
- * key: 精确路径或 glob 模式,如 "/search" 或 "/blog/*"
530
- * value: "ssr" | "csr" | "prerender"
531
- *
532
- * @example
533
- * ```ts
534
- * renderModes: {
535
- * "/search": "csr",
536
- * "/blog/*": "prerender",
537
- * }
538
- * ```
539
- */
540
- renderModes?: Record<string, "ssr" | "csr" | "prerender">;
541
- /**
542
- * 路由定义入口文件(用于预渲染时加载路由),默认 "src/lib/bootstrap.ts"。
543
- * 如果项目不使用声明式路由定义,可以不设置。
544
- */
545
- bootstrapEntry?: string;
546
- }
547
- declare function finesoftFrontViteConfig(options?: FinesoftFrontViteOptions): {
548
- name: string;
549
- config(userConfig: Record<string, any>, env: {
550
- command: string;
551
- }): Record<string, any>;
552
- configResolved(config: Record<string, any>): void;
553
- /**
554
- * Dev 模式 CSS 内联 — 消除 SSR 首屏布局抖动
555
- *
556
- * Vite dev 模式下,global.scss 等非组件 CSS 通过 JS 模块系统异步加载,
557
- * 导致 SSR HTML 初次渲染缺少布局关键样式(box-sizing、flex 布局、padding-top 等)。
558
- *
559
- * 此 hook 在 HTML 模板变换阶段(SSR 渲染之前):
560
- * 1. 找到浏览器入口脚本(排除 /@vite/client 等内部脚本)
561
- * 2. 编译入口脚本,填充 Vite 模块图
562
- * 3. 遍历模块图收集所有 CSS 依赖(排除 .svelte 组件 CSS,由 SSR 渲染自行处理)
563
- * 4. 通过 ssrLoadModule 获取编译后 CSS(SCSS→CSS)
564
- * 5. 注入 <style data-vite-dev-id> 标签到 <head>
565
- *
566
- * data-vite-dev-id 确保 Vite HMR 客户端复用已有标签,避免重复注入。
567
- */
568
- transformIndexHtml: {
569
- order: "pre";
570
- handler(html: string, ctx: any): Promise<{
571
- tag: string;
572
- attrs: Record<string, string>;
573
- children: string;
574
- injectTo: "head";
575
- }[] | undefined>;
576
- };
577
- configureServer(server: any): () => Promise<void>;
578
- configurePreviewServer(server: any): () => Promise<void>;
579
- closeBundle(): Promise<void>;
580
- };
581
-
582
- export { type Adapter, type AdapterContext, BasePage, type FinesoftFrontViteOptions, Framework, FrameworkConfig, type InjectSSROptions, PrefetchedIntent, type ProxyAuthConfig, type ProxyRouteConfig, type RuntimeInfo, type SSRAppOptions, type SSRContext, type SSRModule, type SSRRenderConfig, type SSRRenderOptions, type SSRRenderResult, SSR_PLACEHOLDERS, type ServerConfig, type ServerInstance, type StartServerOptions, autoAdapter, cloudflareAdapter, createSSRApp, createSSRRender, createServer, detectRuntime, finesoftFrontViteConfig, generateProxyCode, injectCSRShell, injectSSRContent, netlifyAdapter, nodeAdapter, parseAcceptLanguage, registerProxyRoutes, resolveAdapter, resolveRoot, serializeServerData, ssrRender, startServer, staticAdapter, vercelAdapter };