@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.
Files changed (56) hide show
  1. package/dist/analytics-entry.d.ts +2 -0
  2. package/dist/analytics-entry.js +2 -0
  3. package/dist/cache-C84ix1Vq.js +173 -0
  4. package/dist/cache-b-MZlyv0.d.ts +48 -0
  5. package/dist/cache-directive-C1Nekkza.js +304 -0
  6. package/dist/cache-directive-CAxJAQyE.d.ts +175 -0
  7. package/dist/cache-directive.d.ts +2 -0
  8. package/dist/cache-directive.js +2 -0
  9. package/dist/cache-entry.d.ts +3 -0
  10. package/dist/cache-entry.js +3 -0
  11. package/dist/cron-entry.d.ts +2 -0
  12. package/dist/cron-entry.js +2 -0
  13. package/dist/cron-scheduler-BF33PPn4.d.ts +77 -0
  14. package/dist/cron-scheduler-BVuXv7nn.js +258 -0
  15. package/dist/database-CfpFznl-.d.ts +67 -0
  16. package/dist/database-DNrY44SQ.js +352 -0
  17. package/dist/database.d.ts +2 -0
  18. package/dist/database.js +2 -0
  19. package/dist/email-BjfRiR9b.js +354 -0
  20. package/dist/email-BvpEuNn_.d.ts +226 -0
  21. package/dist/email.d.ts +2 -0
  22. package/dist/email.js +2 -0
  23. package/dist/feature-flags-CdLwsMD2.js +657 -0
  24. package/dist/feature-flags-DWkS6p0D.d.ts +386 -0
  25. package/dist/fetch-memo-rbkxxnW4.js +338 -0
  26. package/dist/index.d.ts +183 -488
  27. package/dist/index.js +352 -2023
  28. package/dist/middleware.d.ts +2 -0
  29. package/dist/middleware.js +3 -0
  30. package/dist/observability-Cio6Qq1H.js +339 -0
  31. package/dist/observability-DUNUEjj3.d.ts +70 -0
  32. package/dist/observability.d.ts +2 -0
  33. package/dist/observability.js +2 -0
  34. package/dist/queue-Bwzi3mhK.js +210 -0
  35. package/dist/queue-GOfTAWlz.d.ts +55 -0
  36. package/dist/queue.d.ts +2 -0
  37. package/dist/queue.js +2 -0
  38. package/dist/realtime.d.ts +2 -0
  39. package/dist/realtime.js +2 -0
  40. package/dist/security.d.ts +2 -0
  41. package/dist/security.js +2 -0
  42. package/dist/sessions-BLqFFQTL.d.ts +217 -0
  43. package/dist/sessions-BsBsyFAG.js +450 -0
  44. package/dist/single-flight-BJyhDLdU.d.ts +422 -0
  45. package/dist/single-flight-mJ4ZKbx1.js +715 -0
  46. package/dist/sse-Ct72zhic.d.ts +95 -0
  47. package/dist/sse-a6Ky9Vcl.js +310 -0
  48. package/dist/static-DPHaovQe.js +90 -0
  49. package/dist/static-K2dRvjpS.d.ts +11 -0
  50. package/dist/static.d.ts +2 -0
  51. package/dist/static.js +2 -0
  52. package/dist/storage-BZLMaqHr.js +162 -0
  53. package/dist/storage-QdlPtPtR.d.ts +48 -0
  54. package/dist/storage.d.ts +2 -0
  55. package/dist/storage.js +2 -0
  56. package/package.json +68 -6
