@downcity/city 0.2.82 → 0.2.93

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 (230) hide show
  1. package/README.md +10 -10
  2. package/bin/client/city.d.ts +90 -0
  3. package/bin/client/city.d.ts.map +1 -0
  4. package/bin/{city → client}/city.js +32 -22
  5. package/bin/client/city.js.map +1 -0
  6. package/bin/client/types.d.ts +77 -0
  7. package/bin/client/types.d.ts.map +1 -0
  8. package/bin/client/types.js +8 -0
  9. package/bin/{core → client}/types.js.map +1 -1
  10. package/bin/{core → federation}/auth/authenticator.d.ts +7 -7
  11. package/bin/federation/auth/authenticator.d.ts.map +1 -0
  12. package/bin/{core → federation}/auth/authenticator.js +15 -15
  13. package/bin/federation/auth/authenticator.js.map +1 -0
  14. package/bin/federation/auth/token-signer.d.ts.map +1 -0
  15. package/bin/{core → federation}/auth/token-signer.js +4 -4
  16. package/bin/federation/auth/token-signer.js.map +1 -0
  17. package/bin/{core → federation}/auth/types.d.ts +6 -6
  18. package/bin/federation/auth/types.d.ts.map +1 -0
  19. package/bin/federation/auth/types.js.map +1 -0
  20. package/bin/federation/federation-env-catalog.d.ts +13 -0
  21. package/bin/federation/federation-env-catalog.d.ts.map +1 -0
  22. package/bin/{core/base/base-env-catalog.js → federation/federation-env-catalog.js} +5 -5
  23. package/bin/federation/federation-env-catalog.js.map +1 -0
  24. package/bin/{core/base/base-init.d.ts → federation/federation-init.d.ts} +17 -17
  25. package/bin/federation/federation-init.d.ts.map +1 -0
  26. package/bin/{core/base/base-init.js → federation/federation-init.js} +27 -27
  27. package/bin/federation/federation-init.js.map +1 -0
  28. package/bin/federation/federation-instruction.d.ts +11 -0
  29. package/bin/federation/federation-instruction.d.ts.map +1 -0
  30. package/bin/{core/base/base-instruction.js → federation/federation-instruction.js} +4 -4
  31. package/bin/federation/federation-instruction.js.map +1 -0
  32. package/bin/{core/base/base-router.d.ts → federation/federation-router.d.ts} +11 -11
  33. package/bin/federation/federation-router.d.ts.map +1 -0
  34. package/bin/{core/base/base-router.js → federation/federation-router.js} +62 -45
  35. package/bin/federation/federation-router.js.map +1 -0
  36. package/bin/{core/base/base-runtime.d.ts → federation/federation-runtime.d.ts} +6 -6
  37. package/bin/federation/federation-runtime.d.ts.map +1 -0
  38. package/bin/{core/base/base-runtime.js → federation/federation-runtime.js} +10 -10
  39. package/bin/federation/federation-runtime.js.map +1 -0
  40. package/bin/{core/base/base.d.ts → federation/federation.d.ts} +15 -15
  41. package/bin/federation/federation.d.ts.map +1 -0
  42. package/bin/{core/base/base.js → federation/federation.js} +22 -22
  43. package/bin/federation/federation.js.map +1 -0
  44. package/bin/{core → federation}/runtime.d.ts +9 -9
  45. package/bin/federation/runtime.d.ts.map +1 -0
  46. package/bin/federation/runtime.js +13 -0
  47. package/bin/federation/runtime.js.map +1 -0
  48. package/bin/{core → federation}/types.d.ts +6 -6
  49. package/bin/federation/types.d.ts.map +1 -0
  50. package/bin/{city/user → federation}/types.js.map +1 -1
  51. package/bin/index.d.ts +23 -26
  52. package/bin/index.d.ts.map +1 -1
  53. package/bin/index.js +13 -15
  54. package/bin/index.js.map +1 -1
  55. package/bin/{city → pact}/admin/index.d.ts +23 -7
  56. package/bin/pact/admin/index.d.ts.map +1 -0
  57. package/bin/{city → pact}/admin/index.js +21 -8
  58. package/bin/pact/admin/index.js.map +1 -0
  59. package/bin/{city → pact}/admin/types.d.ts +7 -1
  60. package/bin/pact/admin/types.d.ts.map +1 -0
  61. package/bin/pact/admin/types.js.map +1 -0
  62. package/bin/{city → pact}/http.d.ts.map +1 -1
  63. package/bin/{city → pact}/http.js.map +1 -1
  64. package/bin/{city → pact}/invoker/ai/index.d.ts +1 -1
  65. package/bin/{city → pact}/invoker/ai/index.d.ts.map +1 -1
  66. package/bin/{city → pact}/invoker/ai/index.js +1 -1
  67. package/bin/{city → pact}/invoker/ai/index.js.map +1 -1
  68. package/bin/{city → pact}/invoker/ai/stream.d.ts +1 -1
  69. package/bin/{city → pact}/invoker/ai/stream.d.ts.map +1 -1
  70. package/bin/{city → pact}/invoker/ai/stream.js +1 -1
  71. package/bin/{city → pact}/invoker/ai/stream.js.map +1 -1
  72. package/bin/{city → pact}/invoker/ai/types.d.ts +2 -2
  73. package/bin/{city → pact}/invoker/ai/types.d.ts.map +1 -1
  74. package/bin/pact/invoker/ai/types.js +9 -0
  75. package/bin/pact/invoker/ai/types.js.map +1 -0
  76. package/bin/{city → pact}/invoker/balance/index.d.ts.map +1 -1
  77. package/bin/{city → pact}/invoker/balance/index.js.map +1 -1
  78. package/bin/{city → pact}/invoker/balance/types.d.ts.map +1 -1
  79. package/bin/pact/invoker/balance/types.js.map +1 -0
  80. package/bin/pact/invoker/cities/index.d.ts +46 -0
  81. package/bin/pact/invoker/cities/index.d.ts.map +1 -0
  82. package/bin/{city/invoker/towns → pact/invoker/cities}/index.js +16 -16
  83. package/bin/pact/invoker/cities/index.js.map +1 -0
  84. package/bin/pact/invoker/cities/types.d.ts +46 -0
  85. package/bin/pact/invoker/cities/types.d.ts.map +1 -0
  86. package/bin/pact/invoker/cities/types.js +5 -0
  87. package/bin/pact/invoker/cities/types.js.map +1 -0
  88. package/bin/{city → pact}/invoker/env/index.d.ts +2 -2
  89. package/bin/{city → pact}/invoker/env/index.d.ts.map +1 -1
  90. package/bin/{city → pact}/invoker/env/index.js +2 -2
  91. package/bin/{city → pact}/invoker/env/index.js.map +1 -1
  92. package/bin/{city → pact}/invoker/env/types.d.ts +2 -2
  93. package/bin/{city → pact}/invoker/env/types.d.ts.map +1 -1
  94. package/bin/pact/invoker/env/types.js +5 -0
  95. package/bin/pact/invoker/env/types.js.map +1 -0
  96. package/bin/{city → pact}/invoker/invoker.d.ts +9 -9
  97. package/bin/{city → pact}/invoker/invoker.d.ts.map +1 -1
  98. package/bin/{city → pact}/invoker/invoker.js +11 -11
  99. package/bin/{city → pact}/invoker/invoker.js.map +1 -1
  100. package/bin/{city → pact}/invoker/payment/index.d.ts +1 -1
  101. package/bin/{city → pact}/invoker/payment/index.d.ts.map +1 -1
  102. package/bin/{city → pact}/invoker/payment/index.js +1 -1
  103. package/bin/{city → pact}/invoker/payment/index.js.map +1 -1
  104. package/bin/{city → pact}/invoker/payment/types.d.ts +1 -1
  105. package/bin/{city → pact}/invoker/payment/types.d.ts.map +1 -1
  106. package/bin/pact/invoker/payment/types.js.map +1 -0
  107. package/bin/{city → pact}/user/index.d.ts +5 -5
  108. package/bin/{city → pact}/user/index.d.ts.map +1 -1
  109. package/bin/{city → pact}/user/index.js +9 -9
  110. package/bin/{city → pact}/user/index.js.map +1 -1
  111. package/bin/{city → pact}/user/types.d.ts +3 -3
  112. package/bin/{city → pact}/user/types.d.ts.map +1 -1
  113. package/bin/pact/user/types.js.map +1 -0
  114. package/bin/service/ai/ai-service.js +3 -3
  115. package/bin/service/ai/helpers.js +2 -2
  116. package/bin/service/ai/job-types.d.ts +8 -8
  117. package/bin/service/ai/job-types.d.ts.map +1 -1
  118. package/bin/service/ai/schema.d.ts +4 -4
  119. package/bin/service/ai/schema.js +6 -6
  120. package/bin/service/ai/schema.js.map +1 -1
  121. package/bin/service/cities/cities-service.d.ts +15 -0
  122. package/bin/service/cities/cities-service.d.ts.map +1 -0
  123. package/bin/service/{towns/towns-service.js → cities/cities-service.js} +17 -17
  124. package/bin/service/cities/cities-service.js.map +1 -0
  125. package/bin/service/cities/city-store.d.ts +17 -0
  126. package/bin/service/cities/city-store.d.ts.map +1 -0
  127. package/bin/service/{towns/town-store.js → cities/city-store.js} +17 -17
  128. package/bin/service/cities/city-store.js.map +1 -0
  129. package/bin/service/{towns → cities}/schema.d.ts +23 -23
  130. package/bin/service/cities/schema.d.ts.map +1 -0
  131. package/bin/service/cities/schema.js +60 -0
  132. package/bin/service/cities/schema.js.map +1 -0
  133. package/bin/service/cities/types.d.ts +51 -0
  134. package/bin/service/cities/types.d.ts.map +1 -0
  135. package/bin/service/cities/types.js +7 -0
  136. package/bin/service/cities/types.js.map +1 -0
  137. package/bin/service/env/env-service.d.ts +2 -2
  138. package/bin/service/env/env-service.js +3 -3
  139. package/bin/service/env/env-service.js.map +1 -1
  140. package/bin/service/env/types.d.ts +2 -2
  141. package/bin/service/env/types.js +1 -1
  142. package/bin/service/installable-service.d.ts +43 -12
  143. package/bin/service/installable-service.d.ts.map +1 -1
  144. package/bin/service/installable-service.js +20 -3
  145. package/bin/service/installable-service.js.map +1 -1
  146. package/bin/service/instruction.d.ts +2 -2
  147. package/bin/service/instruction.js +5 -5
  148. package/bin/service/instruction.js.map +1 -1
  149. package/bin/service/service.d.ts +45 -9
  150. package/bin/service/service.d.ts.map +1 -1
  151. package/bin/service/service.js +32 -2
  152. package/bin/service/service.js.map +1 -1
  153. package/package.json +3 -3
  154. package/bin/city/admin/index.d.ts.map +0 -1
  155. package/bin/city/admin/index.js.map +0 -1
  156. package/bin/city/admin/types.d.ts.map +0 -1
  157. package/bin/city/admin/types.js.map +0 -1
  158. package/bin/city/city.d.ts +0 -73
  159. package/bin/city/city.d.ts.map +0 -1
  160. package/bin/city/city.js.map +0 -1
  161. package/bin/city/index.d.ts +0 -20
  162. package/bin/city/index.d.ts.map +0 -1
  163. package/bin/city/index.js +0 -14
  164. package/bin/city/index.js.map +0 -1
  165. package/bin/city/invoker/ai/types.js +0 -9
  166. package/bin/city/invoker/ai/types.js.map +0 -1
  167. package/bin/city/invoker/balance/types.js.map +0 -1
  168. package/bin/city/invoker/env/types.js +0 -5
  169. package/bin/city/invoker/env/types.js.map +0 -1
  170. package/bin/city/invoker/payment/types.js.map +0 -1
  171. package/bin/city/invoker/towns/index.d.ts +0 -46
  172. package/bin/city/invoker/towns/index.d.ts.map +0 -1
  173. package/bin/city/invoker/towns/index.js.map +0 -1
  174. package/bin/city/invoker/towns/types.d.ts +0 -46
  175. package/bin/city/invoker/towns/types.d.ts.map +0 -1
  176. package/bin/city/invoker/towns/types.js +0 -5
  177. package/bin/city/invoker/towns/types.js.map +0 -1
  178. package/bin/city/types/city.d.ts +0 -71
  179. package/bin/city/types/city.d.ts.map +0 -1
  180. package/bin/city/types/city.js +0 -8
  181. package/bin/city/types/city.js.map +0 -1
  182. package/bin/core/auth/authenticator.d.ts.map +0 -1
  183. package/bin/core/auth/authenticator.js.map +0 -1
  184. package/bin/core/auth/token-signer.d.ts.map +0 -1
  185. package/bin/core/auth/token-signer.js.map +0 -1
  186. package/bin/core/auth/types.d.ts.map +0 -1
  187. package/bin/core/auth/types.js.map +0 -1
  188. package/bin/core/base/base-env-catalog.d.ts +0 -13
  189. package/bin/core/base/base-env-catalog.d.ts.map +0 -1
  190. package/bin/core/base/base-env-catalog.js.map +0 -1
  191. package/bin/core/base/base-init.d.ts.map +0 -1
  192. package/bin/core/base/base-init.js.map +0 -1
  193. package/bin/core/base/base-instruction.d.ts +0 -11
  194. package/bin/core/base/base-instruction.d.ts.map +0 -1
  195. package/bin/core/base/base-instruction.js.map +0 -1
  196. package/bin/core/base/base-router.d.ts.map +0 -1
  197. package/bin/core/base/base-router.js.map +0 -1
  198. package/bin/core/base/base-runtime.d.ts.map +0 -1
  199. package/bin/core/base/base-runtime.js.map +0 -1
  200. package/bin/core/base/base.d.ts.map +0 -1
  201. package/bin/core/base/base.js.map +0 -1
  202. package/bin/core/runtime.d.ts.map +0 -1
  203. package/bin/core/runtime.js +0 -13
  204. package/bin/core/runtime.js.map +0 -1
  205. package/bin/core/types.d.ts.map +0 -1
  206. package/bin/service/towns/schema.d.ts.map +0 -1
  207. package/bin/service/towns/schema.js +0 -60
  208. package/bin/service/towns/schema.js.map +0 -1
  209. package/bin/service/towns/town-store.d.ts +0 -17
  210. package/bin/service/towns/town-store.d.ts.map +0 -1
  211. package/bin/service/towns/town-store.js.map +0 -1
  212. package/bin/service/towns/towns-service.d.ts +0 -15
  213. package/bin/service/towns/towns-service.d.ts.map +0 -1
  214. package/bin/service/towns/towns-service.js.map +0 -1
  215. package/bin/service/towns/types.d.ts +0 -51
  216. package/bin/service/towns/types.d.ts.map +0 -1
  217. package/bin/service/towns/types.js +0 -7
  218. package/bin/service/towns/types.js.map +0 -1
  219. /package/bin/{core → federation}/auth/token-signer.d.ts +0 -0
  220. /package/bin/{core → federation}/auth/types.js +0 -0
  221. /package/bin/{core → federation}/types.js +0 -0
  222. /package/bin/{city → pact}/admin/types.js +0 -0
  223. /package/bin/{city → pact}/http.d.ts +0 -0
  224. /package/bin/{city → pact}/http.js +0 -0
  225. /package/bin/{city → pact}/invoker/balance/index.d.ts +0 -0
  226. /package/bin/{city → pact}/invoker/balance/index.js +0 -0
  227. /package/bin/{city → pact}/invoker/balance/types.d.ts +0 -0
  228. /package/bin/{city → pact}/invoker/balance/types.js +0 -0
  229. /package/bin/{city → pact}/invoker/payment/types.js +0 -0
  230. /package/bin/{city → pact}/user/types.js +0 -0
