@downcity/city 0.2.124 → 0.2.129

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 (55) hide show
  1. package/README.md +31 -1
  2. package/bin/client/types.d.ts +6 -2
  3. package/bin/client/types.d.ts.map +1 -1
  4. package/bin/federation/auth/authenticator.d.ts +9 -0
  5. package/bin/federation/auth/authenticator.d.ts.map +1 -1
  6. package/bin/federation/auth/authenticator.js +17 -0
  7. package/bin/federation/auth/authenticator.js.map +1 -1
  8. package/bin/federation/federation-middleware.d.ts +17 -0
  9. package/bin/federation/federation-middleware.d.ts.map +1 -0
  10. package/bin/federation/federation-middleware.js +41 -0
  11. package/bin/federation/federation-middleware.js.map +1 -0
  12. package/bin/federation/federation-router.d.ts.map +1 -1
  13. package/bin/federation/federation-router.js +20 -4
  14. package/bin/federation/federation-router.js.map +1 -1
  15. package/bin/federation/federation.d.ts +13 -11
  16. package/bin/federation/federation.d.ts.map +1 -1
  17. package/bin/federation/federation.js +26 -18
  18. package/bin/federation/federation.js.map +1 -1
  19. package/bin/federation/middlewares.d.ts +44 -0
  20. package/bin/federation/middlewares.d.ts.map +1 -0
  21. package/bin/federation/middlewares.js +219 -0
  22. package/bin/federation/middlewares.js.map +1 -0
  23. package/bin/federation/types.d.ts +32 -2
  24. package/bin/federation/types.d.ts.map +1 -1
  25. package/bin/index.d.ts +3 -1
  26. package/bin/index.d.ts.map +1 -1
  27. package/bin/index.js +1 -0
  28. package/bin/index.js.map +1 -1
  29. package/bin/pact/admin/index.d.ts +1 -1
  30. package/bin/pact/admin/index.d.ts.map +1 -1
  31. package/bin/pact/admin/index.js +21 -15
  32. package/bin/pact/admin/index.js.map +1 -1
  33. package/bin/pact/admin/types.d.ts +2 -2
  34. package/bin/pact/admin/types.d.ts.map +1 -1
  35. package/bin/pact/requester.d.ts +47 -0
  36. package/bin/pact/requester.d.ts.map +1 -0
  37. package/bin/pact/requester.js +93 -0
  38. package/bin/pact/requester.js.map +1 -0
  39. package/bin/pact/rpc-client.d.ts +30 -0
  40. package/bin/pact/rpc-client.d.ts.map +1 -0
  41. package/bin/pact/rpc-client.js +99 -0
  42. package/bin/pact/rpc-client.js.map +1 -0
  43. package/bin/pact/user/index.d.ts +1 -1
  44. package/bin/pact/user/index.d.ts.map +1 -1
  45. package/bin/pact/user/index.js +21 -15
  46. package/bin/pact/user/index.js.map +1 -1
  47. package/bin/pact/user/types.d.ts +2 -2
  48. package/bin/pact/user/types.d.ts.map +1 -1
  49. package/bin/service/instruction.js +1 -1
  50. package/bin/service/instruction.js.map +1 -1
  51. package/bin/types/FederationMiddleware.d.ts +138 -0
  52. package/bin/types/FederationMiddleware.d.ts.map +1 -0
  53. package/bin/types/FederationMiddleware.js +9 -0
  54. package/bin/types/FederationMiddleware.js.map +1 -0
  55. package/package.json +2 -2
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Federation RPC client。
3
+ *
4
+ * 关键点(中文)
5
+ * - 仅用于 `rpc://` 本机 Federation transport。
6
+ * - 使用 NDJSON over TCP,与 `@downcity/server` 的 FederationRPC 对接。
7
+ */
8
+ import type { FederationRpcIdentity, FederationRpcResponseData } from "@downcity/type";
9
+ /**
10
+ * Federation RPC 请求输入。
11
+ */
12
+ export interface FederationRpcClientRequest {
13
+ /** RPC URL,例如 `rpc://127.0.0.1:15315`。 */
14
+ url: string;
15
+ /** 本机可信身份。 */
16
+ identity: FederationRpcIdentity;
17
+ /** HTTP 方法。 */
18
+ method: string;
19
+ /** Federation 请求路径。 */
20
+ path: string;
21
+ /** 请求头。 */
22
+ headers?: Record<string, string>;
23
+ /** 请求 body。 */
24
+ body?: string;
25
+ }
26
+ /**
27
+ * 发送一次 Federation RPC 请求。
28
+ */
29
+ export declare function request_federation_rpc(input: FederationRpcClientRequest): Promise<FederationRpcResponseData>;
30
+ //# sourceMappingURL=rpc-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-client.d.ts","sourceRoot":"","sources":["../../src/pact/rpc-client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,qBAAqB,EAErB,yBAAyB,EAE1B,MAAM,gBAAgB,CAAC;AA4BxB;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,0CAA0C;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc;IACd,QAAQ,EAAE,qBAAqB,CAAC;IAChC,eAAe;IACf,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,eAAe;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,yBAAyB,CAAC,CAsEpC"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Federation RPC client。
3
+ *
4
+ * 关键点(中文)
5
+ * - 仅用于 `rpc://` 本机 Federation transport。
6
+ * - 使用 NDJSON over TCP,与 `@downcity/server` 的 FederationRPC 对接。
7
+ */
8
+ /**
9
+ * 发送一次 Federation RPC 请求。
10
+ */
11
+ export async function request_federation_rpc(input) {
12
+ const net = await load_node_net();
13
+ const endpoint = parse_federation_rpc_url(input.url);
14
+ const request_id = `fed_rpc_${Date.now()}_${Math.random().toString(36).slice(2)}`;
15
+ const request = {
16
+ id: request_id,
17
+ method: "federation.request",
18
+ params: {
19
+ method: input.method,
20
+ path: input.path,
21
+ headers: input.headers,
22
+ body: input.body,
23
+ identity: input.identity,
24
+ },
25
+ };
26
+ return await new Promise((resolve, reject) => {
27
+ const socket = net.createConnection(endpoint);
28
+ let buffered = "";
29
+ let settled = false;
30
+ const finish = (error, data) => {
31
+ if (settled)
32
+ return;
33
+ settled = true;
34
+ socket.destroy();
35
+ if (error) {
36
+ reject(error instanceof Error ? error : new Error(String(error)));
37
+ return;
38
+ }
39
+ resolve(data);
40
+ };
41
+ socket.on("connect", () => {
42
+ socket.write(`${JSON.stringify(request)}\n`);
43
+ });
44
+ socket.on("data", (chunk) => {
45
+ buffered += chunk.toString("utf8");
46
+ let newline_index = buffered.indexOf("\n");
47
+ while (newline_index >= 0) {
48
+ const line = buffered.slice(0, newline_index).trim();
49
+ buffered = buffered.slice(newline_index + 1);
50
+ if (line) {
51
+ try {
52
+ const frame = JSON.parse(line);
53
+ if (frame.id !== request_id) {
54
+ throw new Error(`Unexpected Federation RPC response id: ${frame.id}`);
55
+ }
56
+ if (!frame.success) {
57
+ throw new Error(frame.error);
58
+ }
59
+ finish(undefined, frame.data);
60
+ }
61
+ catch (error) {
62
+ finish(error);
63
+ }
64
+ }
65
+ newline_index = buffered.indexOf("\n");
66
+ }
67
+ });
68
+ socket.on("error", (error) => {
69
+ finish(error);
70
+ });
71
+ socket.on("close", () => {
72
+ if (!settled) {
73
+ finish(new Error("Federation RPC socket closed before response"));
74
+ }
75
+ });
76
+ });
77
+ }
78
+ async function load_node_net() {
79
+ const loader = new Function("specifier", "return import(specifier)");
80
+ return await loader("node:net");
81
+ }
82
+ function parse_federation_rpc_url(value) {
83
+ const url = new URL(value);
84
+ if (url.protocol !== "rpc:") {
85
+ throw new TypeError(`Unsupported Federation RPC protocol: ${url.protocol}`);
86
+ }
87
+ if (!url.hostname) {
88
+ throw new TypeError("Federation RPC url requires a host");
89
+ }
90
+ const port = Number(url.port);
91
+ if (!Number.isInteger(port) || port <= 0 || port > 65535) {
92
+ throw new TypeError("Federation RPC url requires a valid port");
93
+ }
94
+ return {
95
+ host: url.hostname,
96
+ port,
97
+ };
98
+ }
99
+ //# sourceMappingURL=rpc-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-client.js","sourceRoot":"","sources":["../../src/pact/rpc-client.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@ export declare class UserPactAccess {
11
11
  readonly serverUrl: string;
