@h-ai/api-contract 0.1.0-alpha.58 → 0.1.0-alpha.60
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/README.en.md +8 -0
- package/README.ja.md +8 -0
- package/README.md +8 -0
- package/dist/{chunk-MBNBQY2J.js → chunk-APZWTGQD.js} +27 -7
- package/dist/chunk-APZWTGQD.js.map +1 -0
- package/dist/iam/index.d.ts +239 -2
- package/dist/iam/index.js +1 -1
- package/dist/index.d.ts +164 -1
- package/dist/index.js +2 -2
- package/package.json +2 -2
- package/dist/chunk-MBNBQY2J.js.map +0 -1
package/README.en.md
CHANGED
|
@@ -93,6 +93,14 @@ Write each business path directly in its `*-contract.ts` file. Inline output sch
|
|
|
93
93
|
|
|
94
94
|
This package has no runtime configuration and does not read environment variables.
|
|
95
95
|
|
|
96
|
+
## Configuration driven authentication
|
|
97
|
+
|
|
98
|
+
Agreements support configuration-loaded userAgreementMarkdown/privacyPolicyMarkdown and URLs. Markdown takes priority for the same agreement and is safely rendered in a modal.
|
|
99
|
+
|
|
100
|
+
IAM adds GET /auth/config and POST /auth/login/ldap, /auth/password-reset/request and /auth/password-reset/confirm. Public config is a schema whitelist; IamLdapLoginInput and IamPublicConfig are exported. Password lengths follow the configured IAM policy.
|
|
101
|
+
|
|
102
|
+
[完整 IAM 配置 / IAM configuration](../iam/README.en.md)
|
|
103
|
+
|
|
96
104
|
## Error handling
|
|
97
105
|
|
|
98
106
|
Contracts describe input and output structures only. Procedures express business errors with `HaiResult<T>`, so clients need not catch business exceptions.
|
package/README.ja.md
CHANGED
|
@@ -93,6 +93,14 @@ const app = serv.createApp({
|
|
|
93
93
|
|
|
94
94
|
このパッケージには実行時設定がなく、環境変数も読み込みません。
|
|
95
95
|
|
|
96
|
+
## 設定による認証画面
|
|
97
|
+
|
|
98
|
+
規約は設定の userAgreementMarkdown/privacyPolicyMarkdown または URL を使用できます。同じ規約は Markdown 本文を優先して安全な Modal で描画します。
|
|
99
|
+
|
|
100
|
+
IAM に公開設定、LDAP、復旧要求と確定の標準 route を追加しました。IamPublicConfig は安全な Schema で、登録パスワードの長さは IAM 設定に従います。
|
|
101
|
+
|
|
102
|
+
[完整 IAM 配置 / IAM configuration](../iam/README.ja.md)
|
|
103
|
+
|
|
96
104
|
## エラー処理
|
|
97
105
|
|
|
98
106
|
Contract は入出力構造のみを定義します。業務エラーは procedure が返す `HaiResult<T>` で表し、クライアント側で業務例外を捕捉する必要はありません。
|
package/README.md
CHANGED
|
@@ -93,6 +93,14 @@ const app = serv.createApp({
|
|
|
93
93
|
|
|
94
94
|
本包无运行时配置,不读取环境变量。
|
|
95
95
|
|
|
96
|
+
## 配置驱动认证页面
|
|
97
|
+
|
|
98
|
+
协议支持配置中的 userAgreementMarkdown/privacyPolicyMarkdown 正文及 URL;同主题优先 Markdown,由安全渲染器在弹窗显示。
|
|
99
|
+
|
|
100
|
+
标准 IAM contract 新增 GET /auth/config、POST /auth/login/ldap、POST /auth/password-reset/request、POST /auth/password-reset/confirm。公开配置 Schema 是安全白名单。IamLdapLoginInput、IamPublicConfig 对调用方提供真实类型。密码长度以 IAM 运行时策略为准,contract 不固定注册密码最小长度。
|
|
101
|
+
|
|
102
|
+
[完整 IAM 配置 / IAM configuration](../iam/README.md)
|
|
103
|
+
|
|
96
104
|
## 错误处理
|
|
97
105
|
|
|
98
106
|
Contract 只描述输入输出结构。业务错误由 procedure 返回 `HaiResult<T>` 表达,客户端不需要捕获业务异常。
|
|
@@ -34,6 +34,9 @@ var IamTokenPairSchema = z.object({
|
|
|
34
34
|
tokenType: z.literal("Bearer")
|
|
35
35
|
});
|
|
36
36
|
var IamAgreementDisplaySchema = z.object({
|
|
37
|
+
/** 配置中的 Markdown 原文由客户端安全渲染。 */
|
|
38
|
+
userAgreementMarkdown: z.string().min(1).optional(),
|
|
39
|
+
privacyPolicyMarkdown: z.string().min(1).optional(),
|
|
37
40
|
userAgreementUrl: z.string().optional(),
|
|
38
41
|
privacyPolicyUrl: z.string().optional(),
|
|
39
42
|
showOnRegister: z.boolean(),
|
|
@@ -55,6 +58,19 @@ var IamLoginInputSchema = z.object({
|
|
|
55
58
|
password: z.string().min(1),
|
|
56
59
|
rememberMe: z.boolean().optional()
|
|
57
60
|
});
|
|
61
|
+
var IamLdapLoginInputSchema = z.object({ username: z.string().trim().min(1), password: z.string().min(1) });
|
|
62
|
+
var IamRequestPasswordResetInputSchema = z.object({ identifier: z.string().trim().min(1) });
|
|
63
|
+
var IamConfirmPasswordResetInputSchema = z.object({ token: z.string().min(1), newPassword: z.string().min(1) });
|
|
64
|
+
var IamPublicConfigSchema = z.object({
|
|
65
|
+
password: z.object({ minLength: z.number(), maxLength: z.number(), requireUppercase: z.boolean(), requireLowercase: z.boolean(), requireNumber: z.boolean(), requireSpecialChar: z.boolean(), expirationDays: z.number() }),
|
|
66
|
+
register: z.object({ enabled: z.boolean() }),
|
|
67
|
+
login: z.object({ password: z.boolean(), otp: z.boolean(), ldap: z.boolean(), email: z.boolean(), sms: z.boolean() }),
|
|
68
|
+
passwordReset: z.object({ enabled: z.boolean(), mode: z.enum(["email", "phone"]) }),
|
|
69
|
+
otp: z.object({ length: z.number(), resendInterval: z.number() }),
|
|
70
|
+
agreements: IamAgreementDisplaySchema,
|
|
71
|
+
ui: z.object({ variant: z.enum(["card", "split"]), title: z.string().optional(), subtitle: z.string().optional(), brandTitle: z.string().optional(), brandText: z.string().optional(), logoUrl: z.string().optional(), illustrationUrl: z.string().optional() }),
|
|
72
|
+
session: z.object({ maxAge: z.number() })
|
|
73
|
+
});
|
|
58
74
|
var IamOtpLoginInputSchema = z.object({
|
|
59
75
|
identifier: z.string().min(1),
|
|
60
76
|
code: z.string().min(1)
|
|
@@ -76,7 +92,7 @@ var IamRefreshTokenDataSchema = z.object({
|
|
|
76
92
|
});
|
|
77
93
|
var IamRegisterInputSchema = z.object({
|
|
78
94
|
username: z.string().min(1),
|
|
79
|
-
password: z.string().min(
|
|
95
|
+
password: z.string().min(1),
|
|
80
96
|
email: z.string().email().optional(),
|
|
81
97
|
phone: z.string().optional(),
|
|
82
98
|
displayName: z.string().optional(),
|
|
@@ -84,7 +100,7 @@ var IamRegisterInputSchema = z.object({
|
|
|
84
100
|
});
|
|
85
101
|
var IamChangePasswordInputSchema = z.object({
|
|
86
102
|
oldPassword: z.string().min(1),
|
|
87
|
-
newPassword: z.string().min(
|
|
103
|
+
newPassword: z.string().min(1)
|
|
88
104
|
});
|
|
89
105
|
var IamUpdateCurrentUserInputSchema = z.object({
|
|
90
106
|
username: z.string().min(1).optional(),
|
|
@@ -103,7 +119,7 @@ var IamAdminCreateUserInputSchema = z.object({
|
|
|
103
119
|
username: z.string().min(1),
|
|
104
120
|
email: z.string().email().optional(),
|
|
105
121
|
phone: z.string().optional(),
|
|
106
|
-
password: z.string().min(
|
|
122
|
+
password: z.string().min(1),
|
|
107
123
|
displayName: z.string().optional(),
|
|
108
124
|
metadata: z.record(z.string(), z.unknown()).optional(),
|
|
109
125
|
roleIds: z.array(z.string()).optional(),
|
|
@@ -125,7 +141,7 @@ var IamUserIdInputSchema = z.object({
|
|
|
125
141
|
});
|
|
126
142
|
var IamAdminResetPasswordInputSchema = z.object({
|
|
127
143
|
id: z.string().min(1),
|
|
128
|
-
newPassword: z.string().min(
|
|
144
|
+
newPassword: z.string().min(1)
|
|
129
145
|
});
|
|
130
146
|
var IamRoleSchema = z.object({
|
|
131
147
|
id: z.string(),
|
|
@@ -178,6 +194,10 @@ var userOutputSchema = haiResultSchema(IamUserSchema);
|
|
|
178
194
|
var roleOutputSchema = haiResultSchema(IamRoleSchema);
|
|
179
195
|
var iamContract = {
|
|
180
196
|
auth: {
|
|
197
|
+
publicConfig: route({ method: "GET", path: "/auth/config", operationId: "iam.auth.publicConfig", summary: "Public authentication configuration", tags: ["iam", "auth"] }).output(haiResultSchema(IamPublicConfigSchema.nullable())),
|
|
198
|
+
loginWithLdap: route({ method: "POST", path: "/auth/login/ldap", operationId: "iam.auth.loginWithLdap", summary: "LDAP login", tags: ["iam", "auth"] }).input(IamLdapLoginInputSchema).output(authResultOutputSchema),
|
|
199
|
+
requestPasswordReset: route({ method: "POST", path: "/auth/password-reset/request", operationId: "iam.auth.requestPasswordReset", summary: "Request password reset", tags: ["iam", "auth"] }).input(IamRequestPasswordResetInputSchema).output(HaiVoidResultSchema),
|
|
200
|
+
confirmPasswordReset: route({ method: "POST", path: "/auth/password-reset/confirm", operationId: "iam.auth.confirmPasswordReset", summary: "Confirm password reset", tags: ["iam", "auth"] }).input(IamConfirmPasswordResetInputSchema).output(HaiVoidResultSchema),
|
|
181
201
|
login: route({ method: "POST", path: "/auth/login", operationId: "iam.auth.login", summary: "Password login", tags: ["iam", "auth"] }).input(IamLoginInputSchema).output(authResultOutputSchema),
|
|
182
202
|
loginWithOtp: route({ method: "POST", path: "/auth/login/otp", operationId: "iam.auth.loginWithOtp", summary: "OTP login", tags: ["iam", "auth"] }).input(IamOtpLoginInputSchema).output(authResultOutputSchema),
|
|
183
203
|
logout: route({ method: "POST", path: "/auth/logout", operationId: "iam.auth.logout", summary: "Logout", tags: ["iam", "auth"] }).input(IamLogoutInputSchema).output(HaiVoidResultSchema),
|
|
@@ -211,6 +231,6 @@ var iamContract = {
|
|
|
211
231
|
}
|
|
212
232
|
};
|
|
213
233
|
|
|
214
|
-
export { IamAdminCreateUserInputSchema, IamAdminResetPasswordInputSchema, IamAdminUpdateUserInputSchema, IamAgreementDisplaySchema, IamAuthResultSchema, IamChangePasswordInputSchema, IamCreatePermissionInputSchema, IamCreateRoleInputSchema, IamCurrentUserSchema, IamListPermissionsInputSchema, IamListUsersInputSchema, IamLoginInputSchema, IamLogoutInputSchema, IamOtpLoginInputSchema, IamPermissionSchema, IamPermissionTypeSchema, IamRefreshTokenDataSchema, IamRefreshTokenInputSchema, IamRegisterInputSchema, IamRoleSchema, IamSendOtpDataSchema, IamSendOtpInputSchema, IamTokenPairSchema, IamUpdateCurrentUserInputSchema, IamUpdateRoleInputSchema, IamUserIdInputSchema, IamUserSchema, PaginationQuerySchema, iamContract, paginatedSchema };
|
|
215
|
-
//# sourceMappingURL=chunk-
|
|
216
|
-
//# sourceMappingURL=chunk-
|
|
234
|
+
export { IamAdminCreateUserInputSchema, IamAdminResetPasswordInputSchema, IamAdminUpdateUserInputSchema, IamAgreementDisplaySchema, IamAuthResultSchema, IamChangePasswordInputSchema, IamConfirmPasswordResetInputSchema, IamCreatePermissionInputSchema, IamCreateRoleInputSchema, IamCurrentUserSchema, IamLdapLoginInputSchema, IamListPermissionsInputSchema, IamListUsersInputSchema, IamLoginInputSchema, IamLogoutInputSchema, IamOtpLoginInputSchema, IamPermissionSchema, IamPermissionTypeSchema, IamPublicConfigSchema, IamRefreshTokenDataSchema, IamRefreshTokenInputSchema, IamRegisterInputSchema, IamRequestPasswordResetInputSchema, IamRoleSchema, IamSendOtpDataSchema, IamSendOtpInputSchema, IamTokenPairSchema, IamUpdateCurrentUserInputSchema, IamUpdateRoleInputSchema, IamUserIdInputSchema, IamUserSchema, PaginationQuerySchema, iamContract, paginatedSchema };
|
|
235
|
+
//# sourceMappingURL=chunk-APZWTGQD.js.map
|
|
236
|
+
//# sourceMappingURL=chunk-APZWTGQD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/common/pagination-schemas.ts","../src/iam/iam-schemas.ts","../src/iam/iam-contract.ts"],"names":["z"],"mappings":"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","file":"chunk-APZWTGQD.js","sourcesContent":["/**\n * @h-ai/api-contract — 分页 Schema\n *\n * 提供通用分页查询参数与分页结果封装,供各领域 contract 扩展复用。\n * @module pagination-schemas\n */\n\nimport { z } from 'zod'\n\n/**\n * 通用分页查询参数 Schema。\n *\n * 页码和页大小均为可选,由服务端提供合理默认值(page=1, pageSize=20)。\n * 支持字符串 coerce,适配 GET 请求 query string 场景。\n *\n * @example\n * ```ts\n * // 扩展为领域专属查询参数\n * const IamListUsersInputSchema = PaginationQuerySchema.extend({\n * search: z.string().optional(),\n * })\n * ```\n */\nexport const PaginationQuerySchema = z.object({\n page: z.coerce.number().int().min(1).optional(),\n pageSize: z.coerce.number().int().min(1).max(100).optional(),\n})\n\n/**\n * 创建分页结果 Schema。\n *\n * 生成标准分页响应结构 `{ items, total, page, pageSize }`,\n * 与 `@h-ai/reldb` 的 `PageResult<T>` 保持对齐。\n *\n * @param itemSchema - 分页项的 Zod Schema\n * @returns 包含 items/total/page/pageSize 的对象 Schema\n *\n * @example\n * ```ts\n * const listUsers = route({ method: 'GET', path: '/users' })\n * .output(haiResultSchema(paginatedSchema(IamUserSchema)))\n * // 解析结果形如:\n * // { success: true, data: { items: [...], total: 100, page: 1, pageSize: 20 } }\n * ```\n */\nexport function paginatedSchema<T extends z.ZodType>(itemSchema: T) {\n return z.object({\n items: z.array(itemSchema),\n total: z.number(),\n page: z.number(),\n pageSize: z.number(),\n })\n}\n","/**\n * @h-ai/api-contract — IAM 领域 Schema\n *\n * 包含用户、Token、角色、权限以及相关 input/data 的 Zod Schema 定义。\n * 一次性输出包装在 contract 中内联,仅保留跨接口、跨层复用的数据结构。\n * @module iam-schemas\n */\n\nimport type { HaiResult } from '@h-ai/core'\nimport { z } from 'zod'\nimport { PaginationQuerySchema } from '../common/pagination-schemas.js'\n\n/** 用户基础信息 Schema。 */\nexport const IamUserSchema = z.object({\n id: z.string(),\n username: z.string(),\n email: z.string().optional(),\n phone: z.string().optional(),\n displayName: z.string().optional(),\n avatarUrl: z.string().optional(),\n enabled: z.boolean(),\n emailVerified: z.boolean().optional(),\n phoneVerified: z.boolean().optional(),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n})\n\n/** Token 对 Schema。 */\nexport const IamTokenPairSchema = z.object({\n accessToken: z.string(),\n refreshToken: z.string().optional(),\n expiresIn: z.number(),\n tokenType: z.literal('Bearer'),\n})\n\n/** 协议展示 Schema。 */\nexport const IamAgreementDisplaySchema = z.object({\n /** 配置中的 Markdown 原文由客户端安全渲染。 */\n userAgreementMarkdown: z.string().min(1).optional(),\n privacyPolicyMarkdown: z.string().min(1).optional(),\n userAgreementUrl: z.string().optional(),\n privacyPolicyUrl: z.string().optional(),\n showOnRegister: z.boolean(),\n showOnLogin: z.boolean(),\n})\n\n/** 登录结果业务数据 Schema。 */\nexport const IamAuthResultSchema = z.object({\n user: IamUserSchema,\n tokens: IamTokenPairSchema,\n roles: z.array(z.string()).default([]),\n permissions: z.array(z.string()).default([]),\n agreements: IamAgreementDisplaySchema.optional(),\n})\n\n/** 当前会话用户信息;包含服务端重新校验后的角色与权限快照。 */\nexport const IamCurrentUserSchema = IamUserSchema.extend({\n roles: z.array(z.string()),\n permissions: z.array(z.string()),\n})\n\n/** 密码登录入参 Schema。 */\nexport const IamLoginInputSchema = z.object({\n identifier: z.string().min(1),\n password: z.string().min(1),\n rememberMe: z.boolean().optional(),\n})\n\n/** LDAP 登录与密码找回入参。 */\nexport const IamLdapLoginInputSchema = z.object({ username: z.string().trim().min(1), password: z.string().min(1) })\nexport const IamRequestPasswordResetInputSchema = z.object({ identifier: z.string().trim().min(1) })\nexport const IamConfirmPasswordResetInputSchema = z.object({ token: z.string().min(1), newPassword: z.string().min(1) })\n\n/** 认证页面公开配置白名单,独立于服务端连接/凭据配置。 */\nexport const IamPublicConfigSchema = z.object({\n password: z.object({ minLength: z.number(), maxLength: z.number(), requireUppercase: z.boolean(), requireLowercase: z.boolean(), requireNumber: z.boolean(), requireSpecialChar: z.boolean(), expirationDays: z.number() }),\n register: z.object({ enabled: z.boolean() }),\n login: z.object({ password: z.boolean(), otp: z.boolean(), ldap: z.boolean(), email: z.boolean(), sms: z.boolean() }),\n passwordReset: z.object({ enabled: z.boolean(), mode: z.enum(['email', 'phone']) }),\n otp: z.object({ length: z.number(), resendInterval: z.number() }),\n agreements: IamAgreementDisplaySchema,\n ui: z.object({ variant: z.enum(['card', 'split']), title: z.string().optional(), subtitle: z.string().optional(), brandTitle: z.string().optional(), brandText: z.string().optional(), logoUrl: z.string().optional(), illustrationUrl: z.string().optional() }),\n session: z.object({ maxAge: z.number() }),\n})\n\n/** OTP 登录入参 Schema。 */\nexport const IamOtpLoginInputSchema = z.object({\n identifier: z.string().min(1),\n code: z.string().min(1),\n})\n\n/** 登出入参 Schema。 */\nexport const IamLogoutInputSchema = z.object({\n accessToken: z.string().min(1).optional(),\n})\n\n/** 发送 OTP 入参 Schema。 */\nexport const IamSendOtpInputSchema = z.object({\n identifier: z.string().min(1),\n})\n\n/** 发送 OTP 业务数据 Schema。 */\nexport const IamSendOtpDataSchema = z.object({\n expiresAt: z.coerce.date(),\n})\n\n/** Token 刷新入参 Schema。 */\nexport const IamRefreshTokenInputSchema = z.object({\n refreshToken: z.string().min(1),\n})\n\n/** Token 刷新业务数据 Schema。 */\nexport const IamRefreshTokenDataSchema = z.object({\n tokens: IamTokenPairSchema,\n})\n\n/** 注册入参 Schema。 */\nexport const IamRegisterInputSchema = z.object({\n username: z.string().min(1),\n password: z.string().min(1),\n email: z.string().email().optional(),\n phone: z.string().optional(),\n displayName: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n})\n\n/** 修改密码入参 Schema。 */\nexport const IamChangePasswordInputSchema = z.object({\n oldPassword: z.string().min(1),\n newPassword: z.string().min(1),\n})\n\n/** 当前用户更新入参 Schema。 */\nexport const IamUpdateCurrentUserInputSchema = z.object({\n username: z.string().min(1).optional(),\n email: z.string().email().optional(),\n displayName: z.string().optional(),\n avatarUrl: z.string().optional(),\n phone: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n})\n\n/** 用户列表查询入参 Schema。 */\nexport const IamListUsersInputSchema = PaginationQuerySchema.extend({\n search: z.string().optional(),\n // 注意:HTTP query 是字符串,使用枚举 + transform 避免 z.coerce.boolean 的 'false' → true 陷阱。\n enabled: z.enum(['true', 'false']).optional().transform(v => v === undefined ? undefined : v === 'true'),\n})\n\n/** Admin 创建用户入参 Schema。 */\nexport const IamAdminCreateUserInputSchema = z.object({\n username: z.string().min(1),\n email: z.string().email().optional(),\n phone: z.string().optional(),\n password: z.string().min(1),\n displayName: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n roleIds: z.array(z.string()).optional(),\n enabled: z.boolean().optional(),\n})\n\n/** Admin 更新用户入参 Schema。 */\nexport const IamAdminUpdateUserInputSchema = z.object({\n id: z.string().min(1),\n username: z.string().min(1).optional(),\n email: z.string().email().optional(),\n phone: z.string().optional(),\n displayName: z.string().optional(),\n avatarUrl: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n enabled: z.boolean().optional(),\n roleIds: z.array(z.string()).optional(),\n})\n\n/** Admin 删除用户入参 Schema。 */\nexport const IamUserIdInputSchema = z.object({\n id: z.string().min(1),\n})\n\n/** Admin 重置密码入参 Schema。 */\nexport const IamAdminResetPasswordInputSchema = z.object({\n id: z.string().min(1),\n newPassword: z.string().min(1),\n})\n\n/** 角色基础信息 Schema。 */\nexport const IamRoleSchema = z.object({\n id: z.string(),\n code: z.string(),\n name: z.string(),\n description: z.string().optional(),\n isSystem: z.boolean().optional(),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n})\n\n/** 创建角色入参 Schema。 */\nexport const IamCreateRoleInputSchema = z.object({\n code: z.string().min(1),\n name: z.string().min(1),\n description: z.string().optional(),\n isSystem: z.boolean().optional(),\n})\n\n/** 更新角色入参 Schema。 */\nexport const IamUpdateRoleInputSchema = z.object({\n id: z.string().min(1),\n name: z.string().min(1).optional(),\n description: z.string().optional(),\n})\n\n/** 权限类型 Schema。 */\nexport const IamPermissionTypeSchema = z.enum(['menu', 'api', 'button'])\n\n/** 权限基础信息 Schema。 */\nexport const IamPermissionSchema = z.object({\n id: z.string(),\n code: z.string(),\n name: z.string(),\n description: z.string().optional(),\n type: IamPermissionTypeSchema.optional(),\n resource: z.string().optional(),\n action: z.string().optional(),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n})\n\n/** 权限列表查询入参 Schema。 */\nexport const IamListPermissionsInputSchema = PaginationQuerySchema.extend({\n search: z.string().optional(),\n type: IamPermissionTypeSchema.optional(),\n})\n\n/** 创建权限入参 Schema。 */\nexport const IamCreatePermissionInputSchema = z.object({\n code: z.string().min(1),\n name: z.string().min(1),\n description: z.string().optional(),\n resource: z.string().optional(),\n action: z.string().optional(),\n type: IamPermissionTypeSchema.optional(),\n})\n\nexport type IamLoginInput = z.infer<typeof IamLoginInputSchema>\nexport type IamLdapLoginInput = z.infer<typeof IamLdapLoginInputSchema>\nexport type IamPublicConfig = z.infer<typeof IamPublicConfigSchema>\nexport type IamOtpLoginInput = z.infer<typeof IamOtpLoginInputSchema>\nexport type IamLogoutInput = z.infer<typeof IamLogoutInputSchema>\nexport type IamSendOtpInput = z.infer<typeof IamSendOtpInputSchema>\nexport type IamAuthResultOutput = HaiResult<z.infer<typeof IamAuthResultSchema>>\nexport type IamCurrentUser = z.infer<typeof IamCurrentUserSchema>\nexport type IamCurrentUserOutput = HaiResult<IamCurrentUser>\nexport type IamRefreshTokenInput = z.infer<typeof IamRefreshTokenInputSchema>\nexport type IamRefreshTokenOutput = HaiResult<z.infer<typeof IamRefreshTokenDataSchema>>\nexport type IamRegisterInput = z.infer<typeof IamRegisterInputSchema>\nexport type IamChangePasswordInput = z.infer<typeof IamChangePasswordInputSchema>\nexport type IamUpdateCurrentUserInput = z.infer<typeof IamUpdateCurrentUserInputSchema>\nexport type IamListUsersInput = z.infer<typeof IamListUsersInputSchema>\nexport type IamAdminCreateUserInput = z.infer<typeof IamAdminCreateUserInputSchema>\nexport type IamAdminUpdateUserInput = z.infer<typeof IamAdminUpdateUserInputSchema>\nexport type IamUserIdInput = z.infer<typeof IamUserIdInputSchema>\nexport type IamAdminResetPasswordInput = z.infer<typeof IamAdminResetPasswordInputSchema>\nexport type IamCreateRoleInput = z.infer<typeof IamCreateRoleInputSchema>\nexport type IamUpdateRoleInput = z.infer<typeof IamUpdateRoleInputSchema>\nexport type IamListPermissionsInput = z.infer<typeof IamListPermissionsInputSchema>\nexport type IamCreatePermissionInput = z.infer<typeof IamCreatePermissionInputSchema>\n","/**\n * @h-ai/api-contract — IAM 领域 contract\n *\n * 定义身份认证与权限管理相关 API 的接口边界:\n * - auth:登录、登出、OTP、刷新 Token、注册、修改密码\n * - users:Admin 管理用户(CRUD + 重置密码)\n * - roles:Admin 管理角色(CRUD)\n * - permissions:Admin 管理权限(CRUD)\n *\n * auth.* 入口址前缀为 `/auth`;users/roles/permissions 前缀为 `/iam`。\n * @module iam-contract\n */\n\nimport { paginatedSchema } from '../common/pagination-schemas.js'\nimport { haiResultSchema, HaiVoidResultSchema } from '../common/result-schemas.js'\nimport { route } from '../common/route.js'\nimport {\n IamAdminCreateUserInputSchema,\n IamAdminResetPasswordInputSchema,\n IamAdminUpdateUserInputSchema,\n IamAuthResultSchema,\n IamChangePasswordInputSchema,\n IamConfirmPasswordResetInputSchema,\n IamCreatePermissionInputSchema,\n IamCreateRoleInputSchema,\n IamCurrentUserSchema,\n IamLdapLoginInputSchema,\n IamListPermissionsInputSchema,\n IamListUsersInputSchema,\n IamLoginInputSchema,\n IamLogoutInputSchema,\n IamOtpLoginInputSchema,\n IamPermissionSchema,\n IamPublicConfigSchema,\n IamRefreshTokenDataSchema,\n IamRefreshTokenInputSchema,\n IamRegisterInputSchema,\n IamRequestPasswordResetInputSchema,\n IamRoleSchema,\n IamSendOtpDataSchema,\n IamSendOtpInputSchema,\n IamUpdateCurrentUserInputSchema,\n IamUpdateRoleInputSchema,\n IamUserIdInputSchema,\n IamUserSchema,\n} from './iam-schemas.js'\n\n// 同一 contract 内被多个接口复用的输出结构保持私有,避免扩大公共 Schema 面。\nconst authResultOutputSchema = haiResultSchema(IamAuthResultSchema)\nconst userOutputSchema = haiResultSchema(IamUserSchema)\nconst roleOutputSchema = haiResultSchema(IamRoleSchema)\n\n/** IAM 领域 oRPC contract。 */\nexport const iamContract = {\n auth: {\n publicConfig: route({ method: 'GET', path: '/auth/config', operationId: 'iam.auth.publicConfig', summary: 'Public authentication configuration', tags: ['iam', 'auth'] })\n .output(haiResultSchema(IamPublicConfigSchema.nullable())),\n loginWithLdap: route({ method: 'POST', path: '/auth/login/ldap', operationId: 'iam.auth.loginWithLdap', summary: 'LDAP login', tags: ['iam', 'auth'] })\n .input(IamLdapLoginInputSchema)\n .output(authResultOutputSchema),\n requestPasswordReset: route({ method: 'POST', path: '/auth/password-reset/request', operationId: 'iam.auth.requestPasswordReset', summary: 'Request password reset', tags: ['iam', 'auth'] })\n .input(IamRequestPasswordResetInputSchema)\n .output(HaiVoidResultSchema),\n confirmPasswordReset: route({ method: 'POST', path: '/auth/password-reset/confirm', operationId: 'iam.auth.confirmPasswordReset', summary: 'Confirm password reset', tags: ['iam', 'auth'] })\n .input(IamConfirmPasswordResetInputSchema)\n .output(HaiVoidResultSchema),\n login: route({ method: 'POST', path: '/auth/login', operationId: 'iam.auth.login', summary: 'Password login', tags: ['iam', 'auth'] })\n .input(IamLoginInputSchema)\n .output(authResultOutputSchema),\n loginWithOtp: route({ method: 'POST', path: '/auth/login/otp', operationId: 'iam.auth.loginWithOtp', summary: 'OTP login', tags: ['iam', 'auth'] })\n .input(IamOtpLoginInputSchema)\n .output(authResultOutputSchema),\n logout: route({ method: 'POST', path: '/auth/logout', operationId: 'iam.auth.logout', summary: 'Logout', tags: ['iam', 'auth'] })\n .input(IamLogoutInputSchema)\n .output(HaiVoidResultSchema),\n currentUser: route({ method: 'GET', path: '/auth/me', operationId: 'iam.auth.currentUser', summary: 'Get current user and access scope', tags: ['iam', 'auth'] })\n .output(haiResultSchema(IamCurrentUserSchema)),\n refresh: route({ method: 'POST', path: '/auth/refresh', operationId: 'iam.auth.refresh', summary: 'Refresh access token', tags: ['iam', 'auth'] })\n .input(IamRefreshTokenInputSchema)\n .output(haiResultSchema(IamRefreshTokenDataSchema)),\n sendOtp: route({ method: 'POST', path: '/auth/otp/send', operationId: 'iam.auth.sendOtp', summary: 'Send OTP', tags: ['iam', 'auth'] })\n .input(IamSendOtpInputSchema)\n .output(haiResultSchema(IamSendOtpDataSchema)),\n register: route({ method: 'POST', path: '/auth/register', operationId: 'iam.auth.register', summary: 'Register and login', tags: ['iam', 'auth'] })\n .input(IamRegisterInputSchema)\n .output(authResultOutputSchema),\n changePassword: route({ method: 'POST', path: '/auth/change-password', operationId: 'iam.auth.changePassword', summary: 'Change current user password', tags: ['iam', 'auth'] })\n .input(IamChangePasswordInputSchema)\n .output(HaiVoidResultSchema),\n updateCurrentUser: route({ method: 'PUT', path: '/auth/me', operationId: 'iam.auth.updateCurrentUser', summary: 'Update current user', tags: ['iam', 'auth'] })\n .input(IamUpdateCurrentUserInputSchema)\n .output(userOutputSchema),\n },\n users: {\n list: route({ method: 'GET', path: '/iam/users', operationId: 'iam.users.list', summary: 'List users', tags: ['iam', 'users'] })\n .input(IamListUsersInputSchema)\n .output(haiResultSchema(paginatedSchema(IamUserSchema))),\n get: route({ method: 'GET', path: '/iam/users/{id}', operationId: 'iam.users.get', summary: 'Get user', tags: ['iam', 'users'] })\n .input(IamUserIdInputSchema)\n .output(haiResultSchema(IamUserSchema.nullable())),\n create: route({ method: 'POST', path: '/iam/users', operationId: 'iam.users.create', summary: 'Create user', tags: ['iam', 'users'] })\n .input(IamAdminCreateUserInputSchema)\n .output(userOutputSchema),\n update: route({ method: 'PUT', path: '/iam/users/{id}', operationId: 'iam.users.update', summary: 'Update user', tags: ['iam', 'users'] })\n .input(IamAdminUpdateUserInputSchema)\n .output(userOutputSchema),\n delete: route({ method: 'DELETE', path: '/iam/users/{id}', operationId: 'iam.users.delete', summary: 'Delete user', tags: ['iam', 'users'] })\n .input(IamUserIdInputSchema)\n .output(HaiVoidResultSchema),\n resetPassword: route({ method: 'POST', path: '/iam/users/{id}/reset-password', operationId: 'iam.users.resetPassword', summary: 'Reset user password', tags: ['iam', 'users'] })\n .input(IamAdminResetPasswordInputSchema)\n .output(HaiVoidResultSchema),\n },\n roles: {\n list: route({ method: 'GET', path: '/iam/roles', operationId: 'iam.roles.list', summary: 'List roles', tags: ['iam', 'roles'] })\n .output(haiResultSchema(paginatedSchema(IamRoleSchema))),\n get: route({ method: 'GET', path: '/iam/roles/{id}', operationId: 'iam.roles.get', summary: 'Get role', tags: ['iam', 'roles'] })\n .input(IamUserIdInputSchema)\n .output(haiResultSchema(IamRoleSchema.nullable())),\n create: route({ method: 'POST', path: '/iam/roles', operationId: 'iam.roles.create', summary: 'Create role', tags: ['iam', 'roles'] })\n .input(IamCreateRoleInputSchema)\n .output(roleOutputSchema),\n update: route({ method: 'PUT', path: '/iam/roles/{id}', operationId: 'iam.roles.update', summary: 'Update role', tags: ['iam', 'roles'] })\n .input(IamUpdateRoleInputSchema)\n .output(roleOutputSchema),\n delete: route({ method: 'DELETE', path: '/iam/roles/{id}', operationId: 'iam.roles.delete', summary: 'Delete role', tags: ['iam', 'roles'] })\n .input(IamUserIdInputSchema)\n .output(HaiVoidResultSchema),\n },\n permissions: {\n list: route({ method: 'GET', path: '/iam/permissions', operationId: 'iam.permissions.list', summary: 'List permissions', tags: ['iam', 'permissions'] })\n .input(IamListPermissionsInputSchema)\n .output(haiResultSchema(paginatedSchema(IamPermissionSchema))),\n get: route({ method: 'GET', path: '/iam/permissions/{id}', operationId: 'iam.permissions.get', summary: 'Get permission', tags: ['iam', 'permissions'] })\n .input(IamUserIdInputSchema)\n .output(haiResultSchema(IamPermissionSchema.nullable())),\n create: route({ method: 'POST', path: '/iam/permissions', operationId: 'iam.permissions.create', summary: 'Create permission', tags: ['iam', 'permissions'] })\n .input(IamCreatePermissionInputSchema)\n .output(haiResultSchema(IamPermissionSchema)),\n delete: route({ method: 'DELETE', path: '/iam/permissions/{id}', operationId: 'iam.permissions.delete', summary: 'Delete permission', tags: ['iam', 'permissions'] })\n .input(IamUserIdInputSchema)\n .output(HaiVoidResultSchema),\n },\n}\n\nexport type IamContract = typeof iamContract\n"]}
|
package/dist/iam/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import * as _orpc_contract from '@orpc/contract';
|
|
2
1
|
import * as zod_v4_core from 'zod/v4/core';
|
|
3
2
|
import * as zod from 'zod';
|
|
4
3
|
import { z } from 'zod';
|
|
4
|
+
import * as _orpc_contract from '@orpc/contract';
|
|
5
5
|
import { HaiResult } from '@h-ai/core';
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -19,6 +19,163 @@ import { HaiResult } from '@h-ai/core';
|
|
|
19
19
|
/** IAM 领域 oRPC contract。 */
|
|
20
20
|
declare const iamContract: {
|
|
21
21
|
auth: {
|
|
22
|
+
publicConfig: _orpc_contract.ContractProcedureBuilderWithOutput<_orpc_contract.Schema<unknown, unknown>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
|
|
23
|
+
success: zod.ZodLiteral<true>;
|
|
24
|
+
data: zod.ZodNullable<zod.ZodObject<{
|
|
25
|
+
password: zod.ZodObject<{
|
|
26
|
+
minLength: zod.ZodNumber;
|
|
27
|
+
maxLength: zod.ZodNumber;
|
|
28
|
+
requireUppercase: zod.ZodBoolean;
|
|
29
|
+
requireLowercase: zod.ZodBoolean;
|
|
30
|
+
requireNumber: zod.ZodBoolean;
|
|
31
|
+
requireSpecialChar: zod.ZodBoolean;
|
|
32
|
+
expirationDays: zod.ZodNumber;
|
|
33
|
+
}, zod_v4_core.$strip>;
|
|
34
|
+
register: zod.ZodObject<{
|
|
35
|
+
enabled: zod.ZodBoolean;
|
|
36
|
+
}, zod_v4_core.$strip>;
|
|
37
|
+
login: zod.ZodObject<{
|
|
38
|
+
password: zod.ZodBoolean;
|
|
39
|
+
otp: zod.ZodBoolean;
|
|
40
|
+
ldap: zod.ZodBoolean;
|
|
41
|
+
email: zod.ZodBoolean;
|
|
42
|
+
sms: zod.ZodBoolean;
|
|
43
|
+
}, zod_v4_core.$strip>;
|
|
44
|
+
passwordReset: zod.ZodObject<{
|
|
45
|
+
enabled: zod.ZodBoolean;
|
|
46
|
+
mode: zod.ZodEnum<{
|
|
47
|
+
email: "email";
|
|
48
|
+
phone: "phone";
|
|
49
|
+
}>;
|
|
50
|
+
}, zod_v4_core.$strip>;
|
|
51
|
+
otp: zod.ZodObject<{
|
|
52
|
+
length: zod.ZodNumber;
|
|
53
|
+
resendInterval: zod.ZodNumber;
|
|
54
|
+
}, zod_v4_core.$strip>;
|
|
55
|
+
agreements: zod.ZodObject<{
|
|
56
|
+
userAgreementMarkdown: zod.ZodOptional<zod.ZodString>;
|
|
57
|
+
privacyPolicyMarkdown: zod.ZodOptional<zod.ZodString>;
|
|
58
|
+
userAgreementUrl: zod.ZodOptional<zod.ZodString>;
|
|
59
|
+
privacyPolicyUrl: zod.ZodOptional<zod.ZodString>;
|
|
60
|
+
showOnRegister: zod.ZodBoolean;
|
|
61
|
+
showOnLogin: zod.ZodBoolean;
|
|
62
|
+
}, zod_v4_core.$strip>;
|
|
63
|
+
ui: zod.ZodObject<{
|
|
64
|
+
variant: zod.ZodEnum<{
|
|
65
|
+
split: "split";
|
|
66
|
+
card: "card";
|
|
67
|
+
}>;
|
|
68
|
+
title: zod.ZodOptional<zod.ZodString>;
|
|
69
|
+
subtitle: zod.ZodOptional<zod.ZodString>;
|
|
70
|
+
brandTitle: zod.ZodOptional<zod.ZodString>;
|
|
71
|
+
brandText: zod.ZodOptional<zod.ZodString>;
|
|
72
|
+
logoUrl: zod.ZodOptional<zod.ZodString>;
|
|
73
|
+
illustrationUrl: zod.ZodOptional<zod.ZodString>;
|
|
74
|
+
}, zod_v4_core.$strip>;
|
|
75
|
+
session: zod.ZodObject<{
|
|
76
|
+
maxAge: zod.ZodNumber;
|
|
77
|
+
}, zod_v4_core.$strip>;
|
|
78
|
+
}, zod_v4_core.$strip>>;
|
|
79
|
+
}, zod_v4_core.$strip>, zod.ZodObject<{
|
|
80
|
+
success: zod.ZodLiteral<false>;
|
|
81
|
+
error: zod.ZodObject<{
|
|
82
|
+
code: zod.ZodUnion<readonly [zod.ZodString, zod.ZodNumber]>;
|
|
83
|
+
message: zod.ZodString;
|
|
84
|
+
httpStatus: zod.ZodOptional<zod.ZodNumber>;
|
|
85
|
+
system: zod.ZodOptional<zod.ZodString>;
|
|
86
|
+
module: zod.ZodOptional<zod.ZodString>;
|
|
87
|
+
cause: zod.ZodOptional<zod.ZodUnknown>;
|
|
88
|
+
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
89
|
+
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
90
|
+
}, zod_v4_core.$strip>;
|
|
91
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>;
|
|
92
|
+
loginWithLdap: _orpc_contract.ContractProcedureBuilderWithInputOutput<zod.ZodObject<{
|
|
93
|
+
username: zod.ZodString;
|
|
94
|
+
password: zod.ZodString;
|
|
95
|
+
}, zod_v4_core.$strip>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
|
|
96
|
+
success: zod.ZodLiteral<true>;
|
|
97
|
+
data: zod.ZodObject<{
|
|
98
|
+
user: zod.ZodObject<{
|
|
99
|
+
id: zod.ZodString;
|
|
100
|
+
username: zod.ZodString;
|
|
101
|
+
email: zod.ZodOptional<zod.ZodString>;
|
|
102
|
+
phone: zod.ZodOptional<zod.ZodString>;
|
|
103
|
+
displayName: zod.ZodOptional<zod.ZodString>;
|
|
104
|
+
avatarUrl: zod.ZodOptional<zod.ZodString>;
|
|
105
|
+
enabled: zod.ZodBoolean;
|
|
106
|
+
emailVerified: zod.ZodOptional<zod.ZodBoolean>;
|
|
107
|
+
phoneVerified: zod.ZodOptional<zod.ZodBoolean>;
|
|
108
|
+
createdAt: zod.ZodCoercedDate<unknown>;
|
|
109
|
+
updatedAt: zod.ZodCoercedDate<unknown>;
|
|
110
|
+
metadata: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
111
|
+
}, zod_v4_core.$strip>;
|
|
112
|
+
tokens: zod.ZodObject<{
|
|
113
|
+
accessToken: zod.ZodString;
|
|
114
|
+
refreshToken: zod.ZodOptional<zod.ZodString>;
|
|
115
|
+
expiresIn: zod.ZodNumber;
|
|
116
|
+
tokenType: zod.ZodLiteral<"Bearer">;
|
|
117
|
+
}, zod_v4_core.$strip>;
|
|
118
|
+
roles: zod.ZodDefault<zod.ZodArray<zod.ZodString>>;
|
|
119
|
+
permissions: zod.ZodDefault<zod.ZodArray<zod.ZodString>>;
|
|
120
|
+
agreements: zod.ZodOptional<zod.ZodObject<{
|
|
121
|
+
userAgreementMarkdown: zod.ZodOptional<zod.ZodString>;
|
|
122
|
+
privacyPolicyMarkdown: zod.ZodOptional<zod.ZodString>;
|
|
123
|
+
userAgreementUrl: zod.ZodOptional<zod.ZodString>;
|
|
124
|
+
privacyPolicyUrl: zod.ZodOptional<zod.ZodString>;
|
|
125
|
+
showOnRegister: zod.ZodBoolean;
|
|
126
|
+
showOnLogin: zod.ZodBoolean;
|
|
127
|
+
}, zod_v4_core.$strip>>;
|
|
128
|
+
}, zod_v4_core.$strip>;
|
|
129
|
+
}, zod_v4_core.$strip>, zod.ZodObject<{
|
|
130
|
+
success: zod.ZodLiteral<false>;
|
|
131
|
+
error: zod.ZodObject<{
|
|
132
|
+
code: zod.ZodUnion<readonly [zod.ZodString, zod.ZodNumber]>;
|
|
133
|
+
message: zod.ZodString;
|
|
134
|
+
httpStatus: zod.ZodOptional<zod.ZodNumber>;
|
|
135
|
+
system: zod.ZodOptional<zod.ZodString>;
|
|
136
|
+
module: zod.ZodOptional<zod.ZodString>;
|
|
137
|
+
cause: zod.ZodOptional<zod.ZodUnknown>;
|
|
138
|
+
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
139
|
+
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
140
|
+
}, zod_v4_core.$strip>;
|
|
141
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>;
|
|
142
|
+
requestPasswordReset: _orpc_contract.ContractProcedureBuilderWithInputOutput<zod.ZodObject<{
|
|
143
|
+
identifier: zod.ZodString;
|
|
144
|
+
}, zod_v4_core.$strip>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
|
|
145
|
+
success: zod.ZodLiteral<true>;
|
|
146
|
+
data: zod.ZodVoid;
|
|
147
|
+
}, zod_v4_core.$strip>, zod.ZodObject<{
|
|
148
|
+
success: zod.ZodLiteral<false>;
|
|
149
|
+
error: zod.ZodObject<{
|
|
150
|
+
code: zod.ZodUnion<readonly [zod.ZodString, zod.ZodNumber]>;
|
|
151
|
+
message: zod.ZodString;
|
|
152
|
+
httpStatus: zod.ZodOptional<zod.ZodNumber>;
|
|
153
|
+
system: zod.ZodOptional<zod.ZodString>;
|
|
154
|
+
module: zod.ZodOptional<zod.ZodString>;
|
|
155
|
+
cause: zod.ZodOptional<zod.ZodUnknown>;
|
|
156
|
+
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
157
|
+
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
158
|
+
}, zod_v4_core.$strip>;
|
|
159
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>;
|
|
160
|
+
confirmPasswordReset: _orpc_contract.ContractProcedureBuilderWithInputOutput<zod.ZodObject<{
|
|
161
|
+
token: zod.ZodString;
|
|
162
|
+
newPassword: zod.ZodString;
|
|
163
|
+
}, zod_v4_core.$strip>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
|
|
164
|
+
success: zod.ZodLiteral<true>;
|
|
165
|
+
data: zod.ZodVoid;
|
|
166
|
+
}, zod_v4_core.$strip>, zod.ZodObject<{
|
|
167
|
+
success: zod.ZodLiteral<false>;
|
|
168
|
+
error: zod.ZodObject<{
|
|
169
|
+
code: zod.ZodUnion<readonly [zod.ZodString, zod.ZodNumber]>;
|
|
170
|
+
message: zod.ZodString;
|
|
171
|
+
httpStatus: zod.ZodOptional<zod.ZodNumber>;
|
|
172
|
+
system: zod.ZodOptional<zod.ZodString>;
|
|
173
|
+
module: zod.ZodOptional<zod.ZodString>;
|
|
174
|
+
cause: zod.ZodOptional<zod.ZodUnknown>;
|
|
175
|
+
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
176
|
+
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
177
|
+
}, zod_v4_core.$strip>;
|
|
178
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>;
|
|
22
179
|
login: _orpc_contract.ContractProcedureBuilderWithInputOutput<zod.ZodObject<{
|
|
23
180
|
identifier: zod.ZodString;
|
|
24
181
|
password: zod.ZodString;
|
|
@@ -49,6 +206,8 @@ declare const iamContract: {
|
|
|
49
206
|
roles: zod.ZodDefault<zod.ZodArray<zod.ZodString>>;
|
|
50
207
|
permissions: zod.ZodDefault<zod.ZodArray<zod.ZodString>>;
|
|
51
208
|
agreements: zod.ZodOptional<zod.ZodObject<{
|
|
209
|
+
userAgreementMarkdown: zod.ZodOptional<zod.ZodString>;
|
|
210
|
+
privacyPolicyMarkdown: zod.ZodOptional<zod.ZodString>;
|
|
52
211
|
userAgreementUrl: zod.ZodOptional<zod.ZodString>;
|
|
53
212
|
privacyPolicyUrl: zod.ZodOptional<zod.ZodString>;
|
|
54
213
|
showOnRegister: zod.ZodBoolean;
|
|
@@ -97,6 +256,8 @@ declare const iamContract: {
|
|
|
97
256
|
roles: zod.ZodDefault<zod.ZodArray<zod.ZodString>>;
|
|
98
257
|
permissions: zod.ZodDefault<zod.ZodArray<zod.ZodString>>;
|
|
99
258
|
agreements: zod.ZodOptional<zod.ZodObject<{
|
|
259
|
+
userAgreementMarkdown: zod.ZodOptional<zod.ZodString>;
|
|
260
|
+
privacyPolicyMarkdown: zod.ZodOptional<zod.ZodString>;
|
|
100
261
|
userAgreementUrl: zod.ZodOptional<zod.ZodString>;
|
|
101
262
|
privacyPolicyUrl: zod.ZodOptional<zod.ZodString>;
|
|
102
263
|
showOnRegister: zod.ZodBoolean;
|
|
@@ -243,6 +404,8 @@ declare const iamContract: {
|
|
|
243
404
|
roles: zod.ZodDefault<zod.ZodArray<zod.ZodString>>;
|
|
244
405
|
permissions: zod.ZodDefault<zod.ZodArray<zod.ZodString>>;
|
|
245
406
|
agreements: zod.ZodOptional<zod.ZodObject<{
|
|
407
|
+
userAgreementMarkdown: zod.ZodOptional<zod.ZodString>;
|
|
408
|
+
privacyPolicyMarkdown: zod.ZodOptional<zod.ZodString>;
|
|
246
409
|
userAgreementUrl: zod.ZodOptional<zod.ZodString>;
|
|
247
410
|
privacyPolicyUrl: zod.ZodOptional<zod.ZodString>;
|
|
248
411
|
showOnRegister: zod.ZodBoolean;
|
|
@@ -811,6 +974,8 @@ declare const IamTokenPairSchema: z.ZodObject<{
|
|
|
811
974
|
}, z.core.$strip>;
|
|
812
975
|
/** 协议展示 Schema。 */
|
|
813
976
|
declare const IamAgreementDisplaySchema: z.ZodObject<{
|
|
977
|
+
userAgreementMarkdown: z.ZodOptional<z.ZodString>;
|
|
978
|
+
privacyPolicyMarkdown: z.ZodOptional<z.ZodString>;
|
|
814
979
|
userAgreementUrl: z.ZodOptional<z.ZodString>;
|
|
815
980
|
privacyPolicyUrl: z.ZodOptional<z.ZodString>;
|
|
816
981
|
showOnRegister: z.ZodBoolean;
|
|
@@ -841,6 +1006,8 @@ declare const IamAuthResultSchema: z.ZodObject<{
|
|
|
841
1006
|
roles: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
842
1007
|
permissions: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
843
1008
|
agreements: z.ZodOptional<z.ZodObject<{
|
|
1009
|
+
userAgreementMarkdown: z.ZodOptional<z.ZodString>;
|
|
1010
|
+
privacyPolicyMarkdown: z.ZodOptional<z.ZodString>;
|
|
844
1011
|
userAgreementUrl: z.ZodOptional<z.ZodString>;
|
|
845
1012
|
privacyPolicyUrl: z.ZodOptional<z.ZodString>;
|
|
846
1013
|
showOnRegister: z.ZodBoolean;
|
|
@@ -870,6 +1037,74 @@ declare const IamLoginInputSchema: z.ZodObject<{
|
|
|
870
1037
|
password: z.ZodString;
|
|
871
1038
|
rememberMe: z.ZodOptional<z.ZodBoolean>;
|
|
872
1039
|
}, z.core.$strip>;
|
|
1040
|
+
/** LDAP 登录与密码找回入参。 */
|
|
1041
|
+
declare const IamLdapLoginInputSchema: z.ZodObject<{
|
|
1042
|
+
username: z.ZodString;
|
|
1043
|
+
password: z.ZodString;
|
|
1044
|
+
}, z.core.$strip>;
|
|
1045
|
+
declare const IamRequestPasswordResetInputSchema: z.ZodObject<{
|
|
1046
|
+
identifier: z.ZodString;
|
|
1047
|
+
}, z.core.$strip>;
|
|
1048
|
+
declare const IamConfirmPasswordResetInputSchema: z.ZodObject<{
|
|
1049
|
+
token: z.ZodString;
|
|
1050
|
+
newPassword: z.ZodString;
|
|
1051
|
+
}, z.core.$strip>;
|
|
1052
|
+
/** 认证页面公开配置白名单,独立于服务端连接/凭据配置。 */
|
|
1053
|
+
declare const IamPublicConfigSchema: z.ZodObject<{
|
|
1054
|
+
password: z.ZodObject<{
|
|
1055
|
+
minLength: z.ZodNumber;
|
|
1056
|
+
maxLength: z.ZodNumber;
|
|
1057
|
+
requireUppercase: z.ZodBoolean;
|
|
1058
|
+
requireLowercase: z.ZodBoolean;
|
|
1059
|
+
requireNumber: z.ZodBoolean;
|
|
1060
|
+
requireSpecialChar: z.ZodBoolean;
|
|
1061
|
+
expirationDays: z.ZodNumber;
|
|
1062
|
+
}, z.core.$strip>;
|
|
1063
|
+
register: z.ZodObject<{
|
|
1064
|
+
enabled: z.ZodBoolean;
|
|
1065
|
+
}, z.core.$strip>;
|
|
1066
|
+
login: z.ZodObject<{
|
|
1067
|
+
password: z.ZodBoolean;
|
|
1068
|
+
otp: z.ZodBoolean;
|
|
1069
|
+
ldap: z.ZodBoolean;
|
|
1070
|
+
email: z.ZodBoolean;
|
|
1071
|
+
sms: z.ZodBoolean;
|
|
1072
|
+
}, z.core.$strip>;
|
|
1073
|
+
passwordReset: z.ZodObject<{
|
|
1074
|
+
enabled: z.ZodBoolean;
|
|
1075
|
+
mode: z.ZodEnum<{
|
|
1076
|
+
email: "email";
|
|
1077
|
+
phone: "phone";
|
|
1078
|
+
}>;
|
|
1079
|
+
}, z.core.$strip>;
|
|
1080
|
+
otp: z.ZodObject<{
|
|
1081
|
+
length: z.ZodNumber;
|
|
1082
|
+
resendInterval: z.ZodNumber;
|
|
1083
|
+
}, z.core.$strip>;
|
|
1084
|
+
agreements: z.ZodObject<{
|
|
1085
|
+
userAgreementMarkdown: z.ZodOptional<z.ZodString>;
|
|
1086
|
+
privacyPolicyMarkdown: z.ZodOptional<z.ZodString>;
|
|
1087
|
+
userAgreementUrl: z.ZodOptional<z.ZodString>;
|
|
1088
|
+
privacyPolicyUrl: z.ZodOptional<z.ZodString>;
|
|
1089
|
+
showOnRegister: z.ZodBoolean;
|
|
1090
|
+
showOnLogin: z.ZodBoolean;
|
|
1091
|
+
}, z.core.$strip>;
|
|
1092
|
+
ui: z.ZodObject<{
|
|
1093
|
+
variant: z.ZodEnum<{
|
|
1094
|
+
split: "split";
|
|
1095
|
+
card: "card";
|
|
1096
|
+
}>;
|
|
1097
|
+
title: z.ZodOptional<z.ZodString>;
|
|
1098
|
+
subtitle: z.ZodOptional<z.ZodString>;
|
|
1099
|
+
brandTitle: z.ZodOptional<z.ZodString>;
|
|
1100
|
+
brandText: z.ZodOptional<z.ZodString>;
|
|
1101
|
+
logoUrl: z.ZodOptional<z.ZodString>;
|
|
1102
|
+
illustrationUrl: z.ZodOptional<z.ZodString>;
|
|
1103
|
+
}, z.core.$strip>;
|
|
1104
|
+
session: z.ZodObject<{
|
|
1105
|
+
maxAge: z.ZodNumber;
|
|
1106
|
+
}, z.core.$strip>;
|
|
1107
|
+
}, z.core.$strip>;
|
|
873
1108
|
/** OTP 登录入参 Schema。 */
|
|
874
1109
|
declare const IamOtpLoginInputSchema: z.ZodObject<{
|
|
875
1110
|
identifier: z.ZodString;
|
|
@@ -1035,6 +1270,8 @@ declare const IamCreatePermissionInputSchema: z.ZodObject<{
|
|
|
1035
1270
|
}>>;
|
|
1036
1271
|
}, z.core.$strip>;
|
|
1037
1272
|
type IamLoginInput = z.infer<typeof IamLoginInputSchema>;
|
|
1273
|
+
type IamLdapLoginInput = z.infer<typeof IamLdapLoginInputSchema>;
|
|
1274
|
+
type IamPublicConfig = z.infer<typeof IamPublicConfigSchema>;
|
|
1038
1275
|
type IamOtpLoginInput = z.infer<typeof IamOtpLoginInputSchema>;
|
|
1039
1276
|
type IamLogoutInput = z.infer<typeof IamLogoutInputSchema>;
|
|
1040
1277
|
type IamSendOtpInput = z.infer<typeof IamSendOtpInputSchema>;
|
|
@@ -1056,4 +1293,4 @@ type IamUpdateRoleInput = z.infer<typeof IamUpdateRoleInputSchema>;
|
|
|
1056
1293
|
type IamListPermissionsInput = z.infer<typeof IamListPermissionsInputSchema>;
|
|
1057
1294
|
type IamCreatePermissionInput = z.infer<typeof IamCreatePermissionInputSchema>;
|
|
1058
1295
|
|
|
1059
|
-
export { type IamAdminCreateUserInput, IamAdminCreateUserInputSchema, type IamAdminResetPasswordInput, IamAdminResetPasswordInputSchema, type IamAdminUpdateUserInput, IamAdminUpdateUserInputSchema, IamAgreementDisplaySchema, type IamAuthResultOutput, IamAuthResultSchema, type IamChangePasswordInput, IamChangePasswordInputSchema, type IamContract, type IamCreatePermissionInput, IamCreatePermissionInputSchema, type IamCreateRoleInput, IamCreateRoleInputSchema, type IamCurrentUser, type IamCurrentUserOutput, IamCurrentUserSchema, type IamListPermissionsInput, IamListPermissionsInputSchema, type IamListUsersInput, IamListUsersInputSchema, type IamLoginInput, IamLoginInputSchema, type IamLogoutInput, IamLogoutInputSchema, type IamOtpLoginInput, IamOtpLoginInputSchema, IamPermissionSchema, IamPermissionTypeSchema, IamRefreshTokenDataSchema, type IamRefreshTokenInput, IamRefreshTokenInputSchema, type IamRefreshTokenOutput, type IamRegisterInput, IamRegisterInputSchema, IamRoleSchema, IamSendOtpDataSchema, type IamSendOtpInput, IamSendOtpInputSchema, IamTokenPairSchema, type IamUpdateCurrentUserInput, IamUpdateCurrentUserInputSchema, type IamUpdateRoleInput, IamUpdateRoleInputSchema, type IamUserIdInput, IamUserIdInputSchema, IamUserSchema, iamContract };
|
|
1296
|
+
export { type IamAdminCreateUserInput, IamAdminCreateUserInputSchema, type IamAdminResetPasswordInput, IamAdminResetPasswordInputSchema, type IamAdminUpdateUserInput, IamAdminUpdateUserInputSchema, IamAgreementDisplaySchema, type IamAuthResultOutput, IamAuthResultSchema, type IamChangePasswordInput, IamChangePasswordInputSchema, IamConfirmPasswordResetInputSchema, type IamContract, type IamCreatePermissionInput, IamCreatePermissionInputSchema, type IamCreateRoleInput, IamCreateRoleInputSchema, type IamCurrentUser, type IamCurrentUserOutput, IamCurrentUserSchema, type IamLdapLoginInput, IamLdapLoginInputSchema, type IamListPermissionsInput, IamListPermissionsInputSchema, type IamListUsersInput, IamListUsersInputSchema, type IamLoginInput, IamLoginInputSchema, type IamLogoutInput, IamLogoutInputSchema, type IamOtpLoginInput, IamOtpLoginInputSchema, IamPermissionSchema, IamPermissionTypeSchema, type IamPublicConfig, IamPublicConfigSchema, IamRefreshTokenDataSchema, type IamRefreshTokenInput, IamRefreshTokenInputSchema, type IamRefreshTokenOutput, type IamRegisterInput, IamRegisterInputSchema, IamRequestPasswordResetInputSchema, IamRoleSchema, IamSendOtpDataSchema, type IamSendOtpInput, IamSendOtpInputSchema, IamTokenPairSchema, type IamUpdateCurrentUserInput, IamUpdateCurrentUserInputSchema, type IamUpdateRoleInput, IamUpdateRoleInputSchema, type IamUserIdInput, IamUserIdInputSchema, IamUserSchema, iamContract };
|
package/dist/iam/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { IamAdminCreateUserInputSchema, IamAdminResetPasswordInputSchema, IamAdminUpdateUserInputSchema, IamAgreementDisplaySchema, IamAuthResultSchema, IamChangePasswordInputSchema, IamCreatePermissionInputSchema, IamCreateRoleInputSchema, IamCurrentUserSchema, IamListPermissionsInputSchema, IamListUsersInputSchema, IamLoginInputSchema, IamLogoutInputSchema, IamOtpLoginInputSchema, IamPermissionSchema, IamPermissionTypeSchema, IamRefreshTokenDataSchema, IamRefreshTokenInputSchema, IamRegisterInputSchema, IamRoleSchema, IamSendOtpDataSchema, IamSendOtpInputSchema, IamTokenPairSchema, IamUpdateCurrentUserInputSchema, IamUpdateRoleInputSchema, IamUserIdInputSchema, IamUserSchema, iamContract } from '../chunk-
|
|
1
|
+
export { IamAdminCreateUserInputSchema, IamAdminResetPasswordInputSchema, IamAdminUpdateUserInputSchema, IamAgreementDisplaySchema, IamAuthResultSchema, IamChangePasswordInputSchema, IamConfirmPasswordResetInputSchema, IamCreatePermissionInputSchema, IamCreateRoleInputSchema, IamCurrentUserSchema, IamLdapLoginInputSchema, IamListPermissionsInputSchema, IamListUsersInputSchema, IamLoginInputSchema, IamLogoutInputSchema, IamOtpLoginInputSchema, IamPermissionSchema, IamPermissionTypeSchema, IamPublicConfigSchema, IamRefreshTokenDataSchema, IamRefreshTokenInputSchema, IamRegisterInputSchema, IamRequestPasswordResetInputSchema, IamRoleSchema, IamSendOtpDataSchema, IamSendOtpInputSchema, IamTokenPairSchema, IamUpdateCurrentUserInputSchema, IamUpdateRoleInputSchema, IamUserIdInputSchema, IamUserSchema, iamContract } from '../chunk-APZWTGQD.js';
|
|
2
2
|
import '../chunk-CUU2F6YD.js';
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
package/dist/index.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { AnyContractProcedure, AnyContractRouter } from '@orpc/contract';
|
|
|
4
4
|
import * as zod_v4_core from 'zod/v4/core';
|
|
5
5
|
import * as zod from 'zod';
|
|
6
6
|
import { z } from 'zod';
|
|
7
|
-
export { IamAdminCreateUserInput, IamAdminCreateUserInputSchema, IamAdminResetPasswordInput, IamAdminResetPasswordInputSchema, IamAdminUpdateUserInput, IamAdminUpdateUserInputSchema, IamAgreementDisplaySchema, IamAuthResultOutput, IamAuthResultSchema, IamChangePasswordInput, IamChangePasswordInputSchema, IamContract, IamCreatePermissionInput, IamCreatePermissionInputSchema, IamCreateRoleInput, IamCreateRoleInputSchema, IamCurrentUser, IamCurrentUserOutput, IamCurrentUserSchema, IamListPermissionsInput, IamListPermissionsInputSchema, IamListUsersInput, IamListUsersInputSchema, IamLoginInput, IamLoginInputSchema, IamLogoutInput, IamLogoutInputSchema, IamOtpLoginInput, IamOtpLoginInputSchema, IamPermissionSchema, IamPermissionTypeSchema, IamRefreshTokenDataSchema, IamRefreshTokenInput, IamRefreshTokenInputSchema, IamRefreshTokenOutput, IamRegisterInput, IamRegisterInputSchema, IamRoleSchema, IamSendOtpDataSchema, IamSendOtpInput, IamSendOtpInputSchema, IamTokenPairSchema, IamUpdateCurrentUserInput, IamUpdateCurrentUserInputSchema, IamUpdateRoleInput, IamUpdateRoleInputSchema, IamUserIdInput, IamUserIdInputSchema, IamUserSchema } from './iam/index.js';
|
|
7
|
+
export { IamAdminCreateUserInput, IamAdminCreateUserInputSchema, IamAdminResetPasswordInput, IamAdminResetPasswordInputSchema, IamAdminUpdateUserInput, IamAdminUpdateUserInputSchema, IamAgreementDisplaySchema, IamAuthResultOutput, IamAuthResultSchema, IamChangePasswordInput, IamChangePasswordInputSchema, IamConfirmPasswordResetInputSchema, IamContract, IamCreatePermissionInput, IamCreatePermissionInputSchema, IamCreateRoleInput, IamCreateRoleInputSchema, IamCurrentUser, IamCurrentUserOutput, IamCurrentUserSchema, IamLdapLoginInput, IamLdapLoginInputSchema, IamListPermissionsInput, IamListPermissionsInputSchema, IamListUsersInput, IamListUsersInputSchema, IamLoginInput, IamLoginInputSchema, IamLogoutInput, IamLogoutInputSchema, IamOtpLoginInput, IamOtpLoginInputSchema, IamPermissionSchema, IamPermissionTypeSchema, IamPublicConfig, IamPublicConfigSchema, IamRefreshTokenDataSchema, IamRefreshTokenInput, IamRefreshTokenInputSchema, IamRefreshTokenOutput, IamRegisterInput, IamRegisterInputSchema, IamRequestPasswordResetInputSchema, IamRoleSchema, IamSendOtpDataSchema, IamSendOtpInput, IamSendOtpInputSchema, IamTokenPairSchema, IamUpdateCurrentUserInput, IamUpdateCurrentUserInputSchema, IamUpdateRoleInput, IamUpdateRoleInputSchema, IamUserIdInput, IamUserIdInputSchema, IamUserSchema } from './iam/index.js';
|
|
8
8
|
export { PaymentContract, PaymentCreateOrderDataSchema, PaymentCreateOrderInput, PaymentCreateOrderInputSchema, PaymentCreateOrderOutput, PaymentNotifyMessageSchema, PaymentOrderSchema, PaymentProviderSchema, PaymentQueryOrderInputSchema, PaymentRefundDataSchema, PaymentRefundInput, PaymentRefundInputSchema, PaymentStripeNotifyDataSchema, PaymentTradeTypeSchema } from './payment/index.js';
|
|
9
9
|
export { StorageContract, StorageDeleteFilesInput, StorageDeleteFilesInputSchema, StorageFileKeyInput, StorageFileKeyInputSchema, StorageFileMetadataSchema, StorageListFilesDataSchema, StorageListFilesInput, StorageListFilesInputSchema, StoragePresignDownloadInput, StoragePresignDownloadInputSchema, StoragePresignUploadInput, StoragePresignUploadInputSchema, StoragePresignedUrlOutput, StoragePresignedUrlSchema } from './storage/index.js';
|
|
10
10
|
import '@h-ai/core';
|
|
@@ -195,6 +195,163 @@ declare const apiContract: {
|
|
|
195
195
|
/** IAM 领域 contract(认证 / 用户 / 角色 / 权限)。 */
|
|
196
196
|
iam: {
|
|
197
197
|
auth: {
|
|
198
|
+
publicConfig: _orpc_contract.ContractProcedureBuilderWithOutput<_orpc_contract.Schema<unknown, unknown>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
|
|
199
|
+
success: zod.ZodLiteral<true>;
|
|
200
|
+
data: zod.ZodNullable<zod.ZodObject<{
|
|
201
|
+
password: zod.ZodObject<{
|
|
202
|
+
minLength: zod.ZodNumber;
|
|
203
|
+
maxLength: zod.ZodNumber;
|
|
204
|
+
requireUppercase: zod.ZodBoolean;
|
|
205
|
+
requireLowercase: zod.ZodBoolean;
|
|
206
|
+
requireNumber: zod.ZodBoolean;
|
|
207
|
+
requireSpecialChar: zod.ZodBoolean;
|
|
208
|
+
expirationDays: zod.ZodNumber;
|
|
209
|
+
}, zod_v4_core.$strip>;
|
|
210
|
+
register: zod.ZodObject<{
|
|
211
|
+
enabled: zod.ZodBoolean;
|
|
212
|
+
}, zod_v4_core.$strip>;
|
|
213
|
+
login: zod.ZodObject<{
|
|
214
|
+
password: zod.ZodBoolean;
|
|
215
|
+
otp: zod.ZodBoolean;
|
|
216
|
+
ldap: zod.ZodBoolean;
|
|
217
|
+
email: zod.ZodBoolean;
|
|
218
|
+
sms: zod.ZodBoolean;
|
|
219
|
+
}, zod_v4_core.$strip>;
|
|
220
|
+
passwordReset: zod.ZodObject<{
|
|
221
|
+
enabled: zod.ZodBoolean;
|
|
222
|
+
mode: zod.ZodEnum<{
|
|
223
|
+
email: "email";
|
|
224
|
+
phone: "phone";
|
|
225
|
+
}>;
|
|
226
|
+
}, zod_v4_core.$strip>;
|
|
227
|
+
otp: zod.ZodObject<{
|
|
228
|
+
length: zod.ZodNumber;
|
|
229
|
+
resendInterval: zod.ZodNumber;
|
|
230
|
+
}, zod_v4_core.$strip>;
|
|
231
|
+
agreements: zod.ZodObject<{
|
|
232
|
+
userAgreementMarkdown: zod.ZodOptional<zod.ZodString>;
|
|
233
|
+
privacyPolicyMarkdown: zod.ZodOptional<zod.ZodString>;
|
|
234
|
+
userAgreementUrl: zod.ZodOptional<zod.ZodString>;
|
|
235
|
+
privacyPolicyUrl: zod.ZodOptional<zod.ZodString>;
|
|
236
|
+
showOnRegister: zod.ZodBoolean;
|
|
237
|
+
showOnLogin: zod.ZodBoolean;
|
|
238
|
+
}, zod_v4_core.$strip>;
|
|
239
|
+
ui: zod.ZodObject<{
|
|
240
|
+
variant: zod.ZodEnum<{
|
|
241
|
+
split: "split";
|
|
242
|
+
card: "card";
|
|
243
|
+
}>;
|
|
244
|
+
title: zod.ZodOptional<zod.ZodString>;
|
|
245
|
+
subtitle: zod.ZodOptional<zod.ZodString>;
|
|
246
|
+
brandTitle: zod.ZodOptional<zod.ZodString>;
|
|
247
|
+
brandText: zod.ZodOptional<zod.ZodString>;
|
|
248
|
+
logoUrl: zod.ZodOptional<zod.ZodString>;
|
|
249
|
+
illustrationUrl: zod.ZodOptional<zod.ZodString>;
|
|
250
|
+
}, zod_v4_core.$strip>;
|
|
251
|
+
session: zod.ZodObject<{
|
|
252
|
+
maxAge: zod.ZodNumber;
|
|
253
|
+
}, zod_v4_core.$strip>;
|
|
254
|
+
}, zod_v4_core.$strip>>;
|
|
255
|
+
}, zod_v4_core.$strip>, zod.ZodObject<{
|
|
256
|
+
success: zod.ZodLiteral<false>;
|
|
257
|
+
error: zod.ZodObject<{
|
|
258
|
+
code: zod.ZodUnion<readonly [zod.ZodString, zod.ZodNumber]>;
|
|
259
|
+
message: zod.ZodString;
|
|
260
|
+
httpStatus: zod.ZodOptional<zod.ZodNumber>;
|
|
261
|
+
system: zod.ZodOptional<zod.ZodString>;
|
|
262
|
+
module: zod.ZodOptional<zod.ZodString>;
|
|
263
|
+
cause: zod.ZodOptional<zod.ZodUnknown>;
|
|
264
|
+
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
265
|
+
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
266
|
+
}, zod_v4_core.$strip>;
|
|
267
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>;
|
|
268
|
+
loginWithLdap: _orpc_contract.ContractProcedureBuilderWithInputOutput<zod.ZodObject<{
|
|
269
|
+
username: zod.ZodString;
|
|
270
|
+
password: zod.ZodString;
|
|
271
|
+
}, zod_v4_core.$strip>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
|
|
272
|
+
success: zod.ZodLiteral<true>;
|
|
273
|
+
data: zod.ZodObject<{
|
|
274
|
+
user: zod.ZodObject<{
|
|
275
|
+
id: zod.ZodString;
|
|
276
|
+
username: zod.ZodString;
|
|
277
|
+
email: zod.ZodOptional<zod.ZodString>;
|
|
278
|
+
phone: zod.ZodOptional<zod.ZodString>;
|
|
279
|
+
displayName: zod.ZodOptional<zod.ZodString>;
|
|
280
|
+
avatarUrl: zod.ZodOptional<zod.ZodString>;
|
|
281
|
+
enabled: zod.ZodBoolean;
|
|
282
|
+
emailVerified: zod.ZodOptional<zod.ZodBoolean>;
|
|
283
|
+
phoneVerified: zod.ZodOptional<zod.ZodBoolean>;
|
|
284
|
+
createdAt: zod.ZodCoercedDate<unknown>;
|
|
285
|
+
updatedAt: zod.ZodCoercedDate<unknown>;
|
|
286
|
+
metadata: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
287
|
+
}, zod_v4_core.$strip>;
|
|
288
|
+
tokens: zod.ZodObject<{
|
|
289
|
+
accessToken: zod.ZodString;
|
|
290
|
+
refreshToken: zod.ZodOptional<zod.ZodString>;
|
|
291
|
+
expiresIn: zod.ZodNumber;
|
|
292
|
+
tokenType: zod.ZodLiteral<"Bearer">;
|
|
293
|
+
}, zod_v4_core.$strip>;
|
|
294
|
+
roles: zod.ZodDefault<zod.ZodArray<zod.ZodString>>;
|
|
295
|
+
permissions: zod.ZodDefault<zod.ZodArray<zod.ZodString>>;
|
|
296
|
+
agreements: zod.ZodOptional<zod.ZodObject<{
|
|
297
|
+
userAgreementMarkdown: zod.ZodOptional<zod.ZodString>;
|
|
298
|
+
privacyPolicyMarkdown: zod.ZodOptional<zod.ZodString>;
|
|
299
|
+
userAgreementUrl: zod.ZodOptional<zod.ZodString>;
|
|
300
|
+
privacyPolicyUrl: zod.ZodOptional<zod.ZodString>;
|
|
301
|
+
showOnRegister: zod.ZodBoolean;
|
|
302
|
+
showOnLogin: zod.ZodBoolean;
|
|
303
|
+
}, zod_v4_core.$strip>>;
|
|
304
|
+
}, zod_v4_core.$strip>;
|
|
305
|
+
}, zod_v4_core.$strip>, zod.ZodObject<{
|
|
306
|
+
success: zod.ZodLiteral<false>;
|
|
307
|
+
error: zod.ZodObject<{
|
|
308
|
+
code: zod.ZodUnion<readonly [zod.ZodString, zod.ZodNumber]>;
|
|
309
|
+
message: zod.ZodString;
|
|
310
|
+
httpStatus: zod.ZodOptional<zod.ZodNumber>;
|
|
311
|
+
system: zod.ZodOptional<zod.ZodString>;
|
|
312
|
+
module: zod.ZodOptional<zod.ZodString>;
|
|
313
|
+
cause: zod.ZodOptional<zod.ZodUnknown>;
|
|
314
|
+
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
315
|
+
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
316
|
+
}, zod_v4_core.$strip>;
|
|
317
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>;
|
|
318
|
+
requestPasswordReset: _orpc_contract.ContractProcedureBuilderWithInputOutput<zod.ZodObject<{
|
|
319
|
+
identifier: zod.ZodString;
|
|
320
|
+
}, zod_v4_core.$strip>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
|
|
321
|
+
success: zod.ZodLiteral<true>;
|
|
322
|
+
data: zod.ZodVoid;
|
|
323
|
+
}, zod_v4_core.$strip>, zod.ZodObject<{
|
|
324
|
+
success: zod.ZodLiteral<false>;
|
|
325
|
+
error: zod.ZodObject<{
|
|
326
|
+
code: zod.ZodUnion<readonly [zod.ZodString, zod.ZodNumber]>;
|
|
327
|
+
message: zod.ZodString;
|
|
328
|
+
httpStatus: zod.ZodOptional<zod.ZodNumber>;
|
|
329
|
+
system: zod.ZodOptional<zod.ZodString>;
|
|
330
|
+
module: zod.ZodOptional<zod.ZodString>;
|
|
331
|
+
cause: zod.ZodOptional<zod.ZodUnknown>;
|
|
332
|
+
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
333
|
+
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
334
|
+
}, zod_v4_core.$strip>;
|
|
335
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>;
|
|
336
|
+
confirmPasswordReset: _orpc_contract.ContractProcedureBuilderWithInputOutput<zod.ZodObject<{
|
|
337
|
+
token: zod.ZodString;
|
|
338
|
+
newPassword: zod.ZodString;
|
|
339
|
+
}, zod_v4_core.$strip>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
|
|
340
|
+
success: zod.ZodLiteral<true>;
|
|
341
|
+
data: zod.ZodVoid;
|
|
342
|
+
}, zod_v4_core.$strip>, zod.ZodObject<{
|
|
343
|
+
success: zod.ZodLiteral<false>;
|
|
344
|
+
error: zod.ZodObject<{
|
|
345
|
+
code: zod.ZodUnion<readonly [zod.ZodString, zod.ZodNumber]>;
|
|
346
|
+
message: zod.ZodString;
|
|
347
|
+
httpStatus: zod.ZodOptional<zod.ZodNumber>;
|
|
348
|
+
system: zod.ZodOptional<zod.ZodString>;
|
|
349
|
+
module: zod.ZodOptional<zod.ZodString>;
|
|
350
|
+
cause: zod.ZodOptional<zod.ZodUnknown>;
|
|
351
|
+
suggestion: zod.ZodOptional<zod.ZodString>;
|
|
352
|
+
ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
353
|
+
}, zod_v4_core.$strip>;
|
|
354
|
+
}, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>;
|
|
198
355
|
login: _orpc_contract.ContractProcedureBuilderWithInputOutput<zod.ZodObject<{
|
|
199
356
|
identifier: zod.ZodString;
|
|
200
357
|
password: zod.ZodString;
|
|
@@ -225,6 +382,8 @@ declare const apiContract: {
|
|
|
225
382
|
roles: zod.ZodDefault<zod.ZodArray<zod.ZodString>>;
|
|
226
383
|
permissions: zod.ZodDefault<zod.ZodArray<zod.ZodString>>;
|
|
227
384
|
agreements: zod.ZodOptional<zod.ZodObject<{
|
|
385
|
+
userAgreementMarkdown: zod.ZodOptional<zod.ZodString>;
|
|
386
|
+
privacyPolicyMarkdown: zod.ZodOptional<zod.ZodString>;
|
|
228
387
|
userAgreementUrl: zod.ZodOptional<zod.ZodString>;
|
|
229
388
|
privacyPolicyUrl: zod.ZodOptional<zod.ZodString>;
|
|
230
389
|
showOnRegister: zod.ZodBoolean;
|
|
@@ -273,6 +432,8 @@ declare const apiContract: {
|
|
|
273
432
|
roles: zod.ZodDefault<zod.ZodArray<zod.ZodString>>;
|
|
274
433
|
permissions: zod.ZodDefault<zod.ZodArray<zod.ZodString>>;
|
|
275
434
|
agreements: zod.ZodOptional<zod.ZodObject<{
|
|
435
|
+
userAgreementMarkdown: zod.ZodOptional<zod.ZodString>;
|
|
436
|
+
privacyPolicyMarkdown: zod.ZodOptional<zod.ZodString>;
|
|
276
437
|
userAgreementUrl: zod.ZodOptional<zod.ZodString>;
|
|
277
438
|
privacyPolicyUrl: zod.ZodOptional<zod.ZodString>;
|
|
278
439
|
showOnRegister: zod.ZodBoolean;
|
|
@@ -419,6 +580,8 @@ declare const apiContract: {
|
|
|
419
580
|
roles: zod.ZodDefault<zod.ZodArray<zod.ZodString>>;
|
|
420
581
|
permissions: zod.ZodDefault<zod.ZodArray<zod.ZodString>>;
|
|
421
582
|
agreements: zod.ZodOptional<zod.ZodObject<{
|
|
583
|
+
userAgreementMarkdown: zod.ZodOptional<zod.ZodString>;
|
|
584
|
+
privacyPolicyMarkdown: zod.ZodOptional<zod.ZodString>;
|
|
422
585
|
userAgreementUrl: zod.ZodOptional<zod.ZodString>;
|
|
423
586
|
privacyPolicyUrl: zod.ZodOptional<zod.ZodString>;
|
|
424
587
|
showOnRegister: zod.ZodBoolean;
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { iamContract, paginatedSchema } from './chunk-
|
|
2
|
-
export { IamAdminCreateUserInputSchema, IamAdminResetPasswordInputSchema, IamAdminUpdateUserInputSchema, IamAgreementDisplaySchema, IamAuthResultSchema, IamChangePasswordInputSchema, IamCreatePermissionInputSchema, IamCreateRoleInputSchema, IamCurrentUserSchema, IamListPermissionsInputSchema, IamListUsersInputSchema, IamLoginInputSchema, IamLogoutInputSchema, IamOtpLoginInputSchema, IamPermissionSchema, IamPermissionTypeSchema, IamRefreshTokenDataSchema, IamRefreshTokenInputSchema, IamRegisterInputSchema, IamRoleSchema, IamSendOtpDataSchema, IamSendOtpInputSchema, IamTokenPairSchema, IamUpdateCurrentUserInputSchema, IamUpdateRoleInputSchema, IamUserIdInputSchema, IamUserSchema, PaginationQuerySchema, paginatedSchema } from './chunk-
|
|
1
|
+
import { iamContract, paginatedSchema } from './chunk-APZWTGQD.js';
|
|
2
|
+
export { IamAdminCreateUserInputSchema, IamAdminResetPasswordInputSchema, IamAdminUpdateUserInputSchema, IamAgreementDisplaySchema, IamAuthResultSchema, IamChangePasswordInputSchema, IamConfirmPasswordResetInputSchema, IamCreatePermissionInputSchema, IamCreateRoleInputSchema, IamCurrentUserSchema, IamLdapLoginInputSchema, IamListPermissionsInputSchema, IamListUsersInputSchema, IamLoginInputSchema, IamLogoutInputSchema, IamOtpLoginInputSchema, IamPermissionSchema, IamPermissionTypeSchema, IamPublicConfigSchema, IamRefreshTokenDataSchema, IamRefreshTokenInputSchema, IamRegisterInputSchema, IamRequestPasswordResetInputSchema, IamRoleSchema, IamSendOtpDataSchema, IamSendOtpInputSchema, IamTokenPairSchema, IamUpdateCurrentUserInputSchema, IamUpdateRoleInputSchema, IamUserIdInputSchema, IamUserSchema, PaginationQuerySchema, paginatedSchema } from './chunk-APZWTGQD.js';
|
|
3
3
|
import { storageContract } from './chunk-3QSKWVLP.js';
|
|
4
4
|
export { StorageDeleteFilesInputSchema, StorageFileKeyInputSchema, StorageFileMetadataSchema, StorageListFilesDataSchema, StorageListFilesInputSchema, StoragePresignDownloadInputSchema, StoragePresignUploadInputSchema, StoragePresignedUrlSchema } from './chunk-3QSKWVLP.js';
|
|
5
5
|
import { aiContract } from './chunk-VSPYX4DD.js';
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@h-ai/api-contract",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.1.0-alpha.
|
|
4
|
+
"version": "0.1.0-alpha.60",
|
|
5
5
|
"description": "Hai Framework public API contracts powered by oRPC and Zod.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"exports": {
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"node": "^22.22.2 || ^24.15.0 || >=26.0.0"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@h-ai/core": "0.1.0-alpha.
|
|
42
|
+
"@h-ai/core": "0.1.0-alpha.60",
|
|
43
43
|
"@orpc/contract": "^1.15.5",
|
|
44
44
|
"zod": "^4.6.5"
|
|
45
45
|
},
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/pagination-schemas.ts","../src/iam/iam-schemas.ts","../src/iam/iam-contract.ts"],"names":["z"],"mappings":"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","file":"chunk-MBNBQY2J.js","sourcesContent":["/**\n * @h-ai/api-contract — 分页 Schema\n *\n * 提供通用分页查询参数与分页结果封装,供各领域 contract 扩展复用。\n * @module pagination-schemas\n */\n\nimport { z } from 'zod'\n\n/**\n * 通用分页查询参数 Schema。\n *\n * 页码和页大小均为可选,由服务端提供合理默认值(page=1, pageSize=20)。\n * 支持字符串 coerce,适配 GET 请求 query string 场景。\n *\n * @example\n * ```ts\n * // 扩展为领域专属查询参数\n * const IamListUsersInputSchema = PaginationQuerySchema.extend({\n * search: z.string().optional(),\n * })\n * ```\n */\nexport const PaginationQuerySchema = z.object({\n page: z.coerce.number().int().min(1).optional(),\n pageSize: z.coerce.number().int().min(1).max(100).optional(),\n})\n\n/**\n * 创建分页结果 Schema。\n *\n * 生成标准分页响应结构 `{ items, total, page, pageSize }`,\n * 与 `@h-ai/reldb` 的 `PageResult<T>` 保持对齐。\n *\n * @param itemSchema - 分页项的 Zod Schema\n * @returns 包含 items/total/page/pageSize 的对象 Schema\n *\n * @example\n * ```ts\n * const listUsers = route({ method: 'GET', path: '/users' })\n * .output(haiResultSchema(paginatedSchema(IamUserSchema)))\n * // 解析结果形如:\n * // { success: true, data: { items: [...], total: 100, page: 1, pageSize: 20 } }\n * ```\n */\nexport function paginatedSchema<T extends z.ZodType>(itemSchema: T) {\n return z.object({\n items: z.array(itemSchema),\n total: z.number(),\n page: z.number(),\n pageSize: z.number(),\n })\n}\n","/**\n * @h-ai/api-contract — IAM 领域 Schema\n *\n * 包含用户、Token、角色、权限以及相关 input/data 的 Zod Schema 定义。\n * 一次性输出包装在 contract 中内联,仅保留跨接口、跨层复用的数据结构。\n * @module iam-schemas\n */\n\nimport type { HaiResult } from '@h-ai/core'\nimport { z } from 'zod'\nimport { PaginationQuerySchema } from '../common/pagination-schemas.js'\n\n/** 用户基础信息 Schema。 */\nexport const IamUserSchema = z.object({\n id: z.string(),\n username: z.string(),\n email: z.string().optional(),\n phone: z.string().optional(),\n displayName: z.string().optional(),\n avatarUrl: z.string().optional(),\n enabled: z.boolean(),\n emailVerified: z.boolean().optional(),\n phoneVerified: z.boolean().optional(),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n})\n\n/** Token 对 Schema。 */\nexport const IamTokenPairSchema = z.object({\n accessToken: z.string(),\n refreshToken: z.string().optional(),\n expiresIn: z.number(),\n tokenType: z.literal('Bearer'),\n})\n\n/** 协议展示 Schema。 */\nexport const IamAgreementDisplaySchema = z.object({\n userAgreementUrl: z.string().optional(),\n privacyPolicyUrl: z.string().optional(),\n showOnRegister: z.boolean(),\n showOnLogin: z.boolean(),\n})\n\n/** 登录结果业务数据 Schema。 */\nexport const IamAuthResultSchema = z.object({\n user: IamUserSchema,\n tokens: IamTokenPairSchema,\n roles: z.array(z.string()).default([]),\n permissions: z.array(z.string()).default([]),\n agreements: IamAgreementDisplaySchema.optional(),\n})\n\n/** 当前会话用户信息;包含服务端重新校验后的角色与权限快照。 */\nexport const IamCurrentUserSchema = IamUserSchema.extend({\n roles: z.array(z.string()),\n permissions: z.array(z.string()),\n})\n\n/** 密码登录入参 Schema。 */\nexport const IamLoginInputSchema = z.object({\n identifier: z.string().min(1),\n password: z.string().min(1),\n rememberMe: z.boolean().optional(),\n})\n\n/** OTP 登录入参 Schema。 */\nexport const IamOtpLoginInputSchema = z.object({\n identifier: z.string().min(1),\n code: z.string().min(1),\n})\n\n/** 登出入参 Schema。 */\nexport const IamLogoutInputSchema = z.object({\n accessToken: z.string().min(1).optional(),\n})\n\n/** 发送 OTP 入参 Schema。 */\nexport const IamSendOtpInputSchema = z.object({\n identifier: z.string().min(1),\n})\n\n/** 发送 OTP 业务数据 Schema。 */\nexport const IamSendOtpDataSchema = z.object({\n expiresAt: z.coerce.date(),\n})\n\n/** Token 刷新入参 Schema。 */\nexport const IamRefreshTokenInputSchema = z.object({\n refreshToken: z.string().min(1),\n})\n\n/** Token 刷新业务数据 Schema。 */\nexport const IamRefreshTokenDataSchema = z.object({\n tokens: IamTokenPairSchema,\n})\n\n/** 注册入参 Schema。 */\nexport const IamRegisterInputSchema = z.object({\n username: z.string().min(1),\n password: z.string().min(6),\n email: z.string().email().optional(),\n phone: z.string().optional(),\n displayName: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n})\n\n/** 修改密码入参 Schema。 */\nexport const IamChangePasswordInputSchema = z.object({\n oldPassword: z.string().min(1),\n newPassword: z.string().min(6),\n})\n\n/** 当前用户更新入参 Schema。 */\nexport const IamUpdateCurrentUserInputSchema = z.object({\n username: z.string().min(1).optional(),\n email: z.string().email().optional(),\n displayName: z.string().optional(),\n avatarUrl: z.string().optional(),\n phone: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n})\n\n/** 用户列表查询入参 Schema。 */\nexport const IamListUsersInputSchema = PaginationQuerySchema.extend({\n search: z.string().optional(),\n // 注意:HTTP query 是字符串,使用枚举 + transform 避免 z.coerce.boolean 的 'false' → true 陷阱。\n enabled: z.enum(['true', 'false']).optional().transform(v => v === undefined ? undefined : v === 'true'),\n})\n\n/** Admin 创建用户入参 Schema。 */\nexport const IamAdminCreateUserInputSchema = z.object({\n username: z.string().min(1),\n email: z.string().email().optional(),\n phone: z.string().optional(),\n password: z.string().min(6),\n displayName: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n roleIds: z.array(z.string()).optional(),\n enabled: z.boolean().optional(),\n})\n\n/** Admin 更新用户入参 Schema。 */\nexport const IamAdminUpdateUserInputSchema = z.object({\n id: z.string().min(1),\n username: z.string().min(1).optional(),\n email: z.string().email().optional(),\n phone: z.string().optional(),\n displayName: z.string().optional(),\n avatarUrl: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n enabled: z.boolean().optional(),\n roleIds: z.array(z.string()).optional(),\n})\n\n/** Admin 删除用户入参 Schema。 */\nexport const IamUserIdInputSchema = z.object({\n id: z.string().min(1),\n})\n\n/** Admin 重置密码入参 Schema。 */\nexport const IamAdminResetPasswordInputSchema = z.object({\n id: z.string().min(1),\n newPassword: z.string().min(6),\n})\n\n/** 角色基础信息 Schema。 */\nexport const IamRoleSchema = z.object({\n id: z.string(),\n code: z.string(),\n name: z.string(),\n description: z.string().optional(),\n isSystem: z.boolean().optional(),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n})\n\n/** 创建角色入参 Schema。 */\nexport const IamCreateRoleInputSchema = z.object({\n code: z.string().min(1),\n name: z.string().min(1),\n description: z.string().optional(),\n isSystem: z.boolean().optional(),\n})\n\n/** 更新角色入参 Schema。 */\nexport const IamUpdateRoleInputSchema = z.object({\n id: z.string().min(1),\n name: z.string().min(1).optional(),\n description: z.string().optional(),\n})\n\n/** 权限类型 Schema。 */\nexport const IamPermissionTypeSchema = z.enum(['menu', 'api', 'button'])\n\n/** 权限基础信息 Schema。 */\nexport const IamPermissionSchema = z.object({\n id: z.string(),\n code: z.string(),\n name: z.string(),\n description: z.string().optional(),\n type: IamPermissionTypeSchema.optional(),\n resource: z.string().optional(),\n action: z.string().optional(),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n})\n\n/** 权限列表查询入参 Schema。 */\nexport const IamListPermissionsInputSchema = PaginationQuerySchema.extend({\n search: z.string().optional(),\n type: IamPermissionTypeSchema.optional(),\n})\n\n/** 创建权限入参 Schema。 */\nexport const IamCreatePermissionInputSchema = z.object({\n code: z.string().min(1),\n name: z.string().min(1),\n description: z.string().optional(),\n resource: z.string().optional(),\n action: z.string().optional(),\n type: IamPermissionTypeSchema.optional(),\n})\n\nexport type IamLoginInput = z.infer<typeof IamLoginInputSchema>\nexport type IamOtpLoginInput = z.infer<typeof IamOtpLoginInputSchema>\nexport type IamLogoutInput = z.infer<typeof IamLogoutInputSchema>\nexport type IamSendOtpInput = z.infer<typeof IamSendOtpInputSchema>\nexport type IamAuthResultOutput = HaiResult<z.infer<typeof IamAuthResultSchema>>\nexport type IamCurrentUser = z.infer<typeof IamCurrentUserSchema>\nexport type IamCurrentUserOutput = HaiResult<IamCurrentUser>\nexport type IamRefreshTokenInput = z.infer<typeof IamRefreshTokenInputSchema>\nexport type IamRefreshTokenOutput = HaiResult<z.infer<typeof IamRefreshTokenDataSchema>>\nexport type IamRegisterInput = z.infer<typeof IamRegisterInputSchema>\nexport type IamChangePasswordInput = z.infer<typeof IamChangePasswordInputSchema>\nexport type IamUpdateCurrentUserInput = z.infer<typeof IamUpdateCurrentUserInputSchema>\nexport type IamListUsersInput = z.infer<typeof IamListUsersInputSchema>\nexport type IamAdminCreateUserInput = z.infer<typeof IamAdminCreateUserInputSchema>\nexport type IamAdminUpdateUserInput = z.infer<typeof IamAdminUpdateUserInputSchema>\nexport type IamUserIdInput = z.infer<typeof IamUserIdInputSchema>\nexport type IamAdminResetPasswordInput = z.infer<typeof IamAdminResetPasswordInputSchema>\nexport type IamCreateRoleInput = z.infer<typeof IamCreateRoleInputSchema>\nexport type IamUpdateRoleInput = z.infer<typeof IamUpdateRoleInputSchema>\nexport type IamListPermissionsInput = z.infer<typeof IamListPermissionsInputSchema>\nexport type IamCreatePermissionInput = z.infer<typeof IamCreatePermissionInputSchema>\n","/**\n * @h-ai/api-contract — IAM 领域 contract\n *\n * 定义身份认证与权限管理相关 API 的接口边界:\n * - auth:登录、登出、OTP、刷新 Token、注册、修改密码\n * - users:Admin 管理用户(CRUD + 重置密码)\n * - roles:Admin 管理角色(CRUD)\n * - permissions:Admin 管理权限(CRUD)\n *\n * auth.* 入口址前缀为 `/auth`;users/roles/permissions 前缀为 `/iam`。\n * @module iam-contract\n */\n\nimport { paginatedSchema } from '../common/pagination-schemas.js'\nimport { haiResultSchema, HaiVoidResultSchema } from '../common/result-schemas.js'\nimport { route } from '../common/route.js'\nimport {\n IamAdminCreateUserInputSchema,\n IamAdminResetPasswordInputSchema,\n IamAdminUpdateUserInputSchema,\n IamAuthResultSchema,\n IamChangePasswordInputSchema,\n IamCreatePermissionInputSchema,\n IamCreateRoleInputSchema,\n IamCurrentUserSchema,\n IamListPermissionsInputSchema,\n IamListUsersInputSchema,\n IamLoginInputSchema,\n IamLogoutInputSchema,\n IamOtpLoginInputSchema,\n IamPermissionSchema,\n IamRefreshTokenDataSchema,\n IamRefreshTokenInputSchema,\n IamRegisterInputSchema,\n IamRoleSchema,\n IamSendOtpDataSchema,\n IamSendOtpInputSchema,\n IamUpdateCurrentUserInputSchema,\n IamUpdateRoleInputSchema,\n IamUserIdInputSchema,\n IamUserSchema,\n} from './iam-schemas.js'\n\n// 同一 contract 内被多个接口复用的输出结构保持私有,避免扩大公共 Schema 面。\nconst authResultOutputSchema = haiResultSchema(IamAuthResultSchema)\nconst userOutputSchema = haiResultSchema(IamUserSchema)\nconst roleOutputSchema = haiResultSchema(IamRoleSchema)\n\n/** IAM 领域 oRPC contract。 */\nexport const iamContract = {\n auth: {\n login: route({ method: 'POST', path: '/auth/login', operationId: 'iam.auth.login', summary: 'Password login', tags: ['iam', 'auth'] })\n .input(IamLoginInputSchema)\n .output(authResultOutputSchema),\n loginWithOtp: route({ method: 'POST', path: '/auth/login/otp', operationId: 'iam.auth.loginWithOtp', summary: 'OTP login', tags: ['iam', 'auth'] })\n .input(IamOtpLoginInputSchema)\n .output(authResultOutputSchema),\n logout: route({ method: 'POST', path: '/auth/logout', operationId: 'iam.auth.logout', summary: 'Logout', tags: ['iam', 'auth'] })\n .input(IamLogoutInputSchema)\n .output(HaiVoidResultSchema),\n currentUser: route({ method: 'GET', path: '/auth/me', operationId: 'iam.auth.currentUser', summary: 'Get current user and access scope', tags: ['iam', 'auth'] })\n .output(haiResultSchema(IamCurrentUserSchema)),\n refresh: route({ method: 'POST', path: '/auth/refresh', operationId: 'iam.auth.refresh', summary: 'Refresh access token', tags: ['iam', 'auth'] })\n .input(IamRefreshTokenInputSchema)\n .output(haiResultSchema(IamRefreshTokenDataSchema)),\n sendOtp: route({ method: 'POST', path: '/auth/otp/send', operationId: 'iam.auth.sendOtp', summary: 'Send OTP', tags: ['iam', 'auth'] })\n .input(IamSendOtpInputSchema)\n .output(haiResultSchema(IamSendOtpDataSchema)),\n register: route({ method: 'POST', path: '/auth/register', operationId: 'iam.auth.register', summary: 'Register and login', tags: ['iam', 'auth'] })\n .input(IamRegisterInputSchema)\n .output(authResultOutputSchema),\n changePassword: route({ method: 'POST', path: '/auth/change-password', operationId: 'iam.auth.changePassword', summary: 'Change current user password', tags: ['iam', 'auth'] })\n .input(IamChangePasswordInputSchema)\n .output(HaiVoidResultSchema),\n updateCurrentUser: route({ method: 'PUT', path: '/auth/me', operationId: 'iam.auth.updateCurrentUser', summary: 'Update current user', tags: ['iam', 'auth'] })\n .input(IamUpdateCurrentUserInputSchema)\n .output(userOutputSchema),\n },\n users: {\n list: route({ method: 'GET', path: '/iam/users', operationId: 'iam.users.list', summary: 'List users', tags: ['iam', 'users'] })\n .input(IamListUsersInputSchema)\n .output(haiResultSchema(paginatedSchema(IamUserSchema))),\n get: route({ method: 'GET', path: '/iam/users/{id}', operationId: 'iam.users.get', summary: 'Get user', tags: ['iam', 'users'] })\n .input(IamUserIdInputSchema)\n .output(haiResultSchema(IamUserSchema.nullable())),\n create: route({ method: 'POST', path: '/iam/users', operationId: 'iam.users.create', summary: 'Create user', tags: ['iam', 'users'] })\n .input(IamAdminCreateUserInputSchema)\n .output(userOutputSchema),\n update: route({ method: 'PUT', path: '/iam/users/{id}', operationId: 'iam.users.update', summary: 'Update user', tags: ['iam', 'users'] })\n .input(IamAdminUpdateUserInputSchema)\n .output(userOutputSchema),\n delete: route({ method: 'DELETE', path: '/iam/users/{id}', operationId: 'iam.users.delete', summary: 'Delete user', tags: ['iam', 'users'] })\n .input(IamUserIdInputSchema)\n .output(HaiVoidResultSchema),\n resetPassword: route({ method: 'POST', path: '/iam/users/{id}/reset-password', operationId: 'iam.users.resetPassword', summary: 'Reset user password', tags: ['iam', 'users'] })\n .input(IamAdminResetPasswordInputSchema)\n .output(HaiVoidResultSchema),\n },\n roles: {\n list: route({ method: 'GET', path: '/iam/roles', operationId: 'iam.roles.list', summary: 'List roles', tags: ['iam', 'roles'] })\n .output(haiResultSchema(paginatedSchema(IamRoleSchema))),\n get: route({ method: 'GET', path: '/iam/roles/{id}', operationId: 'iam.roles.get', summary: 'Get role', tags: ['iam', 'roles'] })\n .input(IamUserIdInputSchema)\n .output(haiResultSchema(IamRoleSchema.nullable())),\n create: route({ method: 'POST', path: '/iam/roles', operationId: 'iam.roles.create', summary: 'Create role', tags: ['iam', 'roles'] })\n .input(IamCreateRoleInputSchema)\n .output(roleOutputSchema),\n update: route({ method: 'PUT', path: '/iam/roles/{id}', operationId: 'iam.roles.update', summary: 'Update role', tags: ['iam', 'roles'] })\n .input(IamUpdateRoleInputSchema)\n .output(roleOutputSchema),\n delete: route({ method: 'DELETE', path: '/iam/roles/{id}', operationId: 'iam.roles.delete', summary: 'Delete role', tags: ['iam', 'roles'] })\n .input(IamUserIdInputSchema)\n .output(HaiVoidResultSchema),\n },\n permissions: {\n list: route({ method: 'GET', path: '/iam/permissions', operationId: 'iam.permissions.list', summary: 'List permissions', tags: ['iam', 'permissions'] })\n .input(IamListPermissionsInputSchema)\n .output(haiResultSchema(paginatedSchema(IamPermissionSchema))),\n get: route({ method: 'GET', path: '/iam/permissions/{id}', operationId: 'iam.permissions.get', summary: 'Get permission', tags: ['iam', 'permissions'] })\n .input(IamUserIdInputSchema)\n .output(haiResultSchema(IamPermissionSchema.nullable())),\n create: route({ method: 'POST', path: '/iam/permissions', operationId: 'iam.permissions.create', summary: 'Create permission', tags: ['iam', 'permissions'] })\n .input(IamCreatePermissionInputSchema)\n .output(haiResultSchema(IamPermissionSchema)),\n delete: route({ method: 'DELETE', path: '/iam/permissions/{id}', operationId: 'iam.permissions.delete', summary: 'Delete permission', tags: ['iam', 'permissions'] })\n .input(IamUserIdInputSchema)\n .output(HaiVoidResultSchema),\n },\n}\n\nexport type IamContract = typeof iamContract\n"]}
|