@ubean/server 0.1.13 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/analytics-entry.d.ts +2 -0
- package/dist/analytics-entry.js +2 -0
- package/dist/cache-C84ix1Vq.js +173 -0
- package/dist/cache-b-MZlyv0.d.ts +48 -0
- package/dist/cache-directive-C1Nekkza.js +304 -0
- package/dist/cache-directive-CAxJAQyE.d.ts +175 -0
- package/dist/cache-directive.d.ts +2 -0
- package/dist/cache-directive.js +2 -0
- package/dist/cache-entry.d.ts +3 -0
- package/dist/cache-entry.js +3 -0
- package/dist/cron-entry.d.ts +2 -0
- package/dist/cron-entry.js +2 -0
- package/dist/cron-scheduler-BF33PPn4.d.ts +77 -0
- package/dist/cron-scheduler-BVuXv7nn.js +258 -0
- package/dist/database-CfpFznl-.d.ts +67 -0
- package/dist/database-DNrY44SQ.js +352 -0
- package/dist/database.d.ts +2 -0
- package/dist/database.js +2 -0
- package/dist/email-BjfRiR9b.js +354 -0
- package/dist/email-BvpEuNn_.d.ts +226 -0
- package/dist/email.d.ts +2 -0
- package/dist/email.js +2 -0
- package/dist/feature-flags-CdLwsMD2.js +657 -0
- package/dist/feature-flags-DWkS6p0D.d.ts +386 -0
- package/dist/fetch-memo-rbkxxnW4.js +338 -0
- package/dist/index.d.ts +183 -488
- package/dist/index.js +352 -2023
- package/dist/middleware.d.ts +2 -0
- package/dist/middleware.js +3 -0
- package/dist/observability-Cio6Qq1H.js +339 -0
- package/dist/observability-DUNUEjj3.d.ts +70 -0
- package/dist/observability.d.ts +2 -0
- package/dist/observability.js +2 -0
- package/dist/queue-Bwzi3mhK.js +210 -0
- package/dist/queue-GOfTAWlz.d.ts +55 -0
- package/dist/queue.d.ts +2 -0
- package/dist/queue.js +2 -0
- package/dist/realtime.d.ts +2 -0
- package/dist/realtime.js +2 -0
- package/dist/security.d.ts +2 -0
- package/dist/security.js +2 -0
- package/dist/sessions-BLqFFQTL.d.ts +217 -0
- package/dist/sessions-BsBsyFAG.js +450 -0
- package/dist/single-flight-BJyhDLdU.d.ts +422 -0
- package/dist/single-flight-mJ4ZKbx1.js +715 -0
- package/dist/sse-Ct72zhic.d.ts +95 -0
- package/dist/sse-a6Ky9Vcl.js +310 -0
- package/dist/static-DPHaovQe.js +90 -0
- package/dist/static-K2dRvjpS.d.ts +11 -0
- package/dist/static.d.ts +2 -0
- package/dist/static.js +2 -0
- package/dist/storage-BZLMaqHr.js +162 -0
- package/dist/storage-QdlPtPtR.d.ts +48 -0
- package/dist/storage.d.ts +2 -0
- package/dist/storage.js +2 -0
- package/package.json +68 -6
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
//#region src/queue.d.ts
|
|
2
|
+
interface QueueMessage<T = unknown> {
|
|
3
|
+
id: string;
|
|
4
|
+
body: T;
|
|
5
|
+
timestamp: number;
|
|
6
|
+
attempts: number;
|
|
7
|
+
headers?: Record<string, string>;
|
|
8
|
+
}
|
|
9
|
+
interface QueueHandler<T = unknown> {
|
|
10
|
+
(message: QueueMessage<T>): void | Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
interface QueueOptions<T = unknown> {
|
|
13
|
+
name: string;
|
|
14
|
+
handler?: QueueHandler<T>;
|
|
15
|
+
concurrency?: number;
|
|
16
|
+
retries?: number;
|
|
17
|
+
retryDelay?: number;
|
|
18
|
+
deadLetterQueue?: string;
|
|
19
|
+
}
|
|
20
|
+
interface QueueDefinition<T = unknown> extends QueueOptions<T> {
|
|
21
|
+
handler: QueueHandler<T>;
|
|
22
|
+
}
|
|
23
|
+
interface QueueDriver {
|
|
24
|
+
send<T>(queueName: string, message: T, options?: SendOptions): Promise<string>;
|
|
25
|
+
sendBatch<T>(queueName: string, messages: T[], options?: SendOptions): Promise<string[]>;
|
|
26
|
+
registerHandler?(queueName: string, handler: QueueHandler, options?: QueueOptions): void;
|
|
27
|
+
start?(): Promise<void>;
|
|
28
|
+
stop?(): Promise<void>;
|
|
29
|
+
getQueueDepth?(queueName: string): Promise<number>;
|
|
30
|
+
deleteMessage?(queueName: string, messageId: string): Promise<boolean>;
|
|
31
|
+
}
|
|
32
|
+
interface SendOptions {
|
|
33
|
+
delay?: number;
|
|
34
|
+
headers?: Record<string, string>;
|
|
35
|
+
}
|
|
36
|
+
interface QueueStats {
|
|
37
|
+
pending: number;
|
|
38
|
+
processing: number;
|
|
39
|
+
completed: number;
|
|
40
|
+
failed: number;
|
|
41
|
+
}
|
|
42
|
+
declare function defineQueue<T = unknown>(options: QueueOptions<T>, handler?: QueueHandler<T>): QueueDefinition<T>;
|
|
43
|
+
declare function createMemoryQueueDriver(): QueueDriver;
|
|
44
|
+
declare function useQueueDriver(): QueueDriver;
|
|
45
|
+
declare function setQueueDriver(driver: QueueDriver): void;
|
|
46
|
+
declare function sendMessage<T = unknown>(queueName: string, body: T, options?: SendOptions): Promise<string>;
|
|
47
|
+
declare function sendMessages<T = unknown>(queueName: string, bodies: T[], options?: SendOptions): Promise<string[]>;
|
|
48
|
+
declare function getQueueDefinitions(): QueueDefinition[];
|
|
49
|
+
declare function clearQueueDefinitions(): void;
|
|
50
|
+
declare function startQueueWorkers(): Promise<void>;
|
|
51
|
+
declare function stopQueueWorkers(): Promise<void>;
|
|
52
|
+
declare function getQueueStats(queueName: string): QueueStats | undefined;
|
|
53
|
+
declare function getAllQueueStats(): Record<string, QueueStats>;
|
|
54
|
+
//#endregion
|
|
55
|
+
export { startQueueWorkers as _, QueueOptions as a, clearQueueDefinitions as c, getAllQueueStats as d, getQueueDefinitions as f, setQueueDriver as g, sendMessages as h, QueueMessage as i, createMemoryQueueDriver as l, sendMessage as m, QueueDriver as n, QueueStats as o, getQueueStats as p, QueueHandler as r, SendOptions as s, QueueDefinition as t, defineQueue as u, stopQueueWorkers as v, useQueueDriver as y };
|
package/dist/queue.d.ts
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { _ as startQueueWorkers, a as QueueOptions, c as clearQueueDefinitions, d as getAllQueueStats, f as getQueueDefinitions, g as setQueueDriver, h as sendMessages, i as QueueMessage, l as createMemoryQueueDriver, m as sendMessage, n as QueueDriver, o as QueueStats, p as getQueueStats, r as QueueHandler, s as SendOptions, t as QueueDefinition, u as defineQueue, v as stopQueueWorkers, y as useQueueDriver } from "./queue-GOfTAWlz.js";
|
|
2
|
+
export { QueueDefinition, QueueDriver, QueueHandler, QueueMessage, QueueOptions, QueueStats, SendOptions, clearQueueDefinitions, createMemoryQueueDriver, defineQueue, getAllQueueStats, getQueueDefinitions, getQueueStats, sendMessage, sendMessages, setQueueDriver, startQueueWorkers, stopQueueWorkers, useQueueDriver };
|
package/dist/queue.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as getQueueDefinitions, c as sendMessages, d as stopQueueWorkers, f as useQueueDriver, i as getAllQueueStats, l as setQueueDriver, n as createMemoryQueueDriver, o as getQueueStats, r as defineQueue, s as sendMessage, t as clearQueueDefinitions, u as startQueueWorkers } from "./queue-Bwzi3mhK.js";
|
|
2
|
+
export { clearQueueDefinitions, createMemoryQueueDriver, defineQueue, getAllQueueStats, getQueueDefinitions, getQueueStats, sendMessage, sendMessages, setQueueDriver, startQueueWorkers, stopQueueWorkers, useQueueDriver };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { A as handleUpgrade, C as defineWebSocket, D as handleClose, E as getWebSocketDefinitions, O as handleError, S as defineRoom, T as getRooms, _ as WebSocketRoom, a as broadcastSSE, b as createRoom, c as createSSEStream, d as getSSEConnections, f as sseHeaders, g as WebSocketHooks, h as WebSocketDefinition, i as SSEOptions, j as registerWebSocket, k as handleMessage, l as defineSSE, m as UpgradeResult, n as SSEHandler, o as clearSSEState, p as Peer, r as SSEMessage, s as closeAllSSE, t as SSEConnection, u as formatSSEMessage, v as broadcast, w as getRoom, x as createWebSocketMiddleware, y as clearWebSocketState } from "./sse-Ct72zhic.js";
|
|
2
|
+
export { Peer, SSEConnection, SSEHandler, SSEMessage, SSEOptions, UpgradeResult, WebSocketDefinition, WebSocketHooks, WebSocketRoom, broadcast, broadcastSSE, clearSSEState, clearWebSocketState, closeAllSSE, createRoom, createSSEStream, createWebSocketMiddleware, defineRoom, defineSSE, defineWebSocket, formatSSEMessage, getRoom, getRooms, getSSEConnections, getWebSocketDefinitions, handleClose, handleError, handleMessage, handleUpgrade, registerWebSocket, sseHeaders };
|
package/dist/realtime.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { S as registerWebSocket, _ as getWebSocketDefinitions, a as defineSSE, b as handleMessage, c as sseHeaders, d as createRoom, f as createWebSocketMiddleware, g as getRooms, h as getRoom, i as createSSEStream, l as broadcast, m as defineWebSocket, n as clearSSEState, o as formatSSEMessage, p as defineRoom, r as closeAllSSE, s as getSSEConnections, t as broadcastSSE, u as clearWebSocketState, v as handleClose, x as handleUpgrade, y as handleError } from "./sse-a6Ky9Vcl.js";
|
|
2
|
+
export { broadcast, broadcastSSE, clearSSEState, clearWebSocketState, closeAllSSE, createRoom, createSSEStream, createWebSocketMiddleware, defineRoom, defineSSE, defineWebSocket, formatSSEMessage, getRoom, getRooms, getSSEConnections, getWebSocketDefinitions, handleClose, handleError, handleMessage, handleUpgrade, registerWebSocket, sseHeaders };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { _ as generateCsrfToken, a as createSessionMiddleware, c as useSession, d as createSecurityHeadersMiddleware, f as defineSecurityHeaders, g as defineCsrf, h as createCsrfMiddleware, i as SessionStore, l as ContentSecurityPolicyDirectives, m as CsrfOptions, n as SessionData, o as createStorageSessionStore, p as serializeCsp, r as SessionOptions, s as defineSessionStore, t as Session, u as SecurityHeadersOptions } from "./sessions-BLqFFQTL.js";
|
|
2
|
+
export { ContentSecurityPolicyDirectives, CsrfOptions, SecurityHeadersOptions, Session, SessionData, SessionOptions, SessionStore, createCsrfMiddleware, createSecurityHeadersMiddleware, createSessionMiddleware, createStorageSessionStore, defineCsrf, defineSecurityHeaders, defineSessionStore, generateCsrfToken, serializeCsp, useSession };
|
package/dist/security.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as createSecurityHeadersMiddleware, c as createCsrfMiddleware, i as useSession, l as defineCsrf, n as createStorageSessionStore, o as defineSecurityHeaders, r as defineSessionStore, s as serializeCsp, t as createSessionMiddleware, u as generateCsrfToken } from "./sessions-BsBsyFAG.js";
|
|
2
|
+
export { createCsrfMiddleware, createSecurityHeadersMiddleware, createSessionMiddleware, createStorageSessionStore, defineCsrf, defineSecurityHeaders, defineSessionStore, generateCsrfToken, serializeCsp, useSession };
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import { i as UbeanStorage } from "./storage-QdlPtPtR.js";
|
|
2
|
+
import { Context, MiddlewareHandler } from "hono";
|
|
3
|
+
import { UbeanEnv } from "@ubean/shared";
|
|
4
|
+
//#region src/csrf.d.ts
|
|
5
|
+
interface CsrfOptions {
|
|
6
|
+
/** 校验模式:'token'(double-submit cookie,默认) | 'origin'(Origin/Referer 校验) | 'both' */
|
|
7
|
+
mode?: 'token' | 'origin' | 'both';
|
|
8
|
+
/** cookie 名称,默认 'ubean_csrf' */
|
|
9
|
+
cookieName?: string;
|
|
10
|
+
/** token header 名称,默认 'x-csrf-token' */
|
|
11
|
+
headerName?: string;
|
|
12
|
+
/** token 在 body 中的字段名,默认 'csrfToken' */
|
|
13
|
+
fieldName?: string;
|
|
14
|
+
/** token 长度(字节数),默认 32 */
|
|
15
|
+
tokenLength?: number;
|
|
16
|
+
/** cookie 选项 */
|
|
17
|
+
cookie?: {
|
|
18
|
+
path?: string;
|
|
19
|
+
secure?: boolean;
|
|
20
|
+
sameSite?: 'strict' | 'lax' | 'none';
|
|
21
|
+
domain?: string;
|
|
22
|
+
};
|
|
23
|
+
/** 自定义 token 生成函数 */
|
|
24
|
+
generateToken?: () => string;
|
|
25
|
+
/** 跳过校验的路径(glob 风格前缀匹配) */
|
|
26
|
+
exclude?: string[];
|
|
27
|
+
/** 自定义错误处理 */
|
|
28
|
+
handler?: (c: Context<UbeanEnv>) => Response | Promise<Response>;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* 创建 CSRF 保护中间件
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* // 使用默认配置(double-submit cookie 模式)
|
|
36
|
+
* app.use('*', createCsrfMiddleware());
|
|
37
|
+
*
|
|
38
|
+
* // 仅校验 Origin
|
|
39
|
+
* app.use('*', createCsrfMiddleware({ mode: 'origin' }));
|
|
40
|
+
*
|
|
41
|
+
* // 排除 API 路径
|
|
42
|
+
* app.use('*', createCsrfMiddleware({ exclude: ['/api/webhook/**'] }));
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
declare function createCsrfMiddleware(options?: CsrfOptions): MiddlewareHandler<UbeanEnv>;
|
|
46
|
+
/**
|
|
47
|
+
* 生成 CSRF token(供前端使用)
|
|
48
|
+
*/
|
|
49
|
+
declare function generateCsrfToken(length?: number): string;
|
|
50
|
+
declare function defineCsrf(options: CsrfOptions): MiddlewareHandler<UbeanEnv>;
|
|
51
|
+
//#endregion
|
|
52
|
+
//#region src/security-headers.d.ts
|
|
53
|
+
interface ContentSecurityPolicyDirectives {
|
|
54
|
+
'default-src'?: string[];
|
|
55
|
+
'script-src'?: string[];
|
|
56
|
+
'style-src'?: string[];
|
|
57
|
+
'img-src'?: string[];
|
|
58
|
+
'font-src'?: string[];
|
|
59
|
+
'connect-src'?: string[];
|
|
60
|
+
'media-src'?: string[];
|
|
61
|
+
'object-src'?: string[];
|
|
62
|
+
'frame-src'?: string[];
|
|
63
|
+
'child-src'?: string[];
|
|
64
|
+
'worker-src'?: string[];
|
|
65
|
+
'manifest-src'?: string[];
|
|
66
|
+
'base-uri'?: string[];
|
|
67
|
+
'form-action'?: string[];
|
|
68
|
+
'frame-ancestors'?: string[];
|
|
69
|
+
'navigate-to'?: string[];
|
|
70
|
+
'plugin-types'?: string[];
|
|
71
|
+
'require-trusted-types-for'?: string[];
|
|
72
|
+
'trusted-types'?: string[];
|
|
73
|
+
'upgrade-insecure-requests'?: boolean;
|
|
74
|
+
'block-all-mixed-content'?: boolean;
|
|
75
|
+
'report-uri'?: string[];
|
|
76
|
+
'report-to'?: string[];
|
|
77
|
+
[key: string]: string[] | boolean | undefined;
|
|
78
|
+
}
|
|
79
|
+
interface SecurityHeadersOptions {
|
|
80
|
+
/** Content-Security-Policy 指令,设为 false 禁用 */
|
|
81
|
+
contentSecurityPolicy?: ContentSecurityPolicyDirectives | false;
|
|
82
|
+
/** 仅报告不拦截(report-only 模式) */
|
|
83
|
+
contentSecurityPolicyReportOnly?: boolean;
|
|
84
|
+
/** Strict-Transport-Security 配置,设为 false 禁用 */
|
|
85
|
+
strictTransportSecurity?: {
|
|
86
|
+
maxAge?: number;
|
|
87
|
+
includeSubDomains?: boolean;
|
|
88
|
+
preload?: boolean;
|
|
89
|
+
} | false;
|
|
90
|
+
/** X-Frame-Options: 'DENY' | 'SAMEORIGIN' | false 禁用 */
|
|
91
|
+
xFrameOptions?: 'DENY' | 'SAMEORIGIN' | false;
|
|
92
|
+
/** X-Content-Type-Options,默认 'nosniff',设为 false 禁用 */
|
|
93
|
+
xContentTypeOptions?: 'nosniff' | false;
|
|
94
|
+
/** Referrer-Policy,默认 'strict-origin-when-cross-origin',设为 false 禁用 */
|
|
95
|
+
referrerPolicy?: string | false;
|
|
96
|
+
/** Permissions-Policy 配置 */
|
|
97
|
+
permissionsPolicy?: Record<string, string[]> | false;
|
|
98
|
+
/** Cross-Origin-Opener-Policy,默认 'same-origin',设为 false 禁用 */
|
|
99
|
+
crossOriginOpenerPolicy?: 'same-origin' | 'same-origin-allow-popups' | 'unsafe-none' | false;
|
|
100
|
+
/** Cross-Origin-Embedder-Policy,设为 false 禁用 */
|
|
101
|
+
crossOriginEmbedderPolicy?: 'require-corp' | 'credentialless' | 'unsafe-none' | false;
|
|
102
|
+
/** Cross-Origin-Resource-Policy,默认 'same-origin',设为 false 禁用 */
|
|
103
|
+
crossOriginResourcePolicy?: 'same-site' | 'same-origin' | 'cross-origin' | false;
|
|
104
|
+
/** 跳过的路径前缀 */
|
|
105
|
+
exclude?: string[];
|
|
106
|
+
/** 自定义额外 header */
|
|
107
|
+
extraHeaders?: Record<string, string>;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* 将 CSP 指令对象序列化为 header 值
|
|
111
|
+
*/
|
|
112
|
+
declare function serializeCsp(directives: ContentSecurityPolicyDirectives): string;
|
|
113
|
+
/**
|
|
114
|
+
* 创建安全头中间件
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* ```typescript
|
|
118
|
+
* // 使用默认安全头
|
|
119
|
+
* app.use('*', createSecurityHeadersMiddleware());
|
|
120
|
+
*
|
|
121
|
+
* // 自定义 CSP
|
|
122
|
+
* app.use('*', createSecurityHeadersMiddleware({
|
|
123
|
+
* contentSecurityPolicy: {
|
|
124
|
+
* 'default-src': ["'self'"],
|
|
125
|
+
* 'script-src': ["'self'", 'https://cdn.example.com'],
|
|
126
|
+
* 'style-src': ["'self'", "'unsafe-inline'"],
|
|
127
|
+
* 'img-src': ["'self'", 'data:', 'https:']
|
|
128
|
+
* }
|
|
129
|
+
* }));
|
|
130
|
+
*
|
|
131
|
+
* // 禁用某些头
|
|
132
|
+
* app.use('*', createSecurityHeadersMiddleware({
|
|
133
|
+
* xFrameOptions: false,
|
|
134
|
+
* contentSecurityPolicy: false
|
|
135
|
+
* }));
|
|
136
|
+
* ```
|
|
137
|
+
*/
|
|
138
|
+
declare function createSecurityHeadersMiddleware(options?: SecurityHeadersOptions): MiddlewareHandler<UbeanEnv>;
|
|
139
|
+
declare function defineSecurityHeaders(options: SecurityHeadersOptions): MiddlewareHandler<UbeanEnv>;
|
|
140
|
+
//#endregion
|
|
141
|
+
//#region src/sessions.d.ts
|
|
142
|
+
type SessionData = Record<string, unknown>;
|
|
143
|
+
interface Session<T extends SessionData = SessionData> {
|
|
144
|
+
/** 读取 session 值 */
|
|
145
|
+
get<K extends keyof T>(key: K): T[K] | undefined;
|
|
146
|
+
/** 设置 session 值 */
|
|
147
|
+
set<K extends keyof T>(key: K, value: T[K]): void;
|
|
148
|
+
/** 删除 session 值 */
|
|
149
|
+
delete(key: string): void;
|
|
150
|
+
/** 检查 key 是否存在 */
|
|
151
|
+
has(key: string): boolean;
|
|
152
|
+
/** 获取所有 session 数据 */
|
|
153
|
+
all(): SessionData;
|
|
154
|
+
/** 保存 session(写入存储/cookie) */
|
|
155
|
+
save(): Promise<void>;
|
|
156
|
+
/** 销毁 session */
|
|
157
|
+
destroy(): Promise<void>;
|
|
158
|
+
/** session ID */
|
|
159
|
+
readonly id: string;
|
|
160
|
+
/** 是否已修改 */
|
|
161
|
+
readonly isDirty: boolean;
|
|
162
|
+
/** 是否已销毁 */
|
|
163
|
+
readonly isDestroyed: boolean;
|
|
164
|
+
}
|
|
165
|
+
interface SessionStore {
|
|
166
|
+
get(id: string): Promise<SessionData | null>;
|
|
167
|
+
set(id: string, data: SessionData, ttl?: number): Promise<void>;
|
|
168
|
+
delete(id: string): Promise<void>;
|
|
169
|
+
}
|
|
170
|
+
interface SessionOptions {
|
|
171
|
+
/** session cookie 名称,默认 'ubean_session' */
|
|
172
|
+
cookieName?: string;
|
|
173
|
+
/** session 有效期(秒),默认 7 天 */
|
|
174
|
+
ttl?: number;
|
|
175
|
+
/** cookie 选项 */
|
|
176
|
+
cookie?: {
|
|
177
|
+
path?: string;
|
|
178
|
+
secure?: boolean;
|
|
179
|
+
httpOnly?: boolean;
|
|
180
|
+
sameSite?: 'strict' | 'lax' | 'none';
|
|
181
|
+
domain?: string;
|
|
182
|
+
};
|
|
183
|
+
/** 自定义 session store(storage 模式),不传则用 cookie 模式 */
|
|
184
|
+
store?: SessionStore;
|
|
185
|
+
/** 自定义 session ID 生成函数 */
|
|
186
|
+
generateId?: () => string;
|
|
187
|
+
/** 自定义签名密钥(cookie 模式用于签名) */
|
|
188
|
+
secret?: string;
|
|
189
|
+
/** 跳过路径 */
|
|
190
|
+
exclude?: string[];
|
|
191
|
+
}
|
|
192
|
+
declare function createStorageSessionStore(storage?: UbeanStorage, prefix?: string): SessionStore;
|
|
193
|
+
/**
|
|
194
|
+
* 创建 session 中间件
|
|
195
|
+
*
|
|
196
|
+
* @example
|
|
197
|
+
* ```typescript
|
|
198
|
+
* // cookie 模式(默认,数据存 signed cookie)
|
|
199
|
+
* app.use('*', createSessionMiddleware({ secret: 'my-secret' }));
|
|
200
|
+
*
|
|
201
|
+
* // storage 模式(数据存服务端 KV/storage)
|
|
202
|
+
* app.use('*', createSessionMiddleware({
|
|
203
|
+
* store: createStorageSessionStore()
|
|
204
|
+
* }));
|
|
205
|
+
* ```
|
|
206
|
+
*/
|
|
207
|
+
declare function createSessionMiddleware(options?: SessionOptions): MiddlewareHandler<UbeanEnv>;
|
|
208
|
+
/**
|
|
209
|
+
* 从 Hono Context 获取 session
|
|
210
|
+
*/
|
|
211
|
+
declare function useSession<T extends SessionData = SessionData>(c: Context<UbeanEnv>): Session<T> | null;
|
|
212
|
+
/**
|
|
213
|
+
* 定义 session store 别名
|
|
214
|
+
*/
|
|
215
|
+
declare function defineSessionStore(store: SessionStore): SessionStore;
|
|
216
|
+
//#endregion
|
|
217
|
+
export { generateCsrfToken as _, createSessionMiddleware as a, useSession as c, createSecurityHeadersMiddleware as d, defineSecurityHeaders as f, defineCsrf as g, createCsrfMiddleware as h, SessionStore as i, ContentSecurityPolicyDirectives as l, CsrfOptions as m, SessionData as n, createStorageSessionStore as o, serializeCsp as p, SessionOptions as r, defineSessionStore as s, Session as t, SecurityHeadersOptions as u };
|