@finesoft/front 0.5.1 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/README.md +4 -4
  2. package/dist/Outlet.svelte +39 -0
  3. package/dist/Outlet.svelte.d.ts +7 -0
  4. package/dist/browser-DIU6Sxl3.mjs +1237 -0
  5. package/dist/browser-kFMjlLGT.d.mts +262 -0
  6. package/dist/browser.d.mts +7 -2
  7. package/dist/browser.mjs +9 -1
  8. package/dist/controller-types-CgmJ6-le.d.mts +16 -0
  9. package/dist/cookies-Bpf9VayB.d.mts +779 -0
  10. package/dist/fetch-policy-BHT8RtrL.mjs +82 -0
  11. package/dist/host-guard-DDWxLpFL.mjs +222 -0
  12. package/dist/http-B6CJqDyf.d.mts +46 -0
  13. package/dist/http-CaxrMD1A.d.mts +1 -0
  14. package/dist/http-D70PL72H.mjs +257 -0
  15. package/dist/http.d.mts +3 -0
  16. package/dist/http.mjs +2 -0
  17. package/dist/index-node.d.mts +15 -0
  18. package/dist/index-node.mjs +15 -0
  19. package/dist/index.d.mts +48 -697
  20. package/dist/index.mjs +44 -261
  21. package/dist/load-node.d.mts +5 -0
  22. package/dist/load-node.mjs +10 -0
  23. package/dist/load-portable.d.mts +5 -0
  24. package/dist/load-portable.mjs +8 -0
  25. package/dist/lru-map-BKoUAySU.mjs +50 -0
  26. package/dist/messages-CAt2QdGr.mjs +140 -0
  27. package/dist/native-contract-DuR25hYB.d.mts +14 -0
  28. package/dist/native-contract.d.mts +2 -0
  29. package/dist/native-contract.mjs +1 -0
  30. package/dist/node-D9hB4dsz.d.mts +35 -0
  31. package/dist/node.d.mts +2 -0
  32. package/dist/node.mjs +59 -0
  33. package/dist/path-CGFl2w7D.mjs +113 -0
  34. package/dist/path-CXT6xGPO.d.mts +261 -0
  35. package/dist/portable-CaxrMD1A.d.mts +1 -0
  36. package/dist/portable.d.mts +11 -0
  37. package/dist/portable.mjs +12 -0
  38. package/dist/proxy-1SphZ7x7.mjs +436 -0
  39. package/dist/proxy-2dSWO-Xw.d.mts +53 -0
  40. package/dist/public-types-BcJM-AYc.mjs +835 -0
  41. package/dist/react-DhwBRw01.d.mts +16 -0
  42. package/dist/react.d.mts +3 -0
  43. package/dist/react.mjs +29 -0
  44. package/dist/rolldown-runtime-B4iAMlE-.mjs +35 -0
  45. package/dist/secure-fetch-Xlht2jd7.d.mts +30 -0
  46. package/dist/server-controller-proxy-BkVuVWVD.d.mts +38 -0
  47. package/dist/session-DnB4ZC3x.d.mts +1279 -0
  48. package/dist/src-Ftl_0rhu.mjs +28 -0
  49. package/dist/src-qwx7Vw8g.mjs +3807 -0
  50. package/dist/ssr-BEUNDvbj.d.mts +210 -0
  51. package/dist/ssr-C8xnYXoY.mjs +357 -0
  52. package/dist/ssr.d.mts +3 -0
  53. package/dist/ssr.mjs +3 -0
  54. package/dist/svelte-Dr5to3SE.d.mts +16 -0
  55. package/dist/svelte.d.mts +3 -0
  56. package/dist/svelte.mjs +13 -0
  57. package/dist/typegen-C-WeJCtf.d.mts +12 -0
  58. package/dist/typegen-cli.d.mts +1 -0
  59. package/dist/typegen-cli.mjs +11 -0
  60. package/dist/typegen.d.mts +3 -0
  61. package/dist/typegen.mjs +2 -0
  62. package/dist/types-BuaZHRG7.mjs +402 -0
  63. package/dist/undici-CPfL25Hr.mjs +22262 -0
  64. package/dist/vite-Cj4SPA8D.d.mts +277 -0
  65. package/dist/vite.d.mts +4 -0
  66. package/dist/vite.mjs +2354 -0
  67. package/dist/vue-DGmzuKho.d.mts +32 -0
  68. package/dist/vue.d.mts +3 -0
  69. package/dist/vue.mjs +56 -0
  70. package/dist/web.d.mts +6 -0
  71. package/dist/web.mjs +8 -0
  72. package/dist/worker.d.mts +2 -0
  73. package/dist/worker.mjs +2 -0
  74. package/docs/01-getting-started.md +67 -199
  75. package/docs/02-routing-and-controllers.md +163 -241
  76. package/docs/03-middleware.md +10 -212
  77. package/docs/04-rendering-and-hydration.md +6 -333
  78. package/docs/05-i18n.md +7 -237
  79. package/docs/06-http-client.md +20 -263
  80. package/docs/07-di-container.md +23 -257
  81. package/docs/08-observability.md +6 -286
  82. package/docs/09-server-and-deployment.md +59 -219
  83. package/docs/10-features-platform-pwa.md +7 -231
  84. package/docs/11-navigation.md +143 -288
  85. package/docs/12-session-restoration.md +6 -214
  86. package/docs/README.md +7 -7
  87. package/docs/advanced/custom-action-handler.md +29 -229
  88. package/docs/advanced/custom-adapter.md +7 -259
  89. package/docs/advanced/custom-event-recorder.md +7 -312
  90. package/docs/advanced/inline-proxy-codegen.md +6 -185
  91. package/docs/advanced/multi-tenant-scopes.md +10 -323
  92. package/docs/engineering/ci-release-flow.md +35 -222
  93. package/docs/engineering/project-structure.md +34 -277
  94. package/docs/engineering/testing.md +8 -310
  95. package/docs/pitfalls/container-scope-leak.md +2 -214
  96. package/docs/pitfalls/i18n-bundle-size.md +6 -176
  97. package/docs/pitfalls/proxy-binary-payloads.md +8 -12
  98. package/docs/pitfalls/ssr-hydration-mismatch.md +4 -160
  99. package/docs/pitfalls/ssr-vs-csr-globals.md +9 -170
  100. package/docs/zh/01-getting-started.md +67 -199
  101. package/docs/zh/02-routing-and-controllers.md +166 -244
  102. package/docs/zh/03-middleware.md +10 -212
  103. package/docs/zh/04-rendering-and-hydration.md +6 -333
  104. package/docs/zh/05-i18n.md +7 -237
  105. package/docs/zh/06-http-client.md +20 -263
  106. package/docs/zh/07-di-container.md +23 -257
  107. package/docs/zh/08-observability.md +6 -283
  108. package/docs/zh/09-server-and-deployment.md +59 -219
  109. package/docs/zh/10-features-platform-pwa.md +7 -231
  110. package/docs/zh/11-navigation.md +130 -290
  111. package/docs/zh/12-session-restoration.md +6 -214
  112. package/docs/zh/README.md +4 -4
  113. package/docs/zh/advanced/custom-action-handler.md +29 -229
  114. package/docs/zh/advanced/custom-adapter.md +7 -259
  115. package/docs/zh/advanced/custom-event-recorder.md +7 -312
  116. package/docs/zh/advanced/inline-proxy-codegen.md +6 -185
  117. package/docs/zh/advanced/multi-tenant-scopes.md +10 -323
  118. package/docs/zh/engineering/ci-release-flow.md +35 -222
  119. package/docs/zh/engineering/project-structure.md +34 -277
  120. package/docs/zh/engineering/testing.md +8 -310
  121. package/docs/zh/pitfalls/container-scope-leak.md +2 -214
  122. package/docs/zh/pitfalls/i18n-bundle-size.md +6 -176
  123. package/docs/zh/pitfalls/proxy-binary-payloads.md +8 -12
  124. package/docs/zh/pitfalls/ssr-hydration-mismatch.md +4 -160
  125. package/docs/zh/pitfalls/ssr-vs-csr-globals.md +9 -170
  126. package/package.json +118 -20
  127. package/dist/browser-BHhVWXik.mjs +0 -2
  128. package/dist/browser-BV2BBXm7.d.mts +0 -2811
