verteilen-core 1.3.1 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/interface/enum.d.ts +6 -7
- package/dist/interface/enum.js +7 -9
- package/dist/server/io.js +5 -2
- package/dist/server/observer.d.ts +33 -0
- package/dist/server/observer.js +69 -0
- package/dist/server/server.d.ts +2 -1
- package/dist/server.d.ts +1 -0
- package/dist/server.js +1 -0
- package/package.json +1 -1
- package/src/interface/enum.ts +6 -8
- package/src/server/io.ts +8 -4
- package/src/server/observer.ts +76 -0
- package/src/server/server.ts +2 -1
- package/src/server.ts +1 -0
package/dist/interface/enum.d.ts
CHANGED
|
@@ -45,7 +45,12 @@ export declare enum ResourceType {
|
|
|
45
45
|
export declare enum FrontendUpdate {
|
|
46
46
|
ALL = 1023,
|
|
47
47
|
PROJECT = 1,
|
|
48
|
-
|
|
48
|
+
TASK = 2,
|
|
49
|
+
JOB = 4,
|
|
50
|
+
DATABASE = 8,
|
|
51
|
+
NODE = 16,
|
|
52
|
+
SERVICE = 32,
|
|
53
|
+
LOG = 64
|
|
49
54
|
}
|
|
50
55
|
export declare enum JobCategory {
|
|
51
56
|
Condition = 0,
|
|
@@ -92,12 +97,6 @@ export declare enum ExecuteState {
|
|
|
92
97
|
ERROR = 3,
|
|
93
98
|
SKIP = 4
|
|
94
99
|
}
|
|
95
|
-
export declare enum RenderUpdateType {
|
|
96
|
-
All = 127,
|
|
97
|
-
Project = 1,
|
|
98
|
-
Node = 2,
|
|
99
|
-
Database = 4
|
|
100
|
-
}
|
|
101
100
|
export declare enum RecordType {
|
|
102
101
|
PROJECT = 0,
|
|
103
102
|
TASK = 1,
|
package/dist/interface/enum.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DatabaseTemplateText = exports.ProjectTemplateText = exports.JobType2Text = exports.JobTypeText = exports.JobResultText = exports.ConnectionText = exports.JobCategoryText = exports.ExecuteStateText = exports.DataTypeText = exports.ServiceMode = exports.JavascriptLib = exports.RecordType = exports.
|
|
3
|
+
exports.DatabaseTemplateText = exports.ProjectTemplateText = exports.JobType2Text = exports.JobTypeText = exports.JobResultText = exports.ConnectionText = exports.JobCategoryText = exports.ExecuteStateText = exports.DataTypeText = exports.ServiceMode = exports.JavascriptLib = exports.RecordType = exports.ExecuteState = exports.DatabaseTemplate = exports.ProjectTemplate = exports.JobType2 = exports.JobType = exports.ConditionResult = exports.JobCategory = exports.FrontendUpdate = exports.ResourceType = exports.DataTypeBase = exports.BackendType = exports.DataType = exports.SocketState = exports.TaskLogicType = void 0;
|
|
4
4
|
var TaskLogicType;
|
|
5
5
|
(function (TaskLogicType) {
|
|
6
6
|
TaskLogicType[TaskLogicType["GROUP"] = 0] = "GROUP";
|
|
@@ -55,7 +55,12 @@ var FrontendUpdate;
|
|
|
55
55
|
(function (FrontendUpdate) {
|
|
56
56
|
FrontendUpdate[FrontendUpdate["ALL"] = 1023] = "ALL";
|
|
57
57
|
FrontendUpdate[FrontendUpdate["PROJECT"] = 1] = "PROJECT";
|
|
58
|
-
FrontendUpdate[FrontendUpdate["
|
|
58
|
+
FrontendUpdate[FrontendUpdate["TASK"] = 2] = "TASK";
|
|
59
|
+
FrontendUpdate[FrontendUpdate["JOB"] = 4] = "JOB";
|
|
60
|
+
FrontendUpdate[FrontendUpdate["DATABASE"] = 8] = "DATABASE";
|
|
61
|
+
FrontendUpdate[FrontendUpdate["NODE"] = 16] = "NODE";
|
|
62
|
+
FrontendUpdate[FrontendUpdate["SERVICE"] = 32] = "SERVICE";
|
|
63
|
+
FrontendUpdate[FrontendUpdate["LOG"] = 64] = "LOG";
|
|
59
64
|
})(FrontendUpdate || (exports.FrontendUpdate = FrontendUpdate = {}));
|
|
60
65
|
var JobCategory;
|
|
61
66
|
(function (JobCategory) {
|
|
@@ -109,13 +114,6 @@ var ExecuteState;
|
|
|
109
114
|
ExecuteState[ExecuteState["ERROR"] = 3] = "ERROR";
|
|
110
115
|
ExecuteState[ExecuteState["SKIP"] = 4] = "SKIP";
|
|
111
116
|
})(ExecuteState || (exports.ExecuteState = ExecuteState = {}));
|
|
112
|
-
var RenderUpdateType;
|
|
113
|
-
(function (RenderUpdateType) {
|
|
114
|
-
RenderUpdateType[RenderUpdateType["All"] = 127] = "All";
|
|
115
|
-
RenderUpdateType[RenderUpdateType["Project"] = 1] = "Project";
|
|
116
|
-
RenderUpdateType[RenderUpdateType["Node"] = 2] = "Node";
|
|
117
|
-
RenderUpdateType[RenderUpdateType["Database"] = 4] = "Database";
|
|
118
|
-
})(RenderUpdateType || (exports.RenderUpdateType = RenderUpdateType = {}));
|
|
119
117
|
var RecordType;
|
|
120
118
|
(function (RecordType) {
|
|
121
119
|
RecordType[RecordType["PROJECT"] = 0] = "PROJECT";
|
package/dist/server/io.js
CHANGED
|
@@ -110,8 +110,8 @@ const _CreateRecordIOLoader = (loader, memory, type, folder, ext = ".json") => {
|
|
|
110
110
|
arr[b] = JSON.parse(data);
|
|
111
111
|
},
|
|
112
112
|
load: async (name, cache) => {
|
|
113
|
+
const arr = get_array(type);
|
|
113
114
|
if (cache) {
|
|
114
|
-
const arr = get_array(type);
|
|
115
115
|
const b = arr.findIndex(x => x.uuid == name);
|
|
116
116
|
if (b != -1)
|
|
117
117
|
return arr[b];
|
|
@@ -120,7 +120,10 @@ const _CreateRecordIOLoader = (loader, memory, type, folder, ext = ".json") => {
|
|
|
120
120
|
if (!loader.exists(root))
|
|
121
121
|
await loader.mkdir(root);
|
|
122
122
|
const file = loader.join(root, name + ext);
|
|
123
|
-
|
|
123
|
+
const a = await loader.read_string(file);
|
|
124
|
+
if (cache)
|
|
125
|
+
arr.push(JSON.parse(a));
|
|
126
|
+
return a;
|
|
124
127
|
},
|
|
125
128
|
rename: async (name, newname) => {
|
|
126
129
|
const root = loader.join(loader.root, folder);
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { RecordType } from "../interface";
|
|
2
|
+
import { RecordIOLoader, RecordLoader } from "./io";
|
|
3
|
+
export interface EventObserverAction {
|
|
4
|
+
loaded: (type: RecordType) => void;
|
|
5
|
+
changed: (type: RecordType) => void;
|
|
6
|
+
}
|
|
7
|
+
export declare class EventObserver implements RecordLoader {
|
|
8
|
+
loader: RecordLoader;
|
|
9
|
+
action: EventObserverAction;
|
|
10
|
+
constructor(loader: RecordLoader, action: EventObserverAction);
|
|
11
|
+
get project(): RecordIOLoader;
|
|
12
|
+
get task(): RecordIOLoader;
|
|
13
|
+
get job(): RecordIOLoader;
|
|
14
|
+
get database(): RecordIOLoader;
|
|
15
|
+
get node(): RecordIOLoader;
|
|
16
|
+
get log(): RecordIOLoader;
|
|
17
|
+
get lib(): RecordIOLoader;
|
|
18
|
+
get user(): RecordIOLoader;
|
|
19
|
+
}
|
|
20
|
+
export declare class ProxyRecordIOLoader implements RecordIOLoader {
|
|
21
|
+
loader: RecordIOLoader;
|
|
22
|
+
type: RecordType;
|
|
23
|
+
action: EventObserverAction;
|
|
24
|
+
constructor(loader: RecordIOLoader, type: RecordType, action: EventObserverAction);
|
|
25
|
+
load_all: () => Promise<Array<string>>;
|
|
26
|
+
delete_all: () => Promise<void>;
|
|
27
|
+
list_all: () => Promise<Array<string>>;
|
|
28
|
+
save: (name: string, data: string) => Promise<void>;
|
|
29
|
+
load: (name: string, cache: boolean) => Promise<string>;
|
|
30
|
+
rename: (name: string, newname: string) => Promise<void>;
|
|
31
|
+
delete: (name: string) => Promise<void>;
|
|
32
|
+
}
|
|
33
|
+
export declare const CreateEventObserver: (loader: RecordLoader, event: EventObserverAction) => EventObserver;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CreateEventObserver = exports.ProxyRecordIOLoader = exports.EventObserver = void 0;
|
|
4
|
+
const interface_1 = require("../interface");
|
|
5
|
+
class EventObserver {
|
|
6
|
+
loader;
|
|
7
|
+
action;
|
|
8
|
+
constructor(loader, action) {
|
|
9
|
+
this.loader = loader;
|
|
10
|
+
this.action = action;
|
|
11
|
+
this.loader.project = new ProxyRecordIOLoader(loader.project, interface_1.RecordType.PROJECT, action);
|
|
12
|
+
this.loader.task = new ProxyRecordIOLoader(loader.task, interface_1.RecordType.TASK, action);
|
|
13
|
+
this.loader.job = new ProxyRecordIOLoader(loader.job, interface_1.RecordType.JOB, action);
|
|
14
|
+
this.loader.database = new ProxyRecordIOLoader(loader.database, interface_1.RecordType.DATABASE, action);
|
|
15
|
+
this.loader.node = new ProxyRecordIOLoader(loader.node, interface_1.RecordType.NODE, action);
|
|
16
|
+
this.loader.log = new ProxyRecordIOLoader(loader.log, interface_1.RecordType.LOG, action);
|
|
17
|
+
this.loader.lib = new ProxyRecordIOLoader(loader.lib, interface_1.RecordType.LIB, action);
|
|
18
|
+
this.loader.user = new ProxyRecordIOLoader(loader.user, interface_1.RecordType.USER, action);
|
|
19
|
+
}
|
|
20
|
+
get project() { return this.loader.project; }
|
|
21
|
+
get task() { return this.loader.task; }
|
|
22
|
+
get job() { return this.loader.job; }
|
|
23
|
+
get database() { return this.loader.database; }
|
|
24
|
+
get node() { return this.loader.node; }
|
|
25
|
+
get log() { return this.loader.log; }
|
|
26
|
+
get lib() { return this.loader.lib; }
|
|
27
|
+
get user() { return this.loader.user; }
|
|
28
|
+
}
|
|
29
|
+
exports.EventObserver = EventObserver;
|
|
30
|
+
class ProxyRecordIOLoader {
|
|
31
|
+
loader;
|
|
32
|
+
type;
|
|
33
|
+
action;
|
|
34
|
+
constructor(loader, type, action) {
|
|
35
|
+
this.loader = loader;
|
|
36
|
+
this.type = type;
|
|
37
|
+
this.action = action;
|
|
38
|
+
}
|
|
39
|
+
load_all = () => {
|
|
40
|
+
return this.loader.load_all().then(x => {
|
|
41
|
+
this.action.loaded(this.type);
|
|
42
|
+
return x;
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
delete_all = () => {
|
|
46
|
+
return this.loader.delete_all().then(() => this.action.changed(this.type));
|
|
47
|
+
};
|
|
48
|
+
list_all = () => this.loader.list_all();
|
|
49
|
+
save = (name, data) => {
|
|
50
|
+
return this.loader.save(name, data).then(() => this.action.changed(this.type));
|
|
51
|
+
};
|
|
52
|
+
load = (name, cache) => {
|
|
53
|
+
return this.loader.load(name, cache).then(x => {
|
|
54
|
+
this.action.loaded(this.type);
|
|
55
|
+
return x;
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
rename = (name, newname) => {
|
|
59
|
+
return this.loader.rename(name, newname).then(() => this.action.changed(this.type));
|
|
60
|
+
};
|
|
61
|
+
delete = (name) => {
|
|
62
|
+
return this.loader.delete(name).then(() => this.action.changed(this.type));
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
exports.ProxyRecordIOLoader = ProxyRecordIOLoader;
|
|
66
|
+
const CreateEventObserver = (loader, event) => {
|
|
67
|
+
return new EventObserver(loader, event);
|
|
68
|
+
};
|
|
69
|
+
exports.CreateEventObserver = CreateEventObserver;
|
package/dist/server/server.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { Execute_ConsoleServerManager, PluginPageData } from "../interface";
|
|
|
2
2
|
import { ServerDetail } from "./detail";
|
|
3
3
|
import { MemoryData, RecordIOBase, RecordLoader } from "./io";
|
|
4
4
|
import { Project_Module } from "./module/project";
|
|
5
|
+
import { EventObserver } from "./observer";
|
|
5
6
|
import { PluginLoader } from "./plugin";
|
|
6
7
|
export type Caller_Electron_Send = (channel: string, ...args: any[]) => void;
|
|
7
8
|
export interface Caller_Electron {
|
|
@@ -20,7 +21,7 @@ export declare class Server {
|
|
|
20
21
|
memory: MemoryData;
|
|
21
22
|
plugin: PluginPageData;
|
|
22
23
|
io: RecordIOBase | undefined;
|
|
23
|
-
loader: RecordLoader | undefined;
|
|
24
|
+
loader: RecordLoader | EventObserver | undefined;
|
|
24
25
|
plugin_loader: PluginLoader | undefined;
|
|
25
26
|
memory_loader: RecordLoader;
|
|
26
27
|
detail: ServerDetail | undefined;
|
package/dist/server.d.ts
CHANGED
package/dist/server.js
CHANGED
|
@@ -16,6 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./server/detail"), exports);
|
|
18
18
|
__exportStar(require("./server/io"), exports);
|
|
19
|
+
__exportStar(require("./server/observer"), exports);
|
|
19
20
|
__exportStar(require("./server/plugin"), exports);
|
|
20
21
|
__exportStar(require("./server/server"), exports);
|
|
21
22
|
__exportStar(require("./server/module/project"), exports);
|
package/package.json
CHANGED
package/src/interface/enum.ts
CHANGED
|
@@ -79,7 +79,12 @@ export enum ResourceType {
|
|
|
79
79
|
export enum FrontendUpdate {
|
|
80
80
|
ALL = ~(~0 << 10),
|
|
81
81
|
PROJECT = 1 << 0,
|
|
82
|
-
|
|
82
|
+
TASK = 1 << 1,
|
|
83
|
+
JOB = 1 << 2,
|
|
84
|
+
DATABASE = 1 << 3,
|
|
85
|
+
NODE = 1 << 4,
|
|
86
|
+
SERVICE = 1 << 5,
|
|
87
|
+
LOG = 1 << 6,
|
|
83
88
|
}
|
|
84
89
|
/**
|
|
85
90
|
* **Job Category Type**
|
|
@@ -138,13 +143,6 @@ export enum DatabaseTemplate {
|
|
|
138
143
|
export enum ExecuteState {
|
|
139
144
|
NONE, RUNNING, FINISH, ERROR, SKIP
|
|
140
145
|
}
|
|
141
|
-
|
|
142
|
-
export enum RenderUpdateType {
|
|
143
|
-
All= ~(~0 << 7),
|
|
144
|
-
Project = 1 << 0,
|
|
145
|
-
Node = 1 << 1,
|
|
146
|
-
Database = 1 << 2
|
|
147
|
-
}
|
|
148
146
|
/**
|
|
149
147
|
* **Database Table Type**
|
|
150
148
|
*/
|
package/src/server/io.ts
CHANGED
|
@@ -13,7 +13,6 @@ import {
|
|
|
13
13
|
Node,
|
|
14
14
|
Task,
|
|
15
15
|
Job,
|
|
16
|
-
DataHeader,
|
|
17
16
|
} from "../interface"
|
|
18
17
|
|
|
19
18
|
export interface MemoryData {
|
|
@@ -40,7 +39,10 @@ export interface RecordIOLoader {
|
|
|
40
39
|
rename: (name:string, newname:string) => Promise<void>
|
|
41
40
|
delete: (name:string) => Promise<void>
|
|
42
41
|
}
|
|
43
|
-
|
|
42
|
+
/**
|
|
43
|
+
* **IO Loader Worker**\
|
|
44
|
+
* Fetch data from storage space, could be disk or mongoDB
|
|
45
|
+
*/
|
|
44
46
|
export interface RecordLoader {
|
|
45
47
|
project: RecordIOLoader
|
|
46
48
|
task: RecordIOLoader
|
|
@@ -190,15 +192,17 @@ export const _CreateRecordIOLoader = (loader:RecordIOBase, memory:MemoryData, ty
|
|
|
190
192
|
else arr[b] = JSON.parse(data)
|
|
191
193
|
},
|
|
192
194
|
load: async (name:string, cache: boolean):Promise<string> => {
|
|
195
|
+
const arr = get_array(type)
|
|
193
196
|
if(cache){
|
|
194
|
-
const arr = get_array(type)
|
|
195
197
|
const b = arr.findIndex(x => x.uuid == name)
|
|
196
198
|
if(b != -1) return arr[b]
|
|
197
199
|
}
|
|
198
200
|
const root = loader.join(loader.root, folder)
|
|
199
201
|
if(!loader.exists(root)) await loader.mkdir(root)
|
|
200
202
|
const file = loader.join(root, name + ext)
|
|
201
|
-
|
|
203
|
+
const a = await loader.read_string(file)
|
|
204
|
+
if(cache) arr.push(JSON.parse(a))
|
|
205
|
+
return a
|
|
202
206
|
},
|
|
203
207
|
rename: async (name:string, newname:string):Promise<void> => {
|
|
204
208
|
const root = loader.join(loader.root, folder)
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { RecordType } from "../interface";
|
|
2
|
+
import { RecordIOLoader, RecordLoader } from "./io";
|
|
3
|
+
|
|
4
|
+
export interface EventObserverAction {
|
|
5
|
+
loaded:(type:RecordType) => void
|
|
6
|
+
changed:(type:RecordType) => void
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export class EventObserver implements RecordLoader {
|
|
10
|
+
loader:RecordLoader
|
|
11
|
+
action:EventObserverAction
|
|
12
|
+
|
|
13
|
+
constructor(loader:RecordLoader, action:EventObserverAction){
|
|
14
|
+
this.loader = loader
|
|
15
|
+
this.action = action
|
|
16
|
+
this.loader.project = new ProxyRecordIOLoader(loader.project, RecordType.PROJECT, action)
|
|
17
|
+
this.loader.task = new ProxyRecordIOLoader(loader.task, RecordType.TASK, action)
|
|
18
|
+
this.loader.job = new ProxyRecordIOLoader(loader.job, RecordType.JOB, action)
|
|
19
|
+
this.loader.database = new ProxyRecordIOLoader(loader.database, RecordType.DATABASE, action)
|
|
20
|
+
this.loader.node = new ProxyRecordIOLoader(loader.node, RecordType.NODE, action)
|
|
21
|
+
this.loader.log = new ProxyRecordIOLoader(loader.log, RecordType.LOG, action)
|
|
22
|
+
this.loader.lib = new ProxyRecordIOLoader(loader.lib, RecordType.LIB, action)
|
|
23
|
+
this.loader.user = new ProxyRecordIOLoader(loader.user, RecordType.USER, action)
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
public get project() : RecordIOLoader { return this.loader.project }
|
|
27
|
+
public get task() : RecordIOLoader { return this.loader.task }
|
|
28
|
+
public get job() : RecordIOLoader { return this.loader.job }
|
|
29
|
+
public get database() : RecordIOLoader { return this.loader.database }
|
|
30
|
+
public get node() : RecordIOLoader { return this.loader.node }
|
|
31
|
+
public get log() : RecordIOLoader { return this.loader.log }
|
|
32
|
+
public get lib() : RecordIOLoader { return this.loader.lib }
|
|
33
|
+
public get user() : RecordIOLoader { return this.loader.user }
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export class ProxyRecordIOLoader implements RecordIOLoader {
|
|
37
|
+
loader:RecordIOLoader
|
|
38
|
+
type: RecordType
|
|
39
|
+
action:EventObserverAction
|
|
40
|
+
|
|
41
|
+
constructor(loader:RecordIOLoader, type: RecordType, action:EventObserverAction){
|
|
42
|
+
this.loader = loader
|
|
43
|
+
this.type = type
|
|
44
|
+
this.action = action
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
load_all = (): Promise<Array<string>> => {
|
|
48
|
+
return this.loader.load_all().then(x => {
|
|
49
|
+
this.action.loaded(this.type)
|
|
50
|
+
return x
|
|
51
|
+
})
|
|
52
|
+
}
|
|
53
|
+
delete_all = (): Promise<void> => {
|
|
54
|
+
return this.loader.delete_all().then(() => this.action.changed(this.type))
|
|
55
|
+
}
|
|
56
|
+
list_all = (): Promise<Array<string>> => this.loader.list_all()
|
|
57
|
+
save = (name: string, data: string): Promise<void> => {
|
|
58
|
+
return this.loader.save(name, data).then(() => this.action.changed(this.type))
|
|
59
|
+
}
|
|
60
|
+
load = (name: string, cache: boolean): Promise<string> => {
|
|
61
|
+
return this.loader.load(name, cache).then(x => {
|
|
62
|
+
this.action.loaded(this.type)
|
|
63
|
+
return x
|
|
64
|
+
})
|
|
65
|
+
}
|
|
66
|
+
rename = (name: string, newname: string): Promise<void> => {
|
|
67
|
+
return this.loader.rename(name, newname).then(() => this.action.changed(this.type))
|
|
68
|
+
}
|
|
69
|
+
delete = (name: string): Promise<void> => {
|
|
70
|
+
return this.loader.delete(name).then(() => this.action.changed(this.type))
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export const CreateEventObserver = (loader:RecordLoader, event:EventObserverAction):EventObserver => {
|
|
75
|
+
return new EventObserver(loader, event)
|
|
76
|
+
}
|
package/src/server/server.ts
CHANGED
|
@@ -7,6 +7,7 @@ import { Execute_ConsoleServerManager, Header, PluginPageData } from "../interfa
|
|
|
7
7
|
import { ServerDetail } from "./detail";
|
|
8
8
|
import { CreateRecordMemoryLoader, MemoryData, RecordIOBase, RecordLoader } from "./io";
|
|
9
9
|
import { Project_Module } from "./module/project";
|
|
10
|
+
import { EventObserver } from "./observer";
|
|
10
11
|
import { PluginLoader } from "./plugin";
|
|
11
12
|
|
|
12
13
|
export type Caller_Electron_Send = (channel: string, ...args: any[]) => void
|
|
@@ -53,7 +54,7 @@ export class Server {
|
|
|
53
54
|
plugins: [],
|
|
54
55
|
}
|
|
55
56
|
io:RecordIOBase | undefined = undefined
|
|
56
|
-
loader:RecordLoader | undefined = undefined
|
|
57
|
+
loader:RecordLoader | EventObserver | undefined = undefined
|
|
57
58
|
plugin_loader: PluginLoader | undefined = undefined
|
|
58
59
|
memory_loader:RecordLoader
|
|
59
60
|
detail: ServerDetail | undefined
|