12
12
  readonly token: string | undefined;
13
13
  private readonly city_id?;
14
- private readonly fetchImpl;
14
+ private readonly requester;
15
15
  constructor(options: UserPactAccessOptions);
16
16
  /** 获取 Service 调用器 */
17
17
  service(name: string): ServiceClient;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/pact/user/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAkB,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,qBAAqB,EAAoB,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAW9F,qBAAa,cAAc;IACzB,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IAEjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAEnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;gBAE1B,OAAO,EAAE,qBAAqB;IA2B1C,qBAAqB;IACrB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;IAWpC,wBAAwB;IAClB,YAAY,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IASnD,OAAO,CAAC,IAAI;IAQZ,OAAO,CAAC,GAAG;IASX,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,YAAY;CAGrB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/pact/user/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAkB,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,qBAAqB,EAAoB,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAY9F,qBAAa,cAAc;IACzB,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IAEjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAEnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;gBAE9B,OAAO,EAAE,qBAAqB;IAuC1C,qBAAqB;IACrB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;IAWpC,wBAAwB;IAClB,YAAY,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IASnD,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,GAAG;IAKX,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,YAAY;CAGrB"}
@@ -4,22 +4,35 @@
4
4
  import { AIInvoker, serializeModel } from "../invoker/ai/index.js";
