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.
@@ -45,7 +45,12 @@ export declare enum ResourceType {
45
45
  export declare enum FrontendUpdate {
46
46
  ALL = 1023,
47
47
  PROJECT = 1,
48
- PARAMETER = 2
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,
@@ -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.RenderUpdateType = 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;
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["PARAMETER"] = 2] = "PARAMETER";
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
- return loader.read_string(file);
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;
@@ -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
@@ -1,5 +1,6 @@
1
1
  export * from './server/detail';
2
2
  export * from './server/io';
3
+ export * from './server/observer';
3
4
  export * from './server/plugin';
4
5
  export * from './server/server';
5
6
  export * from './server/module/project';
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "verteilen-core",
3
- "version": "1.3.1",
3
+ "version": "1.3.2",
4
4
  "license": "MIT",
5
5
  "homepage": "https://verteilen.github.io/wiki/",
6
6
  "author": "Elly",
@@ -79,7 +79,12 @@ export enum ResourceType {
79
79
  export enum FrontendUpdate {
80
80
  ALL = ~(~0 << 10),
81
81
  PROJECT = 1 << 0,
82
- PARAMETER = 1 << 1,
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
- return loader.read_string(file)
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
+ }
@@ -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
package/src/server.ts CHANGED
@@ -3,6 +3,7 @@
3
3
  */
4
4
  export * from './server/detail'
5
5
  export * from './server/io'
6
+ export * from './server/observer'
6
7
  export * from './server/plugin'
7
8
  export * from './server/server'
8
9
  export * from './server/module/project'