@zlooks.cn/gateway-server 1.0.3 → 1.0.4

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 (53) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +3 -3
  3. package/.next/build-manifest.json +2 -2
  4. package/.next/next-server.js.nft.json +1 -1
  5. package/.next/prerender-manifest.json +3 -3
  6. package/.next/server/app/[pluginId]/[[...path]]/page.js +1 -1
  7. package/.next/server/app/[pluginId]/[[...path]]/page.js.nft.json +1 -1
  8. package/.next/server/app/[pluginId]/[[...path]]/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/_global-error.html +1 -1
  11. package/.next/server/app/_global-error.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  15. package/.next/server/app/_not-found/page.js +1 -1
  16. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  17. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  18. package/.next/server/app/api/shell/navigation/route.js +1 -1
  19. package/.next/server/app/api/shell/navigation/route.js.nft.json +1 -1
  20. package/.next/server/app/page.js +2 -2
  21. package/.next/server/app/page.js.nft.json +1 -1
  22. package/.next/server/app/page_client-reference-manifest.js +1 -1
  23. package/.next/server/app-paths-manifest.json +3 -3
  24. package/.next/server/chunks/964.js +1 -1
  25. package/.next/server/chunks/991.js +1 -0
  26. package/.next/server/middleware-build-manifest.js +1 -1
  27. package/.next/server/pages/500.html +1 -1
  28. package/.next/server/server-reference-manifest.json +1 -1
  29. package/.next/trace +22 -22
  30. package/.next/trace-build +1 -1
  31. package/dist/runtime/gateway-runtime.d.ts +3 -0
  32. package/dist/runtime/gateway-runtime.d.ts.map +1 -1
  33. package/dist/runtime/gateway-runtime.js +19 -0
  34. package/dist/runtime/gateway-runtime.js.map +1 -1
  35. package/dist/runtime/mcp-gateway-runtime.d.ts.map +1 -1
  36. package/dist/runtime/mcp-gateway-runtime.js +5 -0
  37. package/dist/runtime/mcp-gateway-runtime.js.map +1 -1
  38. package/dist/runtime/public-asset-catalog.d.ts +18 -0
  39. package/dist/runtime/public-asset-catalog.d.ts.map +1 -0
  40. package/dist/runtime/public-asset-catalog.js +30 -0
  41. package/dist/runtime/public-asset-catalog.js.map +1 -0
  42. package/dist/runtime/public-asset-discovery.d.ts +20 -0
  43. package/dist/runtime/public-asset-discovery.d.ts.map +1 -0
  44. package/dist/runtime/public-asset-discovery.js +85 -0
  45. package/dist/runtime/public-asset-discovery.js.map +1 -0
  46. package/dist/runtime/public-asset-proxy.d.ts +16 -0
  47. package/dist/runtime/public-asset-proxy.d.ts.map +1 -0
  48. package/dist/runtime/public-asset-proxy.js +127 -0
  49. package/dist/runtime/public-asset-proxy.js.map +1 -0
  50. package/package.json +4 -2
  51. package/.next/server/chunks/775.js +0 -1
  52. /package/.next/static/{fP_us8WRl3Z6nv9W8oU-4 → 4JU1L88bqvTqs50yGMNXG}/_buildManifest.js +0 -0
  53. /package/.next/static/{fP_us8WRl3Z6nv9W8oU-4 → 4JU1L88bqvTqs50yGMNXG}/_ssgManifest.js +0 -0
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-webpack","duration":67629708,"timestamp":724347393417,"id":14,"parentId":1,"tags":{},"startTime":1788322449084,"traceId":"313c48fe37637c75"},{"name":"run-typescript","duration":1081564,"timestamp":724415026264,"id":4713,"parentId":1,"tags":{},"startTime":1788322516719,"traceId":"313c48fe37637c75"},{"name":"static-check","duration":1876833,"timestamp":724416133296,"id":4716,"parentId":1,"tags":{},"startTime":1788322517826,"traceId":"313c48fe37637c75"},{"name":"static-generation","duration":5344359,"timestamp":724418433840,"id":4736,"parentId":1,"tags":{},"startTime":1788322520126,"traceId":"313c48fe37637c75"},{"name":"collect-build-traces","duration":18555766,"timestamp":724418012538,"id":4733,"parentId":1,"tags":{},"startTime":1788322519705,"traceId":"313c48fe37637c75"},{"name":"telemetry-flush","duration":82,"timestamp":724436571465,"id":4744,"parentId":1,"tags":{},"startTime":1788322538265,"traceId":"313c48fe37637c75"},{"name":"next-build","duration":89581526,"timestamp":724346990033,"id":1,"tags":{"buildMode":"default","version":"16.3.0","bundler":"webpack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1788322448680,"traceId":"313c48fe37637c75"}]
1
+ [{"name":"run-webpack","duration":138340288,"timestamp":870271676590,"id":14,"parentId":1,"tags":{},"startTime":1788779733464,"traceId":"4d87ba1f5ce1d4fd"},{"name":"run-typescript","duration":1699881,"timestamp":870410023145,"id":4719,"parentId":1,"tags":{},"startTime":1788779871815,"traceId":"4d87ba1f5ce1d4fd"},{"name":"static-check","duration":2739244,"timestamp":870411764633,"id":4722,"parentId":1,"tags":{},"startTime":1788779873556,"traceId":"4d87ba1f5ce1d4fd"},{"name":"static-generation","duration":5326055,"timestamp":870415275628,"id":4742,"parentId":1,"tags":{},"startTime":1788779877067,"traceId":"4d87ba1f5ce1d4fd"},{"name":"collect-build-traces","duration":31345074,"timestamp":870414505214,"id":4739,"parentId":1,"tags":{},"startTime":1788779876297,"traceId":"4d87ba1f5ce1d4fd"},{"name":"telemetry-flush","duration":490,"timestamp":870445855969,"id":4750,"parentId":1,"tags":{},"startTime":1788779907649,"traceId":"4d87ba1f5ce1d4fd"},{"name":"next-build","duration":174821618,"timestamp":870271034869,"id":1,"tags":{"buildMode":"default","version":"16.3.0","bundler":"webpack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1788779732823,"traceId":"4d87ba1f5ce1d4fd"}]
@@ -6,10 +6,12 @@ import { BrowserApiDiscoveryRuntime } from './browser-api-discovery-runtime.js';
6
6
  import { McpGatewayRuntime } from './mcp-gateway-runtime.js';
7
7
  import { type GatewayRscAccessPolicy } from './rsc-access-policy.js';
8
8
  import { RscDiscoveryRuntime } from './rsc-discovery-runtime.js';
9
+ import { PublicAssetDiscovery } from './public-asset-discovery.js';
9
10
  type GatewayHost = Pick<HttpNext, 'use' | 'start'>;
10
11
  type GatewayRscRuntime = Pick<RscDiscoveryRuntime, 'artifacts' | 'deployments' | 'locator' | 'start' | 'close'>;
11
12
  type GatewayMcpRuntime = Pick<McpGatewayRuntime, 'middleware' | 'start' | 'close'>;
12
13
  type GatewayBrowserApiRuntime = Pick<BrowserApiDiscoveryRuntime, 'resolve' | 'start' | 'close'>;
14
+ type GatewayPublicAssetRuntime = Pick<PublicAssetDiscovery, 'resolve' | 'start' | 'close'>;
13
15
  type RuntimeLogger = Pick<Logger, 'error' | 'warn' | 'info'>;
14
16
  interface GatewayRuntimeDependencies {
15
17
  logger: RuntimeLogger;
@@ -18,6 +20,7 @@ interface GatewayRuntimeDependencies {
18
20
  createRsc?(application: Application, readConfig: () => GatewayConfig): GatewayRscRuntime;
19
21
  createMcp?(application: Application, config: GatewayConfig['mcp']): GatewayMcpRuntime;
20
22
  createBrowserApi?(application: Application): GatewayBrowserApiRuntime;
23
+ createPublicAssets?(application: Application): GatewayPublicAssetRuntime;
21
24
  createRscAccessPolicy?(rsc: GatewayRscRuntime): GatewayRscAccessPolicy;
22
25
  mountRsc?(host: GatewayHost, rsc: GatewayRscRuntime, policy: GatewayRscAccessPolicy, readConfig: () => GatewayConfig): void;
23
26
  mountBrowserApi?(host: GatewayHost, application: Application, routes: GatewayBrowserApiRuntime, readPublicOrigin: () => string, logger: RuntimeLogger): void;
@@ -1 +1 @@
1
- {"version":3,"file":"gateway-runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/gateway-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gateway-runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/gateway-runtime.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,8 @@ import { RscDiscoveryRuntime } from './rsc-discovery-runtime.js';
10
10
  import { mountGatewayRscAdapters } from './rsc-host-adapters.js';
11
11
  import { mountMicroBrowserApiProxy } from './micro-browser-api-proxy.js';
12
12
  import { mountRscBrowserContext } from './rsc-browser-context.js';
13
+ import { PublicAssetDiscovery } from './public-asset-discovery.js';
14
+ import { mountPublicAssetProxy } from './public-asset-proxy.js';
13
15
  export class GatewayRuntime {
14
16
  rsc;
15
17
  rscAccessPolicy;
@@ -18,6 +20,8 @@ export class GatewayRuntime {
18
20
  #initialConfig;
19
21
  #logger;
20
22
  #browserApi;
23
+ #publicAssets;
24
+ #publicTransfers;
21
25
  #reloader;
22
26
  #startHttpPromise;
23
27
  #stopHttpPromise;
@@ -50,6 +54,10 @@ export class GatewayRuntime {
50
54
  this.#host = createHost(initialConfig.public.port, cwd);
51
55
  this.rsc = createRsc(application, () => this.config);
52
56
  this.#browserApi = createBrowserApi(application);
57
+ this.#publicAssets = dependencies.createPublicAssets?.(application) ?? new PublicAssetDiscovery(application, {
58
+ onError: (error) => this.#logger.error({ err: error, event: 'public-asset.discovery.failed' }, 'Public transfer discovery failed'),
59
+ onRejected: (topic, error) => this.#logger.warn({ err: error, topic, event: 'public-asset.discovery.rejected' }, 'Public transfer announcement rejected'),
60
+ });
53
61
  this.rscAccessPolicy = dependencies.createRscAccessPolicy?.(this.rsc)
54
62
  ?? new ActivePublicRscAccessPolicy(this.rsc.deployments);
55
63
  this.#reloader = createRuntimeReloader({
@@ -73,6 +81,14 @@ export class GatewayRuntime {
73
81
  mountRsc(this.#host, this.rsc, this.rscAccessPolicy, () => this.config);
74
82
  this.#host.use((context, next) => this.#useCurrent((state) => state.mcp.middleware(context, next)));
75
83
  mountBrowserApi(this.#host, application, this.#browserApi, () => this.config.public.origin, this.#logger);
84
+ this.#publicTransfers = mountPublicAssetProxy(this.#host, application, {
85
+ resolve: (path, method) => {
86
+ const reserved = ['/api', '/_next', '/_hile', '/-', this.config.mcp.path, this.config.rsc.assetMountPath];
87
+ if (reserved.some((prefix) => path === prefix || path.startsWith(`${prefix.replace(/\/$/, '')}/`)))
88
+ return { status: 'none' };
89
+ return this.#publicAssets.resolve(path, method);
90
+ },
91
+ }, this.#logger);
76
92
  }
77
93
  get config() {
78
94
  return this.#reloader?.current()?.config ?? this.#initialConfig;
@@ -81,6 +97,7 @@ export class GatewayRuntime {
81
97
  try {
82
98
  await this.#requireReloader().update(this.#initialConfig);
83
99
  await this.#browserApi.start();
100
+ await this.#publicAssets.start();
84
101
  await this.rsc.start();
85
102
  }
86
103
  catch (error) {
@@ -125,6 +142,7 @@ export class GatewayRuntime {
125
142
  return stopPromise;
126
143
  }
127
144
  async #stopHostOnce() {
145
+ this.#publicTransfers.close();
128
146
  await this.#startHttpPromise;
129
147
  const stopHttp = this.#stopHttp;
130
148
  if (!stopHttp)
@@ -150,6 +168,7 @@ export class GatewayRuntime {
150
168
  () => this.stopHost(),
151
169
  () => this.#requireReloader().stop(),
152
170
  () => this.#browserApi.close(),
171
+ () => this.#publicAssets.close(),
153
172
  () => this.rsc.close(),
154
173
  ], 'Gateway runtime cleanup failed');
155
174
  }
@@ -1 +1 @@
1
- {"version":3,"file":"gateway-runtime.js","sourceRoot":"","sources":["../../src/runtime/gateway-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gateway-runtime.js","sourceRoot":"","sources":["../../src/runtime/gateway-runtime.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-gateway-runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/mcp-gateway-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAE7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAItD,KAAK,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;AAE7D,eAAO,MAAM,wBAAwB,QAM1B,CAAC;AAEZ,qBAAa,iBAAiB;;IAK1B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHzB,YACmB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAC5B,MAAM,EAAE,aAAa,EACpC;IAEJ,IAAW,UAAU,IAAI,eAAe,CAAC,YAAY,CAAC,CAIrD;IAEM,OAAO,IAAI,oBAAoB,CAIrC;IAEY,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAyDlC;IAEY,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAalC;CAEF"}
1
+ {"version":3,"file":"mcp-gateway-runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/mcp-gateway-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAE7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAItD,KAAK,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;AAE7D,eAAO,MAAM,wBAAwB,QAW1B,CAAC;AAEZ,qBAAa,iBAAiB;;IAK1B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHzB,YACmB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAC5B,MAAM,EAAE,aAAa,EACpC;IAEJ,IAAW,UAAU,IAAI,eAAe,CAAC,YAAY,CAAC,CAIrD;IAEM,OAAO,IAAI,oBAAoB,CAIrC;IAEY,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAyDlC;IAEY,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAalC;CAEF"}
@@ -6,6 +6,11 @@ import { closeInOrder } from './close-in-order.js';
6
6
  export const MCP_GATEWAY_INSTRUCTIONS = [
7
7
  'Capabilities are dynamically discovered from their owning internal Hile microservices.',
8
8
  'Before acting, inspect the current tool, resource, and prompt catalogs and their schemas; never invent a capability.',
9
+ 'Client-side search such as ToolSearch returns a filtered, possibly truncated subset, not the complete MCP tool catalog; never conclude that a tool does not exist solely because it is missing from a search result.',
10
+ 'If search results reach the requested limit or indicate truncation, increase the search limit within client-supported bounds or narrow the query to the exact provider-qualified tool name. Even fewer results do not prove completeness when the query is filtered.',
11
+ 'When a complete inventory is needed, enumerate tools/list and pass each returned nextCursor as cursor on the next request until nextCursor is absent. A client-side search limit is not a tools/list parameter. Stop and report incomplete discovery if a request fails or a cursor repeats.',
12
+ 'For clients with deferred tools, confirm that the required tool is activated and callable in the current run before invoking it; activation in a previous run does not guarantee availability in the current run. Use the exact callable name returned by the client, not a guessed alias.',
13
+ 'On Tool not found, first refresh the relevant catalog and rediscover or reactivate the exact tool in the current run before diagnosing server registration. If you cannot verify the complete authorized catalog, report that uncertainty rather than claiming the server does not expose the tool; do not bypass authentication or blindly retry a write whose outcome is unknown.',
9
14
  "For a multi-step workflow, prefer the owning provider's Prompt when one is available.",
10
15
  'A Prompt is guidance, not evidence that any action succeeded.',
11
16
  'Read current state before a write, obtain explicit user confirmation whenever the workflow requires it, invoke the Tool, and read the resulting state again before reporting success.',
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-gateway-runtime.js","sourceRoot":"","sources":["../../src/runtime/mcp-gateway-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-gateway-runtime.js","sourceRoot":"","sources":["../../src/runtime/mcp-gateway-runtime.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,gBAAgB,GAGjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAAwB,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAE9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAIhD,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,wFAAwF;IACxF,sHAAsH;IACtH,sNAAsN;IACtN,sQAAsQ;IACtQ,8RAA8R;IAC9R,4RAA4R;IAC5R,qXAAqX;IACrX,uFAAuF;IACvF,+DAA+D;IAC/D,uLAAuL;CACxL,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEZ,MAAM,OAAO,iBAAiB;IAKT,WAAW;IACX,MAAM;IACN,MAAM;IANzB,QAAQ,CAAyB;IACjC,SAAS,CAA8B;IAEvC,YACmB,WAAwB,EACxB,MAA4B,EAC5B,MAAqB;2BAFrB,WAAW;sBACX,MAAM;sBACN,MAAM;IACtB,CAAC;IAEJ,IAAW,UAAU;QACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC3D,OAAO,QAAQ,CAAC,UAAU,CAAC;IAC7B,CAAC;IAEM,OAAO;QACZ,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC1D,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,IAAI,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACrE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,2BAA2B,CAAC,IAAI,CAAC,WAAW,EAAE;gBAC3D,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc;gBAC1C,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;oBACpC,GAAG,EAAE,KAAK;oBACV,KAAK,EAAE,+BAA+B;iBACvC,EAAE,+BAA+B,CAAC;aACpC,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC;gBACrC,MAAM;gBACN,gBAAgB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,sBAAsB,CAAC;oBACpD,SAAS,EAAE,UAAU,EAAE;oBACvB,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC/E,CAAC;gBACF,IAAI,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,OAAO,EAAE,OAAO,EAAE;gBAC7D,YAAY,EAAE,wBAAwB;gBACtC,OAAO,EAAE,aAAa;gBACtB,kFAAkF;gBAClF,qFAAqF;gBACrF,kBAAkB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE;gBAChD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;oBACpC,GAAG,EAAE,KAAK;oBACV,KAAK,EAAE,oBAAoB;iBAC5B,EAAE,oBAAoB,CAAC;aACzB,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACxB,MAAM,aAAa,GAAG,IAAI,sBAAsB,CAC9C,IAAI,CAAC,MAAM,CAAC,WAAW,EACvB,IAAI,CAAC,MAAM,CAAC,QAAQ,CACrB,CAAC;YACF,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,OAAO,EAAE;gBAC9C,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAoB;gBACtC,QAAQ,EAAE;oBACR,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB;oBAC9C,sBAAsB,EAAE,IAAI,CAAC,MAAM,CAAC,sBAAsB;oBAC1D,cAAc,EAAE;wBACd,IAAI,EAAE,UAAU;wBAChB,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC;qBAC/D;iBACF;gBACD,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;oBACpC,GAAG,EAAE,KAAK;oBACV,KAAK,EAAE,2BAA2B;iBACnC,EAAE,2BAA2B,CAAC;aAChC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE;gBACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;oBAChB,GAAG,EAAE,UAAU;oBACf,KAAK,EAAE,6BAA6B;iBACrC,EAAE,6BAA6B,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;YACH,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,MAAM,YAAY,CAAC;YACjB,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;gBACpB,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACvB,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ;oBAAE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAC9D,CAAC,CAAC,CAAC,CAAC,SAAS;YACb,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;gBACnB,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;gBACtB,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO;oBAAE,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;YAC3D,CAAC,CAAC,CAAC,CAAC,SAAS;SACd,EAAE,4BAA4B,CAAC,CAAC;IACnC,CAAC;CAEF;AACD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { AssetPeer } from '@zlooks.cn/public-asset';
2
+ export type AssetResolution = {
3
+ status: 'none';
4
+ } | {
5
+ status: 'unavailable';
6
+ } | {
7
+ status: 'method-not-allowed';
8
+ methods: readonly string[];
9
+ } | {
10
+ status: 'matched';
11
+ peer: AssetPeer;
12
+ };
13
+ export declare class PublicAssetCatalog {
14
+ #private;
15
+ reconcile(peers: readonly AssetPeer[], rejectedProviders: ReadonlySet<string>): void;
16
+ resolve(path: string, now: number, method?: string): AssetResolution;
17
+ }
18
+ //# sourceMappingURL=public-asset-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-asset-catalog.d.ts","sourceRoot":"","sources":["../../src/runtime/public-asset-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,MAAM,MAAM,eAAe,GACvB;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAClB;IAAE,MAAM,EAAE,aAAa,CAAA;CAAE,GACzB;IAAE,MAAM,EAAE,oBAAoB,CAAC;IAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAC5D;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAE3C,qBAAa,kBAAkB;;IAI7B,SAAS,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,EAAE,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAUnF;IAED,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,SAAQ,GAAG,eAAe,CAUlE;CACF"}
@@ -0,0 +1,30 @@
1
+ export class PublicAssetCatalog {
2
+ #peers = [];
3
+ #blockedPrefixes = [];
4
+ reconcile(peers, rejectedProviders) {
5
+ const known = [...this.#peers, ...peers];
6
+ this.#blockedPrefixes = known
7
+ .filter(({ announcement }) => rejectedProviders.has(announcement.providerId))
8
+ .map(({ announcement }) => announcement.prefix);
9
+ // Keep rejected ownership only while the provider continues to announce itself.
10
+ this.#peers = [...new Map([
11
+ ...peers,
12
+ ...this.#peers.filter(({ announcement }) => rejectedProviders.has(announcement.providerId)),
13
+ ].map((peer) => [`${peer.announcement.providerId}/${peer.announcement.instanceId}`, peer])).values()].slice(0, 256);
14
+ }
15
+ resolve(path, now, method = 'GET') {
16
+ if (this.#blockedPrefixes.some((prefix) => path.startsWith(prefix)))
17
+ return { status: 'unavailable' };
18
+ const matches = this.#peers.filter(({ announcement }) => path.startsWith(announcement.prefix));
19
+ if (!matches.length)
20
+ return { status: 'none' };
21
+ const active = matches.filter(({ announcement }) => announcement.expiresAt > now);
22
+ if (active.length !== 1)
23
+ return { status: 'unavailable' };
24
+ if (!active[0].announcement.methods.some((allowed) => allowed === method)) {
25
+ return { status: 'method-not-allowed', methods: active[0].announcement.methods };
26
+ }
27
+ return { status: 'matched', peer: active[0] };
28
+ }
29
+ }
30
+ //# sourceMappingURL=public-asset-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-asset-catalog.js","sourceRoot":"","sources":["../../src/runtime/public-asset-catalog.ts"],"names":[],"mappings":"AAQA,MAAM,OAAO,kBAAkB;IAC7B,MAAM,GAAyB,EAAE,CAAC;IAClC,gBAAgB,GAAsB,EAAE,CAAC;IAEzC,SAAS,CAAC,KAA2B,EAAE,iBAAsC;QAC3E,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,gBAAgB,GAAG,KAAK;aAC1B,MAAM,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;aAC5E,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAClD,gFAAgF;QAChF,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;gBACxB,GAAG,KAAK;gBACR,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;aAC5F,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtH,CAAC;IAED,OAAO,CAAC,IAAY,EAAE,GAAW,EAAE,MAAM,GAAG,KAAK;QAC/C,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;QACtG,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/F,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC;QAClF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;QAC1D,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,MAAM,CAAC,EAAE,CAAC;YAC3E,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAE,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QACpF,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAE,EAAE,CAAC;IACjD,CAAC;CACF"}
@@ -0,0 +1,20 @@
1
+ import type { Application } from '@hile/micro';
2
+ import { type AssetResolution } from './public-asset-catalog.js';
3
+ interface DiscoveryOptions {
4
+ clock?: () => number;
5
+ onError?: (error: unknown) => void;
6
+ onRejected?: (topic: string, error: unknown) => void;
7
+ }
8
+ export declare class PublicAssetDiscovery {
9
+ #private;
10
+ private readonly application;
11
+ private readonly options;
12
+ constructor(application: Pick<Application, 'listRegistryTopicSnapshots'>, options?: DiscoveryOptions);
13
+ start(): Promise<void>;
14
+ refresh(): Promise<void>;
15
+ resolve(path: string, method?: string): AssetResolution;
16
+ close(): Promise<void>;
17
+ private poll;
18
+ }
19
+ export {};
20
+ //# sourceMappingURL=public-asset-discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-asset-discovery.d.ts","sourceRoot":"","sources":["../../src/runtime/public-asset-discovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGlF,UAAU,gBAAgB;IACxB,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACtD;AAED,qBAAa,oBAAoB;;IAS7B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAF1B,YACmB,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,4BAA4B,CAAC,EAC5D,OAAO,GAAE,gBAAqB,EAGhD;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAS3B;IAED,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAMvB;IAED,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,SAAQ,GAAG,eAAe,CAKrD;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAK3B;YAEa,IAAI;CA6BnB"}
@@ -0,0 +1,85 @@
1
+ import { ASSET_TOPIC_PREFIX, assetAnnouncementSchema, assetTopic } from '@zlooks.cn/public-asset';
2
+ import { z } from 'zod';
3
+ import { PublicAssetCatalog } from './public-asset-catalog.js';
4
+ const addressSchema = z.strictObject({ host: z.string().min(1).max(253), port: z.number().int().min(1).max(65535) });
5
+ export class PublicAssetDiscovery {
6
+ application;
7
+ options;
8
+ #catalog = new PublicAssetCatalog();
9
+ #clock;
10
+ #abort = new AbortController();
11
+ #refreshedAt = -Infinity;
12
+ #timer;
13
+ #active;
14
+ constructor(application, options = {}) {
15
+ this.application = application;
16
+ this.options = options;
17
+ this.#clock = options.clock ?? Date.now;
18
+ }
19
+ async start() {
20
+ await this.refresh();
21
+ this.#abort.signal.throwIfAborted();
22
+ if (!this.#timer) {
23
+ this.#timer = setInterval(() => {
24
+ void this.refresh().catch((error) => this.options.onError?.(error));
25
+ }, 1_000);
26
+ this.#timer.unref();
27
+ }
28
+ }
29
+ refresh() {
30
+ if (this.#active)
31
+ return this.#active;
32
+ const active = this.poll();
33
+ this.#active = active;
34
+ void active.finally(() => { this.#active = undefined; }).catch(() => undefined);
35
+ return active;
36
+ }
37
+ resolve(path, method = 'GET') {
38
+ const resolution = this.#catalog.resolve(path, this.#clock(), method);
39
+ if (resolution.status === 'none')
40
+ return resolution;
41
+ if (this.#abort.signal.aborted || this.#clock() - this.#refreshedAt > 30_000)
42
+ return { status: 'unavailable' };
43
+ return resolution;
44
+ }
45
+ async close() {
46
+ this.#abort.abort();
47
+ if (this.#timer)
48
+ clearInterval(this.#timer);
49
+ this.#timer = undefined;
50
+ await this.#active?.catch(() => undefined);
51
+ }
52
+ async poll() {
53
+ this.#abort.signal.throwIfAborted();
54
+ const snapshots = await this.application.listRegistryTopicSnapshots(ASSET_TOPIC_PREFIX, {
55
+ signal: AbortSignal.any([this.#abort.signal, AbortSignal.timeout(5_000)]),
56
+ });
57
+ this.#abort.signal.throwIfAborted();
58
+ if (snapshots.length > 256)
59
+ throw new Error('Public asset catalog limit exceeded');
60
+ const now = this.#clock();
61
+ const peers = [];
62
+ const rejected = new Set();
63
+ for (const snapshot of snapshots) {
64
+ try {
65
+ const announcement = assetAnnouncementSchema.parse(snapshot.payload);
66
+ if (!snapshot.hasData || snapshot.retained || snapshot.publisherCount !== 1 || snapshot.publishers.length !== 1
67
+ || snapshot.topic !== assetTopic(announcement)
68
+ || announcement.issuedAt > now + 1_000 || announcement.expiresAt <= announcement.issuedAt
69
+ || announcement.expiresAt - announcement.issuedAt > 30_000) {
70
+ throw new Error('Invalid live public asset announcement');
71
+ }
72
+ peers.push({ announcement, address: addressSchema.parse(snapshot.publishers[0]) });
73
+ }
74
+ catch (error) {
75
+ const provider = snapshot.topic.slice(ASSET_TOPIC_PREFIX.length).split('/')[0];
76
+ if (snapshot.topic.startsWith(ASSET_TOPIC_PREFIX) && provider)
77
+ rejected.add(provider);
78
+ this.options.onRejected?.(snapshot.topic, error);
79
+ }
80
+ }
81
+ this.#catalog.reconcile(peers, rejected);
82
+ this.#refreshedAt = now;
83
+ }
84
+ }
85
+ //# sourceMappingURL=public-asset-discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-asset-discovery.js","sourceRoot":"","sources":["../../src/runtime/public-asset-discovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type HttpNext from '@hile/http-next';
2
+ import type { Application } from '@hile/micro';
3
+ import type { Logger } from '@hile/logger';
4
+ import type { AssetResolution } from './public-asset-catalog';
5
+ type Middleware = Parameters<HttpNext['use']>[0];
6
+ type Host = {
7
+ use(middleware: Middleware): unknown;
8
+ };
9
+ /** Generic HTTP projection of an announced, read-only binary stream. */
10
+ export declare function mountPublicAssetProxy(host: Host, application: Pick<Application, 'streamPeer'>, routes: {
11
+ resolve(path: string, method: string): AssetResolution;
12
+ }, logger: Pick<Logger, 'error'>): {
13
+ close(): void;
14
+ };
15
+ export {};
16
+ //# sourceMappingURL=public-asset-proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-asset-proxy.d.ts","sourceRoot":"","sources":["../../src/runtime/public-asset-proxy.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAK3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,KAAK,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,KAAK,IAAI,GAAG;IAAE,GAAG,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAA;CAAE,CAAC;AAOrD,wEAAwE;AACxE,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,EAC5C,MAAM,EAAE;IAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CAAA;CAAE,EAClE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B;IAAE,KAAK,IAAI,IAAI,CAAA;CAAE,CAyEnB"}
@@ -0,0 +1,127 @@
1
+ import { Readable } from 'node:stream';
2
+ import { pipeline } from 'node:stream/promises';
3
+ import { createExecutionContext } from '@hile/context';
4
+ import { ASSET_CHUNK_BYTES, ASSET_MAX_BYTES, ASSET_REQUEST_HEADERS, assetContentLength, assetMetadataSchema, assetRequestSchema, assetResponseHasBody, } from '@zlooks.cn/public-asset';
5
+ const TRANSFER_TIMEOUT_MS = 60_000;
6
+ const IDLE_TIMEOUT_MS = 10_000;
7
+ const MAX_FRAMES = 16_384;
8
+ const MAX_ACTIVE = 256;
9
+ /** Generic HTTP projection of an announced, read-only binary stream. */
10
+ export function mountPublicAssetProxy(host, application, routes, logger) {
11
+ const active = new Set();
12
+ let closed = false;
13
+ host.use(async (context, next) => {
14
+ const resolution = routes.resolve(context.path, context.method);
15
+ if (resolution.status === 'none')
16
+ return next();
17
+ if (closed || active.size >= MAX_ACTIVE || resolution.status === 'unavailable') {
18
+ return emptyResponse(context, 503);
19
+ }
20
+ if (resolution.status === 'method-not-allowed') {
21
+ context.set('Allow', resolution.methods.join(', '));
22
+ return emptyResponse(context, 405);
23
+ }
24
+ const parsed = assetRequestSchema.safeParse({
25
+ method: context.method, path: context.path, query: context.querystring,
26
+ headers: Object.fromEntries(ASSET_REQUEST_HEADERS.flatMap((name) => {
27
+ const value = context.get(name);
28
+ return value ? [[name, value]] : [];
29
+ })),
30
+ });
31
+ if (!parsed.success)
32
+ return emptyResponse(context, 400);
33
+ if (context.req.aborted || context.res.destroyed)
34
+ return;
35
+ const abort = new AbortController();
36
+ const disconnected = () => abort.abort(new Error('Public transfer disconnected'));
37
+ const timer = setTimeout(() => abort.abort(new Error('Public transfer deadline exceeded')), TRANSFER_TIMEOUT_MS);
38
+ timer.unref();
39
+ active.add(abort);
40
+ context.req.once('aborted', disconnected);
41
+ context.res.once('close', disconnected);
42
+ let source;
43
+ try {
44
+ source = await application.streamPeer(resolution.peer.address, resolution.peer.announcement.operation, parsed.data, {
45
+ context: createExecutionContext({}), signal: abort.signal,
46
+ timeout: TRANSFER_TIMEOUT_MS, idleTimeout: IDLE_TIMEOUT_MS, window: 1,
47
+ });
48
+ // Keep errors observed while validating the head, before pipeline owns the body.
49
+ source.on('error', ignoreStreamError);
50
+ const iterator = source[Symbol.asyncIterator]();
51
+ const first = await iterator.next();
52
+ if (first.done)
53
+ throw new Error('Missing response head');
54
+ const head = assetMetadataSchema.parse(first.value);
55
+ const length = assetContentLength(head);
56
+ const hasBody = assetResponseHasBody(parsed.data.method, head.status);
57
+ if (hasBody && length !== undefined && length > ASSET_MAX_BYTES)
58
+ throw new Error('Transfer size limit exceeded');
59
+ if (!hasBody || length === 0) {
60
+ if (!(await iterator.next()).done)
61
+ throw new Error('Unexpected body for an empty response');
62
+ abort.signal.throwIfAborted();
63
+ context.respond = false;
64
+ context.res.writeHead(head.status, head.headers);
65
+ context.res.end();
66
+ return;
67
+ }
68
+ abort.signal.throwIfAborted();
69
+ context.respond = false;
70
+ context.res.writeHead(head.status, head.headers);
71
+ const body = Readable.from(validatedBody(iterator, length), { objectMode: false, highWaterMark: ASSET_CHUNK_BYTES });
72
+ await pipeline(body, context.res, { signal: abort.signal });
73
+ }
74
+ catch (error) {
75
+ if (!context.req.aborted && !context.res.destroyed) {
76
+ logger.error({ err: error, event: 'public-asset.transfer.failed', providerId: resolution.peer.announcement.providerId }, 'Public binary transfer failed');
77
+ if (context.res.headersSent)
78
+ context.res.destroy();
79
+ else
80
+ emptyResponse(context, 502);
81
+ }
82
+ }
83
+ finally {
84
+ clearTimeout(timer);
85
+ context.req.off('aborted', disconnected);
86
+ context.res.off('close', disconnected);
87
+ abort.abort();
88
+ source?.destroy();
89
+ active.delete(abort);
90
+ }
91
+ });
92
+ return { close() { closed = true; for (const abort of active)
93
+ abort.abort(new Error('Public transfer shutdown')); } };
94
+ }
95
+ async function* validatedBody(iterator, expectedLength) {
96
+ let bytes = 0;
97
+ let frames = 0;
98
+ for (;;) {
99
+ const frame = await iterator.next();
100
+ if (frame.done)
101
+ break;
102
+ if (!Buffer.isBuffer(frame.value) || !frame.value.length || frame.value.length > ASSET_CHUNK_BYTES)
103
+ throw new Error('Invalid binary frame');
104
+ if (++frames > MAX_FRAMES)
105
+ throw new Error('Transfer frame limit exceeded');
106
+ bytes += frame.value.length;
107
+ if (bytes > ASSET_MAX_BYTES || (expectedLength !== undefined && bytes > expectedLength))
108
+ throw new Error('Transfer length exceeded');
109
+ // Hold the final bounded chunk until EOF, so trailing frames cannot look like a successful Content-Length response.
110
+ if (expectedLength !== undefined && bytes === expectedLength) {
111
+ if (!(await iterator.next()).done)
112
+ throw new Error('Trailing response frame');
113
+ yield frame.value;
114
+ return;
115
+ }
116
+ yield frame.value;
117
+ }
118
+ if (expectedLength !== undefined && bytes !== expectedLength)
119
+ throw new Error('Truncated binary transfer');
120
+ }
121
+ function emptyResponse(context, status) {
122
+ context.respond = false;
123
+ context.res.writeHead(status, { 'content-length': '0', 'cache-control': 'no-store' });
124
+ context.res.end();
125
+ }
126
+ function ignoreStreamError() { }
127
+ //# sourceMappingURL=public-asset-proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-asset-proxy.js","sourceRoot":"","sources":["../../src/runtime/public-asset-proxy.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zlooks.cn/gateway-server",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "engines": {
@@ -48,6 +48,7 @@
48
48
  "@koa/bodyparser": "6.1.0",
49
49
  "@zlooks.cn/browser-api": "1.0.0",
50
50
  "@zlooks.cn/global-config-shared": "1.0.0",
51
+ "@zlooks.cn/public-asset": "1.0.1",
51
52
  "@zlooks.cn/public-host-contract": "1.0.0",
52
53
  "@zlooks.cn/registry-config": "1.0.0",
53
54
  "@zlooks.cn/service-command": "1.0.0",
@@ -63,6 +64,7 @@
63
64
  },
64
65
  "devDependencies": {
65
66
  "@hile/cli": "4.0.5",
67
+ "@hile/http": "4.0.3",
66
68
  "@types/node": "26.2.0",
67
69
  "@types/react": "19.2.18",
68
70
  "@types/react-dom": "19.2.4",
@@ -70,5 +72,5 @@
70
72
  "typescript": "7.0.2",
71
73
  "vitest": "4.1.11"
72
74
  },
73
- "gitHead": "375c50cb6747e7741286fc85ac72cb52a2315001"
75
+ "gitHead": "0aaee21087cc402608c0f13836a0fa204e6a402a"
74
76
  }