diff --git a/src/registry/endpoint-list.d.ts b/src/registry/endpoint-list.d.ts index 640aed614..1f03cefea 100644 --- a/src/registry/endpoint-list.d.ts +++ b/src/registry/endpoint-list.d.ts @@ -1,7 +1,12 @@ +import BaseStrategy = require("../strategies/base"); +import Endpoint = require("./endpoint"); import ActionEndpoint = require("./endpoint-action"); import EventEndpoint = require("./endpoint-event"); +import { Registry, ServiceBroker } from "./event-catalog"; declare class EndpointList { + constructor(registry: Registry, broker: ServiceBroker, name: string, group: string, EndPointFactory?: typeof Endpoint, StrategyFactory?: BaseStrategy, strategyOptions?: Record); + endpoints: (ActionEndpoint | EventEndpoint)[]; } export = EndpointList; diff --git a/src/registry/event-catalog.js b/src/registry/event-catalog.js index 5f7563593..dc0220ee2 100644 --- a/src/registry/event-catalog.js +++ b/src/registry/event-catalog.js @@ -12,6 +12,16 @@ const Strategies = require("../strategies"); const EndpointList = require("./endpoint-list"); const EventEndpoint = require("./endpoint-event"); +/** + * Import types + * + * @typedef {import("./registry")} Registry + * @typedef {import("../service")} ServiceItem + * @typedef {import("../service-broker")} ServiceBroker + * @typedef {import("../context")} Context + * @typedef {import("./node")} Node + */ + /** * Catalog for events * @@ -153,11 +163,7 @@ class EventCatalog { /** * Call local service handlers * - * @param {String} eventName - * @param {any} payload - * @param {Array?} groupNames - * @param {String} nodeID - * @param {boolean} broadcast + * @param {Context} ctx * @returns {Promise} * * @memberof EventCatalog @@ -196,6 +202,7 @@ class EventCatalog { return this.broker.Promise.allSettled(promises).then(results => { const err = results.find(r => r.status == "rejected"); + // @ts-ignore if (err) return this.broker.Promise.reject(err.reason); return true; }); @@ -204,7 +211,7 @@ class EventCatalog { /** * Call local event handler and handles unhandled promise rejections. * - * @param {Context} ctx + * @param {any} ctx * * @memberof EventCatalog */ @@ -240,7 +247,12 @@ class EventCatalog { /** * Get a filtered list of events * - * @param {Object} {onlyLocal = false, onlyAvailable = false, skipInternal = false, withEndpoints = false} + * @param {Object} opts + * @param {Boolean} [opts.onlyLocal = false] + * @param {Boolean} [opts.onlyAvailable = false] + * @param {Boolean} [opts.skipInternal = false] + * @param {Boolean} [opts.withEndpoints = false] + * * @returns {Array} * * @memberof EventCatalog diff --git a/src/registry/node-catalog.js b/src/registry/node-catalog.js index 353d14653..0cb8e1622 100644 --- a/src/registry/node-catalog.js +++ b/src/registry/node-catalog.js @@ -1,6 +1,6 @@ /* * moleculer - * Copyright (c) 2020 MoleculerJS (https://github.com/moleculerjs/moleculer) + * Copyright (c) 2023 MoleculerJS (https://github.com/moleculerjs/moleculer) * MIT Licensed */ @@ -11,6 +11,13 @@ const os = require("os"); const Node = require("./node"); const { getIpList } = require("../utils"); +/** + * Import types + * + * @typedef {import("./registry")} Registry + * @typedef {import("../service-broker")} ServiceBroker + */ + /** * Catalog for nodes * @@ -202,7 +209,9 @@ class NodeCatalog { /** * Get a node list * - * @param {Object} {onlyAvailable = false, withServices = false} + * @param {Object} opts + * @param {Boolean} [opts.onlyAvailable = false] + * @param {Boolean} [opts.withServices = false] * @returns * @memberof NodeCatalog */ diff --git a/src/registry/node.d.ts b/src/registry/node.d.ts index af5424ca6..5485f83bc 100644 --- a/src/registry/node.d.ts +++ b/src/registry/node.d.ts @@ -22,6 +22,8 @@ declare class BrokerNode { seq: number; offlineSince: number | null; + constructor(id: string); + heartbeat(payload: Record): void; disconnected(): void; } diff --git a/src/registry/registry.d.ts b/src/registry/registry.d.ts index a2764065e..46aa0dbb7 100644 --- a/src/registry/registry.d.ts +++ b/src/registry/registry.d.ts @@ -8,6 +8,7 @@ import ServiceCatalog = require("./service-catalog"); import ActionCatalog = require("./action-catalog"); import NodeCatalog = require("./node-catalog"); import EventCatalog = require("./event-catalog"); +import Node = require("./node"); declare namespace ServiceRegistry {} @@ -32,5 +33,10 @@ declare class ServiceRegistry { getActionList(opts?: ActionCatalogListOptions): Promise>; getEventList(opts?: ActionCatalogListOptions): Promise>; + + updateMetrics(): void; + + registerServices(node: Node, serviceList: Record[]): void; + unregisterServicesByNode(nodeID: string): void; } export = ServiceRegistry; diff --git a/src/registry/service-catalog.js b/src/registry/service-catalog.js index 03c3cd0d2..3a325a510 100644 --- a/src/registry/service-catalog.js +++ b/src/registry/service-catalog.js @@ -10,6 +10,14 @@ const _ = require("lodash"); const ServiceItem = require("./service-item"); const { removeFromArray } = require("../utils"); +/** + * Import types + * + * @typedef {import("./registry")} Registry + * @typedef {import("./node")} Node + * @typedef {import("../service-broker")} ServiceBroker + */ + /** * Catalog for services * @@ -75,7 +83,13 @@ class ServiceCatalog { /** * Get a filtered list of services with actions * - * @param {Object} {onlyLocal = false, onlyAvailable = false, skipInternal = false, withActions = false, withEvents = false, grouping = false} + * @param {Object} opts + * @param {Boolean} [opts.onlyLocal = false] + * @param {Boolean} [opts.onlyAvailable = false] + * @param {Boolean} [opts.skipInternal = false] + * @param {Boolean} [opts.withActions = false] + * @param {Boolean} [opts.withEvents = false] + * @param {Boolean} [opts.grouping = false] * @returns {Array} * * @memberof Registry diff --git a/src/registry/service-item.d.ts b/src/registry/service-item.d.ts index 8ea739211..31786efed 100644 --- a/src/registry/service-item.d.ts +++ b/src/registry/service-item.d.ts @@ -1,2 +1,6 @@ -declare class ServiceItem {} +import Node = require("./node"); + +declare class ServiceItem { + constructor(node: Node, service: Record, local: boolean); +} export = ServiceItem; diff --git a/src/runner.d.ts b/src/runner.d.ts index d1093f711..430c571b8 100644 --- a/src/runner.d.ts +++ b/src/runner.d.ts @@ -1,6 +1,7 @@ import ServiceBroker = require("./service-broker"); import Service = require("./service"); import type { ServiceBrokerOptions} from "./service-broker"; +import { Worker } from "cluster"; declare namespace Runner { /** diff --git a/src/strategies/index.d.ts b/src/strategies/index.d.ts index 1fdc8ef64..a1d27dbb8 100644 --- a/src/strategies/index.d.ts +++ b/src/strategies/index.d.ts @@ -11,5 +11,8 @@ export { RandomStrategy as Random, CpuUsageStrategy as CpuUsage, LatencyStrategy as Latency, - ShardStrategy as Shard + ShardStrategy as Shard, }; + +export declare function resolve(opts: Record|string): BaseStrategy; +export declare function register(name: string, value: BaseStrategy): void;