Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 15x 15x 15x 15x 1x 1x 1x 15x 15x 15x 15x 1x 1x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 1x 1x 1x 1x 1x 1x 1x | import {Internal, type IManifest} from '@feasibleone/blong/types';
import type {IResolution} from './Resolution.ts';
interface IConfig {
portRpc: number;
portGateway: number;
domain: string;
}
export default class ResolutionLocal extends Internal implements IResolution {
#config: IConfig = {
portRpc: 8091,
portGateway: 8080,
domain: 'localhost',
};
#manifest: IManifest | undefined;
public constructor(config: IConfig, {manifest}: {manifest?: IManifest} = {}) {
super();
this.merge(this.#config, config);
this.#manifest = manifest;
}
public async resolve(
service: string,
// invalidate: boolean,
// namespace: string,
): ReturnType<IResolution['resolve']> {
const isRpc = service.startsWith('rpc-');
// Prefer manifest-published ports over config defaults, so that
// services listening on random ports (port:0 in dev intent) are
// discoverable by GatewayCodec / _discoverService.
// The manifest property may be a plain value or a Deferred/thenable
// — `await` handles both.
const manifestPort = this.#manifest
? await this.#manifest[isRpc ? 'rpcPort' : 'gatewayPort']
: undefined;
return {
hostname: 'localhost',
port:
manifestPort != null
? `${manifestPort}`
: isRpc
? `${this.#config.portRpc}`
: `${this.#config.portGateway}`,
};
}
public announce(): void {}
public async start(): Promise<void> {}
public async stop(): Promise<void> {}
}
|