// Type definitions for Consul v0.40.0 // Project: https://github.com/silas/node-consul // Definitions by: Ilya Mochalov // Vadym Vakhovskiy // Radoslav Kirilov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped /// import { IncomingMessage as HttpIncomingMessage } from "http"; declare namespace Consul { interface CommonOptions { consistent?: boolean | undefined; dc?: string | undefined; stale?: boolean | undefined; token?: string | undefined; wait?: string | undefined; wan?: boolean | undefined; ctx?: NodeJS.EventEmitter | undefined; timeout?: number | undefined; } interface Response extends HttpIncomingMessage { body?: Object | string | Buffer | undefined; } interface Callback { (err?: Error, data?: TData, res?: Response): any; } namespace Acl { interface CreateOptions extends CommonOptions { name?: string | undefined; type?: string | undefined; rules?: string | undefined; } interface UpdateOptions extends CommonOptions { id: string; name?: string | undefined; type?: string | undefined; rules?: string | undefined; } interface DestroyOptions extends CommonOptions { id: string; } interface InfoOptions extends CommonOptions { id: string; } interface GetOptions extends InfoOptions { } interface CloneOptions extends CommonOptions { id: string; } interface ListOptions extends CommonOptions { } } interface Acl { consul: Consul; /** * Creates a new token with policy */ create: { (opts: Acl.CreateOptions, callback: Callback): void; (callback: Callback): void; (opts?: Acl.CreateOptions): Promise; }; /** * Update the policy of a token */ update: { (opts: Acl.UpdateOptions, callback: Callback): void; (opts: Acl.UpdateOptions): Promise; } /** * Destroys a given token */ destroy: { (id: string, callback: Callback): void; (opts: Acl.DestroyOptions, callback: Callback): void; (id: string): Promise; (opts: Acl.DestroyOptions): Promise; }; /** * Queries the policy of a given token */ info: { (id: string, callback: Callback): void; (opts: Acl.InfoOptions, callback: Callback): void; (id: string): Promise; (opts: Acl.InfoOptions): Promise; }; get: { (id: string, callback: Callback): void; (opts: Acl.GetOptions, callback: Callback): void; (id: string): Promise; (opts: Acl.GetOptions): Promise; }; /** * Creates a new token by cloning an existing token */ clone: { (id: string, callback: Callback): void; (opts: Acl.CloneOptions, callback: Callback): void; (id: string): Promise; (opts: Acl.CloneOptions): Promise; }; /** * Lists all the active tokens */ list: { (opts: Acl.ListOptions, callback: Callback): void; (callback: Callback): void; (opts?: Acl.ListOptions): Promise; }; } interface AclStatic { new (consul: Consul): Acl; } namespace Agent { namespace Check { interface ListOptions extends CommonOptions { } interface RegisterOptions extends CommonOptions { name: string; id?: string | undefined; serviceid?: string | undefined; http?: string | undefined; script?: string | undefined; interval?: string | undefined; ttl?: string | undefined; notes?: string | undefined; status?: string | undefined; } interface DeregisterOptions extends CommonOptions { id: string; } interface PassOptions extends CommonOptions { id: string; note?: string | undefined; } interface WarnOptions extends CommonOptions { id: string; note?: string | undefined; } interface FailOptions extends CommonOptions { id: string; note?: string | undefined; } } interface Check { consul: Consul; /** * Returns the checks the local agent is managing */ list: { (opts: Check.ListOptions, callback: Callback): void; (callback: Callback): void; (opts?: Check.ListOptions): Promise; }; /** * Registers a new local check */ register: { (opts: Check.RegisterOptions, callback: Callback): void; (opts: Check.RegisterOptions): Promise; }; /** * Deregister a local check */ deregister: { (id: string, callback: Callback): void; (opts: Check.DeregisterOptions, callback: Callback): void; (id: string): Promise; (opts: Check.DeregisterOptions): Promise; }; /** * Mark a local test as passing */ pass: { (id: string, callback: Callback): void; (opts: Check.PassOptions, callback: Callback): void; (id: string): Promise; (opts: Check.PassOptions): Promise; }; /** * Mark a local test as warning */ warn: { (id: string, callback: Callback): void; (opts: Check.WarnOptions, callback: Callback): void; (id: string): Promise; (opts: Check.WarnOptions): Promise; }; /** * Mark a local test as critical */ fail: { (id: string, callback: Callback): void; (opts: Check.FailOptions, callback: Callback): void; (id: string): Promise; (opts: Check.FailOptions): Promise; }; } interface CheckStatic { new (consul: Consul): Check; } namespace Service { interface RegisterCheck { http?: string | undefined; script?: string | undefined; interval?: string | undefined; ttl?: string | undefined; notes?: string | undefined; status?: string | undefined; } interface ListOptions extends CommonOptions { } interface RegisterOptions extends CommonOptions { name: string; id?: string | undefined; tags?: string[] | undefined; address?: string | undefined; port?: number | undefined; meta?: Record | undefined; check?: RegisterCheck | undefined; checks?: RegisterCheck[] | undefined; } interface DeregisterOptions extends CommonOptions { id: string; } interface MaintenanceOptions extends CommonOptions { id: string; enable: boolean; reason?: string | undefined; } } interface Service { consul: Consul; /** * Returns the services local agent is managing */ list: { (opts: Service.ListOptions, callback: Callback): void; (callback: Callback): void; (opts?: Service.ListOptions): Promise; }; /** * Registers a new local service */ register: { (name: string, callback: Callback): void; (opts: Service.RegisterOptions, callback: Callback): void; (name: string): Promise; (opts: Service.RegisterOptions): Promise; }; /** * Deregister a local service */ deregister: { (id: string, callback: Callback): void; (opts: Service.DeregisterOptions, callback: Callback): void; (id: string): Promise; (opts: Service.DeregisterOptions): Promise; }; /** * Manages node maintenance mode */ maintenance: { (opts: Service.MaintenanceOptions, callback: Callback): void; (opts: Service.MaintenanceOptions): Promise; }; } interface ServiceStatic { new (consul: Consul): Service; } interface ChecksOptions extends Check.ListOptions { } interface ServicesOptions extends Service.ListOptions { } interface MembersOptions extends CommonOptions { wan?: boolean | undefined; } interface SelfOptions extends CommonOptions { } interface MaintenanceOptions extends CommonOptions { enable: boolean; reason?: string | undefined; } interface JoinOptions extends CommonOptions { address: string; wan?: boolean | undefined; } interface ForceLeaveOptions extends CommonOptions { node: string; } } interface Agent { consul: Consul; check: Agent.Check; service: Agent.Service; /** * Returns the checks the local agent is managing */ checks: { (opts: Agent.ChecksOptions, callback: Callback): void; (callback: Callback): void; (opts?: Agent.ChecksOptions): Promise; }; /** * Returns the services local agent is managing */ services: { (opts: Agent.ServicesOptions, callback: Callback): void; (callback: Callback): void; (opts?: Agent.ServicesOptions): Promise; }; /** * Returns the members as seen by the local consul agent */ members: { (opts: Agent.MembersOptions, callback: Callback): void; (callback: Callback): void; (opts?: Agent.MembersOptions): Promise; }; /** * Returns the local node configuration */ self: { (opts: Agent.SelfOptions, callback: Callback): void; (callback: Callback): void; (opts?: Agent.SelfOptions): Promise; }; /** * Manages node maintenance mode */ maintenance: { (enable: boolean, callback: Callback): void; (opts: Agent.MaintenanceOptions, callback: Callback): void; (enable: boolean): Promise; (opts: Agent.MaintenanceOptions): Promise; }; /** * Trigger local agent to join a node */ join: { (address: string, callback: Callback): void; (opts: Agent.JoinOptions, callback: Callback): void; (address: string): Promise; (opts: Agent.JoinOptions): Promise; }; /** * Force remove node */ forceLeave: { (node: string, callback: Callback): void; (opts: Agent.ForceLeaveOptions, callback: Callback): void; (node: string): Promise; (opts: Agent.ForceLeaveOptions): Promise; }; } interface AgentStatic { new (consul: Consul): Agent; Check: Agent.CheckStatic; Service: Agent.ServiceStatic; } namespace Catalog { namespace Node { interface ListOptions extends CommonOptions { dc?: string | undefined; } interface ServicesOptions extends CommonOptions { node: string; } } interface Node { consul: Consul; /** * Lists nodes in a given DC */ list: { (dc: string, callback: Callback): void; (opts: Node.ListOptions, callback: Callback): void; (callback: Callback): void; (dc?: string): Promise; (opts?: Node.ListOptions): Promise; }; /** * Lists the services provided by a node */ services: { (node: string, callback: Callback): void; (opts: Node.ServicesOptions, callback: Callback): void; (node: string): Promise; (opts: Node.ServicesOptions): Promise; }; } interface NodeStatic { new (consul: Consul): Node; } namespace Service { interface ListOptions extends CommonOptions { dc?: string | undefined; } interface NodesOptions extends CommonOptions { service: string; dc?: string | undefined; tag?: string | undefined; } } interface Service { consul: Consul; /** * Lists services in a given DC */ list: { (dc: string, callback: Callback): void; (opts: Service.ListOptions, callback: Callback): void; (callback: Callback): void; (dc?: string): Promise; (opts?: Service.ListOptions): Promise; }; /** * Lists the nodes in a given service */ nodes: { (service: string, callback: Callback): void; (opts: Service.NodesOptions, callback: Callback): void; (service: string): Promise; (opts: Service.NodesOptions): Promise; }; } interface ServiceStatic { new (consul: Consul): Service; } interface DatacentersOptions extends CommonOptions { } interface NodesOptions extends Node.ListOptions { } interface ServicesOptions extends Service.ListOptions { } } interface Catalog { consul: Consul; node: Catalog.Node; service: Catalog.Service; /** * Lists known datacenters */ datacenters: { (opts: Catalog.DatacentersOptions, callback: Callback): void; (callback: Callback): void; (opts?: Catalog.DatacentersOptions): Promise; }; /** * Lists nodes in a given DC */ nodes: { (dc: string, callback: Callback): void; (opts: Catalog.NodesOptions, callback: Callback): void; (callback: Callback): void; (dc?: string): Promise; (opts?: Catalog.NodesOptions): Promise; }; /** * Lists services in a given DC */ services: { (dc: string, callback: Callback): void; (opts: Catalog.ServicesOptions, callback: Callback): void; (callback: Callback): void; (dc?: string): Promise; (opts?: Catalog.ServicesOptions): Promise; }; } interface CatalogStatic { new (consul: Consul): Catalog; Node: Catalog.NodeStatic; Service: Catalog.ServiceStatic; } namespace Event { interface FireOptions extends CommonOptions { name: string; payload: string | Buffer; node?: string | undefined; service?: string | undefined; tag?: string | undefined; } interface ListOptions extends CommonOptions { name?: string | undefined; } } interface Event { consul: Consul; /** * Fires a new user event */ fire: { (name: string, payload: string | Buffer, callback: Callback): void; (name: string, callback: Callback): void; (opts: Event.FireOptions, callback: Callback): void; (name: string, payload: string | Buffer): Promise; (name: string): Promise; (opts: Event.FireOptions): Promise; }; /** * Lists the most recent events an agent has seen */ list: { (name: string, callback: Callback): void; (opts: Event.ListOptions, callback: Callback): void; (callback: Callback): void; (name?: string): Promise; (opts?: Event.ListOptions): Promise; }; } interface EventStatic { new (consul: Consul): Event; } namespace Health { interface NodeOptions extends CommonOptions { node: string; dc?: string | undefined; } interface ChecksOptions extends CommonOptions { service: string; dc?: string | undefined; } interface ServiceOptions extends CommonOptions { service: string; dc?: string | undefined; tag?: string | undefined; passing?: boolean | undefined; near?: string | undefined; } interface StateOptions extends CommonOptions { state: string; dc?: string | undefined; } } interface Health { consul: Consul; /** * Returns the health info of a node */ node: { (node: string, callback: Callback): void; (opts: Health.NodeOptions, callback: Callback): void; (node: string): Promise; (opts: Health.NodeOptions): Promise; }; /** * Returns the checks of a service */ checks: { (service: string, callback: Callback): void; (opts: Health.ChecksOptions, callback: Callback): void; (service: string): Promise; (opts: Health.ChecksOptions): Promise; }; /** * Returns the nodes and health info of a service */ service: { (service: string, callback: Callback): void; (opts: Health.ServiceOptions, callback: Callback): void; (service: string): Promise; (opts: Health.ServiceOptions): Promise; }; /** * Returns the checks in a given state */ state: { (state: string, callback: Callback): void; (opts: Health.StateOptions, callback: Callback): void; (state: string): Promise; (opts: Health.StateOptions): Promise; }; } interface HealthStatic { new (consul: Consul): Health; } namespace Kv { interface GetOptions extends CommonOptions { key: string; dc?: string | undefined; recurse?: boolean | undefined; index?: string | undefined; wait?: string | undefined; raw?: boolean | undefined; buffer?: boolean | undefined; } interface KeysOptions extends CommonOptions { key: string; dc?: string | undefined; separator?: string | undefined; } interface SetOptions extends CommonOptions { key: string; value: string | Buffer; dc?: string | undefined; flags?: number | undefined; cas?: string | undefined; acquire?: string | undefined; release?: string | undefined; } interface DelOptions extends CommonOptions { key: string; dc?: string | undefined; recurse?: boolean | undefined; cas?: string | undefined; } interface DeleteOptions extends DelOptions { } } interface Kv { consul: Consul; /** * Get */ get: { (key: string, callback: Callback): void; (opts: Kv.GetOptions, callback: Callback): void; (key: string): Promise; (opts: Kv.GetOptions): Promise; }; /** * Keys */ keys: { (key: string, callback: Callback): void; (opts: Kv.KeysOptions, callback: Callback): void; (callback: Callback): void; (key?: string): Promise; (opts?: Kv.KeysOptions): Promise; }; /** * Set */ set: { (key: string, value: string | Buffer, opts: Kv.SetOptions, callback: Callback): void; (key: string, value: string | Buffer, callback: Callback): void; (opts: Kv.SetOptions, callback: Callback): void; (key: string, value: string | Buffer, opts: Kv.SetOptions): Promise; (key: string, value: string | Buffer): Promise; (opts: Kv.SetOptions): Promise; }; /** * Delete */ del: { (key: string, callback: Callback): void; (opts: Kv.DelOptions, callback: Callback): void; (key: string): Promise; (opts: Kv.DelOptions): Promise; }; delete: { (key: string, callback: Callback): void; (opts: Kv.DeleteOptions, callback: Callback): void; (key: string): Promise; (opts: Kv.DeleteOptions): Promise; }; } interface KvStatic { new (consul: Consul): Kv; } namespace Lock { interface Options { key: string; session?: Object | string | undefined; value?: string | Buffer | undefined; lockwaittime?: string | undefined; lockretrytime?: string | undefined; } } interface Lock extends NodeJS.EventEmitter { consul: Consul; /** * Acquire lock */ acquire(): void; /** * Release lock */ release(): void; } interface LockStatic { new (consul: Consul, opts: Lock.Options): Lock; } namespace Session { interface CreateOptions extends CommonOptions { dc?: string | undefined; lockdelay?: string | undefined; name?: string | undefined; node?: string | undefined; checks?: string[] | undefined; behavior?: string | undefined; ttl?: string | undefined; } interface DestroyOptions extends CommonOptions { id: string; dc?: string | undefined; } interface InfoOptions extends CommonOptions { id: string; dc?: string | undefined; } interface GetOptions extends InfoOptions { } interface NodeOptions extends CommonOptions { node: string; dc?: string | undefined; } interface ListOptions extends CommonOptions { dc?: string | undefined; } interface RenewOptions extends CommonOptions { id: string; dc?: string | undefined; } } interface Session { consul: Consul; /** * Creates a new session */ create: { (opts: Session.CreateOptions, callback: Callback): void; (callback: Callback): void; (opts?: Session.CreateOptions): Promise; }; /** * Destroys a given session */ destroy: { (id: string, callback: Callback): void; (opts: Session.DestroyOptions, callback: Callback): void; (id: string): Promise; (opts: Session.DestroyOptions): Promise; }; /** * Queries a given session */ info: { (id: string, callback: Callback): void; (opts: Session.InfoOptions, callback: Callback): void; (id: string): Promise; (opts: Session.InfoOptions): Promise; }; get: { (id: string, callback: Callback): void; (opts: Session.GetOptions, callback: Callback): void; (id: string): Promise; (opts: Session.GetOptions): Promise; }; /** * Lists sessions belonging to a node */ node: { (node: string, callback: Callback): void; (opts: Session.NodeOptions, callback: Callback): void; (node: string): Promise; (opts: Session.NodeOptions): Promise; }; /** * Lists all the active sessions */ list: { (opts: Session.ListOptions, callback: Callback): void; (callback: Callback): void; (opts?: Session.ListOptions): Promise; }; /** * Renews a TTL-based session */ renew: { (id: string, callback: Callback): void; (opts: Session.RenewOptions, callback: Callback): void; (id: string): Promise; (opts: Session.RenewOptions): Promise; }; } interface SessionStatic { new (consul: Consul): Session; } namespace Status { interface LeaderOptions extends CommonOptions { } interface PeersOptions extends CommonOptions { } } interface Status { consul: Consul; /** * Returns the current Raft leader. */ leader: { (opts: Status.LeaderOptions, callback: Callback): void; (callback: Callback): void; (opts?: Status.LeaderOptions): Promise; }; /** * Returns the current Raft peer set */ peers: { (opts: Status.PeersOptions, callback: Callback): void; (callback: Callback): void; (opts?: Status.PeersOptions): Promise; }; } interface StatusStatic { new (consul: Consul): Status; } namespace Watch { interface WatchOptions { key?: string | undefined; } interface Options { method: Function; options?: CommonOptions & WatchOptions | undefined; backoffFactor?: number | undefined; backoffMax?: number | undefined; maxAttempts?: number | undefined; } } interface Watch extends NodeJS.EventEmitter { consul: Consul; /** * Is running */ isRunning(): boolean; /** * Update time */ updateTime(): number; /** * End watch */ end(): void; } interface WatchStatic { new (consul: Consul, opts: Watch.Options): Watch; } interface ConsulOptions { host?: string | undefined; port?: string | undefined; secure?: boolean | undefined; ca?: string[] | undefined; defaults?: CommonOptions | undefined; promisify?: boolean | Function | undefined; } interface Consul { acl: Acl; agent: Agent; catalog: Catalog; event: Event; health: Health; kv: Kv; session: Session; status: Status; /** * Lock helper. */ lock(opts: Lock.Options): Lock; /** * Watch helper. */ watch(opts: Watch.Options): Watch; } interface ConsulStatic { (opts?: ConsulOptions): Consul; new (opts?: ConsulOptions): Consul; Acl: AclStatic; Agent: AgentStatic; Catalog: CatalogStatic; Event: EventStatic; Health: HealthStatic; Kv: KvStatic; Lock: LockStatic; Session: SessionStatic; Status: StatusStatic; Watch: WatchStatic; } } declare let Consul: Consul.ConsulStatic; export = Consul;