UNPKG

2.55 kBTypeScriptView Raw
1/// <reference types="request" />
2import { Request } from 'request';
3import { Docker } from 'docker-cli-js';
4import { CronJob } from 'cron';
5import { metrics } from '@nodeswork/utils';
6import { LocalStorage } from './utils';
7import { nam } from './def';
8export interface AuthOptions {
9 email: string;
10 password: string;
11 deviceName: string;
12}
13export interface AppletManagerOptions {
14 appPath: string;
15 nodesworkServer: string;
16 port: number;
17 debug?: boolean;
18 dev?: boolean;
19 pid?: number;
20 token?: string;
21}
22export declare class AppletManager implements nam.INAM {
23 private options;
24 ls: LocalStorage;
25 docker: Docker;
26 network: Network;
27 containerProxy: ContainerProxy;
28 cronJobs: WorkerCronJob[];
29 private serverApi;
30 constructor(options: AppletManagerOptions);
31 authenticated(): boolean;
32 /**
33 * Authenticate the container by email and password.
34 *
35 * @throws UNAUTHENTICATED_ERROR
36 */
37 authenticate(options: AuthOptions): Promise<void>;
38 isStarted(): boolean;
39 /**
40 * Start the container.
41 *
42 * @throws UNAUTHENTICATED_ERROR
43 */
44 startServer(): Promise<void>;
45 /**
46 * Stop the container.
47 *
48 * @throws UNAUTHENTICATED_ERROR
49 */
50 stopServer(): Promise<void>;
51 install(options: nam.AppletImage): Promise<void>;
52 images(): Promise<nam.AppletImage[]>;
53 run(options: nam.AppletRunOptions): Promise<void>;
54 kill(options: nam.RouteOptions): Promise<void>;
55 ps(): Promise<nam.AppletStatus[]>;
56 refreshWorkerCrons(): Promise<void>;
57 executeCronJob(job: WorkerCronJob): Promise<any>;
58 updateExecutionMetrics(executionId: string, options: metrics.UpdateMetricsDataOptions<any>): Promise<Request>;
59 work(options: nam.WorkOptions): Promise<any>;
60 request<T>(options: nam.RequestOptions): Promise<nam.RequestResponse | T>;
61 operateAccount(options: nam.AccountOperateOptions): Promise<any>;
62 route(options: nam.RouteOptions): Promise<nam.Route>;
63 updateDevice(): Promise<void>;
64 checkEnvironment(): Promise<void>;
65 private ensureMongo(options);
66 private name(options);
67 private installContainerProxy();
68}
69export interface Network {
70 subnet: string;
71 gateway: string;
72 containers: object[];
73}
74export interface ContainerProxy {
75 version: string;
76 latestVersion: string;
77}
78export interface WorkerCronJob {
79 jobUUID: string;
80 userApplet: string;
81 appletId: string;
82 image: nam.AppletImage;
83 worker: nam.Worker;
84 schedule: string;
85 cronJob?: CronJob;
86}