import mongoose from 'mongoose' import services from '../services' import models from '../models' import BaseService = require('../services/core') declare type EnvObject = { /** 环境名称 */ name: string /** Pm2启动时cluster模式下的instanceNum */ instanceId: number /** 是否为生产环境 */ isProd: boolean /** 是否启用ECC验证 */ eccEnabled: boolean /** 服务类型 */ server: string /** 服务版本号 */ version: string /** 启动模式 */ launchMode: string /** 在InternalRPC中自动注册的namespace */ rpcNamespace: string /** 进程类型 */ processType: string /** 进程Key */ processKey: string /** 进程前缀 */ processPrefix: string /** 进程启动模式 */ mode: 'app' | 'task' /** 进程启动参数 */ param?: string /** 进程启动时指定的任务名 */ task?: string /** 进程需要负责的任务内容,以,号分割 */ jobs?: string /** 启动进程时若指定用最新版本,则使用这个path */ latestNodePath?: string /** 进程脚本文件名,用于启动新进程 */ script: string /** 主机HOST */ host: string /** 默认Mongo */ defaultMongo: string /** 默认Redis */ defaultRedis: string /** 默认Consul地址 */ defaultConsul: string /** 内部签名Secret */ secret: string /** 设置后worker将自动启动, 默认true */ autoStart: boolean } declare class JadepoolSingleton { public env: EnvObject /** * 全局配置 */ public config: {} /** * 配置服务 */ public configSrv: services.ConfigService /** * 服务发现 */ public consulSrv: services.ConsulService /** * 活动服务 */ public activitySrv: services.ActivityService /** * 自动注册的服务 */ public autoRegisterServices: string[] /** * 注册服务 * @param serviceClass * @param opts */ registerService(name: 'express', opts: services.ExpressOptions): Promise; registerService(name: 'koa', opts: services.KoaOptions): Promise; registerService(name: 'activity', opts: any): Promise; registerService(name: 'error.code', opts: services.LocaleCodeOptions): Promise; registerService(name: 'script', opts: services.ScriptOptions): Promise; registerService(name: 'jsonrpc.server', opts: services.JSONRPCServerOptions): Promise; registerService(name: 'jsonrpc.client', opts: services.JSONRPCOptions): Promise; registerService(name: 'jsonrpc.internal', opts: services.InternalRPCOptions): Promise; registerService(name: 'socket.io', opts: services.SocketIOOptions): Promise; registerService(name: 'socket.io.worker', opts: services.SocketIOWorkerOptions): Promise; registerService(name: 'pm2.process', opts: any): Promise; registerService(name: 'child.process', opts: any): Promise; registerService(name: 'async.plan', opts: services.AsyncPlanOptions): Promise; registerService(name: 'config', opts: services.ConfigOptions): Promise; registerService(name: 'consul', opts: services.ConsulOptions): Promise; registerService(name: 'consul.kv.monitor', opts: services.ConsulKVMonitorOptions): Promise; registerService(name: 'job.queue', opts: services.JobQueueOptions): Promise; registerService(name: 'msg.queue', opts: any): Promise; registerService(name: 'stat', opts: any): Promise; /** * 确保服务已注册 * @param serviceClass * @param opts */ ensureService(name: 'express', opts: services.ExpressOptions): Promise; ensureService(name: 'koa', opts: services.KoaOptions): Promise; ensureService(name: 'activity', opts: any): Promise; ensureService(name: 'error.code', opts: services.LocaleCodeOptions): Promise; ensureService(name: 'script', opts: services.ScriptOptions): Promise; ensureService(name: 'jsonrpc.server', opts: services.JSONRPCServerOptions): Promise; ensureService(name: 'jsonrpc.client', opts: services.JSONRPCOptions): Promise; ensureService(name: 'jsonrpc.internal', opts: services.InternalRPCOptions): Promise; ensureService(name: 'socket.io', opts: services.SocketIOOptions): Promise; ensureService(name: 'socket.io.worker', opts: services.SocketIOWorkerOptions): Promise; ensureService(name: 'pm2.process', opts: any): Promise; ensureService(name: 'child.process', opts: any): Promise; ensureService(name: 'async.plan', opts: services.AsyncPlanOptions): Promise; ensureService(name: 'config', opts: services.ConfigOptions): Promise; ensureService(name: 'consul', opts: services.ConsulOptions): Promise; ensureService(name: 'consul.kv.monitor', opts: services.ConsulKVMonitorOptions): Promise; ensureService(name: 'job.queue', opts: services.JobQueueOptions): Promise; ensureService(name: 'msg.queue', opts: any): Promise; ensureService(name: 'stat', opts: any): Promise; /** * 获取服务 * @param name */ getService(name: 'express'): services.ExpressService; getService(name: 'koa'): services.KoaService; getService(name: 'activity'): services.ActivityService; getService(name: 'error.code'): services.ErrorCodeService; getService(name: 'script'): services.ScriptService; getService(name: 'jsonrpc.server'): services.JSONRpcService; getService(name: 'jsonrpc.client'): services.JSONRpcClientService; getService(name: 'jsonrpc.internal'): services.InternalRpcService; getService(name: 'socket.io'): services.SocketIOService; getService(name: 'socket.io.worker'): services.SocketIOWorkerService; getService(name: 'pm2.process'): services.Pm2Service; getService(name: 'child.process'): services.ProcessService; getService(name: 'async.plan'): services.AsyncPlanService; getService(name: 'config'): services.ConfigService; getService(name: 'consul'): services.ConsulService; getService(name: 'consul.kv.monitor'): services.ConsulKVMonitorService; getService(name: 'job.queue'): services.JobQueueService; getService(name: 'msg.queue'): services.MsgQueueService; /** * 获取模型 * @param name */ getModel(name: 'app'): mongoose.Model; getModel(name: 'asyncplan'): mongoose.Model; getModel(name: 'wallet'): mongoose.Model; getModel(name: 'wallet_template'): mongoose.Model; getModel(name: 'configdat'): mongoose.Model; getModel(name: 'activity'): mongoose.Model; getModel(name: string): mongoose.Model; /** * 获取应用信息 * @param id */ fetchAppConfig(id: string): Promise; /** * 发起async plan * @param plans 计划任务 * @param mode 运行模式 * @param source 来源 * @param sourceId 来源id * @param runAt 运行时机 * @param referPlan 引用plan */ createAsyncPlan(plans: models.OnePlan[], mode: 'series' | 'parallel', source: 'system' | 'admin' | 'application', sourceId?: string, runAt?: Date, referPlan?: models.AsyncPlanDocument): Promise /** * 进行Methods调用 */ invokeMethod(methodName: string, namespace: string | null, args: object, ...others: any): Promise; /** * 该方法是否可调用 * @param methodName 方法名 * @param namespace namespace */ invokeMethodValid(methodName: string, namespace: string | null): Promise; }