@@ -0,0 +1,277 @@
1
+ import { n as ProxyRouteConfig } from "./proxy-2dSWO-Xw.mjs";
2
+ import { t as ControllerTypeOptions } from "./controller-types-CgmJ6-le.mjs";
3
+ import { Hono } from "hono";
4
+ //#region ../../node_modules/.pnpm/magic-string@0.30.21/node_modules/magic-string/dist/magic-string.es.d.mts
5
+ type SourceMapSegment = [number] | [number, number, number, number] | [number, number, number, number, number];
6
+ interface DecodedSourceMap {
7
+ file: string;
8
+ sources: string[];
9
+ sourcesContent?: string[];
10
+ names: string[];
11
+ mappings: SourceMapSegment[][];
12
+ x_google_ignoreList?: number[];
13
+ }
14
+ declare class SourceMap {
15
+ constructor(properties: DecodedSourceMap);
16
+ version: number;
17
+ file: string;
18
+ sources: string[];
19
+ sourcesContent?: string[];
20
+ names: string[];
21
+ mappings: string;
22
+ x_google_ignoreList?: number[];
23
+ debugId?: string;
24
+ /**
25
+ * Returns the equivalent of `JSON.stringify(map)`
26
+ */
27
+ toString(): string;
28
+ /**
29
+ * Returns a DataURI containing the sourcemap. Useful for doing this sort of thing:
30
+ * `generateMap(options?: SourceMapOptions): SourceMap;`
31
+ */
32
+ toUrl(): string;
33
+ }
34
+ //#endregion
35
+ //#region ../server/src/adapters/types.d.ts
36
+ /** 适配器上下文 — 由 vite-plugin 的 closeBundle 构造后传入 adapter.build() */
37
+ interface AdapterContext {
38
+ /** Automatically shared client/SSR build identity. */
39
+ buildId?: string;
40
+ /** 项目根路径 */
41
+ root: string;
42
+ /** SSR 入口文件相对路径(如 "src/ssr.ts") */
43
+ ssrEntry: string;
44
+ /** setup 文件相对路径(如 "src/proxies.ts"),仅当 options.setup 为 string 时有值 */
45
+ setupPath?: string;
46
+ /** dist/client/index.html 的内容 */
47
+ templateHtml: string;
48
+ /** Vite 的 resolve 配置 */
49
+ resolvedResolve: unknown;
50
+ /** Vite 的 css 配置 */
51
+ resolvedCss: unknown;
52
+ /**
53
+ * 按路由覆盖的渲染模式。
54
+ * key: 精确路径或 glob 模式,value: "ssr" | "csr" | "prerender"
55
+ */
56
+ renderModes?: Record<string, string>;
57
+ /** 声明式代理路由配置 */
58
+ proxies?: ProxyRouteConfig[];
59
+ /** 支持的 locale 列表(用于预渲染 locale 矩阵) */
60
+ locales?: string[];
61
+ /** 默认 locale(CSR shell 使用) */
62
+ defaultLocale?: string;
63
+ vite: any;
64
+ fs: typeof import("node:fs");
65
+ path: {
66
+ resolve: (...args: string[]) => string;
67
+ join: (...args: string[]) => string;
68
+ };
69
+ /** 生成 serverless/edge function 入口源码 */
70
+ generateSSREntry(opts: GenerateSSREntryOptions): string;
71
+ /** 用 Vite SSR 模式构建 bundle */
72
+ buildBundle(opts: BuildBundleOptions): Promise<void>;
73
+ /** 复制 dist/client 静态资源到目标目录 */
74
+ copyStaticAssets(destDir: string, opts?: CopyStaticAssetsOptions): void;
75
+ }
76
+ interface GenerateSSREntryOptions {
77
+ /** Host capability for protected outbound requests. */
78
+ dnsPolicy?: "node" | "hostname";
79
+ /** 平台特定的导入语句(如 `import { handle } from "hono/vercel";`) */
80
+ platformImport: string;
81
+ /** 平台特定的导出语句(如 `export default handle(app);`) */
82
+ platformExport: string;
83
+ /**
84
+ * 平台特定的 ISR 缓存实现代码(可选)。
85
+ * 需提供 `async function platformCacheGet(url)` 返回 string|null,
86
+ * 和 `async function platformCacheSet(url, html)` 的函数定义。
87
+ * 不提供时使用内置的内存 Map 缓存。
88
+ */
89
+ platformCache?: string;
90
+ /** CDN headers applied by the shared handler only to explicitly public cache-eligible HTML. */
91
+ publicCacheHeaders?: Record<string, string>;
92
+ /**
93
+ * 平台特定的中间件代码(可选)。
94
+ * 插入在 catch-all GET 路由之前,可用于添加静态文件服务等。
95
+ * 代码中可使用变量 `app`(Hono 实例)。
96
+ */
97
+ platformMiddleware?: string;
98
+ }
99
+ interface BuildBundleOptions {
100
+ /** 临时入口文件路径 */
101
+ entry: string;
102
+ /** 输出目录 */
103
+ outDir: string;
104
+ /** 构建 target(默认 "node18") */
105
+ target?: string;
106
+ /** 输出文件名(默认 "index.mjs") */
107
+ fileName?: string;
108
+ /** 排除的模块(默认 ["vite", "esbuild", "rollup", "fsevents", "lightningcss"]) */
109
+ external?: string[];
110
+ /** 是否打包所有依赖(默认 true) */
111
+ noExternal?: boolean;
112
+ /** 构建前是否清空 outDir(默认 true)。与 SSR 构建共享目录时应设为 false */
113
+ emptyOutDir?: boolean;
114
+ }
115
+ interface CopyStaticAssetsOptions {
116
+ /** 是否排除 index.html(默认 true) */
117
+ excludeHtml?: boolean;
118
+ }
119
+ /** 适配器接口 */
120
+ interface Adapter {
121
+ /** 适配器名称(用于日志) */
122
+ name: string;
123
+ /** 生成目标平台部署产物 */
124
+ build(ctx: AdapterContext): Promise<void>;
125
+ }
126
+ //#endregion
127
+ //#region ../server/src/vite-plugin.d.ts
128
+ interface FinesoftFrontViteOptions {
129
+ /** Maintain route-derived class parameter types. Enabled by default for TypeScript apps. */
130
+ controllerTypes?: ControllerTypeOptions | false;
131
+ /** Optional reproducible build identity; otherwise generated for each paired build. */
132
+ buildId?: string;
133
+ /** SSR 配置 */
134
+ ssr?: {
135
+ /** SSR 入口文件路径(默认 "src/ssr.ts") */
136
+ entry?: string;
137
+ };
138
+ /**
139
+ * 声明式代理路由配置。
140
+ * 框架统一执行路径校验(SSRF 防护)、Host 限制、错误处理、响应头控制。
141
+ * 代理路由在 setup 之前注册,优先级高于自定义路由。
142
+ */
143
+ proxies?: ProxyRouteConfig[];
144
+ /**
145
+ * 注册自定义路由(非代理类)。
146
+ * - 传入 Function:仅 dev/preview 时可用。
147
+ * - 传入 string(文件路径):dev/preview/adapter 均可用,
148
+ * 文件需 export default 一个 (app: Hono) => void 函数。
149
+ * 注意:代理路由请使用 proxies 选项,不要在 setup 中手写代理。
150
+ */
151
+ setup?: ((app: Hono) => void | Promise<void>) | string;
152
+ /**
153
+ * 部署适配器。
154
+ * - 字符串快捷方式:"vercel" | "cloudflare" | "netlify" | "node" | "static" | "auto"
155
+ * - 自定义 Adapter 对象:{ name, build(ctx) }
156
+ * - 不设置则不生成部署产物
157
+ */
158
+ adapter?: string | Adapter;
159
+ /**
160
+ * 按路由覆盖渲染模式(优先级高于 RouteDefinition.renderMode)。
161
+ * key: 精确路径或 glob 模式,如 "/search" 或 "/blog/*"
162
+ * value: "ssr" | "csr" | "prerender"
163
+ *
164
+ * @example
165
+ * ```ts
166
+ * renderModes: {
167
+ * "/search": "csr",
168
+ * "/blog/*": "prerender",
169
+ * }
170
+ * ```
171
+ */
172
+ renderModes?: Record<string, "ssr" | "csr" | "prerender">;
173
+ /**
174
+ * 默认 locale(如 "zh-Hans"、"en-US")。
175
+ * 用于 CSR 壳注入 `<html lang="" dir="">`,以及预渲染时的默认语言。
176
+ */
177
+ defaultLocale?: string;
178
+ /**
179
+ * 预渲染支持的语言列表。
180
+ * 提供后,每个 prerender 路由会与每个 locale 组合生成 `/:locale/path` 版本。
181
+ * `defaultLocale` 的路由同时输出无前缀版本。
182
+ */
183
+ locales?: string[];
184
+ /**
185
+ * i18n JSON 字典目录。
186
+ * 文件名必须与 locale 一致,例如 `en-US.json`、`zh-Hans.json`。
187
+ * 配置后,框架会自动为 SSR / CSR 生成共享的消息加载器。
188
+ */
189
+ i18n?: {
190
+ messagesDir: string;
191
+ };
192
+ }
193
+ declare function finesoftFrontViteConfig(options?: FinesoftFrontViteOptions): {
194
+ name: string;
195
+ enforce: "pre";
196
+ config(userConfig: Record<string, any>): Record<string, any>;
197
+ configResolved(config: Record<string, any>): void;
198
+ resolveId(this: any, id: string, importer?: string, buildOptions?: {
199
+ ssr?: boolean;
200
+ scan?: boolean;
201
+ }): string | Promise<any> | null;
202
+ load(this: any, id: string, buildOptions?: {
203
+ ssr?: boolean;
204
+ }): Promise<string | {
205
+ code: string;
206
+ map: {
207
+ version: number;
208
+ sources: never[];
209
+ names: never[];
210
+ mappings: string;
211
+ sourcesContent: never[];
212
+ };
213
+ } | null>;
214
+ buildStart(this: any): Promise<void>;
215
+ transform: (code: string, id: string) => {
216
+ code: string;
217
+ map: SourceMap;
218
+ } | null;
219
+ watchChange(file: string): void;
220
+ /**
221
+ * Dev 模式 CSS 内联 — 消除 SSR 首屏布局抖动
222
+ *
223
+ * Vite dev 模式下,global.scss 等非组件 CSS 通过 JS 模块系统异步加载,
224
+ * 导致 SSR HTML 初次渲染缺少布局关键样式(box-sizing、flex 布局、padding-top 等)。
225
+ *
226
+ * 此 hook 在 HTML 模板变换阶段(SSR 渲染之前):
227
+ * 1. 找到浏览器入口脚本(排除 /@vite/client 等内部脚本)
228
+ * 2. 编译入口脚本,填充 Vite 模块图
229
+ * 3. 遍历模块图收集所有 CSS 依赖(排除 .svelte 组件 CSS,由 SSR 渲染自行处理)
230
+ * 4. 通过 ssrLoadModule 获取编译后 CSS(SCSS→CSS)
231
+ * 5. 注入 <style data-vite-dev-id> 标签到 <head>
232
+ *
233
+ * data-vite-dev-id 确保 Vite HMR 客户端复用已有标签,避免重复注入。
234
+ */
235
+ transformIndexHtml: {
236
+ order: "pre";
237
+ handler(html: string, ctx: any): Promise<{
238
+ tag: string;
239
+ attrs: Record<string, string>;
240
+ children: string;
241
+ injectTo: "head";
242
+ }[] | undefined>;
243
+ };
244
+ configureServer(server: any): () => Promise<void>;
245
+ configurePreviewServer(server: any): () => Promise<void>;
246
+ closeBundle(): Promise<void>;
247
+ };
248
+ //#endregion
249
+ //#region ../server/src/adapters/auto.d.ts
250
+ declare function autoAdapter(): Adapter;
251
+ //#endregion
252
+ //#region ../server/src/adapters/cloudflare.d.ts
253
+ declare function cloudflareAdapter(): Adapter;
254
+ //#endregion
255
+ //#region ../server/src/adapters/netlify.d.ts
256
+ declare function netlifyAdapter(): Adapter;
257
+ //#endregion
258
+ //#region ../server/src/adapters/node.d.ts
259
+ declare function nodeAdapter(): Adapter;
260
+ //#endregion
261
+ //#region ../server/src/adapters/static.d.ts
262
+ interface StaticAdapterOptions {
263
+ /** Optional module exporting routes or a Web definition; built render.routes is the default. */
264
+ routesExport?: string;
265
+ /** Concrete pathnames for dynamic routes, e.g. /products/42. */
266
+ dynamicRoutes?: string[];
267
+ }
268
+ declare function staticAdapter(options?: StaticAdapterOptions): Adapter;
269
+ //#endregion
270
+ //#region ../server/src/adapters/vercel.d.ts
271
+ declare function vercelAdapter(): Adapter;
272
+ //#endregion
273
+ //#region ../server/src/adapters/resolve.d.ts
274
+ declare function resolveAdapter(value: string | Adapter): Adapter;
275
+ //#endregion
276
+ export { netlifyAdapter as a, FinesoftFrontViteOptions as c, AdapterContext as d, nodeAdapter as i, finesoftFrontViteConfig as l, vercelAdapter as n, cloudflareAdapter as o, staticAdapter as r, autoAdapter as s, resolveAdapter as t, Adapter as u };
277
+ //# sourceMappingURL=vite-Cj4SPA8D.d.mts.map
@@ -0,0 +1,4 @@
1
+ import { i as generateProxyCode, n as ProxyRouteConfig, t as ProxyAuthConfig } from "./proxy-2dSWO-Xw.mjs";
2
+ import { a as netlifyAdapter, c as FinesoftFrontViteOptions, d as AdapterContext, i as nodeAdapter, l as finesoftFrontViteConfig, n as vercelAdapter, o as cloudflareAdapter, r as staticAdapter, s as autoAdapter, t as resolveAdapter, u as Adapter } from "./vite-Cj4SPA8D.mjs";
3
+ import { n as ControllerTypeResult, r as generateControllerTypes, t as ControllerTypeOptions } from "./controller-types-CgmJ6-le.mjs";
4
+ export { type Adapter, type AdapterContext, type ControllerTypeOptions, type ControllerTypeResult, type FinesoftFrontViteOptions, type ProxyAuthConfig, type ProxyRouteConfig, autoAdapter, cloudflareAdapter, finesoftFrontViteConfig, generateControllerTypes, generateProxyCode, netlifyAdapter, nodeAdapter, resolveAdapter, staticAdapter, vercelAdapter };