@sfmc-bds/db-server 0.1.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 (146) hide show
  1. package/README.md +21 -0
  2. package/dist/db-tables.d.ts +13 -0
  3. package/dist/db-tables.d.ts.map +1 -0
  4. package/dist/db-tables.js +35 -0
  5. package/dist/db-tables.js.map +1 -0
  6. package/dist/domain/bridge.d.ts +48 -0
  7. package/dist/domain/bridge.d.ts.map +1 -0
  8. package/dist/domain/bridge.js +82 -0
  9. package/dist/domain/bridge.js.map +1 -0
  10. package/dist/domain/economy.d.ts +120 -0
  11. package/dist/domain/economy.d.ts.map +1 -0
  12. package/dist/domain/economy.js +321 -0
  13. package/dist/domain/economy.js.map +1 -0
  14. package/dist/domain/schema.d.ts +26 -0
  15. package/dist/domain/schema.d.ts.map +1 -0
  16. package/dist/domain/schema.js +462 -0
  17. package/dist/domain/schema.js.map +1 -0
  18. package/dist/domain/transaction.d.ts +67 -0
  19. package/dist/domain/transaction.d.ts.map +1 -0
  20. package/dist/domain/transaction.js +85 -0
  21. package/dist/domain/transaction.js.map +1 -0
  22. package/dist/env.d.ts +22 -0
  23. package/dist/env.d.ts.map +1 -0
  24. package/dist/env.js +94 -0
  25. package/dist/env.js.map +1 -0
  26. package/dist/index.d.ts +33 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +313 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/lib/http.d.ts +18 -0
  31. package/dist/lib/http.d.ts.map +1 -0
  32. package/dist/lib/http.js +43 -0
  33. package/dist/lib/http.js.map +1 -0
  34. package/dist/lib/idempotency-store.d.ts +28 -0
  35. package/dist/lib/idempotency-store.d.ts.map +1 -0
  36. package/dist/lib/idempotency-store.js +49 -0
  37. package/dist/lib/idempotency-store.js.map +1 -0
  38. package/dist/lib/idempotency.d.ts +9 -0
  39. package/dist/lib/idempotency.d.ts.map +1 -0
  40. package/dist/lib/idempotency.js +14 -0
  41. package/dist/lib/idempotency.js.map +1 -0
  42. package/dist/lib/identifiers.d.ts +3 -0
  43. package/dist/lib/identifiers.d.ts.map +1 -0
  44. package/dist/lib/identifiers.js +18 -0
  45. package/dist/lib/identifiers.js.map +1 -0
  46. package/dist/lib/log.d.ts +11 -0
  47. package/dist/lib/log.d.ts.map +1 -0
  48. package/dist/lib/log.js +15 -0
  49. package/dist/lib/log.js.map +1 -0
  50. package/dist/lib/module-state.d.ts +15 -0
  51. package/dist/lib/module-state.d.ts.map +1 -0
  52. package/dist/lib/module-state.js +27 -0
  53. package/dist/lib/module-state.js.map +1 -0
  54. package/dist/lib/runtime.d.ts +21 -0
  55. package/dist/lib/runtime.d.ts.map +1 -0
  56. package/dist/lib/runtime.js +34 -0
  57. package/dist/lib/runtime.js.map +1 -0
  58. package/dist/lib/sql-helpers.d.ts +31 -0
  59. package/dist/lib/sql-helpers.d.ts.map +1 -0
  60. package/dist/lib/sql-helpers.js +30 -0
  61. package/dist/lib/sql-helpers.js.map +1 -0
  62. package/dist/lib/sqlite.d.ts +20 -0
  63. package/dist/lib/sqlite.d.ts.map +1 -0
  64. package/dist/lib/sqlite.js +59 -0
  65. package/dist/lib/sqlite.js.map +1 -0
  66. package/dist/manifest-loader.d.ts +69 -0
  67. package/dist/manifest-loader.d.ts.map +1 -0
  68. package/dist/manifest-loader.js +212 -0
  69. package/dist/manifest-loader.js.map +1 -0
  70. package/dist/manifest.d.ts +76 -0
  71. package/dist/manifest.d.ts.map +1 -0
  72. package/dist/manifest.js +128 -0
  73. package/dist/manifest.js.map +1 -0
  74. package/dist/module-auth.d.ts +58 -0
  75. package/dist/module-auth.d.ts.map +1 -0
  76. package/dist/module-auth.js +118 -0
  77. package/dist/module-auth.js.map +1 -0
  78. package/dist/permission-gate.d.ts +53 -0
  79. package/dist/permission-gate.d.ts.map +1 -0
  80. package/dist/permission-gate.js +94 -0
  81. package/dist/permission-gate.js.map +1 -0
  82. package/dist/routes/_shared.d.ts +68 -0
  83. package/dist/routes/_shared.d.ts.map +1 -0
  84. package/dist/routes/_shared.js +27 -0
  85. package/dist/routes/_shared.js.map +1 -0
  86. package/dist/routes/config.d.ts +27 -0
  87. package/dist/routes/config.d.ts.map +1 -0
  88. package/dist/routes/config.js +236 -0
  89. package/dist/routes/config.js.map +1 -0
  90. package/dist/routes/db-routes.d.ts +38 -0
  91. package/dist/routes/db-routes.d.ts.map +1 -0
  92. package/dist/routes/db-routes.js +186 -0
  93. package/dist/routes/db-routes.js.map +1 -0
  94. package/dist/routes/health.d.ts +10 -0
  95. package/dist/routes/health.d.ts.map +1 -0
  96. package/dist/routes/health.js +23 -0
  97. package/dist/routes/health.js.map +1 -0
  98. package/dist/routes/messages.d.ts +23 -0
  99. package/dist/routes/messages.d.ts.map +1 -0
  100. package/dist/routes/messages.js +72 -0
  101. package/dist/routes/messages.js.map +1 -0
  102. package/dist/routes/module-config-routes.d.ts +31 -0
  103. package/dist/routes/module-config-routes.d.ts.map +1 -0
  104. package/dist/routes/module-config-routes.js +128 -0
  105. package/dist/routes/module-config-routes.js.map +1 -0
  106. package/dist/routes/modules.d.ts +34 -0
  107. package/dist/routes/modules.d.ts.map +1 -0
  108. package/dist/routes/modules.js +92 -0
  109. package/dist/routes/modules.js.map +1 -0
  110. package/dist/routes/service-routes.d.ts +26 -0
  111. package/dist/routes/service-routes.d.ts.map +1 -0
  112. package/dist/routes/service-routes.js +68 -0
  113. package/dist/routes/service-routes.js.map +1 -0
  114. package/dist/runtime.test.d.ts +2 -0
  115. package/dist/runtime.test.d.ts.map +1 -0
  116. package/dist/runtime.test.js +66 -0
  117. package/dist/runtime.test.js.map +1 -0
  118. package/dist/schema-registry.d.ts +63 -0
  119. package/dist/schema-registry.d.ts.map +1 -0
  120. package/dist/schema-registry.js +178 -0
  121. package/dist/schema-registry.js.map +1 -0
  122. package/dist/server.d.ts +27 -0
  123. package/dist/server.d.ts.map +1 -0
  124. package/dist/server.js +82 -0
  125. package/dist/server.js.map +1 -0
  126. package/dist/service-registry.d.ts +46 -0
  127. package/dist/service-registry.d.ts.map +1 -0
  128. package/dist/service-registry.js +73 -0
  129. package/dist/service-registry.js.map +1 -0
  130. package/dist/services/builtin-handlers.d.ts +22 -0
  131. package/dist/services/builtin-handlers.d.ts.map +1 -0
  132. package/dist/services/builtin-handlers.js +23 -0
  133. package/dist/services/builtin-handlers.js.map +1 -0
  134. package/dist/services/economy-handlers.d.ts +14 -0
  135. package/dist/services/economy-handlers.d.ts.map +1 -0
  136. package/dist/services/economy-handlers.js +144 -0
  137. package/dist/services/economy-handlers.js.map +1 -0
  138. package/dist/tx-runner.d.ts +144 -0
  139. package/dist/tx-runner.d.ts.map +1 -0
  140. package/dist/tx-runner.js +273 -0
  141. package/dist/tx-runner.js.map +1 -0
  142. package/dist/where.d.ts +48 -0
  143. package/dist/where.d.ts.map +1 -0
  144. package/dist/where.js +107 -0
  145. package/dist/where.js.map +1 -0
  146. package/package.json +52 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"economy.js","sourceRoot":"","sources":["../../src/domain/economy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * domain/schema.ts — 数据库 schema 初始化(唯一真源)
3
+ *
4
+ * 所有 CREATE TABLE / CREATE INDEX 语句集中于此。
5
+ * 调用方式:initSchema(db) — 在 openDatabase 之后、createQuery 之前执行。
6
+ *
7
+ * 事务描述:
8
+ * - 无业务 Tx(本文件只做 DDL,不涉及业务事务)
9
+ *
10
+ * 业务域(按文件内 db.exec 块编号):
11
+ * (1) 世界备份 (2) 玩家备份 (3) 计分板
12
+ * (4) 玩家行为日志 (5) 聊天频道 (6) 聊天消息
13
+ * (7) 红包 (8) 合作社主体/成员/邀请/账户
14
+ * (9) 合作社商店项/商店组 (10) 合作社账变流水/审计
15
+ * (11) 领地主体/成员/权限 (12) 领地邀请/审计/请求幂等
16
+ * (13) 玩家指令用量 (14) 价格指数
17
+ * (15) 每日任务/统计 (16) 经济账户/流水/幂等
18
+ *
19
+ * 完整表名以 `sfmc_` 前缀,具体见下方每个 db.exec 块。
20
+ *
21
+ * 备注: ALTER / DROP 不在此处;如需迁移请新建 tools/migrate-*.ts,
22
+ * 保持本文件只做"全新初始化"。
23
+ */
24
+ import type { DatabaseSync } from "node:sqlite";
25
+ export declare function initSchema(db: DatabaseSync): void;
26
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/domain/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,wBAAgB,UAAU,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CA+bjD"}
@@ -0,0 +1,462 @@
1
+ /**
2
+ * domain/schema.ts — 数据库 schema 初始化(唯一真源)
3
+ *
4
+ * 所有 CREATE TABLE / CREATE INDEX 语句集中于此。
5
+ * 调用方式:initSchema(db) — 在 openDatabase 之后、createQuery 之前执行。
6
+ *
7
+ * 事务描述:
8
+ * - 无业务 Tx(本文件只做 DDL,不涉及业务事务)
9
+ *
10
+ * 业务域(按文件内 db.exec 块编号):
11
+ * (1) 世界备份 (2) 玩家备份 (3) 计分板
12
+ * (4) 玩家行为日志 (5) 聊天频道 (6) 聊天消息
13
+ * (7) 红包 (8) 合作社主体/成员/邀请/账户
14
+ * (9) 合作社商店项/商店组 (10) 合作社账变流水/审计
15
+ * (11) 领地主体/成员/权限 (12) 领地邀请/审计/请求幂等
16
+ * (13) 玩家指令用量 (14) 价格指数
17
+ * (15) 每日任务/统计 (16) 经济账户/流水/幂等
18
+ *
19
+ * 完整表名以 `sfmc_` 前缀,具体见下方每个 db.exec 块。
20
+ *
21
+ * 备注: ALTER / DROP 不在此处;如需迁移请新建 tools/migrate-*.ts,
22
+ * 保持本文件只做"全新初始化"。
23
+ */
24
+ export function initSchema(db) {
25
+ // (1 世界备份数据
26
+ db.exec(/* sql */ `
27
+ CREATE TABLE IF NOT EXISTS sfmc_world (
28
+ allow_cheats INTEGER NOT NULL DEFAULT 0, -- 允许作弊的选项
29
+ game_rules TEXT NOT NULL DEFAULT '', -- 世界规则(json)
30
+ seed TEXT DEFAULT '', -- 种子
31
+ default_spawn_location TEXT NOT NULL DEFAULT '', -- 默认出生点
32
+ difficulty TEXT NOT NULL DEFAULT '', -- 难度
33
+ day INTEGER NOT NULL DEFAULT 0, -- 游戏天数(世界)
34
+ ticking_areas_count INTEGER DEFAULT 0, -- 常加载区域数量
35
+ absolute_time INTEGER NOT NULL DEFAULT 0, -- 游戏内时间(当前)
36
+ structures_from_addon TEXT DEFAULT '', -- 来自模组的结构(在对应行为包内)
37
+ structures_from_world TEXT DEFAULT '', -- 来自世界的结构 包含保存在内存与磁盘中的
38
+ dynamic_property_total_byte_count INTEGER DEFAULT 0, -- 动态数据(世界)字节数
39
+ moon_phase INTEGER NOT NULL DEFAULT 0, -- 月相(当前)
40
+ updated_at TEXT NOT NULL DEFAULT '' -- 更新时间戳
41
+ )`);
42
+ // (2 玩家备份数据
43
+ db.exec(/* sql */ `
44
+ CREATE TABLE IF NOT EXISTS sfmc_players (
45
+ id TEXT NOT NULL, -- 实体id标识符
46
+ name TEXT NOT NULL, -- 名称
47
+ permission INTEGER DEFAULT 0, -- 权限等级(0=访客,1=成员,2=OP,3=管理员)TODO: 暂未适配自定义脚本权限
48
+ client_system_info_local TEXT DEFAULT '', -- 客户端系统信息->本地化语言
49
+ client_system_info_maxRenderDistance INTEGER DEFAULT 0, -- 客户端系统信息->最大渲染距离
50
+ client_system_info_memoryTier_level TEXT DEFAULT '', -- 客户端信息->内存等级 详细请查看官方文档
51
+ client_system_info_PlatformType TEXT DEFAULT '', -- 客户端系统信息->平台类型
52
+ graphicsMode TEXT DEFAULT '', -- 图形模式
53
+ dynamicPropertyTotalByteCount INTEGER DEFAULT 0, -- 动态属性总字节数
54
+ ping INTEGER DEFAULT 0, -- 延迟(ms)
55
+ spawnPoint TEXT DEFAULT '', -- 出生点坐标
56
+ tags TEXT DEFAULT '', -- 玩家标签
57
+ level INTEGER DEFAULT 0, -- 等级
58
+ totalXp INTEGER DEFAULT 0, -- 总经验值
59
+ afk_step INTEGER DEFAULT 0, -- AFK累计步数
60
+ afk_last_location TEXT DEFAULT '', -- AFK最后位置
61
+ onlinetime_session INTEGER DEFAULT 0, -- 在线时间->本次会话(秒)
62
+ onlinetime_today INTEGER DEFAULT 0, -- 在线时间->今日(秒)
63
+ onlinetime_month INTEGER DEFAULT 0, -- 在线时间->本月(秒)
64
+ onlinetime_total INTEGER DEFAULT 0, -- 在线时间->累计(秒)
65
+ onlinetime_last_date INTEGER DEFAULT 0, -- 在线时间->上次记录日期
66
+ onlinetime_last_month INTEGER DEFAULT 0, -- 在线时间->上次记录月份
67
+ active_channel TEXT NOT NULL DEFAULT '', -- 当前活跃聊天频道
68
+ subscribed_channels TEXT DEFAULT '', -- 订阅的频道列表
69
+ updated_at INTEGER NOT NULL, -- 玩家数据更新时间戳
70
+ PRIMARY KEY (id, name) -- 联合主键:实体id+名称
71
+ )`);
72
+ // 玩家表索引:按id查、按name查
73
+ db.exec(/* sql */ `
74
+ CREATE INDEX IF NOT EXISTS idx_players_id ON sfmc_players(id);
75
+ CREATE INDEX IF NOT EXISTS idx_players_name ON sfmc_players(name)`);
76
+ // (3 计分板数据
77
+ db.exec(/* sql */ `
78
+ CREATE TABLE IF NOT EXISTS sfmc_scoreboards (
79
+ objective_id TEXT NOT NULL, -- 计分板目标id(主键)
80
+ objective_display TEXT NOT NULL DEFAULT '', -- 计分板显示名称
81
+ participants TEXT DEFAULT '', -- 参与者列表(json)
82
+ updated_at INTEGER NOT NULL, -- 更新时间戳
83
+ PRIMARY KEY (objective_id) -- 主键
84
+ )`);
85
+ // (4 玩家行为日志
86
+ db.exec(/* sql */ `
87
+ CREATE TABLE IF NOT EXISTS sfmc_activities (
88
+ id TEXT PRIMARY KEY, -- 唯一id
89
+ timestamp INTEGER NOT NULL, -- 事件发生时间戳
90
+ dimension TEXT NOT NULL DEFAULT '', -- 维度(overworld/nether/end)
91
+ source_type TEXT NOT NULL, -- 事件源类型(如player、entity、block等)
92
+ source_id TEXT DEFAULT '', -- 事件源实体/方块id
93
+ source_name TEXT NOT NULL DEFAULT '', -- 事件源名称
94
+ source_x REAL, -- 事件源x坐标
95
+ source_y REAL, -- 事件源y坐标
96
+ source_z REAL, -- 事件源z坐标
97
+ event_type TEXT NOT NULL, -- 事件类型(如chat、command、death、join等)
98
+ target_type TEXT DEFAULT '', -- 目标类型
99
+ target_id TEXT DEFAULT '', -- 目标实体id
100
+ target_name TEXT NOT NULL DEFAULT '', -- 目标名称
101
+ target_x REAL, -- 目标x坐标
102
+ target_y REAL, -- 目标y坐标
103
+ target_z REAL, -- 目标z坐标
104
+ detail TEXT DEFAULT '{}', -- 事件详细信息(json)
105
+ created_at INTEGER NOT NULL -- 记录创建时间戳
106
+ )`);
107
+ // 活动表索引:按源id查、按事件类型查、按目标id查
108
+ db.exec(/* sql */ `
109
+ CREATE INDEX IF NOT EXISTS idx_sfmc_act_source ON sfmc_activities(source_id, timestamp);
110
+ CREATE INDEX IF NOT EXISTS idx_sfmc_act_event ON sfmc_activities(event_type, timestamp);
111
+ CREATE INDEX IF NOT EXISTS idx_sfmc_act_target ON sfmc_activities(target_id, timestamp)`);
112
+ // (5 聊天频道配置
113
+ db.exec(/* sql */ `
114
+ CREATE TABLE IF NOT EXISTS sfmc_chat_channels (
115
+ id TEXT NOT NULL, -- 频道唯一id
116
+ name TEXT NOT NULL, -- 频道名称
117
+ type TEXT NOT NULL, -- 频道类型
118
+ prefix TEXT NOT NULL, -- 频道前缀符号
119
+ owner_id TEXT DEFAULT '', -- 频道所有者玩家id
120
+ created_at INTEGER NOT NULL, -- 频道创建时间戳
121
+ config_allow_chat INTEGER NOT NULL DEFAULT 1, -- 配置->是否允许聊天
122
+ config_slow_mode INTEGER NOT NULL DEFAULT 0, -- 配置->慢模式间隔(秒)
123
+ config_is_broadcast INTEGER NOT NULL DEFAULT 0, -- 配置->是否为广播频道
124
+ updated_at INTEGER NOT NULL, -- 频道配置更新时间戳
125
+ PRIMARY KEY (id, name) -- 联合主键
126
+ )`);
127
+ // 频道表索引:按id查、按name+创建时间查
128
+ db.exec(/* sql */ `
129
+ CREATE INDEX IF NOT EXISTS idx_channels_id ON sfmc_chat_channels(id);
130
+ CREATE INDEX IF NOT EXISTS idx_channels_name ON sfmc_chat_channels(name, created_at ASC)`);
131
+ // (6 聊天消息记录
132
+ db.exec(/* sql */ `
133
+ CREATE TABLE IF NOT EXISTS sfmc_chat_messages (
134
+ id TEXT PRIMARY KEY, -- 消息唯一id
135
+ channel_id TEXT NOT NULL, -- 所属频道id
136
+ from_id TEXT NOT NULL, -- 发送者玩家id
137
+ from_name TEXT NOT NULL, -- 发送者名称
138
+ type TEXT NOT NULL DEFAULT 'text', -- 消息类型
139
+ content TEXT NOT NULL, -- 消息内容
140
+ attachment TEXT, -- 附件信息
141
+ show_timestamp INTEGER NOT NULL DEFAULT 0, -- 是否在消息列表显示时间戳
142
+ created_at INTEGER NOT NULL -- 消息发送时间戳
143
+ )`);
144
+ // 消息表索引:按频道+时间查
145
+ db.exec(/* sql */ `
146
+ CREATE INDEX IF NOT EXISTS idx_messages_channel ON sfmc_chat_messages(channel_id, created_at ASC)`);
147
+ // (7 聊天红包记录
148
+ db.exec(/* sql */ `
149
+ CREATE TABLE IF NOT EXISTS sfmc_chat_redpackets (
150
+ id TEXT PRIMARY KEY, -- 红包唯一id
151
+ sender_id TEXT NOT NULL, -- 发红包玩家id
152
+ sender_name TEXT NOT NULL, -- 发红包玩家名称
153
+ total_amount REAL NOT NULL, -- 红包总金额
154
+ remaining_amount REAL NOT NULL, -- 剩余金额
155
+ total_count INTEGER NOT NULL, -- 红包总个数
156
+ remaining_count INTEGER NOT NULL, -- 剩余个数
157
+ receivers TEXT NOT NULL DEFAULT '[]', -- 已领取玩家列表(json)
158
+ target_type TEXT NOT NULL, -- 红包目标类型(all/channel/player等)
159
+ target_id TEXT NOT NULL, -- 红包目标id
160
+ created_at INTEGER NOT NULL, -- 红包创建时间戳
161
+ expires_at INTEGER NOT NULL -- 红包过期时间戳
162
+ )`);
163
+ // 红包表索引:按id查
164
+ db.exec(/* sql */ `
165
+ CREATE INDEX IF NOT EXISTS idx_redpackets_id ON sfmc_chat_redpackets(id)`);
166
+ // (8 合作社核心表
167
+ db.exec(/* sql */ `
168
+ CREATE TABLE IF NOT EXISTS sfmc_coops (
169
+ cid TEXT PRIMARY KEY, -- 合作社唯一id
170
+ name TEXT NOT NULL, -- 合作社名称
171
+ owner_player_id TEXT NOT NULL, -- 社长玩家id
172
+ owner_name_snapshot TEXT NOT NULL DEFAULT '', -- 社长名称快照
173
+ status TEXT NOT NULL DEFAULT 'active', -- 状态(active/inactive/dissolved)
174
+ notice TEXT DEFAULT '', -- 合作社公告
175
+ created_at INTEGER NOT NULL, -- 创建时间戳
176
+ updated_at INTEGER NOT NULL, -- 更新时间戳
177
+ fee_bps INTEGER NOT NULL DEFAULT 500, -- 税率(基点,500=5%)
178
+ version INTEGER NOT NULL DEFAULT 1 -- 乐观锁版本号
179
+ )`);
180
+ // 合作社成员表
181
+ db.exec(/* sql */ `
182
+ CREATE TABLE IF NOT EXISTS sfmc_coop_members (
183
+ cid TEXT NOT NULL, -- 合作社id
184
+ player_id TEXT NOT NULL, -- 成员玩家id
185
+ player_name_snapshot TEXT NOT NULL DEFAULT '', -- 成员名称快照
186
+ role TEXT NOT NULL DEFAULT 'member', -- 角色(member/admin/owner)
187
+ joined_at INTEGER NOT NULL, -- 加入时间戳
188
+ expires_at INTEGER, -- 成员资格过期时间戳(null=永不过期)
189
+ status TEXT NOT NULL DEFAULT 'active', -- 状态(active/expired/kicked)
190
+ version INTEGER NOT NULL DEFAULT 1, -- 乐观锁版本号
191
+ PRIMARY KEY (cid, player_id), -- 联合主键
192
+ FOREIGN KEY (cid) REFERENCES sfmc_coops(cid) ON DELETE CASCADE -- 级联删除
193
+ )`);
194
+ // 确保每个玩家只有一个active合作社成员记录
195
+ db.exec(/* sql */ `
196
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_sfmc_one_active_coop_member ON sfmc_coop_members(player_id) WHERE status='active'`);
197
+ // 合作社邀请表
198
+ db.exec(/* sql */ `
199
+ CREATE TABLE IF NOT EXISTS sfmc_coop_invites (
200
+ id TEXT PRIMARY KEY, -- 邀请唯一id
201
+ cid TEXT NOT NULL, -- 合作社id
202
+ inviter_id TEXT NOT NULL, -- 邀请人玩家id
203
+ invitee_id TEXT NOT NULL, -- 被邀请人玩家id
204
+ invitee_name_snapshot TEXT NOT NULL DEFAULT '', -- 被邀请人名称快照
205
+ role TEXT NOT NULL DEFAULT 'member', -- 邀请角色
206
+ status TEXT NOT NULL DEFAULT 'pending', -- 状态(pending/accepted/rejected/expired)
207
+ expires_at INTEGER NOT NULL, -- 邀请过期时间戳
208
+ created_at INTEGER NOT NULL, -- 创建时间戳
209
+ FOREIGN KEY (cid) REFERENCES sfmc_coops(cid) ON DELETE CASCADE -- 级联删除
210
+ )`);
211
+ // 邀请表索引:按被邀请人+状态+过期时间查
212
+ db.exec(/* sql */ `
213
+ CREATE INDEX IF NOT EXISTS idx_sfmc_coop_invites_target ON sfmc_coop_invites(invitee_id,status,expires_at)`);
214
+ // 合作社账户表(经济系统)
215
+ db.exec(/* sql */ `
216
+ CREATE TABLE IF NOT EXISTS sfmc_coop_accounts (
217
+ cid TEXT PRIMARY KEY, -- 合作社id
218
+ balance INTEGER NOT NULL DEFAULT 0, -- 账户余额
219
+ version INTEGER NOT NULL DEFAULT 1, -- 乐观锁版本号
220
+ updated_at INTEGER NOT NULL, -- 账户更新时间戳
221
+ FOREIGN KEY (cid) REFERENCES sfmc_coops(cid) ON DELETE CASCADE -- 级联删除
222
+ )`);
223
+ // 合作社商店物品表
224
+ db.exec(/* sql */ `
225
+ CREATE TABLE IF NOT EXISTS sfmc_coop_shop_items (
226
+ id TEXT PRIMARY KEY, -- 物品唯一id
227
+ cid TEXT NOT NULL, -- 所属合作社id
228
+ name TEXT NOT NULL, -- 物品名称
229
+ item_type TEXT NOT NULL, -- 物品类型标识符(如minecraft:diamond)
230
+ item_aux INTEGER DEFAULT 0, -- 物品附加值/数据值
231
+ item_nbt TEXT DEFAULT '', -- 物品NBT数据
232
+ type INTEGER NOT NULL, -- 物品交易类型(0=收购,1=出售,2=交换)
233
+ groups TEXT DEFAULT '[]', -- 所属商品分组
234
+ des TEXT DEFAULT '', -- 物品描述
235
+ num INTEGER DEFAULT 0, -- 当前库存数量
236
+ sv INTEGER DEFAULT 0, -- 销售/收购限制
237
+ money INTEGER DEFAULT 0, -- 单价
238
+ is_true INTEGER DEFAULT 1, -- 是否上架(1=上架,0=下架)
239
+ created_at INTEGER NOT NULL, -- 创建时间戳
240
+ updated_at INTEGER NOT NULL, -- 更新时间戳
241
+ FOREIGN KEY (cid) REFERENCES sfmc_coops(cid) ON DELETE CASCADE -- 级联删除
242
+ )`);
243
+ // 合作社银行流水表
244
+ db.exec(/* sql */ `
245
+ CREATE TABLE IF NOT EXISTS sfmc_coop_bank_log (
246
+ id INTEGER PRIMARY KEY AUTOINCREMENT, -- 流水id(自增)
247
+ cid TEXT NOT NULL, -- 合作社id
248
+ actor_id TEXT NOT NULL, -- 操作人玩家id
249
+ actor_name_snapshot TEXT NOT NULL DEFAULT '', -- 操作人名称快照
250
+ type INTEGER NOT NULL, -- 流水类型(0=存入,1=取出,2=交易收入,3=交易支出)
251
+ amount INTEGER NOT NULL, -- 变动金额
252
+ note TEXT DEFAULT '', -- 备注
253
+ transaction_id TEXT NOT NULL DEFAULT '', -- 关联事务id
254
+ created_at INTEGER NOT NULL, -- 创建时间戳
255
+ FOREIGN KEY (cid) REFERENCES sfmc_coops(cid) ON DELETE CASCADE -- 级联删除
256
+ )`);
257
+ // 合作社审计日志表
258
+ db.exec(/* sql */ `
259
+ CREATE TABLE IF NOT EXISTS sfmc_coop_audit_logs (
260
+ id INTEGER PRIMARY KEY AUTOINCREMENT, -- 日志id(自增)
261
+ cid TEXT NOT NULL, -- 合作社id
262
+ actor_id TEXT NOT NULL, -- 操作者id
263
+ target_id TEXT NOT NULL DEFAULT '', -- 被操作目标id
264
+ action TEXT NOT NULL, -- 操作类型(如create/update/delete/transfer等)
265
+ before_state TEXT NOT NULL DEFAULT '{}', -- 操作前状态(json)
266
+ after_state TEXT NOT NULL DEFAULT '{}', -- 操作后状态(json)
267
+ transaction_id TEXT NOT NULL DEFAULT '', -- 关联事务id
268
+ created_at INTEGER NOT NULL, -- 日志创建时间戳
269
+ FOREIGN KEY (cid) REFERENCES sfmc_coops(cid) ON DELETE CASCADE -- 级联删除
270
+ )`);
271
+ // 合作社商店分组表
272
+ db.exec(/* sql */ `
273
+ CREATE TABLE IF NOT EXISTS sfmc_coop_shop_groups (
274
+ groupid TEXT PRIMARY KEY, -- 分组唯一id
275
+ displayname TEXT NOT NULL, -- 分组显示名称
276
+ displaydescribe TEXT DEFAULT '', -- 分组描述
277
+ icon TEXT DEFAULT '', -- 分组图标
278
+ type_function TEXT DEFAULT '' -- 分组功能类型
279
+ )`);
280
+ // (9 领地( LAND )核心表
281
+ db.exec(/* sql */ `
282
+ CREATE TABLE IF NOT EXISTS sfmc_lands (
283
+ id TEXT PRIMARY KEY, -- 领地唯一id
284
+ owner_player_id TEXT NOT NULL, -- 领地所有者玩家id
285
+ owner_name_snapshot TEXT NOT NULL DEFAULT '', -- 所有者名称快照
286
+ dimension INTEGER NOT NULL, -- 所在维度(0=主世界,1=下界,2=末地)
287
+ min_x INTEGER NOT NULL, -- 领地范围最小x坐标
288
+ min_y INTEGER NOT NULL, -- 领地范围最小y坐标
289
+ min_z INTEGER NOT NULL, -- 领地范围最小z坐标
290
+ max_x INTEGER NOT NULL, -- 领地范围最大x坐标
291
+ max_y INTEGER NOT NULL, -- 领地范围最大y坐标
292
+ max_z INTEGER NOT NULL, -- 领地范围最大z坐标
293
+ name TEXT NOT NULL DEFAULT '', -- 领地名称
294
+ status TEXT NOT NULL DEFAULT 'active', -- 领地状态(active/locked/expired/auction)
295
+ created_at INTEGER NOT NULL, -- 领地创建时间戳
296
+ updated_at INTEGER NOT NULL, -- 领地更新时间戳
297
+ expires_at INTEGER, -- 领地过期时间戳(null=永不过期)
298
+ protection_profile TEXT NOT NULL DEFAULT '{}', -- 保护配置(json)
299
+ version INTEGER NOT NULL DEFAULT 1, -- 乐观锁版本号
300
+ purchase_price INTEGER NOT NULL DEFAULT 0, -- 购买价格
301
+ refund_rate REAL NOT NULL DEFAULT 0.7, -- 退款比例(0~1)
302
+ tax_rate INTEGER NOT NULL DEFAULT 0, -- 税率(百分比)
303
+ tax_due_at INTEGER, -- 下一个缴税时间戳
304
+ tax_frozen INTEGER NOT NULL DEFAULT 0 -- 税务冻结状态(0=正常,1=冻结)
305
+ )`);
306
+ // 领地成员表
307
+ db.exec(/* sql */ `
308
+ CREATE TABLE IF NOT EXISTS sfmc_land_members (
309
+ land_id TEXT NOT NULL, -- 领地id
310
+ player_id TEXT NOT NULL, -- 成员玩家id
311
+ player_name_snapshot TEXT NOT NULL DEFAULT '', -- 成员名称快照
312
+ role TEXT NOT NULL DEFAULT 'admin', -- 成员角色(member/trusted/admin/owner)
313
+ created_at INTEGER NOT NULL, -- 加入时间戳
314
+ expires_at INTEGER, -- 成员资格过期时间戳
315
+ PRIMARY KEY (land_id, player_id), -- 联合主键
316
+ FOREIGN KEY (land_id) REFERENCES sfmc_lands(id) ON DELETE CASCADE -- 级联删除
317
+ )`);
318
+ // 领地权限表
319
+ db.exec(/* sql */ `
320
+ CREATE TABLE IF NOT EXISTS sfmc_land_permissions (
321
+ land_id TEXT NOT NULL, -- 领地id
322
+ permission_key TEXT NOT NULL, -- 权限键(如 buildbreak.interact 等)
323
+ subject_type TEXT NOT NULL, -- 权限主体类型(player/group/role/all)
324
+ subject_id TEXT NOT NULL, -- 权限主体id
325
+ allowed INTEGER NOT NULL DEFAULT 0, -- 是否允许(1=允许,0=拒绝,-1=未设置)
326
+ updated_at INTEGER NOT NULL, -- 权限更新时间戳
327
+ PRIMARY KEY (land_id, permission_key, subject_type, subject_id), -- 联合主键
328
+ FOREIGN KEY (land_id) REFERENCES sfmc_lands(id) ON DELETE CASCADE -- 级联删除
329
+ )`);
330
+ // 领地邀请表
331
+ db.exec(/* sql */ `
332
+ CREATE TABLE IF NOT EXISTS sfmc_land_invites (
333
+ id TEXT PRIMARY KEY, -- 邀请唯一id
334
+ land_id TEXT NOT NULL, -- 领地id
335
+ inviter_id TEXT NOT NULL, -- 邀请人id
336
+ invitee_id TEXT NOT NULL, -- 被邀请人id
337
+ role TEXT NOT NULL, -- 邀请角色
338
+ expires_at INTEGER NOT NULL, -- 邀请过期时间戳
339
+ status TEXT NOT NULL DEFAULT 'pending', -- 状态(pending/accepted/rejected/expired)
340
+ created_at INTEGER NOT NULL, -- 创建时间戳
341
+ FOREIGN KEY (land_id) REFERENCES sfmc_lands(id) ON DELETE CASCADE -- 级联删除
342
+ )`);
343
+ // 领地邀请表索引:按被邀请人+状态+过期时间查
344
+ db.exec(/* sql */ `
345
+ CREATE INDEX IF NOT EXISTS idx_sfmc_land_invites_target ON sfmc_land_invites(invitee_id, status, expires_at)`);
346
+ // 领地操作审计日志表
347
+ db.exec(/* sql */ `
348
+ CREATE TABLE IF NOT EXISTS sfmc_land_audit_logs (
349
+ id INTEGER PRIMARY KEY AUTOINCREMENT, -- 日志id(自增)
350
+ land_id TEXT NOT NULL, -- 领地id
351
+ actor_id TEXT NOT NULL, -- 操作者id
352
+ action TEXT NOT NULL, -- 操作类型(如 claim/release/transfer/updat 等)
353
+ payload TEXT NOT NULL DEFAULT '{}', -- 操作载荷(json)
354
+ created_at INTEGER NOT NULL, -- 日志创建时间戳
355
+ FOREIGN KEY (land_id) REFERENCES sfmc_lands(id) ON DELETE CASCADE -- 级联删除
356
+ )`);
357
+ // 领地操作请求表(异步操作)
358
+ db.exec(/* sql */ `
359
+ CREATE TABLE IF NOT EXISTS sfmc_land_operations (
360
+ request_id TEXT PRIMARY KEY, -- 请求唯一id
361
+ operation_type TEXT NOT NULL, -- 操作类型(如 claim/release/upgrade 等)
362
+ actor_id TEXT NOT NULL, -- 操作发起人id
363
+ land_id TEXT, -- 关联领地id(可选)
364
+ status TEXT NOT NULL, -- 请求状态(pending/processing/completed/failed)
365
+ response_json TEXT NOT NULL, -- 操作响应结果(json)
366
+ created_at INTEGER NOT NULL -- 请求创建时间戳
367
+ )`);
368
+ // (10 玩家命令使用统计
369
+ db.exec(/* sql */ `
370
+ CREATE TABLE IF NOT EXISTS sfmc_player_command_usage (
371
+ id INTEGER PRIMARY KEY AUTOINCREMENT, -- 记录id(自增)
372
+ player_id TEXT NOT NULL, -- 玩家id
373
+ command TEXT NOT NULL, -- 命令名称(不含/前缀)
374
+ date TEXT NOT NULL, -- 统计日期(YYYY-MM-DD格式)
375
+ count INTEGER DEFAULT 0, -- 当日该命令使用次数
376
+ UNIQUE(player_id, command, date) -- 唯一约束:同一玩家同一命令同一天
377
+ )`);
378
+ // (11 经济系统
379
+ db.exec(/* sql */ `
380
+ CREATE TABLE IF NOT EXISTS sfmc_economy_price_index (
381
+ item_type TEXT NOT NULL, -- 物品类型标识符
382
+ item_aux INTEGER DEFAULT 0, -- 物品附加值/数据值
383
+ base_buy_price INTEGER NOT NULL DEFAULT 0, -- 基础收购价格
384
+ base_sell_price INTEGER NOT NULL DEFAULT 0, -- 基础出售价格
385
+ current_buy_price INTEGER NOT NULL DEFAULT 0, -- 当前收购价格
386
+ current_sell_price INTEGER NOT NULL DEFAULT 0, -- 当前出售价格
387
+ elasticity REAL DEFAULT 0.3, -- 价格弹性系数
388
+ weekly_acquisition_cap INTEGER, -- 周收购上限
389
+ weekly_acquired INTEGER DEFAULT 0, -- 本周已收购数量
390
+ week_start INTEGER, -- 本周开始时间戳
391
+ rarity TEXT DEFAULT 'common', -- 稀有度(common/uncommon/rare/epic/legendary)
392
+ is_renewable INTEGER DEFAULT 1, -- 是否可再生
393
+ updated_at INTEGER, -- 索引更新时间戳
394
+ PRIMARY KEY (item_type, item_aux) -- 联合主键
395
+ )`);
396
+ // 经济日常任务表
397
+ db.exec(/* sql */ `
398
+ CREATE TABLE IF NOT EXISTS sfmc_economy_daily_tasks (
399
+ id TEXT PRIMARY KEY, -- 任务唯一id
400
+ item_type TEXT NOT NULL, -- 目标物品类型
401
+ item_aux INTEGER DEFAULT 0, -- 物品附加值
402
+ target_qty INTEGER NOT NULL, -- 目标数量
403
+ filled_qty INTEGER DEFAULT 0, -- 已完成数量
404
+ unit_reward INTEGER NOT NULL, -- 单位奖励金额
405
+ created_at INTEGER, -- 任务创建时间戳
406
+ expires_at INTEGER, -- 任务过期时间戳
407
+ status TEXT DEFAULT 'active' -- 任务状态(active/completed/expired)
408
+ )`);
409
+ // 经济系统全局统计表
410
+ db.exec(/* sql */ `
411
+ CREATE TABLE IF NOT EXISTS sfmc_economy_stats (
412
+ id TEXT PRIMARY KEY, -- 统计项id(目前固定为'global')
413
+ total_issued INTEGER DEFAULT 0, -- 累计发行货币量
414
+ total_destroyed INTEGER DEFAULT 0, -- 累计销毁货币量
415
+ total_supply INTEGER DEFAULT 0, -- 当前总供应量
416
+ active_accounts INTEGER DEFAULT 0, -- 活跃账户数
417
+ computed_at INTEGER -- 统计计算时间戳
418
+ )`);
419
+ // 经济账户表
420
+ db.exec(/* sql */ `
421
+ CREATE TABLE IF NOT EXISTS sfmc_economy_accounts (
422
+ player_id TEXT PRIMARY KEY, -- 玩家id(主键)
423
+ player_name_snapshot TEXT NOT NULL DEFAULT '', -- 玩家名称快照
424
+ balance INTEGER NOT NULL DEFAULT 0 CHECK(balance >= 0), -- 账户余额(>=0)
425
+ version INTEGER NOT NULL DEFAULT 1, -- 乐观锁版本号
426
+ created_at INTEGER NOT NULL, -- 账户创建时间戳
427
+ updated_at INTEGER NOT NULL -- 账户更新时间戳
428
+ )`);
429
+ // 经济交易流水表
430
+ db.exec(/* sql */ `
431
+ CREATE TABLE IF NOT EXISTS sfmc_economy_transactions (
432
+ id TEXT PRIMARY KEY, -- 交易唯一id
433
+ transaction_type TEXT NOT NULL, -- 交易类型(transfer/payment/reward/purchase等)
434
+ actor_id TEXT NOT NULL, -- 交易发起人id
435
+ source_player_id TEXT, -- 源玩家id(付款方)
436
+ target_player_id TEXT, -- 目标玩家id(收款方)
437
+ amount INTEGER NOT NULL CHECK(amount > 0), -- 交易金额(>0)
438
+ balance_before INTEGER, -- 交易前余额
439
+ balance_after INTEGER, -- 交易后余额
440
+ reference_type TEXT NOT NULL DEFAULT '', -- 关联业务类型
441
+ reference_id TEXT NOT NULL DEFAULT '', -- 关联业务id
442
+ reason TEXT NOT NULL DEFAULT '', -- 交易原因/备注
443
+ created_at INTEGER NOT NULL -- 交易时间戳
444
+ )`);
445
+ // 经济幂等表(防止重复交易)
446
+ db.exec(/* sql */ `
447
+ CREATE TABLE IF NOT EXISTS sfmc_economy_idempotency (
448
+ actor_id TEXT NOT NULL, -- 操作者id
449
+ idempotency_key TEXT NOT NULL, -- 幂等键
450
+ transaction_id TEXT NOT NULL, -- 已处理的交易id
451
+ response_json TEXT NOT NULL, -- 处理结果(json)
452
+ created_at INTEGER NOT NULL, -- 记录创建时间戳
453
+ PRIMARY KEY (actor_id, idempotency_key) -- 联合主键
454
+ )`);
455
+ // 经济相关索引
456
+ db.exec(/* sql */ `
457
+ CREATE INDEX IF NOT EXISTS idx_economy_transactions_player ON sfmc_economy_transactions(source_player_id, created_at DESC);
458
+ CREATE INDEX IF NOT EXISTS idx_economy_transactions_target ON sfmc_economy_transactions(target_player_id, created_at DESC);
459
+ CREATE INDEX IF NOT EXISTS idx_sfmc_lands_owner ON sfmc_lands(owner_player_id, status);
460
+ CREATE INDEX IF NOT EXISTS idx_sfmc_lands_location ON sfmc_lands(dimension, min_x, max_x, min_z, max_z, status)`);
461
+ }
462
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/domain/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * domain/transaction.ts — SQLite 事务执行器 + 共享业务结果类型
3
+ *
4
+ * 事务描述:
5
+ * - withTransaction(db, fn) IMMEDIATE 事务包裹器
6
+ * 自动 BEGIN IMMEDIATE / COMMIT / ROLLBACK,
7
+ * 异常时 ROLLBACK 并重新抛错;支持同步 + async 回调
8
+ * - withResult(db, fn) withTransaction 的语义别名(供"业务失败但不抛错"
9
+ * 的场景,函数返回 TxResult 自己判 ok)
10
+ *
11
+ * 共享类型:
12
+ * - Transactional 事务执行器所需的最小接口(Pick<DatabaseSync, "exec">),
13
+ * 让领域函数能接受 node:sqlite DatabaseSync 或 routes 注入的
14
+ * 窄化包装
15
+ * - TxResult<T> 领域事务统一结果类型:{ ok:true, data } | { ok:false, error, status, extra? }
16
+ * 所有领域模块(land / coop / economy / redpacket)都从此处引用,
17
+ * 避免跨域循环依赖
18
+ *
19
+ * 用法:
20
+ * const result = withTransaction(db, () => {
21
+ * const rows = query(SQL`SELECT 1`);
22
+ * return rows[0];
23
+ * });
24
+ *
25
+ * 行为约定:
26
+ * - return value → COMMIT 后透传给调用方
27
+ * - throw → ROLLBACK 后重新抛错
28
+ * - return Promise → await 后再 COMMIT / ROLLBACK
29
+ */
30
+ import type { DatabaseSync } from "node:sqlite";
31
+ /** 事务执行器所需的最小接口 (db.exec),让领域函数能接受 node:sqlite DatabaseSync
32
+ * 或 routes 注入的窄化包装 */
33
+ export type Transactional = Pick<DatabaseSync, "exec">;
34
+ /** 领域事务统一结果类型:成功携带 data,失败携带 error + HTTP status。
35
+ * 可选 extra 字段用于携带附加上下文(如当前余额)供 route 层透传。 */
36
+ export type TxResult<T> = {
37
+ ok: true;
38
+ data: T;
39
+ } | {
40
+ ok: false;
41
+ error: string;
42
+ status: number;
43
+ extra?: Record<string, unknown>;
44
+ };
45
+ /**
46
+ * 在 IMMEDIATE 事务包裹下运行回调。回调内任何抛出都会触发 ROLLBACK 并重新抛错。
47
+ *
48
+ * 行为约定:
49
+ * - return value → COMMIT 后透传给调用方
50
+ * - throw → ROLLBACK 后重新抛错
51
+ * - return Promise → await 后再 COMMIT / ROLLBACK
52
+ */
53
+ export declare function withTransaction<T>(db: Transactional, fn: () => T | Promise<T>): T;
54
+ /**
55
+ * withTransaction 的结果封装版 —— 适合领域函数想表达“业务失败但不抛错”的场景。
56
+ *
57
+ * 用法:
58
+ * const r = withResult(db, () => {
59
+ * if (bad) return { ok: false, error: "x" };
60
+ * return { ok: true, ... };
61
+ * });
62
+ * if (!r.ok) ...
63
+ *
64
+ * - 注意:仍由回调决定成功/失败;只在抛错时回滚。
65
+ */
66
+ export declare function withResult<T>(db: Transactional, fn: () => T | Promise<T>): T | Promise<T>;
67
+ //# sourceMappingURL=transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../src/domain/transaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;uBACuB;AACvB,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AAEvD;8CAC8C;AAC9C,MAAM,MAAM,QAAQ,CAAC,CAAC,IAClB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GACrB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC;AAElF;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAC/B,EAAE,EAAE,aAAa,EACjB,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GACvB,CAAC,CA+BH;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAC1B,EAAE,EAAE,aAAa,EACjB,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GACvB,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAEhB"}