5
5
  import { PaymentInvoker } from "../invoker/payment/index.js";
6
6
  import { ServiceClient } from "../invoker/invoker.js";
7
- import { defaultFetch, normalizeBaseURL, requestJSON, requestRaw, requiredString, } from "../http.js";
7
+ import { requiredString, } from "../http.js";
8
+ import { create_http_requester, create_rpc_requester, is_rpc_url, } from "../requester.js";
8
9
  export class UserPactAccess {
9
10
  ai;
10
11
  payment;
11
12
  serverUrl;
12
13
  token;
13
14
  city_id;
14
- fetchImpl;
15
+ requester;
15
16
  constructor(options) {
16
17
  if (!options || typeof options !== "object") {
17
18
  throw new TypeError("User City options are required");
18
19
  }
19
- this.serverUrl = normalizeBaseURL(options.base_url, "base_url");
20
+ this.serverUrl = requiredString(options.base_url, "base_url").replace(/\/+$/, "");
20
21
  this.token = readOptional(options.user_token);
21
22
  this.city_id = readOptional(options.city_id);
22
- this.fetchImpl = options.fetch ?? defaultFetch();
23
+ this.requester = is_rpc_url(this.serverUrl)
24
+ ? create_rpc_requester({
25
+ base_url: this.serverUrl,
26
+ identity: {
27
+ role: "user",
28
+ city_id: this.require_city_id(),
29
+ },
30
+ })
31
+ : create_http_requester({
32
+ base_url: this.serverUrl,
33
+ fetch: options.fetch,
34
+ with_auth: (init) => this.withAuth(init),
35
+ });
23
36
  this.ai = new AIInvoker({
24
37
  baseUrl: this.serverUrl,
25
38
  token: this.token,
@@ -51,19 +64,12 @@ export class UserPactAccess {
51
64
  // 内部
52
65
  // ===================================================================
53
66
  json(path, init) {
54
- return requestJSON({
55
- fetch: this.fetchImpl,
56
- url: `${this.serverUrl}${path}`,
57
- init: this.withAuth(init),
58
- });
67
+ return this.requester.json(path, init);
59
68
  }
60
69
  raw(path, init) {
61
- this.requireToken();
62
- return requestRaw({
63
- fetch: this.fetchImpl,
64
- url: `${this.serverUrl}${path}`,
65
- init: this.withAuth(init),
66
- });
70
+ if (!is_rpc_url(this.serverUrl))
71
+ this.requireToken();
72
+ return this.requester.raw(path, init);
67
73
  }
68
74
  withAuth(init) {
69
75
  const headers = {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/pact/user/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/pact/user/index.ts"],"names":[],"mappings":"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"}
@@ -35,11 +35,11 @@ export interface UserServiceSummary {
35
35
  }
36
36
  /** User City 内部访问层构造参数 */
37
37
  export interface UserPactAccessOptions {
38
- /** City HTTP 入口地址。 */
38
+ /** City 的访问入口地址,支持 `http(s)://` 与本机 `rpc://`。 */
39
39
  base_url: string;
40
40
  /** 当前 user_token 绑定的 City ID。 */
41
41
  city_id?: string;
42
- /** 终端用户访问 token */
42
+ /** 终端用户访问 token;使用本机 `rpc://` 时不需要传入。 */
43
43
  user_token?: string;
44
44
  /** 自定义 fetch 实现。 */
45
45
  fetch?: FetchLike;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/pact/user/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/pact/user/types.ts"],"names":[],"mappings":"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"}
@@ -40,7 +40,7 @@ export function formatInstructionDocument(input) {
40
40
  lines.push("1. 创建 Federation 实例。");
41
41
  lines.push("2. 通过 base.use(...) 注册业务 Service、AIService 或带 install(ctx) 生命周期的服务。");
42
42
  lines.push("3. 先调用 await base.health() 完成初始化。");
43
- lines.push("4. 通过 base.router().fetch 或 base.handleRequest(...) 对外提供请求处理。");
43
+ lines.push("4. 通过 base.fetch 或 base.fetch(...) 对外提供请求处理。");
44
44
  lines.push("");
45
45
  lines.push(`内置服务:${input.base.builtin_services.join(", ")}`);
46
46
  lines.push(`当前已加载模块:${input.base.loaded_modules.join(", ")}`);
@@ -1 +1 @@
1
- {"version":3,"file":"instruction.js","sourceRoot":"","sources":["../../src/service/instruction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"instruction.js","sourceRoot":"","sources":["../../src/service/instruction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * Federation HTTP Middleware 类型模块。
3
+ *
4
+ * 定义 `fed.middle()` 使用的中间件上下文、next 函数以及内置
5
+ * middleware helper 的公开配置类型。该层只处理 HTTP 入站横切策略,
6
+ * 不承载 Service / Action 的业务生命周期逻辑。
7
+ */
8
+ import type { Service } from "../service/service.js";
9
+ import type { Runtime } from "../federation/runtime.js";
10
+ import type { FederationRequestExecutionContext } from "../federation/types.js";
11
+ /**
12
+ * Federation middleware 的后续执行函数。
13
+ *
14
+ * 关键说明(中文)
15
+ * - 调用 `next()` 会进入下一个 middleware 或最终的内部 router。
16
+ * - 每个 middleware 中的 `next()` 最多只能调用一次。
17
+ */
18
+ export type FederationMiddlewareNext = () => Promise<Response>;
19
+ /**
20
+ * Federation HTTP middleware 函数。
21
+ *
22
+ * 关键说明(中文)
23
+ * - 返回 `Response` 可以短路请求。
24
+ * - `await next()` 后可以对响应 headers 做后处理。
25
+ * - middleware 运行在内部 Hono router 之前,因此可在 body 读取前拒绝请求。
26
+ */
27
+ export type FederationMiddleware = (ctx: FederationMiddlewareContext, next: FederationMiddlewareNext) => Promise<Response> | Response;
28
+ /**
29
+ * 暴露给 middleware 的 Federation 只读引用。
30
+ */
31
+ export interface FederationMiddlewareFederationRef {
32
+ /** 返回当前 Federation 已注册的 Service 列表。 */
33
+ services(): readonly Service[];
34
+ }
35
+ /**
36
+ * Federation middleware 单次请求上下文。
37
+ */
38
+ export interface FederationMiddlewareContext {
39
+ /** 当前原始 HTTP 请求。 */
40
+ request: Request;
41
+ /** 宿主运行时的单次请求执行上下文。 */
42
+ execution?: FederationRequestExecutionContext;
43
+ /** 当前 Federation 的运行时能力集合。 */
44
+ runtime: Runtime;
45
+ /** 当前 Federation 的只读能力引用。 */
46
+ federation: FederationMiddlewareFederationRef;
47
+ /** middleware 之间共享的轻量临时上下文。 */
48
+ locals: Record<string, unknown>;
49
+ }
50
+ /**
51
+ * 请求体大小限制配置。
52
+ */
53
+ export interface BodyLimitOptions {
54
+ /** 允许的最大请求体字节数。 */
55
+ max_bytes: number;
56
+ /** 需要检查的 HTTP 方法;默认检查 POST、PUT、PATCH。 */
57
+ methods?: readonly string[];
58
+ /** 需要检查的路径模式;支持精确路径和 `*` 后缀前缀匹配。 */
59
+ paths?: readonly string[];
60
+ }
61
+ /**
62
+ * CORS middleware 配置。
63
+ */
64
+ export interface CorsOptions {
65
+ /** 允许的 Origin 列表;传 `"*"` 表示允许所有 Origin。 */
66
+ origins: readonly string[] | "*";
67
+ /** 允许的 HTTP 方法列表。 */
68
+ methods?: readonly string[];
69
+ /** 允许的请求头列表。 */
70
+ headers?: readonly string[];
71
+ /** preflight 响应的缓存秒数。 */
72
+ max_age?: number;
73
+ /** Origin 不允许时是否直接返回 403。 */
74
+ strict?: boolean;
75
+ }
76
+ /**
77
+ * 安全响应头配置。
78
+ */
79
+ export interface SecurityHeadersOptions {
80
+ /** 是否设置 X-Content-Type-Options,默认 true。 */
81
+ content_type_options?: boolean;
82
+ /** Referrer-Policy 响应头值,默认 no-referrer。 */
83
+ referrer_policy?: string;
84
+ /** X-Frame-Options 响应头值,默认 DENY。 */
85
+ frame_options?: string;
86
+ /** Permissions-Policy 响应头值。 */
87
+ permissions_policy?: string;
88
+ /** Strict-Transport-Security 响应头值;未传入时不设置。 */
89
+ strict_transport_security?: string;
90
+ /** Content-Security-Policy 响应头值;未传入时不设置。 */
91
+ content_security_policy?: string;
92
+ }
93
+ /**
94
+ * 请求超时配置。
95
+ */
96
+ export interface RequestTimeoutOptions {
97
+ /** 请求超时时间,单位毫秒。 */
98
+ ms: number;
99
+ /** 不启用超时保护的路径模式;支持精确路径和 `*` 后缀前缀匹配。 */
100
+ exclude_paths?: readonly string[];
101
+ }
102
+ /**
103
+ * 限流存储接口。
104
+ */
105
+ export interface RateLimitStore {
106
+ /**
107
+ * 增加当前 key 在窗口内的请求次数。
108
+ *
109
+ * @param key - 限流维度 key。
110
+ * @param window_ms - 限流窗口长度,单位毫秒。
111
+ */
112
+ increment(key: string, window_ms: number): Promise<RateLimitStoreIncrementResult>;
113
+ }
114
+ /**
115
+ * 限流存储增加计数后的结果。
116
+ */
117
+ export interface RateLimitStoreIncrementResult {
118
+ /** 当前窗口内已经累计的请求次数。 */
119
+ count: number;
120
+ /** 当前窗口重置的 Unix 时间戳,单位毫秒。 */
121
+ reset_at: number;
122
+ }
123
+ /**
124
+ * 限流 middleware 配置。
125
+ */
126
+ export interface RateLimitOptions {
127
+ /** 限流窗口长度,单位毫秒。 */
128
+ window_ms: number;
129
+ /** 单个窗口允许的最大请求数。 */
130
+ max: number;
131
+ /** 生成限流 key 的函数。 */
132
+ key(ctx: FederationMiddlewareContext): string | Promise<string>;
133
+ /** 判断当前请求是否需要限流的函数。 */
134
+ match?: (ctx: FederationMiddlewareContext) => boolean | Promise<boolean>;
135
+ /** 限流计数存储。 */
136
+ store: RateLimitStore;
137
+ }
138
+ //# sourceMappingURL=FederationMiddleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FederationMiddleware.d.ts","sourceRoot":"","sources":["../../src/types/FederationMiddleware.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Federation HTTP Middleware 类型模块。
3
+ *
4
+ * 定义 `fed.middle()` 使用的中间件上下文、next 函数以及内置
5
+ * middleware helper 的公开配置类型。该层只处理 HTTP 入站横切策略,
6
+ * 不承载 Service / Action 的业务生命周期逻辑。
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=FederationMiddleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FederationMiddleware.js","sourceRoot":"","sources":["../../src/types/FederationMiddleware.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@downcity/city",
3
- "version": "0.2.124",
3
+ "version": "0.2.129",
4
4
  "description": "Downcity City runtime and City access SDK for services, actions, auth, env, and cities.",
5
5
  "type": "module",
6
6
  "main": "./bin/index.js",
@@ -41,7 +41,7 @@
41
41
  "typescript": "^6.0.3"
42
42
  },
43
43
  "dependencies": {
44
- "@downcity/type": "0.1.81",
44
+ "@downcity/type": "0.1.86",
45
45
  "ai": "^6.0.193",
46
46
  "drizzle-orm": "^0.45.2",
47
47
  "hono": "^4.12.23"