Blocklet SDK 是强类型的,可帮助您编写更健壮、更易于维护的代码。本节提供了在使用用户会话、通知、事件和 blocklet 配置时会遇到的最常见 TypeScript 类型和接口的参考。了解这些类型将有助于确保类型安全,并有效利用 IDE 的自动完成功能。
会话和用户类型
这些类型是管理应用程序中用户身份验证和身份的基础。
SessionUser
SessionUser 对象由会话中间件附加到 request 对象(作为 req.user)。它包含有关当前登录用户的基本信息。
SessionUser Type Definition
export type SessionUser = {
did: string;
role: string | undefined;
provider: string;
fullName: string;
walletOS: string;
emailVerified?: boolean;
phoneVerified?: boolean;
method?: AuthMethod;
kyc?: number;
[key: string]: any;
};- did
string(required) — 用户的去中心化标识符(DID)。 - role
string | undefined— 分配给用户的角色(例如,'admin'、'owner'、'guest')。 - provider
string(required) — 用于登录的身份验证提供程序(例如,'wallet')。 - fullName
string(required) — 用户的全名。 - walletOS
string(required) — 用户钱包的操作系统。 - emailVerified
boolean— 指示用户的电子邮件是否已验证。 - phoneVerified
boolean— 指示用户的电话是否已验证。 - method
AuthMethod— 使用的身份验证方法。常见值为 'loginToken'、'componentCall'、'signedToken'、'accessKey'。 - kyc
number— 用户 KYC 状态的数字表示。
TUserInfo
TUserInfo 类型提供了用户个人资料的全面视图,包括其身份、联系信息、登录历史和相关的安全凭证。
- did
string(required) — 用户的去中心化标识符(DID)。 - pk
string(required) — 用户的公钥。 - role
string(required) — 用户的主要角色。 - avatar
string(required) — 用户头像图片的 URL。 - fullName
string(required) — 用户的全名。 - email
string(required) — 用户的电子邮件地址。 - approved
boolean(required) — 指示用户帐户是否已获批准。 - createdAt
number(required) — 用户创建时的时间戳。 - lastLoginAt
number(required) — 用户上次登录的时间戳。 - passports
TPassport[](required) — 颁发给用户的护照数组。 - connectedAccounts
TConnectedAccount[](required) — 链接到用户个人资料的外部帐户列表。
通知类型
使用通知服务时,您将使用这些类型来构建和向用户发送消息。
TNotification
这是定义通知的主要接口。它包括控制通知内容、外观和行为所需的所有字段。
- id
string— 通知的唯一标识符。 - title
string— 通知的主标题。 - body
string— 通知的主要内容或消息。 - type
'notification' | 'connect' | 'feed' | 'hi' | 'passthrough'— 通知的类型,这会影响其处理和呈现方式。 - severity
'normal' | 'success' | 'error' | 'warning'— 严重性级别,通常用于对通知进行颜色编码。 - actions
TNotificationAction[]— 包含在通知中的交互式操作按钮数组。 - attachments
TNotificationAttachment[]— 丰富内容附件的数组,例如图片、文本块或链接。 - activity
TNotificationActivity— 描述触发通知的社交活动,如评论或关注。 - url
string— 单击通知时要导航到的 URL。
TNotificationAttachment
附件允许您向通知中添加丰富的结构化内容。
- type
'asset' | 'vc' | 'token' | 'text' | 'image' | 'divider' | 'transaction' | 'dapp' | 'link' | 'section'(required) — 要显示的内容类型。 - data
any— 附件的数据负载,具体取决于类型。例如,'image' 类型将具有一个带有 url 属性的对象。 - fields
any— 要在附件中显示的其他字段,通常用于 'section' 类型。
示例:图片附件
{
"type": "image",
"data": {
"url": "https://path.to/your/image.png",
"alt": "图片的描述性文本"
}
}TNotificationAction
操作是可添加到通知中的交互式按钮,允许用户直接响应。
- name
string(required) — 操作的名称,通常用作标识符。 - title
string— 按钮上显示的文本。如果未提供,则默认为 name。 - link
string— 单击按钮时要导航到的 URL。 - color
string— 按钮的文本颜色。 - bgColor
string— 按钮的背景颜色。
事件类型
在使用事件总线时,事件使用 TEvent 接口进行结构化。
TEvent
此接口定义了在 Blocklet 生态系统中发出和使用的事件的结构。
- id
string(required) — 事件实例的唯一标识符。 - type
string(required) — 事件类型名称(例如,'user'、'post')。 - time
Date(required) — 事件发生时的时间戳。 - source
unknown(required) — 事件的来源或发起者。 - spec_version
string(required) — CloudEvents 规范版本。 - object_id
string— 事件所属对象的 ID。 - object_type
string— 事件所属对象的类型。 - data
object(required) — 事件的负载,包含有关所发生事件的详细信息。
配置和状态类型
这些类型定义了 blocklet 的配置对象和状态信息的结构。
WindowBlocklet
在客户端,window.blocklet 对象提供了有关正在运行的 blocklet 的基本上下文。该对象类型为 WindowBlocklet。
- did
string(required) — blocklet 实例的 DID。 - appId
string(required) — 应用程序 ID。 - appName
string(required) — 应用程序的显示名称。 - appUrl
string(required) — 应用程序的公共 URL。 - webWalletUrl
string(required) — 关联的网络钱包的 URL。 - isComponent
boolean(required) — 如果 blocklet 作为另一个 blocklet 的组件运行,则为 true。 - prefix
string(required) — blocklet 路由的 URL 前缀。 - theme
TTheme(required) — UI 的当前主题设置。 - navigation
TNavigationItem[](required) — 应用程序菜单的导航项数组。
TBlockletState
此类型表示服务器上 blocklet 实例的完整状态,包括其元数据、状态、配置以及与其他组件的关系。
- meta
TBlockletMeta— blocklet 的元数据,来自其 blocklet.yml 文件。 - status
enum_pb.BlockletStatusMap(required) — blocklet 的当前运行状态(例如,'running'、'stopped')。 - port
number(required) — blocklet 正在运行的端口。 - appDid
string(required) — blocklet 实例的 DID。 - children
TComponentState[](required) — 如果此 blocklet 有子组件,则为组件状态数组。 - settings
TBlockletSettings— 用户为 blocklet 配置的设置。 - environments
TConfigEntry[](required) — 为 blocklet 配置的环境变量列表。