@downcity/city 0.2.17 → 0.2.25

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 (164) hide show
  1. package/README.md +33 -16
  2. package/bin/city/admin/index.d.ts +36 -0
  3. package/bin/city/admin/index.d.ts.map +1 -0
  4. package/bin/city/admin/index.js +85 -0
  5. package/bin/city/admin/index.js.map +1 -0
  6. package/bin/city/admin/types.d.ts +41 -0
  7. package/bin/city/admin/types.d.ts.map +1 -0
  8. package/bin/city/admin/types.js +5 -0
  9. package/bin/city/admin/types.js.map +1 -0
  10. package/bin/city/city.d.ts +73 -0
  11. package/bin/city/city.d.ts.map +1 -0
  12. package/bin/city/city.js +116 -0
  13. package/bin/city/city.js.map +1 -0
  14. package/bin/city/http.d.ts +55 -0
  15. package/bin/city/http.d.ts.map +1 -0
  16. package/bin/city/http.js +78 -0
  17. package/bin/city/http.js.map +1 -0
  18. package/bin/city/index.d.ts +20 -0
  19. package/bin/city/index.d.ts.map +1 -0
  20. package/bin/city/index.js +14 -0
  21. package/bin/city/index.js.map +1 -0
  22. package/bin/city/invoker/ai/index.d.ts +126 -0
  23. package/bin/city/invoker/ai/index.d.ts.map +1 -0
  24. package/bin/city/invoker/ai/index.js +247 -0
  25. package/bin/city/invoker/ai/index.js.map +1 -0
  26. package/bin/city/invoker/ai/stream.d.ts +8 -0
  27. package/bin/city/invoker/ai/stream.d.ts.map +1 -0
  28. package/bin/city/invoker/ai/stream.js +17 -0
  29. package/bin/city/invoker/ai/stream.js.map +1 -0
  30. package/bin/city/invoker/ai/types.d.ts +14 -0
  31. package/bin/city/invoker/ai/types.d.ts.map +1 -0
  32. package/bin/city/invoker/ai/types.js +9 -0
  33. package/bin/city/invoker/ai/types.js.map +1 -0
  34. package/bin/city/invoker/balance/index.d.ts +76 -0
  35. package/bin/city/invoker/balance/index.d.ts.map +1 -0
  36. package/bin/city/invoker/balance/index.js +137 -0
  37. package/bin/city/invoker/balance/index.js.map +1 -0
  38. package/bin/city/invoker/balance/types.d.ts +324 -0
  39. package/bin/city/invoker/balance/types.d.ts.map +1 -0
  40. package/bin/city/invoker/balance/types.js +9 -0
  41. package/bin/city/invoker/balance/types.js.map +1 -0
  42. package/bin/city/invoker/env/index.d.ts +33 -0
  43. package/bin/city/invoker/env/index.d.ts.map +1 -0
  44. package/bin/city/invoker/env/index.js +53 -0
  45. package/bin/city/invoker/env/index.js.map +1 -0
  46. package/bin/city/invoker/env/types.d.ts +57 -0
  47. package/bin/city/invoker/env/types.d.ts.map +1 -0
  48. package/bin/city/invoker/env/types.js +5 -0
  49. package/bin/city/invoker/env/types.js.map +1 -0
  50. package/bin/city/invoker/invoker.d.ts +44 -0
  51. package/bin/city/invoker/invoker.d.ts.map +1 -0
  52. package/bin/city/invoker/invoker.js +87 -0
  53. package/bin/city/invoker/invoker.js.map +1 -0
  54. package/bin/city/invoker/payment/index.d.ts +69 -0
  55. package/bin/city/invoker/payment/index.d.ts.map +1 -0
  56. package/bin/city/invoker/payment/index.js +110 -0
  57. package/bin/city/invoker/payment/index.js.map +1 -0
  58. package/bin/city/invoker/payment/types.d.ts +66 -0
  59. package/bin/city/invoker/payment/types.d.ts.map +1 -0
  60. package/bin/city/invoker/payment/types.js +10 -0
  61. package/bin/city/invoker/payment/types.js.map +1 -0
  62. package/bin/city/invoker/towns/index.d.ts +46 -0
  63. package/bin/city/invoker/towns/index.d.ts.map +1 -0
  64. package/bin/city/invoker/towns/index.js +73 -0
  65. package/bin/city/invoker/towns/index.js.map +1 -0
  66. package/bin/city/invoker/towns/types.d.ts +46 -0
  67. package/bin/city/invoker/towns/types.d.ts.map +1 -0
  68. package/bin/city/invoker/towns/types.js +5 -0
  69. package/bin/city/invoker/towns/types.js.map +1 -0
  70. package/bin/city/types/city.d.ts +71 -0
  71. package/bin/city/types/city.d.ts.map +1 -0
  72. package/bin/city/types/city.js +8 -0
  73. package/bin/city/types/city.js.map +1 -0
  74. package/bin/city/user/index.d.ts +27 -0
  75. package/bin/city/user/index.d.ts.map +1 -0
  76. package/bin/city/user/index.js +100 -0
  77. package/bin/city/user/index.js.map +1 -0
  78. package/bin/city/user/types.d.ts +49 -0
  79. package/bin/city/user/types.d.ts.map +1 -0
  80. package/bin/city/user/types.js +5 -0
  81. package/bin/city/user/types.js.map +1 -0
  82. package/bin/core/auth/authenticator.d.ts +6 -6
  83. package/bin/core/auth/authenticator.d.ts.map +1 -1
  84. package/bin/core/auth/authenticator.js +11 -11
  85. package/bin/core/auth/authenticator.js.map +1 -1
  86. package/bin/core/auth/token-signer.js +4 -4
  87. package/bin/core/auth/token-signer.js.map +1 -1
  88. package/bin/core/auth/types.d.ts +7 -7
  89. package/bin/core/auth/types.d.ts.map +1 -1
  90. package/bin/core/base/base-init.d.ts +5 -5
  91. package/bin/core/base/base-init.d.ts.map +1 -1
  92. package/bin/core/base/base-init.js +8 -8
  93. package/bin/core/base/base-init.js.map +1 -1
  94. package/bin/core/base/base-instruction.js +1 -1
  95. package/bin/core/base/base-instruction.js.map +1 -1
  96. package/bin/core/base/base-router.d.ts +2 -2
  97. package/bin/core/base/base-router.d.ts.map +1 -1
  98. package/bin/core/base/base-router.js +15 -15
  99. package/bin/core/base/base-router.js.map +1 -1
  100. package/bin/core/base/base-runtime.d.ts +3 -3
  101. package/bin/core/base/base-runtime.d.ts.map +1 -1
  102. package/bin/core/base/base-runtime.js +4 -4
  103. package/bin/core/base/base-runtime.js.map +1 -1
  104. package/bin/core/base/base.d.ts +8 -8
  105. package/bin/core/base/base.d.ts.map +1 -1
  106. package/bin/core/base/base.js +10 -10
  107. package/bin/core/base/base.js.map +1 -1
  108. package/bin/core/runtime.d.ts +4 -4
  109. package/bin/core/runtime.d.ts.map +1 -1
  110. package/bin/core/runtime.js +1 -1
  111. package/bin/core/types.d.ts +3 -3
  112. package/bin/core/types.d.ts.map +1 -1
  113. package/bin/index.d.ts +25 -5
  114. package/bin/index.d.ts.map +1 -1
  115. package/bin/index.js +18 -7
  116. package/bin/index.js.map +1 -1
  117. package/bin/service/ai/openai-compatible-provider.d.ts +1 -1
  118. package/bin/service/ai/openai-compatible-provider.js +2 -2
  119. package/bin/service/ai/openai-compatible-provider.js.map +1 -1
  120. package/bin/service/ai/provider.d.ts +1 -1
  121. package/bin/service/ai/provider.js +1 -1
  122. package/bin/service/ai/types.d.ts +1 -1
  123. package/bin/service/installable-service.d.ts +3 -3
  124. package/bin/service/installable-service.d.ts.map +1 -1
  125. package/bin/service/installable-service.js +1 -1
  126. package/bin/service/installable-service.js.map +1 -1
  127. package/bin/service/instruction.js +7 -7
  128. package/bin/service/instruction.js.map +1 -1
  129. package/bin/service/service.d.ts +5 -5
  130. package/bin/service/service.d.ts.map +1 -1
  131. package/bin/service/service.js +1 -1
  132. package/bin/service/service.js.map +1 -1
  133. package/bin/service/{studios → towns}/schema.d.ts +23 -23
  134. package/bin/service/towns/schema.d.ts.map +1 -0
  135. package/bin/service/towns/schema.js +60 -0
  136. package/bin/service/towns/schema.js.map +1 -0
  137. package/bin/service/towns/town-store.d.ts +17 -0
  138. package/bin/service/towns/town-store.d.ts.map +1 -0
  139. package/bin/service/towns/town-store.js +49 -0
  140. package/bin/service/towns/town-store.js.map +1 -0
  141. package/bin/service/towns/towns-service.d.ts +15 -0
  142. package/bin/service/towns/towns-service.d.ts.map +1 -0
  143. package/bin/service/towns/towns-service.js +54 -0
  144. package/bin/service/towns/towns-service.js.map +1 -0
  145. package/bin/service/towns/types.d.ts +51 -0
  146. package/bin/service/towns/types.d.ts.map +1 -0
  147. package/bin/service/towns/types.js +7 -0
  148. package/bin/service/towns/types.js.map +1 -0
  149. package/package.json +9 -8
  150. package/bin/service/studios/schema.d.ts.map +0 -1
  151. package/bin/service/studios/schema.js +0 -60
  152. package/bin/service/studios/schema.js.map +0 -1
  153. package/bin/service/studios/studio-store.d.ts +0 -17
  154. package/bin/service/studios/studio-store.d.ts.map +0 -1
  155. package/bin/service/studios/studio-store.js +0 -49
  156. package/bin/service/studios/studio-store.js.map +0 -1
  157. package/bin/service/studios/studios-service.d.ts +0 -15
  158. package/bin/service/studios/studios-service.d.ts.map +0 -1
  159. package/bin/service/studios/studios-service.js +0 -51
  160. package/bin/service/studios/studios-service.js.map +0 -1
  161. package/bin/service/studios/types.d.ts +0 -51
  162. package/bin/service/studios/types.d.ts.map +0 -1
  163. package/bin/service/studios/types.js +0 -7
  164. package/bin/service/studios/types.js.map +0 -1
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Balance Service 管理端调用器。
3
+ *
4
+ * 路由:/v1/balance/*
5
+ */
6
+ const PREFIX = "/v1/balance";
7
+ /**
8
+ * Balance 管理端调用器。
9
+ *
10
+ * 通过 `admin.balance` 访问:
11
+ * ```ts
12
+ * await admin.balance.listUsers();
13
+ * const issued = await admin.balance.redeemCodes.create({ amount: 500 });
14
+ * ```
15
+ */
16
+ export class BalanceInvoker {
17
+ /**
18
+ * redeem_code 子调用器。
19
+ */
20
+ redeemCodes;
21
+ req;
22
+ constructor(opts) {
23
+ this.req = opts.requestJSON;
24
+ this.redeemCodes = new BalanceRedeemCodeInvoker(opts);
25
+ }
26
+ /**
27
+ * 列出余额账户。
28
+ */
29
+ async listUsers(limit) {
30
+ const body = await this.req(withQuery(`${PREFIX}/users`, { limit }), { method: "GET" });
31
+ return body.items;
32
+ }
33
+ /**
34
+ * 列出余额流水。
35
+ */
36
+ async listHistory(input = {}) {
37
+ const body = await this.req(withQuery(`${PREFIX}/history`, input), { method: "GET" });
38
+ return body.items;
39
+ }
40
+ /**
41
+ * 列出充值单。
42
+ */
43
+ async listTopups(input = {}) {
44
+ const body = await this.req(withQuery(`${PREFIX}/topups`, input), { method: "GET" });
45
+ return body.items;
46
+ }
47
+ /**
48
+ * 手动加余额。
49
+ */
50
+ add(input) {
51
+ return this.req(`${PREFIX}/add`, {
52
+ method: "POST",
53
+ body: JSON.stringify(input),
54
+ });
55
+ }
56
+ /**
57
+ * 手动扣余额。
58
+ */
59
+ sub(input) {
60
+ return this.req(`${PREFIX}/sub`, {
61
+ method: "POST",
62
+ body: JSON.stringify(input),
63
+ });
64
+ }
65
+ /**
66
+ * 确认充值单到账。
67
+ */
68
+ finishTopup(input) {
69
+ return this.req(`${PREFIX}/topups/finish`, {
70
+ method: "POST",
71
+ body: JSON.stringify(input),
72
+ });
73
+ }
74
+ /**
75
+ * 取消充值单。
76
+ */
77
+ cancelTopup(input) {
78
+ return this.req(`${PREFIX}/topups/cancel`, {
79
+ method: "POST",
80
+ body: JSON.stringify(input),
81
+ });
82
+ }
83
+ }
84
+ /**
85
+ * redeem_code 管理端调用器。
86
+ */
87
+ export class BalanceRedeemCodeInvoker {
88
+ req;
89
+ constructor(opts) {
90
+ this.req = opts.requestJSON;
91
+ }
92
+ /**
93
+ * 列出 redeem_code。
94
+ */
95
+ async list(input = {}) {
96
+ const body = await this.req(withQuery(`${PREFIX}/redeem-codes`, input), { method: "GET" });
97
+ return body.items;
98
+ }
99
+ /**
100
+ * 创建 redeem_code。
101
+ */
102
+ create(input) {
103
+ return this.req(`${PREFIX}/redeem-codes/create`, {
104
+ method: "POST",
105
+ body: JSON.stringify(input),
106
+ });
107
+ }
108
+ /**
109
+ * 停用 redeem_code。
110
+ */
111
+ disable(input) {
112
+ return this.req(`${PREFIX}/redeem-codes/disable`, {
113
+ method: "POST",
114
+ body: JSON.stringify(input),
115
+ });
116
+ }
117
+ }
118
+ /**
119
+ * 构造带 query 的 URL。
120
+ *
121
+ * 关键说明(中文)
122
+ * - SDK 统一处理 query 拼接,避免调用方手写 URL
123
+ * - 空值会被自动忽略
124
+ */
125
+ function withQuery(url, query) {
126
+ if (!query)
127
+ return url;
128
+ const search = new URLSearchParams();
129
+ for (const [key, value] of Object.entries(query)) {
130
+ if (value === undefined || value === null || value === "")
131
+ continue;
132
+ search.set(key, String(value));
133
+ }
134
+ const qs = search.toString();
135
+ return qs ? `${url}?${qs}` : url;
136
+ }
137
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/city/invoker/balance/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,324 @@
1
+ /**
2
+ * Balance 管理端类型。
3
+ *
4
+ * 关键说明(中文)
5
+ * - 这里描述的是 Admin City 看到的 balance service 结构
6
+ * - redeem_code 明文只在创建结果中返回一次
7
+ */
8
+ /**
9
+ * 余额账户记录。
10
+ */
11
+ export interface BalanceAccountRecord {
12
+ /**
13
+ * 用户 ID。
14
+ */
15
+ user_id: string;
16
+ /**
17
+ * 当前余额。
18
+ */
19
+ balance: number;
20
+ /**
21
+ * 余额单位。
22
+ */
23
+ unit: string;
24
+ /**
25
+ * 创建时间。
26
+ */
27
+ created_at: string;
28
+ /**
29
+ * 更新时间。
30
+ */
31
+ updated_at: string;
32
+ }
33
+ /**
34
+ * 余额流水记录。
35
+ */
36
+ export interface BalanceLedgerRecord {
37
+ /**
38
+ * 流水主键。
39
+ */
40
+ entry_id: string;
41
+ /**
42
+ * 用户 ID。
43
+ */
44
+ user_id: string;
45
+ /**
46
+ * 流水类型。
47
+ */
48
+ kind: "init" | "add" | "sub" | "topup" | "redeem";
49
+ /**
50
+ * 本次变动金额。
51
+ */
52
+ amount: number;
53
+ /**
54
+ * 变动后的余额快照。
55
+ */
56
+ balance_after: number;
57
+ /**
58
+ * 余额单位。
59
+ */
60
+ unit: string;
61
+ /**
62
+ * 说明文本。
63
+ */
64
+ note: string;
65
+ /**
66
+ * 外部引用 ID。
67
+ */
68
+ ref: string;
69
+ /**
70
+ * 扩展字段 JSON 文本。
71
+ */
72
+ metadata_json: string;
73
+ /**
74
+ * 创建时间。
75
+ */
76
+ created_at: string;
77
+ }
78
+ /**
79
+ * 充值单记录。
80
+ */
81
+ export interface BalanceTopupRecord {
82
+ /**
83
+ * 充值单 ID。
84
+ */
85
+ topup_id: string;
86
+ /**
87
+ * 用户 ID。
88
+ */
89
+ user_id: string;
90
+ /**
91
+ * 充值金额。
92
+ */
93
+ amount: number;
94
+ /**
95
+ * 余额单位。
96
+ */
97
+ unit: string;
98
+ /**
99
+ * 充值单状态。
100
+ */
101
+ status: "pending" | "paid" | "canceled";
102
+ /**
103
+ * 说明文本。
104
+ */
105
+ note: string;
106
+ /**
107
+ * 外部引用 ID。
108
+ */
109
+ ref: string;
110
+ /**
111
+ * 扩展字段 JSON 文本。
112
+ */
113
+ metadata_json: string;
114
+ /**
115
+ * 创建时间。
116
+ */
117
+ created_at: string;
118
+ /**
119
+ * 更新时间。
120
+ */
121
+ updated_at: string;
122
+ }
123
+ /**
124
+ * redeem_code 记录。
125
+ */
126
+ export interface BalanceRedeemCodeRecord {
127
+ /**
128
+ * redeem_code 主键。
129
+ */
130
+ redeem_code_id: string;
131
+ /**
132
+ * 充值金额。
133
+ */
134
+ amount: number;
135
+ /**
136
+ * 余额单位。
137
+ */
138
+ unit: string;
139
+ /**
140
+ * redeem_code 状态。
141
+ */
142
+ status: "active" | "redeemed" | "disabled";
143
+ /**
144
+ * 脱敏后的兑换码文本。
145
+ */
146
+ code_mask: string;
147
+ /**
148
+ * 说明文本。
149
+ */
150
+ note: string;
151
+ /**
152
+ * 外部引用 ID。
153
+ */
154
+ ref: string;
155
+ /**
156
+ * 扩展字段 JSON 文本。
157
+ */
158
+ metadata_json: string;
159
+ /**
160
+ * 被哪个用户兑换。
161
+ */
162
+ redeemed_by_user_id: string;
163
+ /**
164
+ * 兑换时间。
165
+ */
166
+ redeemed_at: string;
167
+ /**
168
+ * 创建时间。
169
+ */
170
+ created_at: string;
171
+ /**
172
+ * 更新时间。
173
+ */
174
+ updated_at: string;
175
+ }
176
+ /**
177
+ * 创建 redeem_code 的输入。
178
+ */
179
+ export interface BalanceRedeemCodeCreateInput {
180
+ /**
181
+ * redeem_code 额度。
182
+ */
183
+ amount: number;
184
+ /**
185
+ * 可选自定义 redeem_code 明文。
186
+ *
187
+ * 不传时由服务端自动生成。
188
+ */
189
+ code?: string;
190
+ /**
191
+ * 说明文本。
192
+ */
193
+ note?: string;
194
+ /**
195
+ * 外部引用 ID。
196
+ */
197
+ ref?: string;
198
+ /**
199
+ * 扩展字段。
200
+ */
201
+ meta?: Record<string, unknown>;
202
+ }
203
+ /**
204
+ * 创建 redeem_code 的结果。
205
+ */
206
+ export interface BalanceRedeemCodeIssueResult extends BalanceRedeemCodeRecord {
207
+ /**
208
+ * redeem_code 明文。
209
+ *
210
+ * 只在创建返回中可见。
211
+ */
212
+ code: string;
213
+ }
214
+ /**
215
+ * 查询流水的输入。
216
+ */
217
+ export interface BalanceHistoryListInput {
218
+ /**
219
+ * 可选用户 ID。
220
+ */
221
+ user_id?: string;
222
+ /**
223
+ * 返回条数上限。
224
+ */
225
+ limit?: string | number;
226
+ }
227
+ /**
228
+ * 查询充值单的输入。
229
+ */
230
+ export interface BalanceTopupListInput {
231
+ /**
232
+ * 可选用户 ID。
233
+ */
234
+ user_id?: string;
235
+ /**
236
+ * 返回条数上限。
237
+ */
238
+ limit?: string | number;
239
+ }
240
+ /**
241
+ * 查询 redeem_code 的输入。
242
+ */
243
+ export interface BalanceRedeemCodeListInput {
244
+ /**
245
+ * 可选兑换状态。
246
+ */
247
+ status?: "active" | "redeemed" | "disabled";
248
+ /**
249
+ * 可选兑换用户 ID。
250
+ */
251
+ user_id?: string;
252
+ /**
253
+ * 返回条数上限。
254
+ */
255
+ limit?: string | number;
256
+ }
257
+ /**
258
+ * 手动加减余额的输入。
259
+ */
260
+ export interface BalanceMutationInput {
261
+ /**
262
+ * 目标用户 ID。
263
+ */
264
+ user_id: string;
265
+ /**
266
+ * 变动额度。
267
+ */
268
+ amount: number;
269
+ /**
270
+ * 说明文本。
271
+ */
272
+ note?: string;
273
+ /**
274
+ * 外部引用 ID。
275
+ */
276
+ ref?: string;
277
+ /**
278
+ * 扩展字段。
279
+ */
280
+ meta?: Record<string, unknown>;
281
+ }
282
+ /**
283
+ * 完成或取消充值单的输入。
284
+ */
285
+ export interface BalanceTopupUpdateInput {
286
+ /**
287
+ * 充值单 ID。
288
+ */
289
+ topup_id: string;
290
+ /**
291
+ * 说明文本。
292
+ */
293
+ note?: string;
294
+ /**
295
+ * 外部引用 ID。
296
+ */
297
+ ref?: string;
298
+ /**
299
+ * 扩展字段。
300
+ */
301
+ meta?: Record<string, unknown>;
302
+ }
303
+ /**
304
+ * 停用 redeem_code 的输入。
305
+ */
306
+ export interface BalanceRedeemCodeDisableInput {
307
+ /**
308
+ * redeem_code ID。
309
+ */
310
+ redeem_code_id: string;
311
+ /**
312
+ * 说明文本。
313
+ */
314
+ note?: string;
315
+ /**
316
+ * 外部引用 ID。
317
+ */
318
+ ref?: string;
319
+ /**
320
+ * 扩展字段。
321
+ */
322
+ meta?: Record<string, unknown>;
323
+ }
324
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/city/invoker/balance/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IAElD;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,UAAU,CAAC;IAExC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;IAE3C;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,4BAA6B,SAAQ,uBAAuB;IAC3E;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;OAEG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;IAE5C;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Balance 管理端类型。
3
+ *
4
+ * 关键说明(中文)
5
+ * - 这里描述的是 Admin City 看到的 balance service 结构
6
+ * - redeem_code 明文只在创建结果中返回一次
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/city/invoker/balance/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Env Service 调用器(对应 core service/env/env-service.ts EnvService)。
3
+ *
4
+ * 管理端操作:list / upsert / remove / import。
5
+ */
6
+ import type { RequestInitLike } from "../../http.js";
7
+ import type { EnvCatalogScope, EnvEntry, EnvUpsertInput } from "./types.js";
8
+ /**
9
+ * 环境变量管理调用器。
10
+ *
11
+ * 通过 Admin City .env 访问:
12
+ * ```ts
13
+ * await admin.env.list();
14
+ * await admin.env.upsert({ key: "KEY", value: "val" });
15
+ * ```
16
+ */
17
+ export declare class EnvInvoker {
18
+ private readonly req;
19
+ constructor(opts: {
20
+ requestJSON: <T>(path: string, init: RequestInitLike) => Promise<T>;
21
+ });
22
+ /** 列出环境变量 */
23
+ list(): Promise<EnvEntry[]>;
24
+ /** 读取 City 聚合后的 env requirement 目录 */
25
+ catalog(): Promise<EnvCatalogScope[]>;
26
+ /** 写入/更新 */
27
+ upsert(input: EnvUpsertInput): Promise<unknown>;
28
+ /** 删除 */
29
+ remove(key: string): Promise<unknown>;
30
+ /** 批量导入 .env 文本 */
31
+ import(raw: string): Promise<unknown>;
32
+ }
33
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/city/invoker/env/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAI5E;;;;;;;;GAQG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAyD;gBAEjE,IAAI,EAAE;QAChB,WAAW,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;KACrE;IAID,aAAa;IACP,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAKjC,sCAAsC;IAChC,OAAO,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAK3C,YAAY;IACZ,MAAM,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAO/C,SAAS;IACT,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAOrC,mBAAmB;IACnB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAMtC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Env Service 调用器(对应 core service/env/env-service.ts EnvService)。
3
+ *
4
+ * 管理端操作:list / upsert / remove / import。
5
+ */
6
+ const PREFIX = "/v1/env";
7
+ /**
8
+ * 环境变量管理调用器。
9
+ *
10
+ * 通过 Admin City .env 访问:
11
+ * ```ts
12
+ * await admin.env.list();
13
+ * await admin.env.upsert({ key: "KEY", value: "val" });
14
+ * ```
15
+ */
16
+ export class EnvInvoker {
17
+ req;
18
+ constructor(opts) {
19
+ this.req = opts.requestJSON;
20
+ }
21
+ /** 列出环境变量 */
22
+ async list() {
23
+ const body = await this.req(`${PREFIX}/list`, { method: "GET" });
24
+ return body.items;
25
+ }
26
+ /** 读取 City 聚合后的 env requirement 目录 */
27
+ async catalog() {
28
+ const body = await this.req(`${PREFIX}/catalog`, { method: "GET" });
29
+ return body.items;
30
+ }
31
+ /** 写入/更新 */
32
+ upsert(input) {
33
+ return this.req(`${PREFIX}/upsert`, {
34
+ method: "POST",
35
+ body: JSON.stringify(input),
36
+ });
37
+ }
38
+ /** 删除 */
39
+ remove(key) {
40
+ return this.req(`${PREFIX}/remove`, {
41
+ method: "POST",
42
+ body: JSON.stringify({ key }),
43
+ });
44
+ }
45
+ /** 批量导入 .env 文本 */
46
+ import(raw) {
47
+ return this.req(`${PREFIX}/import`, {
48
+ method: "POST",
49
+ body: JSON.stringify({ raw }),
50
+ });
51
+ }
52
+ }
53
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/city/invoker/env/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,MAAM,GAAG,SAAS,CAAC;AAEzB;;;;;;;;GAQG;AACH,MAAM,OAAO,UAAU;IACJ,GAAG,CAAyD;IAE7E,YAAY,IAEX;QACC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;IAC9B,CAAC;IAED,aAAa;IACb,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAwB,GAAG,MAAM,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACxF,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,sCAAsC;IACtC,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAA+B,GAAG,MAAM,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAClG,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,YAAY;IACZ,MAAM,CAAC,KAAqB;QAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,SAAS,EAAE;YAClC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,SAAS;IACT,MAAM,CAAC,GAAW;QAChB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,SAAS,EAAE;YAClC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;SAC9B,CAAC,CAAC;IACL,CAAC;IAED,mBAAmB;IACnB,MAAM,CAAC,GAAW;QAChB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,SAAS,EAAE;YAClC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;SAC9B,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Env 类型(对应 core service/env/types.ts)。
3
+ */
4
+ /** 环境变量记录 */
5
+ export interface EnvEntry {
6
+ key: string;
7
+ value: string;
8
+ source: "database";
9
+ }
10
+ /** 写入/更新 env 的输入 */
11
+ export interface EnvUpsertInput {
12
+ key: string;
13
+ value: string;
14
+ }
15
+ /**
16
+ * 单个 env requirement 的当前状态。
17
+ */
18
+ export interface EnvRequirementStatus {
19
+ /**
20
+ * 环境变量 key。
21
+ */
22
+ key: string;
23
+ /**
24
+ * 给管理员展示的说明文本。
25
+ */
26
+ description: string;
27
+ /**
28
+ * 当前是否必填。
29
+ */
30
+ required: boolean;
31
+ /**
32
+ * 当前 City 是否已经配置了该 key。
33
+ */
34
+ configured: boolean;
35
+ /**
36
+ * 当前值的安全预览文本。
37
+ */
38
+ value_preview?: string;
39
+ }
40
+ /**
41
+ * City 聚合后的 env 配置分组。
42
+ */
43
+ export interface EnvCatalogScope {
44
+ /**
45
+ * 分组唯一标识。
46
+ */
47
+ id: string;
48
+ /**
49
+ * 分组展示名称。
50
+ */
51
+ name: string;
52
+ /**
53
+ * 当前分组下的 env requirement 列表。
54
+ */
55
+ env: EnvRequirementStatus[];
56
+ }
57
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/city/invoker/env/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,aAAa;AACb,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,oBAAoB;AACpB,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,GAAG,EAAE,oBAAoB,EAAE,CAAC;CAC7B"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Env 类型(对应 core service/env/types.ts)。
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/city/invoker/env/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}