threadforge 0.1.1 → 0.2.1
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.
- package/README.md +52 -20
- package/bin/forge.js +2 -1058
- package/bin/host-commands.d.ts +2 -0
- package/bin/host-commands.d.ts.map +1 -0
- package/bin/host-commands.js +7 -8
- package/bin/platform-commands.d.ts +2 -0
- package/bin/platform-commands.d.ts.map +1 -0
- package/bin/platform-commands.js +118 -36
- package/dist/cli/base-command.d.ts +12 -0
- package/dist/cli/base-command.d.ts.map +1 -0
- package/dist/cli/base-command.js +25 -0
- package/dist/cli/base-command.js.map +1 -0
- package/dist/cli/commands/build.d.ts +10 -0
- package/dist/cli/commands/build.d.ts.map +1 -0
- package/dist/cli/commands/build.js +110 -0
- package/dist/cli/commands/build.js.map +1 -0
- package/dist/cli/commands/deploy.d.ts +12 -0
- package/dist/cli/commands/deploy.d.ts.map +1 -0
- package/dist/cli/commands/deploy.js +143 -0
- package/dist/cli/commands/deploy.js.map +1 -0
- package/dist/cli/commands/dev.d.ts +10 -0
- package/dist/cli/commands/dev.d.ts.map +1 -0
- package/dist/cli/commands/dev.js +138 -0
- package/dist/cli/commands/dev.js.map +1 -0
- package/dist/cli/commands/generate.d.ts +10 -0
- package/dist/cli/commands/generate.d.ts.map +1 -0
- package/dist/cli/commands/generate.js +76 -0
- package/dist/cli/commands/generate.js.map +1 -0
- package/dist/cli/commands/host.d.ts +8 -0
- package/dist/cli/commands/host.d.ts.map +1 -0
- package/dist/cli/commands/host.js +20 -0
- package/dist/cli/commands/host.js.map +1 -0
- package/dist/cli/commands/init.d.ts +16 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +246 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/platform.d.ts +8 -0
- package/dist/cli/commands/platform.d.ts.map +1 -0
- package/dist/cli/commands/platform.js +20 -0
- package/dist/cli/commands/platform.js.map +1 -0
- package/dist/cli/commands/restart.d.ts +8 -0
- package/dist/cli/commands/restart.d.ts.map +1 -0
- package/dist/cli/commands/restart.js +13 -0
- package/dist/cli/commands/restart.js.map +1 -0
- package/dist/cli/commands/scaffold/frontend.d.ts +10 -0
- package/dist/cli/commands/scaffold/frontend.d.ts.map +1 -0
- package/dist/cli/commands/scaffold/frontend.js +130 -0
- package/dist/cli/commands/scaffold/frontend.js.map +1 -0
- package/dist/cli/commands/scaffold/react.d.ts +7 -0
- package/dist/cli/commands/scaffold/react.d.ts.map +1 -0
- package/dist/cli/commands/scaffold/react.js +12 -0
- package/dist/cli/commands/scaffold/react.js.map +1 -0
- package/dist/cli/commands/scale.d.ts +8 -0
- package/dist/cli/commands/scale.d.ts.map +1 -0
- package/dist/cli/commands/scale.js +13 -0
- package/dist/cli/commands/scale.js.map +1 -0
- package/dist/cli/commands/start.d.ts +10 -0
- package/dist/cli/commands/start.d.ts.map +1 -0
- package/dist/cli/commands/start.js +71 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/commands/status.d.ts +11 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +60 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/stop.d.ts +10 -0
- package/dist/cli/commands/stop.d.ts.map +1 -0
- package/dist/cli/commands/stop.js +89 -0
- package/dist/cli/commands/stop.js.map +1 -0
- package/dist/cli/util/config-discovery.d.ts +8 -0
- package/dist/cli/util/config-discovery.d.ts.map +1 -0
- package/dist/cli/util/config-discovery.js +70 -0
- package/dist/cli/util/config-discovery.js.map +1 -0
- package/dist/cli/util/config-patcher.d.ts +17 -0
- package/dist/cli/util/config-patcher.d.ts.map +1 -0
- package/dist/cli/util/config-patcher.js +439 -0
- package/dist/cli/util/config-patcher.js.map +1 -0
- package/dist/cli/util/frontend-dev.d.ts +8 -0
- package/dist/cli/util/frontend-dev.d.ts.map +1 -0
- package/dist/cli/util/frontend-dev.js +117 -0
- package/dist/cli/util/frontend-dev.js.map +1 -0
- package/dist/cli/util/process.d.ts +5 -0
- package/dist/cli/util/process.d.ts.map +1 -0
- package/dist/cli/util/process.js +17 -0
- package/dist/cli/util/process.js.map +1 -0
- package/dist/cli/util/templates.d.ts +10 -0
- package/dist/cli/util/templates.d.ts.map +1 -0
- package/dist/cli/util/templates.js +157 -0
- package/dist/cli/util/templates.js.map +1 -0
- package/dist/core/AlertSink.d.ts +83 -0
- package/dist/core/AlertSink.d.ts.map +1 -0
- package/dist/core/AlertSink.js +126 -0
- package/dist/core/AlertSink.js.map +1 -0
- package/dist/core/DirectMessageBus.d.ts +88 -0
- package/dist/core/DirectMessageBus.d.ts.map +1 -0
- package/dist/core/DirectMessageBus.js +352 -0
- package/dist/core/DirectMessageBus.js.map +1 -0
- package/dist/core/EndpointResolver.d.ts +111 -0
- package/dist/core/EndpointResolver.d.ts.map +1 -0
- package/dist/core/EndpointResolver.js +336 -0
- package/dist/core/EndpointResolver.js.map +1 -0
- package/dist/core/ForgeContext.d.ts +221 -0
- package/dist/core/ForgeContext.d.ts.map +1 -0
- package/dist/core/ForgeContext.js +1169 -0
- package/dist/core/ForgeContext.js.map +1 -0
- package/dist/core/ForgeEndpoints.d.ts +71 -0
- package/dist/core/ForgeEndpoints.d.ts.map +1 -0
- package/dist/core/ForgeEndpoints.js +442 -0
- package/dist/core/ForgeEndpoints.js.map +1 -0
- package/dist/core/ForgeHost.d.ts +82 -0
- package/dist/core/ForgeHost.d.ts.map +1 -0
- package/dist/core/ForgeHost.js +107 -0
- package/dist/core/ForgeHost.js.map +1 -0
- package/dist/core/ForgePlatform.d.ts +96 -0
- package/dist/core/ForgePlatform.d.ts.map +1 -0
- package/dist/core/ForgePlatform.js +136 -0
- package/dist/core/ForgePlatform.js.map +1 -0
- package/dist/core/ForgeWebSocket.d.ts +56 -0
- package/dist/core/ForgeWebSocket.d.ts.map +1 -0
- package/dist/core/ForgeWebSocket.js +415 -0
- package/dist/core/ForgeWebSocket.js.map +1 -0
- package/dist/core/Ingress.d.ts +329 -0
- package/dist/core/Ingress.d.ts.map +1 -0
- package/dist/core/Ingress.js +694 -0
- package/dist/core/Ingress.js.map +1 -0
- package/dist/core/Interceptors.d.ts +134 -0
- package/dist/core/Interceptors.d.ts.map +1 -0
- package/dist/core/Interceptors.js +416 -0
- package/dist/core/Interceptors.js.map +1 -0
- package/dist/core/Logger.d.ts +20 -0
- package/dist/core/Logger.d.ts.map +1 -0
- package/dist/core/Logger.js +77 -0
- package/dist/core/Logger.js.map +1 -0
- package/dist/core/MessageBus.d.ts +15 -0
- package/dist/core/MessageBus.d.ts.map +1 -0
- package/dist/core/MessageBus.js +18 -0
- package/dist/core/MessageBus.js.map +1 -0
- package/dist/core/Prometheus.d.ts +80 -0
- package/dist/core/Prometheus.d.ts.map +1 -0
- package/dist/core/Prometheus.js +332 -0
- package/dist/core/Prometheus.js.map +1 -0
- package/dist/core/RequestContext.d.ts +214 -0
- package/dist/core/RequestContext.d.ts.map +1 -0
- package/dist/core/RequestContext.js +556 -0
- package/dist/core/RequestContext.js.map +1 -0
- package/dist/core/Router.d.ts +45 -0
- package/dist/core/Router.d.ts.map +1 -0
- package/dist/core/Router.js +285 -0
- package/dist/core/Router.js.map +1 -0
- package/dist/core/RoutingStrategy.d.ts +116 -0
- package/dist/core/RoutingStrategy.d.ts.map +1 -0
- package/dist/core/RoutingStrategy.js +306 -0
- package/dist/core/RoutingStrategy.js.map +1 -0
- package/dist/core/RpcConfig.d.ts +72 -0
- package/dist/core/RpcConfig.d.ts.map +1 -0
- package/dist/core/RpcConfig.js +127 -0
- package/dist/core/RpcConfig.js.map +1 -0
- package/dist/core/SignatureCache.d.ts +81 -0
- package/dist/core/SignatureCache.d.ts.map +1 -0
- package/dist/core/SignatureCache.js +172 -0
- package/dist/core/SignatureCache.js.map +1 -0
- package/dist/core/StaticFileServer.d.ts +34 -0
- package/dist/core/StaticFileServer.d.ts.map +1 -0
- package/dist/core/StaticFileServer.js +497 -0
- package/dist/core/StaticFileServer.js.map +1 -0
- package/dist/core/Supervisor.d.ts +198 -0
- package/dist/core/Supervisor.d.ts.map +1 -0
- package/dist/core/Supervisor.js +1418 -0
- package/dist/core/Supervisor.js.map +1 -0
- package/dist/core/ThreadAllocator.d.ts +52 -0
- package/dist/core/ThreadAllocator.d.ts.map +1 -0
- package/dist/core/ThreadAllocator.js +174 -0
- package/dist/core/ThreadAllocator.js.map +1 -0
- package/dist/core/WorkerChannelManager.d.ts +130 -0
- package/dist/core/WorkerChannelManager.d.ts.map +1 -0
- package/dist/core/WorkerChannelManager.js +956 -0
- package/dist/core/WorkerChannelManager.js.map +1 -0
- package/dist/core/config-enums.d.ts +41 -0
- package/dist/core/config-enums.d.ts.map +1 -0
- package/dist/core/config-enums.js +59 -0
- package/dist/core/config-enums.js.map +1 -0
- package/dist/core/config.d.ts +159 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +694 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/host-config.d.ts +146 -0
- package/dist/core/host-config.d.ts.map +1 -0
- package/dist/core/host-config.js +312 -0
- package/dist/core/host-config.js.map +1 -0
- package/dist/core/ipc-errors.d.ts +27 -0
- package/dist/core/ipc-errors.d.ts.map +1 -0
- package/dist/core/ipc-errors.js +36 -0
- package/dist/core/ipc-errors.js.map +1 -0
- package/dist/core/network-utils.d.ts +35 -0
- package/dist/core/network-utils.d.ts.map +1 -0
- package/dist/core/network-utils.js +145 -0
- package/dist/core/network-utils.js.map +1 -0
- package/dist/core/platform-config.d.ts +142 -0
- package/dist/core/platform-config.d.ts.map +1 -0
- package/dist/core/platform-config.js +299 -0
- package/dist/core/platform-config.js.map +1 -0
- package/dist/decorators/ServiceProxy.d.ts +175 -0
- package/dist/decorators/ServiceProxy.d.ts.map +1 -0
- package/dist/decorators/ServiceProxy.js +969 -0
- package/dist/decorators/ServiceProxy.js.map +1 -0
- package/dist/decorators/index.d.ts +146 -0
- package/dist/decorators/index.d.ts.map +1 -0
- package/dist/decorators/index.js +545 -0
- package/dist/decorators/index.js.map +1 -0
- package/dist/deploy/NginxGenerator.d.ts +165 -0
- package/dist/deploy/NginxGenerator.d.ts.map +1 -0
- package/dist/deploy/NginxGenerator.js +781 -0
- package/dist/deploy/NginxGenerator.js.map +1 -0
- package/dist/deploy/PlatformManifestGenerator.d.ts +43 -0
- package/dist/deploy/PlatformManifestGenerator.d.ts.map +1 -0
- package/dist/deploy/PlatformManifestGenerator.js +80 -0
- package/dist/deploy/PlatformManifestGenerator.js.map +1 -0
- package/dist/deploy/RouteManifestGenerator.d.ts +42 -0
- package/dist/deploy/RouteManifestGenerator.d.ts.map +1 -0
- package/dist/deploy/RouteManifestGenerator.js +105 -0
- package/dist/deploy/RouteManifestGenerator.js.map +1 -0
- package/dist/deploy/index.d.ts +210 -0
- package/dist/deploy/index.d.ts.map +1 -0
- package/dist/deploy/index.js +918 -0
- package/dist/deploy/index.js.map +1 -0
- package/dist/frontend/FrontendDevLifecycle.d.ts +26 -0
- package/dist/frontend/FrontendDevLifecycle.d.ts.map +1 -0
- package/dist/frontend/FrontendDevLifecycle.js +60 -0
- package/dist/frontend/FrontendDevLifecycle.js.map +1 -0
- package/dist/frontend/FrontendPluginOrchestrator.d.ts +64 -0
- package/dist/frontend/FrontendPluginOrchestrator.d.ts.map +1 -0
- package/dist/frontend/FrontendPluginOrchestrator.js +167 -0
- package/dist/frontend/FrontendPluginOrchestrator.js.map +1 -0
- package/dist/frontend/SiteResolver.d.ts +33 -0
- package/dist/frontend/SiteResolver.d.ts.map +1 -0
- package/dist/frontend/SiteResolver.js +53 -0
- package/dist/frontend/SiteResolver.js.map +1 -0
- package/dist/frontend/StaticMountRegistry.d.ts +36 -0
- package/dist/frontend/StaticMountRegistry.d.ts.map +1 -0
- package/dist/frontend/StaticMountRegistry.js +94 -0
- package/dist/frontend/StaticMountRegistry.js.map +1 -0
- package/dist/frontend/index.d.ts +7 -0
- package/dist/frontend/index.d.ts.map +1 -0
- package/{src → dist}/frontend/index.js +4 -2
- package/dist/frontend/index.js.map +1 -0
- package/dist/frontend/pathUtils.d.ts +8 -0
- package/dist/frontend/pathUtils.d.ts.map +1 -0
- package/dist/frontend/pathUtils.js +17 -0
- package/dist/frontend/pathUtils.js.map +1 -0
- package/dist/frontend/plugins/index.d.ts +2 -0
- package/dist/frontend/plugins/index.d.ts.map +1 -0
- package/{src → dist}/frontend/plugins/index.js +1 -1
- package/dist/frontend/plugins/index.js.map +1 -0
- package/dist/frontend/plugins/viteFrontend.d.ts +51 -0
- package/dist/frontend/plugins/viteFrontend.d.ts.map +1 -0
- package/dist/frontend/plugins/viteFrontend.js +134 -0
- package/dist/frontend/plugins/viteFrontend.js.map +1 -0
- package/dist/frontend/types.d.ts +25 -0
- package/dist/frontend/types.d.ts.map +1 -0
- package/dist/frontend/types.js +2 -0
- package/dist/frontend/types.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +32 -0
- package/dist/index.js.map +1 -0
- package/dist/internals.d.ts +21 -0
- package/dist/internals.d.ts.map +1 -0
- package/{src → dist}/internals.js +12 -14
- package/dist/internals.js.map +1 -0
- package/dist/plugins/PluginManager.d.ts +209 -0
- package/dist/plugins/PluginManager.d.ts.map +1 -0
- package/dist/plugins/PluginManager.js +365 -0
- package/dist/plugins/PluginManager.js.map +1 -0
- package/dist/plugins/ScopedPostgres.d.ts +78 -0
- package/dist/plugins/ScopedPostgres.d.ts.map +1 -0
- package/dist/plugins/ScopedPostgres.js +190 -0
- package/dist/plugins/ScopedPostgres.js.map +1 -0
- package/dist/plugins/ScopedRedis.d.ts +88 -0
- package/dist/plugins/ScopedRedis.d.ts.map +1 -0
- package/dist/plugins/ScopedRedis.js +169 -0
- package/dist/plugins/ScopedRedis.js.map +1 -0
- package/dist/plugins/index.d.ts +289 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +1942 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/types.d.ts +59 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +2 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/registry/ServiceRegistry.d.ts +305 -0
- package/dist/registry/ServiceRegistry.d.ts.map +1 -0
- package/dist/registry/ServiceRegistry.js +735 -0
- package/dist/registry/ServiceRegistry.js.map +1 -0
- package/dist/scaling/ScaleAdvisor.d.ts +214 -0
- package/dist/scaling/ScaleAdvisor.d.ts.map +1 -0
- package/dist/scaling/ScaleAdvisor.js +526 -0
- package/dist/scaling/ScaleAdvisor.js.map +1 -0
- package/dist/services/Service.d.ts +164 -0
- package/dist/services/Service.d.ts.map +1 -0
- package/dist/services/Service.js +106 -0
- package/dist/services/Service.js.map +1 -0
- package/dist/services/worker-bootstrap.d.ts +15 -0
- package/dist/services/worker-bootstrap.d.ts.map +1 -0
- package/dist/services/worker-bootstrap.js +744 -0
- package/dist/services/worker-bootstrap.js.map +1 -0
- package/dist/templates/auth-service.d.ts +42 -0
- package/dist/templates/auth-service.d.ts.map +1 -0
- package/dist/templates/auth-service.js +54 -0
- package/dist/templates/auth-service.js.map +1 -0
- package/dist/templates/identity-service.d.ts +50 -0
- package/dist/templates/identity-service.d.ts.map +1 -0
- package/dist/templates/identity-service.js +62 -0
- package/dist/templates/identity-service.js.map +1 -0
- package/dist/types/contract.d.ts +120 -0
- package/dist/types/contract.d.ts.map +1 -0
- package/dist/types/contract.js +69 -0
- package/dist/types/contract.js.map +1 -0
- package/package.json +78 -20
- package/src/core/DirectMessageBus.js +0 -364
- package/src/core/EndpointResolver.js +0 -259
- package/src/core/ForgeContext.js +0 -2236
- package/src/core/ForgeHost.js +0 -122
- package/src/core/ForgePlatform.js +0 -145
- package/src/core/Ingress.js +0 -768
- package/src/core/Interceptors.js +0 -420
- package/src/core/MessageBus.js +0 -321
- package/src/core/Prometheus.js +0 -305
- package/src/core/RequestContext.js +0 -413
- package/src/core/RoutingStrategy.js +0 -330
- package/src/core/Supervisor.js +0 -1349
- package/src/core/ThreadAllocator.js +0 -196
- package/src/core/WorkerChannelManager.js +0 -879
- package/src/core/config.js +0 -637
- package/src/core/host-config.js +0 -311
- package/src/core/network-utils.js +0 -166
- package/src/core/platform-config.js +0 -308
- package/src/decorators/ServiceProxy.js +0 -904
- package/src/decorators/index.js +0 -571
- package/src/deploy/NginxGenerator.js +0 -865
- package/src/deploy/PlatformManifestGenerator.js +0 -96
- package/src/deploy/RouteManifestGenerator.js +0 -112
- package/src/deploy/index.js +0 -984
- package/src/frontend/FrontendDevLifecycle.js +0 -65
- package/src/frontend/FrontendPluginOrchestrator.js +0 -187
- package/src/frontend/SiteResolver.js +0 -63
- package/src/frontend/StaticMountRegistry.js +0 -90
- package/src/frontend/plugins/viteFrontend.js +0 -79
- package/src/frontend/types.js +0 -35
- package/src/index.js +0 -58
- package/src/plugins/PluginManager.js +0 -537
- package/src/plugins/ScopedPostgres.js +0 -192
- package/src/plugins/ScopedRedis.js +0 -142
- package/src/plugins/index.js +0 -1756
- package/src/registry/ServiceRegistry.js +0 -797
- package/src/scaling/ScaleAdvisor.js +0 -442
- package/src/services/Service.js +0 -195
- package/src/services/worker-bootstrap.js +0 -679
- package/src/templates/auth-service.js +0 -65
- package/src/templates/identity-service.js +0 -75
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ServiceProxy v2
|
|
3
|
+
*
|
|
4
|
+
* Auto-generates proxy clients with:
|
|
5
|
+
* - Pluggable routing strategies (round-robin, hash, least-pending)
|
|
6
|
+
* - Interceptor chains (deadline, logging, circuit breaker, retry)
|
|
7
|
+
* - Pending request tracking (for least-pending routing)
|
|
8
|
+
* - Contract-based method validation
|
|
9
|
+
*/
|
|
10
|
+
import http from "node:http";
|
|
11
|
+
import type { ForgeContext } from "../core/ForgeContext.js";
|
|
12
|
+
import { type RpcConfig } from "../core/RpcConfig.js";
|
|
13
|
+
import type { ServiceClassLike, ServiceContract } from "./index.js";
|
|
14
|
+
interface RetryConfig {
|
|
15
|
+
maxAttempts?: number;
|
|
16
|
+
baseDelayMs?: number;
|
|
17
|
+
maxDelayMs?: number;
|
|
18
|
+
}
|
|
19
|
+
interface LocalServiceInstance {
|
|
20
|
+
service: Record<string, unknown>;
|
|
21
|
+
ctx: ForgeContext;
|
|
22
|
+
}
|
|
23
|
+
interface ConcurrencyLimiterConfig {
|
|
24
|
+
initialLimit?: number;
|
|
25
|
+
minLimit?: number;
|
|
26
|
+
maxLimit?: number;
|
|
27
|
+
smoothing?: number;
|
|
28
|
+
tolerance?: number;
|
|
29
|
+
}
|
|
30
|
+
interface ProxyOptions {
|
|
31
|
+
interceptors?: Record<string, unknown>;
|
|
32
|
+
routingStrategy?: string;
|
|
33
|
+
retry?: RetryConfig | false;
|
|
34
|
+
circuitBreaker?: import("../core/RpcConfig.js").CircuitBreakerOptions;
|
|
35
|
+
bulkhead?: import("../core/RpcConfig.js").BulkheadOptions;
|
|
36
|
+
concurrency?: ConcurrencyLimiterConfig;
|
|
37
|
+
defaultTimeout?: number;
|
|
38
|
+
rpcConfig?: RpcConfig;
|
|
39
|
+
pool?: RpcPoolConfig;
|
|
40
|
+
}
|
|
41
|
+
export interface ServiceInstance {
|
|
42
|
+
ctx?: {
|
|
43
|
+
serviceName?: string;
|
|
44
|
+
} | null;
|
|
45
|
+
constructor: Function;
|
|
46
|
+
onMessage: (from: string, payload: unknown) => Promise<unknown>;
|
|
47
|
+
[key: string]: unknown;
|
|
48
|
+
}
|
|
49
|
+
interface ProxyRequestPayload {
|
|
50
|
+
__forge_method?: string;
|
|
51
|
+
__forge_args?: unknown[];
|
|
52
|
+
__forge_deadline?: number | string;
|
|
53
|
+
__forge_event?: string;
|
|
54
|
+
__forge_data?: unknown;
|
|
55
|
+
[key: string]: unknown;
|
|
56
|
+
}
|
|
57
|
+
interface ConcurrencyStats {
|
|
58
|
+
[name: string]: unknown;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Default pool limits for the shared HTTP agent used by remote RPC.
|
|
62
|
+
* Configurable via environment variables:
|
|
63
|
+
* FORGE_RPC_MAX_SOCKETS — max concurrent sockets across all hosts (default 256)
|
|
64
|
+
* FORGE_RPC_MAX_SOCKETS_PER_HOST — max concurrent sockets per host (default 64)
|
|
65
|
+
* FORGE_RPC_KEEPALIVE_MS — keepalive timeout in ms (default 30000)
|
|
66
|
+
* Also configurable via ProxyOptions.pool.
|
|
67
|
+
*/
|
|
68
|
+
export interface RpcPoolConfig {
|
|
69
|
+
maxSockets?: number;
|
|
70
|
+
maxSocketsPerHost?: number;
|
|
71
|
+
keepAliveMs?: number;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Get or create the shared HTTP agent for remote RPC connections.
|
|
75
|
+
* Uses connection pooling with keepalive to avoid per-request TCP setup.
|
|
76
|
+
*/
|
|
77
|
+
export declare function _getRpcAgent(config?: RpcPoolConfig): http.Agent;
|
|
78
|
+
/**
|
|
79
|
+
* Destroy the shared RPC agent (for test teardown / graceful shutdown).
|
|
80
|
+
*/
|
|
81
|
+
export declare function _destroyRpcAgent(): void;
|
|
82
|
+
/**
|
|
83
|
+
* Stop the signature cache (for cleanup/testing).
|
|
84
|
+
*/
|
|
85
|
+
export declare function _stopSignatureCache(): void;
|
|
86
|
+
/** Start (or restart) the periodic rate-limit bucket cleanup timer. */
|
|
87
|
+
export declare function _startRateLimitCleanup(): void;
|
|
88
|
+
/** Stop the periodic rate-limit bucket cleanup timer (for test teardown). */
|
|
89
|
+
export declare function _stopRateLimitCleanup(): void;
|
|
90
|
+
/** Sentinel returned by handleProxyRequest when the message isn't a proxy request. */
|
|
91
|
+
export declare const NOT_HANDLED: unique symbol;
|
|
92
|
+
/** Expose for status endpoints */
|
|
93
|
+
export declare function getAllConcurrencyStats(): ConcurrencyStats;
|
|
94
|
+
/**
|
|
95
|
+
* Build proxy clients for all services this service connects to.
|
|
96
|
+
*/
|
|
97
|
+
export declare function buildServiceProxies(ctx: ForgeContext, serviceClasses: Map<string, ServiceClassLike>, localServices?: Map<string, LocalServiceInstance>, options?: ProxyOptions): Record<string, unknown>;
|
|
98
|
+
/**
|
|
99
|
+
* Create a proxy client for a single target service.
|
|
100
|
+
*/
|
|
101
|
+
export declare function createServiceProxy(ctx: ForgeContext, targetName: string, contract: ServiceContract | null, localInstance: LocalServiceInstance | null, options: ProxyOptions): Record<string, unknown>;
|
|
102
|
+
/**
|
|
103
|
+
* Handle an incoming proxy-style RPC request on the receiving service.
|
|
104
|
+
*
|
|
105
|
+
* Detects the __forge_method convention, checks deadlines,
|
|
106
|
+
* validates the method is exposed, and dispatches.
|
|
107
|
+
*/
|
|
108
|
+
export declare function handleProxyRequest(service: ServiceInstance, from: string, payload: ProxyRequestPayload | null | undefined): unknown | typeof NOT_HANDLED;
|
|
109
|
+
/**
|
|
110
|
+
* Auto-register HTTP routes from @Route decorator / contract metadata.
|
|
111
|
+
*
|
|
112
|
+
* For every route declared via `@Route(method, path)` or the plain-JS
|
|
113
|
+
* `static contract = { routes: [...] }`, this function registers the
|
|
114
|
+
* corresponding handler on the service's HTTP router.
|
|
115
|
+
*
|
|
116
|
+
* **Contract route handler signature:**
|
|
117
|
+
*
|
|
118
|
+
* async handler(body, params, query) -> result
|
|
119
|
+
*
|
|
120
|
+
* - `body` — parsed request body (`req.body`)
|
|
121
|
+
* - `params` — URL path parameters (`req.params`), e.g. `{ id: '42' }` for `/users/:id`
|
|
122
|
+
* - `query` — query-string parameters (`req.query`), e.g. `{ page: '2' }`
|
|
123
|
+
* - Return value is automatically serialized as JSON via `res.json(result)`.
|
|
124
|
+
* POST routes respond with 201; all other methods respond with 200.
|
|
125
|
+
* Errors are caught and returned as `{ error: message }` with 404 (if the
|
|
126
|
+
* message contains "not found") or 500.
|
|
127
|
+
*
|
|
128
|
+
* **How this differs from manual `ctx.router` routes:**
|
|
129
|
+
*
|
|
130
|
+
* When you register routes manually in `onStart(ctx)`, the handler receives
|
|
131
|
+
* the raw `(req, res)` pair and you are responsible for sending the response:
|
|
132
|
+
*
|
|
133
|
+
* ctx.router.get('/health', (req, res) => {
|
|
134
|
+
* res.json({ ok: true });
|
|
135
|
+
* });
|
|
136
|
+
*
|
|
137
|
+
* Contract-based handlers are higher-level: the framework supplies the
|
|
138
|
+
* individual pieces of the request as arguments and handles serialization
|
|
139
|
+
* and status codes for you.
|
|
140
|
+
*
|
|
141
|
+
* @example
|
|
142
|
+
* // ── Contract / decorator approach ──────────────────────
|
|
143
|
+
* // Handler receives (body, params, query) and returns a value.
|
|
144
|
+
*
|
|
145
|
+
* class UserService extends Service {
|
|
146
|
+
* \@Expose()
|
|
147
|
+
* \@Route('GET', '/users/:id')
|
|
148
|
+
* async getUser(body, params, query) {
|
|
149
|
+
* return this.db.findUser(params.id); // auto-serialized, 200 OK
|
|
150
|
+
* }
|
|
151
|
+
*
|
|
152
|
+
* \@Expose()
|
|
153
|
+
* \@Route('POST', '/users')
|
|
154
|
+
* async createUser(body, params, query) {
|
|
155
|
+
* return this.db.insert(body); // auto-serialized, 201 Created
|
|
156
|
+
* }
|
|
157
|
+
* }
|
|
158
|
+
*
|
|
159
|
+
* // ── Manual approach (in onStart) ──────────────────────
|
|
160
|
+
* // Handler receives (req, res) and must call res.json() itself.
|
|
161
|
+
*
|
|
162
|
+
* async onStart(ctx) {
|
|
163
|
+
* ctx.router.get('/users/:id', async (req, res) => {
|
|
164
|
+
* const user = await this.db.findUser(req.params.id);
|
|
165
|
+
* res.json(user); // you choose the status code
|
|
166
|
+
* });
|
|
167
|
+
* }
|
|
168
|
+
*/
|
|
169
|
+
export declare function autoRegisterRoutes(service: ServiceInstance, ctx: ForgeContext): void;
|
|
170
|
+
/**
|
|
171
|
+
* Auto-wire event subscriptions from @On decorators.
|
|
172
|
+
*/
|
|
173
|
+
export declare function autoWireSubscriptions(service: ServiceInstance, _ctx: ForgeContext): void;
|
|
174
|
+
export {};
|
|
175
|
+
//# sourceMappingURL=ServiceProxy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServiceProxy.d.ts","sourceRoot":"","sources":["../../src/decorators/ServiceProxy.ts"],"names":[],"mappings":"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"}
|