@@ -0,0 +1,226 @@
1
+ //#region src/email.d.ts
2
+ /**
3
+ * P9-25 邮件发送原语 —— Email sending primitives
4
+ *
5
+ * 内置邮件发送原语,提供 provider 抽象层。支持三种内置 provider:
6
+ * - `log` 开发环境,将邮件内容输出到 console(或自定义 logger)
7
+ * - `smtp` 生产环境,通过 nodemailer(可选 peer dependency)配置 SMTP/sendmail
8
+ * - `mock` 测试环境,捕获发送的邮件以便断言
9
+ *
10
+ * 设计对齐 `storage.ts` 的 driver 抽象与 `queue.ts` 的全局 driver 注册模式:
11
+ * - `defineEmailProvider(options)` 定义并注册一个 provider
12
+ * - `createEmailTransport(provider)` 从 provider 配置创建 transport
13
+ * - `sendEmail(options)` 使用全局默认 transport 发送邮件
14
+ * - `renderEmailTemplate(template, data)` 简单字符串插值渲染
15
+ *
16
+ * 用法:
17
+ * ```typescript
18
+ * import { defineEmailProvider, sendEmail, renderEmailTemplate } from '@ubean/server';
19
+ *
20
+ * // 定义默认 provider(开发环境用 log)
21
+ * defineEmailProvider({ type: 'log', default: true });
22
+ *
23
+ * // 发送邮件
24
+ * await sendEmail({
25
+ * to: 'user@example.com',
26
+ * from: 'noreply@example.com',
27
+ * subject: 'Welcome',
28
+ * html: renderEmailTemplate('<h1>Hello {{name}}</h1>', { name: 'Alice' }),
29
+ * text: 'Hello Alice'
30
+ * });
31
+ * ```
32
+ */
33
+ /**
34
+ * 邮件附件
35
+ */
36
+ interface EmailAttachment {
37
+ filename: string;
38
+ content: string | Buffer | Uint8Array;
39
+ contentType?: string;
40
+ /** 当 content 为字符串时的编码方式(如 'base64') */
41
+ encoding?: string;
42
+ /** 内联附件的 content-id(用于在 HTML 中引用) */
43
+ cid?: string;
44
+ }
45
+ /**
46
+ * 发送邮件选项
47
+ */
48
+ interface EmailOptions {
49
+ to: string | string[];
50
+ from: string;
51
+ subject: string;
52
+ html?: string;
53
+ text?: string;
54
+ cc?: string | string[];
55
+ bcc?: string | string[];
56
+ replyTo?: string;
57
+ attachments?: EmailAttachment[];
58
+ headers?: Record<string, string>;
59
+ }
60
+ /**
61
+ * 发送邮件结果
62
+ */
63
+ interface EmailResult {
64
+ messageId: string;
65
+ response?: string;
66
+ provider: string;
67
+ }
68
+ /**
69
+ * 邮件传输层接口
70
+ */
71
+ interface EmailTransport {
72
+ send(options: EmailOptions): Promise<EmailResult>;
73
+ verify?(): Promise<boolean>;
74
+ close?(): Promise<void>;
75
+ }
76
+ /**
77
+ * Mock transport —— 额外暴露已发送邮件列表,用于测试断言
78
+ */
79
+ interface MockEmailTransport extends EmailTransport {
80
+ readonly sent: EmailOptions[];
81
+ clear(): void;
82
+ }
83
+ type EmailProviderType = 'log' | 'smtp' | 'mock' | 'sendmail';
84
+ /**
85
+ * Log provider 配置(开发环境)
86
+ */
87
+ interface LogEmailProviderConfig {
88
+ type: 'log';
89
+ logger?: (message: string) => void;
90
+ }
91
+ /**
92
+ * SMTP provider 配置(生产环境,nodemailer)
93
+ */
94
+ interface SmtpEmailProviderConfig {
95
+ type: 'smtp';
96
+ host: string;
97
+ port: number;
98
+ secure?: boolean;
99
+ auth?: {
100
+ user: string;
101
+ pass: string;
102
+ };
103
+ /** 透传给 nodemailer 的额外选项 */
104
+ extra?: Record<string, unknown>;
105
+ }
106
+ /**
107
+ * Mock provider 配置(测试环境)
108
+ */
109
+ interface MockEmailProviderConfig {
110
+ type: 'mock';
111
+ }
112
+ /**
113
+ * Sendmail provider 配置(本地 sendmail 命令)
114
+ */
115
+ interface SendmailEmailProviderConfig {
116
+ type: 'sendmail';
117
+ path?: string;
118
+ args?: string[];
119
+ }
120
+ /**
121
+ * provider 配置联合类型(判别联合,以 `type` 字段区分)
122
+ */
123
+ type EmailProviderConfig = LogEmailProviderConfig | SmtpEmailProviderConfig | MockEmailProviderConfig | SendmailEmailProviderConfig;
124
+ /**
125
+ * `defineEmailProvider` 的选项 —— 在 provider 配置基础上增加 `name` 和 `default`
126
+ */
127
+ type DefineEmailProviderOptions = EmailProviderConfig & {
128
+ name?: string;
129
+ default?: boolean;
130
+ };
131
+ /**
132
+ * 邮件 provider 定义
133
+ */
134
+ interface EmailProvider {
135
+ readonly type: EmailProviderType;
136
+ readonly name?: string;
137
+ readonly config: EmailProviderConfig;
138
+ }
139
+ /**
140
+ * 定义并注册一个邮件 provider
141
+ *
142
+ * @example
143
+ * ```typescript
144
+ * // 开发环境
145
+ * defineEmailProvider({ type: 'log', default: true });
146
+ *
147
+ * // 生产环境
148
+ * defineEmailProvider({
149
+ * type: 'smtp',
150
+ * name: 'primary',
151
+ * default: true,
152
+ * host: 'smtp.example.com',
153
+ * port: 587,
154
+ * auth: { user: 'postmaster', pass: 'secret' }
155
+ * });
156
+ * ```
157
+ */
158
+ declare function defineEmailProvider(options: DefineEmailProviderOptions): EmailProvider;
159
+ /**
160
+ * 从 provider 配置创建 transport
161
+ */
162
+ declare function createEmailTransport(provider: EmailProvider): EmailTransport;
163
+ /**
164
+ * 设置全局默认 provider(并立即创建其 transport)
165
+ */
166
+ declare function setDefaultEmailProvider(provider: EmailProvider): void;
167
+ /**
168
+ * 获取全局默认 provider。若尚未设置,则惰性创建一个 `log` provider。
169
+ */
170
+ declare function useEmailProvider(): EmailProvider;
171
+ /**
172
+ * 获取全局默认 transport。若尚未设置,则惰性创建一个 `log` transport。
173
+ */
174
+ declare function getEmailTransport(): EmailTransport;
175
+ /**
176
+ * 按名称获取已注册的 provider
177
+ */
178
+ declare function getEmailProvider(name: string): EmailProvider | undefined;
179
+ /**
180
+ * 获取所有已注册的 provider 名称
181
+ */
182
+ declare function getEmailProviderNames(): string[];
183
+ /**
184
+ * 使用全局默认 transport 发送邮件
185
+ *
186
+ * @example
187
+ * ```typescript
188
+ * await sendEmail({
189
+ * to: 'user@example.com',
190
+ * from: 'noreply@example.com',
191
+ * subject: 'Welcome',
192
+ * html: '<h1>Welcome!</h1>',
193
+ * text: 'Welcome!'
194
+ * });
195
+ * ```
196
+ */
197
+ declare function sendEmail(options: EmailOptions): Promise<EmailResult>;
198
+ /**
199
+ * 简单模板渲染 —— `{{key}}` 字符串插值,支持点号嵌套路径
200
+ *
201
+ * @example
202
+ * ```typescript
203
+ * renderEmailTemplate('Hello {{user.name}}, your code is {{code}}', {
204
+ * user: { name: 'Alice' },
205
+ * code: '123456'
206
+ * });
207
+ * // => 'Hello Alice, your code is 123456'
208
+ * ```
209
+ */
210
+ declare function renderEmailTemplate(template: string, data: Record<string, unknown>): string;
211
+ /**
212
+ * 获取全局 mock transport 捕获的已发送邮件。
213
+ * 若全局 transport 不是 mock,则返回空数组。
214
+ */
215
+ declare function getSentEmails(): EmailOptions[];
216
+ /**
217
+ * 清空全局 mock transport 捕获的已发送邮件。
218
+ * 若全局 transport 不是 mock,则不做任何操作。
219
+ */
220
+ declare function clearSentEmails(): void;
221
+ /**
222
+ * 清除所有 provider 注册表与全局状态(主要用于测试隔离)
223
+ */
224
+ declare function clearEmailProviders(): void;
225
+ //#endregion
226
+ export { sendEmail as C, renderEmailTemplate as S, useEmailProvider as T, defineEmailProvider as _, EmailProviderConfig as a, getEmailTransport as b, EmailTransport as c, MockEmailTransport as d, SendmailEmailProviderConfig as f, createEmailTransport as g, clearSentEmails as h, EmailProvider as i, LogEmailProviderConfig as l, clearEmailProviders as m, EmailAttachment as n, EmailProviderType as o, SmtpEmailProviderConfig as p, EmailOptions as r, EmailResult as s, DefineEmailProviderOptions as t, MockEmailProviderConfig as u, getEmailProvider as v, setDefaultEmailProvider as w, getSentEmails as x, getEmailProviderNames as y };
@@ -0,0 +1,2 @@
1
+ import { C as sendEmail, S as renderEmailTemplate, T as useEmailProvider, _ as defineEmailProvider, a as EmailProviderConfig, b as getEmailTransport, c as EmailTransport, d as MockEmailTransport, f as SendmailEmailProviderConfig, g as createEmailTransport, h as clearSentEmails, i as EmailProvider, l as LogEmailProviderConfig, m as clearEmailProviders, n as EmailAttachment, o as EmailProviderType, p as SmtpEmailProviderConfig, r as EmailOptions, s as EmailResult, t as DefineEmailProviderOptions, u as MockEmailProviderConfig, v as getEmailProvider, w as setDefaultEmailProvider, x as getSentEmails, y as getEmailProviderNames } from "./email-BvpEuNn_.js";
2
+ export { DefineEmailProviderOptions, EmailAttachment, EmailOptions, EmailProvider, EmailProviderConfig, EmailProviderType, EmailResult, EmailTransport, LogEmailProviderConfig, MockEmailProviderConfig, MockEmailTransport, SendmailEmailProviderConfig, SmtpEmailProviderConfig, clearEmailProviders, clearSentEmails, createEmailTransport, defineEmailProvider, getEmailProvider, getEmailProviderNames, getEmailTransport, getSentEmails, renderEmailTemplate, sendEmail, setDefaultEmailProvider, useEmailProvider };
package/dist/email.js ADDED
@@ -0,0 +1,2 @@
1
+ import { a as getEmailProvider, c as getSentEmails, d as setDefaultEmailProvider, f as useEmailProvider, i as defineEmailProvider, l as renderEmailTemplate, n as clearSentEmails, o as getEmailProviderNames, r as createEmailTransport, s as getEmailTransport, t as clearEmailProviders, u as sendEmail } from "./email-BjfRiR9b.js";
2
+ export { clearEmailProviders, clearSentEmails, createEmailTransport, defineEmailProvider, getEmailProvider, getEmailProviderNames, getEmailTransport, getSentEmails, renderEmailTemplate, sendEmail, setDefaultEmailProvider, useEmailProvider };