@@ -1,13 +1,13 @@
1
1
  /**
2
- * City env requirement 聚合模块。
2
+ * Federation env requirement 聚合模块。
3
3
  *
4
4
  * 负责把 service.env 与 AI 模型 env requirement 汇总成统一目录。
5
5
  */
6
- import { AIService } from "../../service/ai/ai-service.js";
6
+ import { AIService } from "../service/ai/ai-service.js";
7
7
  /**
8
- * 聚合当前 City 暴露的 env requirement。
8
+ * 聚合当前 Federation 暴露的 env requirement。
9
9
  */
10
- export function collect_city_env_catalog(services, env_provider) {
10
+ export function collect_federation_env_catalog(services, env_provider) {
11
11
  const scopes = [];
12
12
  for (const service of services) {
13
13
  if ((service.env?.length ?? 0) === 0)
@@ -82,4 +82,4 @@ function preview_env_value(value) {
82
82
  return value;
83
83
  return `${value.slice(0, 6)}...${value.slice(-4)}`;
84
84
  }
85
- //# sourceMappingURL=base-env-catalog.js.map
85
+ //# sourceMappingURL=federation-env-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"federation-env-catalog.js","sourceRoot":"","sources":["../../src/federation/federation-env-catalog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAKxD;;GAEG;AACH,MAAM,UAAU,8BAA8B,CAC5C,QAAmB,EACnB,YAAyB;IAEzB,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC;YAAE,SAAS;QAC/C,MAAM,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,GAAG,EAAE,OAAO,CAAC,GAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC/B,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,UAAU,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC/C,aAAa,EAAE,iBAAiB,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAC7D,CAAC,CAAC;SACJ,CAAC,CAAC;IACL,CAAC;IAED,MAAM,QAAQ,GAAG,4BAA4B,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACtE,IAAI,QAAQ;QAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEpC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,4BAA4B,CACnC,QAAmB,EACnB,YAAyB;IAEzB,MAAM,UAAU,GAAG,IAAI,GAAG,EAItB,CAAC;IAEL,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,CAAC,OAAO,YAAY,SAAS,CAAC;YAAE,SAAS;QAE9C,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE;YAC3C,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS;YACpB,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC;QAEH,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,gBAAgB,IAAI,EAAE,EAAE,CAAC;gBAChD,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACzC,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAChC,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;oBACrD,SAAS;gBACX,CAAC;gBACD,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE;oBACvB,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;iBACrB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAE5C,MAAM,GAAG,GAA2B,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAClF,GAAG;QACH,WAAW,EAAE,GAAG,IAAI,CAAC,WAAW,cAAc,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACtE,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,UAAU,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1C,aAAa,EAAE,iBAAiB,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KACxD,CAAC,CAAC,CAAC;IAEJ,OAAO;QACL,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,WAAW;QACjB,GAAG;KACJ,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,KAAyB;IAClD,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACrD,CAAC"}
@@ -1,19 +1,19 @@
1
1
  /**
2
- * City 初始化模块。
2
+ * Federation 初始化模块。
3
3
  *
4
4
  * 负责组装表、执行建表、挂载 env store、初始化 authenticator,
5
5
  * 并把 runtime 依赖注入到各个 service。
6
6
  */
7
- import { type CityTableApi } from "../../store/table-api.js";
8
- import { TownStore } from "../../service/towns/town-store.js";
9
- import { Authenticator } from "../auth/authenticator.js";
10
- import type { Service } from "../../service/service.js";
11
- import type { Runtime } from "../runtime.js";
12
- import type { Database, DbClient } from "../../store/db.js";
7
+ import { type CityTableApi } from "../store/table-api.js";
8
+ import { CityStore } from "../service/cities/city-store.js";
9
+ import { Authenticator } from "./auth/authenticator.js";
10
+ import type { Service } from "../service/service.js";
11
+ import type { Runtime } from "./runtime.js";
12
+ import type { Database, DbClient } from "../store/db.js";
13
13
  /**
14
- * City 初始化后的内部状态。
14
+ * Federation 初始化后的内部状态。
15
15
  */
16
- export interface CityInitState {
16
+ export interface FederationInitState {
17
17
  /** 初始化后的 database */
18
18
  database: Database;
19
19
  /** 初始化后的底层 client */
@@ -22,27 +22,27 @@ export interface CityInitState {
22
22
  };
23
23
  /** 所有表 API 映射 */
24
24
  table_map: Map<string, CityTableApi>;
25
- /** town store */
26
- town_store: TownStore;
25
+ /** city store */
26
+ city_store: CityStore;
27
27
  /** 鉴权器 */
28
28
  authenticator: Authenticator;
29
29
  }
30
30
  /**
31
- * 执行 City 初始化。
31
+ * 执行 Federation 初始化。
32
32
  */
33
- export declare function initialize_city(params: {
33
+ export declare function initialize_federation(params: {
34
34
  /** runtime 能力 */
35
35
  runtime: Runtime;
36
36
  /** 已注册服务 */
37
37
  services: Service[];
38
38
  /** City ready 回调 */
39
39
  require_ready: () => Promise<{
40
- town: {
40
+ city: {
41
41
  get(id: string): Promise<{
42
- town_id: string;
42
+ city_id: string;
43
43
  status: string;
44
44
  } | undefined>;
45
45
  };
46
46
  }>;
47
- }): Promise<CityInitState>;
48
- //# sourceMappingURL=base-init.d.ts.map
47
+ }): Promise<FederationInitState>;
48
+ //# sourceMappingURL=federation-init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"federation-init.d.ts","sourceRoot":"","sources":["../../src/federation/federation-init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAqC,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE7F,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,qBAAqB;IACrB,QAAQ,EAAE,QAAQ,CAAC;IACnB,qBAAqB;IACrB,MAAM,EAAE;QAAE,OAAO,EAAE,QAAQ,CAAA;KAAE,CAAC;IAC9B,iBAAiB;IACjB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACrC,iBAAiB;IACjB,UAAU,EAAE,SAAS,CAAC;IACtB,UAAU;IACV,aAAa,EAAE,aAAa,CAAC;CAC9B;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE;IAClD,iBAAiB;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY;IACZ,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,oBAAoB;IACpB,aAAa,EAAE,MAAM,OAAO,CAAC;QAAE,IAAI,EAAE;YAAE,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;gBAAE,OAAO,EAAE,MAAM,CAAC;gBAAC,MAAM,EAAE,MAAM,CAAA;aAAE,GAAG,SAAS,CAAC,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;CACvH,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAuD/B"}
@@ -1,24 +1,24 @@
1
1
  /**
2
- * City 初始化模块。
2
+ * Federation 初始化模块。
3
3
  *
4
4
  * 负责组装表、执行建表、挂载 env store、初始化 authenticator,
5
5
  * 并把 runtime 依赖注入到各个 service。
6
6
  */
7
- import { executeDDL } from "../../store/db.js";
8
- import { TableApi, buildCreateUserTableSQL } from "../../store/table-api.js";
9
- import { EnvStore } from "../../service/env/env-store.js";
10
- import { TownStore } from "../../service/towns/town-store.js";
11
- import { Authenticator } from "../auth/authenticator.js";
12
- import { randomSecret } from "../../utils/helpers.js";
7
+ import { executeDDL } from "../store/db.js";
8
+ import { TableApi, buildCreateUserTableSQL } from "../store/table-api.js";
9
+ import { EnvStore } from "../service/env/env-store.js";
10
+ import { CityStore } from "../service/cities/city-store.js";
11
+ import { Authenticator } from "./auth/authenticator.js";
12
+ import { randomSecret } from "../utils/helpers.js";
13
13
  /**
14
- * 执行 City 初始化。
14
+ * 执行 Federation 初始化。
15
15
  */
16
- export async function initialize_city(params) {
16
+ export async function initialize_federation(params) {
17
17
  const { runtime, services, require_ready } = params;
18
18
  const { database, client, env, builtinTables } = runtime;
19
19
  const user_schema = collect_service_schemas(services);
20
20
  const table_map = new Map();
21
- table_map.set("towns", new TableApi(database, builtinTables.towns));
21
+ table_map.set("cities", new TableApi(database, builtinTables.cities));
22
22
  table_map.set("env", new TableApi(database, builtinTables.env));
23
23
  for (const [name, table] of Object.entries(user_schema)) {
24
24
  table_map.set(name, new TableApi(database, table));
@@ -31,14 +31,14 @@ export async function initialize_city(params) {
31
31
  }
32
32
  const env_table = table_map.get("env");
33
33
  if (!env_table)
34
- throw new Error("City env table is not initialized");
34
+ throw new Error("Federation env table is not initialized");
35
35
  const env_store = new EnvStore(env_table);
36
36
  await env.attachStore(env_store);
37
- const towns_table = table_map.get("towns");
38
- if (!towns_table)
39
- throw new Error("City towns table is not initialized");
40
- const town_store = new TownStore(towns_table);
41
- const configured_base_url = env.get("DOWNCITY_CITY_BASE_URL")
37
+ const cities_table = table_map.get("cities");
38
+ if (!cities_table)
39
+ throw new Error("City cities table is not initialized");
40
+ const city_store = new CityStore(cities_table);
41
+ const configured_base_url = env.get("DOWNCITY_FEDERATION_BASE_URL")
42
42
  ?? env.get("BETTER_AUTH_URL")
43
43
  ?? runtime.baseURL
44
44
  ?? "http://localhost";
@@ -49,7 +49,7 @@ export async function initialize_city(params) {
49
49
  service._client = db_client;
50
50
  service._authenticator = authenticator;
51
51
  service._env = env;
52
- service._townStore = town_store;
52
+ service._cityStore = city_store;
53
53
  service._raw = runtime.raw;
54
54
  service._baseURL = configured_base_url ?? runtime.baseURL;
55
55
  await service._onInit();
@@ -58,7 +58,7 @@ export async function initialize_city(params) {
58
58
  database,
59
59
  client: db_client,
60
60
  table_map,
61
- town_store,
61
+ city_store,
62
62
  authenticator,
63
63
  };
64
64
  }
@@ -82,24 +82,24 @@ function collect_service_schemas(services) {
82
82
  return collected;
83
83
  }
84
84
  /**
85
- * 确保 City 系统级 env key 存在。
85
+ * 确保 Federation 系统级 env key 存在。
86
86
  *
87
87
  * 关键说明(中文)
88
- * - 系统密钥也统一走 City env 表托管
88
+ * - 系统密钥也统一走 Federation env 表托管
89
89
  * - 缺失时自动生成,避免宿主环境额外配置负担
90
90
  */
91
91
  async function bootstrap_default_keys(env) {
92
- const admin_key = env.get("DOWNCITY_CITY_ADMIN_SECRET_KEY") || `admin_${randomSecret()}`;
93
- if (!env.get("DOWNCITY_CITY_ADMIN_SECRET_KEY")) {
94
- await env.upsert({ key: "DOWNCITY_CITY_ADMIN_SECRET_KEY", value: admin_key });
92
+ const admin_key = env.get("DOWNCITY_FEDERATION_ADMIN_SECRET_KEY") || `admin_${randomSecret()}`;
93
+ if (!env.get("DOWNCITY_FEDERATION_ADMIN_SECRET_KEY")) {
94
+ await env.upsert({ key: "DOWNCITY_FEDERATION_ADMIN_SECRET_KEY", value: admin_key });
95
95
  }
96
- const token_key = env.get("DOWNCITY_CITY_TOKEN_SIGNING_KEY") || `sign_${randomSecret()}`;
97
- if (!env.get("DOWNCITY_CITY_TOKEN_SIGNING_KEY")) {
98
- await env.upsert({ key: "DOWNCITY_CITY_TOKEN_SIGNING_KEY", value: token_key });
96
+ const token_key = env.get("DOWNCITY_FEDERATION_TOKEN_SIGNING_KEY") || `sign_${randomSecret()}`;
97
+ if (!env.get("DOWNCITY_FEDERATION_TOKEN_SIGNING_KEY")) {
98
+ await env.upsert({ key: "DOWNCITY_FEDERATION_TOKEN_SIGNING_KEY", value: token_key });
99
99
  }
100
100
  const better_auth_secret = env.get("BETTER_AUTH_SECRET") || `better_auth_${randomSecret()}${randomSecret()}`;
101
101
  if (!env.get("BETTER_AUTH_SECRET")) {
102
102
  await env.upsert({ key: "BETTER_AUTH_SECRET", value: better_auth_secret });
103
103
  }
104
104
  }
105
- //# sourceMappingURL=base-init.js.map
105
+ //# sourceMappingURL=federation-init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"federation-init.js","sourceRoot":"","sources":["../../src/federation/federation-init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * City instruction 聚合模块。
3
+ *
4
+ * 负责将所有 service 的 instruction 与 action 定义汇总成统一文档。
5
+ */
6
+ import type { Service } from "../service/service.js";
7
+ /**
8
+ * 聚合 City 的 instruction 文档。
9
+ */
10
+ export declare function build_federation_instruction(services: Service[]): Promise<string>;
11
+ //# sourceMappingURL=federation-instruction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"federation-instruction.d.ts","sourceRoot":"","sources":["../../src/federation/federation-instruction.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD;;GAEG;AACH,wBAAsB,4BAA4B,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA6BvF"}
@@ -3,11 +3,11 @@
3
3
  *
4
4
  * 负责将所有 service 的 instruction 与 action 定义汇总成统一文档。
5
5
  */
6
- import { formatInstructionDocument, resolveInstruction, } from "../../service/instruction.js";
6
+ import { formatInstructionDocument, resolveInstruction, } from "../service/instruction.js";
7
7
  /**
8
8
  * 聚合 City 的 instruction 文档。
9
9
  */
10
- export async function build_city_instruction(services) {
10
+ export async function build_federation_instruction(services) {
11
11
  const sections = [];
12
12
  for (const service of services) {
13
13
  const actions = service._listInstructionActions();
@@ -28,10 +28,10 @@ export async function build_city_instruction(services) {
28
28
  }
29
29
  return formatInstructionDocument({
30
30
  base: {
31
- builtin_services: ["env", "towns"],
31
+ builtin_services: ["env", "cities"],
32
32
  loaded_modules: sections.map((item) => item.id),
33
33
  },
34
34
  sections,
35
35
  });
36
36
  }
37
- //# sourceMappingURL=base-instruction.js.map
37
+ //# sourceMappingURL=federation-instruction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"federation-instruction.js","sourceRoot":"","sources":["../../src/federation/federation-instruction.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,yBAAyB,EACzB,kBAAkB,GAEnB,MAAM,2BAA2B,CAAC;AAGnC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,QAAmB;IACpE,MAAM,QAAQ,GAAyB,EAAE,CAAC;IAE1C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC;QAClD,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,WAAW,EAAE;YACzD,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,OAAO;SACR,CAAC,CAAC;QAEH,QAAQ,CAAC,IAAI,CAAC;YACZ,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,SAAS;YACf,OAAO;YACP,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,OAAO,yBAAyB,CAAC;QAC/B,IAAI,EAAE;YACJ,gBAAgB,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;YACnC,cAAc,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;SAChD;QACD,QAAQ;KACT,CAAC,CAAC;AACL,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * City 路由构建模块。
2
+ * Federation 路由构建模块。
3
3
  *
4
4
  * 负责把 service/action 暴露为 Hono 路由,并统一处理:
5
5
  * - 请求身份解析
@@ -8,27 +8,27 @@
8
8
  * - 公共管理接口
9
9
  */
10
10
  import { Hono } from "hono";
11
- import type { CityTableApi } from "../../store/table-api.js";
12
- import type { Service } from "../../service/service.js";
13
- import type { Authenticator } from "../auth/authenticator.js";
14
- import type { Runtime } from "../runtime.js";
15
- import type { RuntimeUser } from "../auth/types.js";
11
+ import type { CityTableApi } from "../store/table-api.js";
12
+ import type { Service } from "../service/service.js";
13
+ import type { Authenticator } from "./auth/authenticator.js";
14
+ import type { Runtime } from "./runtime.js";
15
+ import type { RuntimeUser } from "./auth/types.js";
16
16
  declare module "hono" {
17
17
  interface ContextVariableMap {
18
18
  identity?: {
19
19
  kind: "guest" | "user" | "admin";
20
20
  };
21
21
  user?: RuntimeUser;
22
- town?: {
23
- town_id: string;
22
+ city?: {
23
+ city_id: string;
24
24
  status: string;
25
25
  };
26
26
  }
27
27
  }
28
28
  /**
29
- * 构建 City 对外路由。
29
+ * 构建 Federation 对外路由。
30
30
  */
31
- export declare function build_city_router(params: {
31
+ export declare function build_federation_router(params: {
32
32
  /** runtime 能力 */
33
33
  runtime: Runtime;
34
34
  /** 已注册服务 */
@@ -38,4 +38,4 @@ export declare function build_city_router(params: {
38
38
  /** 表映射 */
39
39
  table_map: Map<string, CityTableApi>;
40
40
  }): Hono;
41
- //# sourceMappingURL=base-router.d.ts.map
41
+ //# sourceMappingURL=federation-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"federation-router.d.ts","sourceRoot":"","sources":["../../src/federation/federation-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAA+B,MAAM,uBAAuB,CAAC;AAGlF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAInD,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAU,kBAAkB;QAC1B,QAAQ,CAAC,EAAE;YAAE,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAA;SAAE,CAAC;QAChD,IAAI,CAAC,EAAE,WAAW,CAAC;QACnB,IAAI,CAAC,EAAE;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;KAC5C;CACF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC9C,iBAAiB;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY;IACZ,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,UAAU;IACV,aAAa,EAAE,aAAa,CAAC;IAC7B,UAAU;IACV,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CACtC,GAAG,IAAI,CAqJP"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * City 路由构建模块。
2
+ * Federation 路由构建模块。
3
3
  *
4
4
  * 负责把 service/action 暴露为 Hono 路由,并统一处理:
5
5
  * - 请求身份解析
@@ -8,14 +8,14 @@
8
8
  * - 公共管理接口
9
9
  */
10
10
  import { Hono } from "hono";
11
- import { InstallableService } from "../../service/installable-service.js";
12
- import { httpError } from "../../utils/helpers.js";
13
- import { build_city_instruction } from "./base-instruction.js";
14
- import { collect_city_env_catalog } from "./base-env-catalog.js";
11
+ import { InstallableService } from "../service/installable-service.js";
12
+ import { httpError } from "../utils/helpers.js";
13
+ import { build_federation_instruction } from "./federation-instruction.js";
14
+ import { collect_federation_env_catalog } from "./federation-env-catalog.js";
15
15
  /**
16
- * 构建 City 对外路由。
16
+ * 构建 Federation 对外路由。
17
17
  */
18
- export function build_city_router(params) {
18
+ export function build_federation_router(params) {
19
19
  const { runtime, services, authenticator, table_map } = params;
20
20
  const app = new Hono();
21
21
  app.get("/health", (c) => c.json({
@@ -27,16 +27,10 @@ export function build_city_router(params) {
27
27
  }));
28
28
  app.use("/v1/*", async (c, next) => {
29
29
  // 关键说明(中文)
30
- // City env 默认读取运行时内存 cache。
30
+ // Federation env 默认读取运行时内存 cache。
31
31
  // 管理端通过 /v1/env/upsert、/remove、/import 修改 env 时会自动更新当前 cache;
32
32
  // 如果直接改数据库,可通过 /v1/env/refresh 或 city CLI 手动刷新。
33
33
  sync_request_origin(services, new URL(c.req.raw.url).origin);
34
- const result = await authenticator.resolve(c.req.raw);
35
- c.set("identity", { kind: result.level });
36
- if (result.user)
37
- c.set("user", result.user);
38
- if (result.town)
39
- c.set("town", result.town);
40
34
  await next();
41
35
  });
42
36
  app.get("/v1/services", (c) => c.json({
@@ -48,25 +42,17 @@ export function build_city_router(params) {
48
42
  }));
49
43
  app.get("/v1/env/catalog", async (c) => {
50
44
  try {
51
- authenticator.authorize({
52
- level: c.get("identity")?.kind ?? "guest",
53
- user: c.get("user"),
54
- town: c.get("town"),
55
- }, ["admin"]);
56
- return c.json({ items: collect_city_env_catalog(services, runtime.env) });
45
+ authenticator.authorize(await authenticator.resolve(c.req.raw), ["admin"]);
46
+ return c.json({ items: collect_federation_env_catalog(services, runtime.env) });
57
47
  }
58
48
  catch (error) {
59
49
  return build_error_response(error);
60
50
  }
61
51
  });
62
- app.get("/v1/city/instruction", async (c) => {
52
+ app.get("/v1/federation/instruction", async (c) => {
63
53
  try {
64
- authenticator.authorize({
65
- level: c.get("identity")?.kind ?? "guest",
66
- user: c.get("user"),
67
- town: c.get("town"),
68
- }, ["admin"]);
69
- return new Response(await build_city_instruction(services), {
54
+ authenticator.authorize(await authenticator.resolve(c.req.raw), ["admin"]);
55
+ return new Response(await build_federation_instruction(services), {
70
56
  status: 200,
71
57
  headers: {
72
58
  "content-type": "text/plain; charset=utf-8",
@@ -77,6 +63,22 @@ export function build_city_router(params) {
77
63
  return build_error_response(error);
78
64
  }
79
65
  });
66
+ for (const service of services) {
67
+ for (const def of service._listNativeRouteDefs()) {
68
+ const path = `/v1/${encodeURIComponent(service.id)}${def.path}`;
69
+ register_native_route(app, def.method, path, async (c) => {
70
+ try {
71
+ if (def.auth.length > 0) {
72
+ authenticator.authorize(await authenticator.resolve(c.req.raw), def.auth);
73
+ }
74
+ return await def.handler(c.req.raw);
75
+ }
76
+ catch (error) {
77
+ return build_error_response(error);
78
+ }
79
+ });
80
+ }
81
+ }
80
82
  for (const service of services) {
81
83
  for (const def of service._listActionDefs()) {
82
84
  const action = def.action;
@@ -99,9 +101,7 @@ export function build_city_router(params) {
99
101
  request: c.req.raw,
100
102
  raw_body,
101
103
  db,
102
- identity: c.get("identity") ?? { kind: "guest" },
103
- user: c.get("user"),
104
- town: c.get("town"),
104
+ identity: { kind: "guest" },
105
105
  env: (key) => runtime.env.get(key),
106
106
  service: { id: service.id, name: service.name },
107
107
  action: { id: action.id },
@@ -114,12 +114,11 @@ export function build_city_router(params) {
114
114
  ctx.waitUntil = undefined;
115
115
  }
116
116
  try {
117
- authenticator.authorize({
118
- level: ctx.identity?.kind ?? "guest",
119
- user: ctx.user,
120
- town: ctx.town,
121
- }, def.auth);
122
- ensure_town_identity_match(ctx);
117
+ const identity = authenticator.authorize(await authenticator.resolve(c.req.raw), def.auth);
118
+ ctx.identity = { kind: identity.level };
119
+ ctx.user = identity.user;
120
+ ctx.city = identity.city;
121
+ ensure_city_identity_match(ctx);
123
122
  for (const hook of global_service_hooks(services)) {
124
123
  await hook.runBefore(ctx);
125
124
  }
@@ -160,6 +159,24 @@ function global_service_hooks(services) {
160
159
  .filter((service) => service instanceof InstallableService)
161
160
  .map((service) => service.globalHook);
162
161
  }
162
+ /**
163
+ * 注册 Service 原生 HTTP route。
164
+ */
165
+ function register_native_route(app, method, path, handler) {
166
+ if (method === "ALL") {
167
+ app.all(path, handler);
168
+ return;
169
+ }
170
+ if (method === "GET") {
171
+ app.get(path, handler);
172
+ return;
173
+ }
174
+ if (method === "POST") {
175
+ app.post(path, handler);
176
+ return;
177
+ }
178
+ app.options(path, handler);
179
+ }
163
180
  /**
164
181
  * 同步当前请求 origin。
165
182
  *
@@ -202,19 +219,19 @@ function search_params_to_object(search_params) {
202
219
  return result;
203
220
  }
204
221
  /**
205
- * 校验 input.town_id 与 token 绑定产品一致。
222
+ * 校验 input.city_id 与 token 绑定产品一致。
206
223
  */
207
- function ensure_town_identity_match(ctx) {
224
+ function ensure_city_identity_match(ctx) {
208
225
  if (ctx.identity?.kind !== "user")
209
226
  return;
210
- const request_town_id = typeof ctx.input.town_id === "string"
211
- ? ctx.input.town_id.trim()
227
+ const request_city_id = typeof ctx.input.city_id === "string"
228
+ ? ctx.input.city_id.trim()
212
229
  : "";
213
- if (!request_town_id)
230
+ if (!request_city_id)
214
231
  return;
215
- const token_town_id = ctx.town?.town_id ?? "";
216
- if (request_town_id !== token_town_id) {
217
- throw httpError(403, "town_id does not match the authenticated token");
232
+ const token_city_id = ctx.city?.city_id ?? "";
233
+ if (request_city_id !== token_city_id) {
234
+ throw httpError(403, "city_id does not match the authenticated token");
218
235
  }
219
236
  }
220
237
  /**
@@ -225,4 +242,4 @@ function build_error_response(error) {
225
242
  const status = error.statusCode ?? 500;
226
243
  return Response.json({ error: { message, type: "server_error" } }, { status: status });
227
244
  }
228
- //# sourceMappingURL=base-router.js.map
245
+ //# sourceMappingURL=federation-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"federation-router.js","sourceRoot":"","sources":["../../src/federation/federation-router.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,18 @@
1
1
  /**
2
- * City 组装模块。
2
+ * Federation 组装模块。
3
3
  *
4
4
  * 关键说明(中文)
5
5
  * - 用户只需要传入 Drizzle db,方言、底层 client 全部由 City 自己从 db 推断。
6
6
  * - 用户既不需要传 `dialect`,也不需要传 `raw`,避免参数语义重复。
7
7
  */
8
- import type { CityBaseOptions } from "../types.js";
9
- import type { Runtime } from "../runtime.js";
8
+ import type { FederationOptions } from "./types.js";
9
+ import type { Runtime } from "./runtime.js";
10
10
  /**
11
- * 从 CityBaseOptions 创建 runtime。
11
+ * 从 FederationOptions 创建 runtime。
12
12
  *
13
13
  * 关键说明(中文)
14
14
  * - 通过 Drizzle 暴露的 `db.dialect` 自动推断 sqlite / pg 方言。
15
15
  * - 通过 `db.$client` 提取底层 client,既用于 DDL 也作为 raw 暴露给需要它的 service。
16
16
  */
17
- export declare function create_runtime_from_db(options: CityBaseOptions): Runtime;
18
- //# sourceMappingURL=base-runtime.d.ts.map
17
+ export declare function create_federation_runtime(options: FederationOptions): Runtime;
18
+ //# sourceMappingURL=federation-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"federation-runtime.d.ts","sourceRoot":"","sources":["../../src/federation/federation-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,OAAO,KAAK,EAA8B,OAAO,EAAE,MAAM,cAAc,CAAC;AAGxE;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAY7E"}
@@ -1,21 +1,21 @@
1
1
  /**
2
- * City 组装模块。
2
+ * Federation 组装模块。
3
3
  *
4
4
  * 关键说明(中文)
5
5
  * - 用户只需要传入 Drizzle db,方言、底层 client 全部由 City 自己从 db 推断。
6
6
  * - 用户既不需要传 `dialect`,也不需要传 `raw`,避免参数语义重复。
7
7
  */
8
- import { pgEnv, sqliteEnv } from "../../service/env/schema.js";
9
- import { pgTowns, sqliteTowns } from "../../service/towns/schema.js";
10
- import { normalizeEnvKey, parseDotenvEntries } from "../../utils/helpers.js";
8
+ import { pgEnv, sqliteEnv } from "../service/env/schema.js";
9
+ import { pgCities, sqliteCities } from "../service/cities/schema.js";
10
+ import { normalizeEnvKey, parseDotenvEntries } from "../utils/helpers.js";
11
11
  /**
12
- * 从 CityBaseOptions 创建 runtime。
12
+ * 从 FederationOptions 创建 runtime。
13
13
  *
14
14
  * 关键说明(中文)
15
15
  * - 通过 Drizzle 暴露的 `db.dialect` 自动推断 sqlite / pg 方言。
16
16
  * - 通过 `db.$client` 提取底层 client,既用于 DDL 也作为 raw 暴露给需要它的 service。
17
17
  */
18
- export function create_runtime_from_db(options) {
18
+ export function create_federation_runtime(options) {
19
19
  const dialect = infer_dialect(options.db);
20
20
  const builtin_tables = builtin_tables_for(dialect);
21
21
  const client = extract_db_client(options.db);
@@ -28,12 +28,12 @@ export function create_runtime_from_db(options) {
28
28
  };
29
29
  }
30
30
  /**
31
- * 推断 City 内置表定义。
31
+ * 推断 Federation 内置表定义。
32
32
  */
33
33
  function builtin_tables_for(dialect) {
34
34
  return dialect === "pg"
35
- ? { towns: pgTowns, env: pgEnv }
36
- : { towns: sqliteTowns, env: sqliteEnv };
35
+ ? { cities: pgCities, env: pgEnv }
36
+ : { cities: sqliteCities, env: sqliteEnv };
37
37
  }
38
38
  /**
39
39
  * 从 Drizzle 实例推断方言。
@@ -127,4 +127,4 @@ class DatabaseEnvProvider {
127
127
  return stored;
128
128
  }
129
129
  }
130
- //# sourceMappingURL=base-runtime.js.map
130
+ //# sourceMappingURL=federation-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"federation-runtime.js","sourceRoot":"","sources":["../../src/federation/federation-runtime.ts"],"names":[],"mappings":"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"}