vrack2-core 0.0.1
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/.eslintrc.js +6 -0
- package/LICENSE +177 -0
- package/README.md +6 -0
- package/docs/RU-README.md +6 -0
- package/lib/Container.d.ts +30 -0
- package/lib/Container.js +236 -0
- package/lib/DeviceManager.d.ts +32 -0
- package/lib/DeviceManager.js +143 -0
- package/lib/IServiceStructure.d.ts +5 -0
- package/lib/IServiceStructure.js +2 -0
- package/lib/IStructureDevice.d.ts +7 -0
- package/lib/IStructureDevice.js +2 -0
- package/lib/ImportManager.d.ts +15 -0
- package/lib/ImportManager.js +145 -0
- package/lib/MainProcess.d.ts +9 -0
- package/lib/MainProcess.js +28 -0
- package/lib/Utility.d.ts +21 -0
- package/lib/Utility.js +48 -0
- package/lib/actions/Action.d.ts +4 -0
- package/lib/actions/Action.js +16 -0
- package/lib/actions/BasicAction.d.ts +15 -0
- package/lib/actions/BasicAction.js +44 -0
- package/lib/actions/GlobalAction.d.ts +4 -0
- package/lib/actions/GlobalAction.js +17 -0
- package/lib/actions/IAction.d.ts +11 -0
- package/lib/actions/IAction.js +2 -0
- package/lib/actions/ILocalAction.d.ts +11 -0
- package/lib/actions/ILocalAction.js +2 -0
- package/lib/errors/CoreError.d.ts +53 -0
- package/lib/errors/CoreError.js +81 -0
- package/lib/errors/ErrorManager.d.ts +47 -0
- package/lib/errors/ErrorManager.js +84 -0
- package/lib/index.d.ts +19 -0
- package/lib/index.js +55 -0
- package/lib/ports/BasicPort.d.ts +11 -0
- package/lib/ports/BasicPort.js +49 -0
- package/lib/ports/ILocalPort.d.ts +10 -0
- package/lib/ports/ILocalPort.js +2 -0
- package/lib/ports/IPort.d.ts +10 -0
- package/lib/ports/IPort.js +2 -0
- package/lib/ports/Port.d.ts +6 -0
- package/lib/ports/Port.js +20 -0
- package/lib/ports/ReturnPort.d.ts +6 -0
- package/lib/ports/ReturnPort.js +21 -0
- package/lib/ports/StandartPort.d.ts +4 -0
- package/lib/ports/StandartPort.js +17 -0
- package/lib/service/Device.d.ts +175 -0
- package/lib/service/Device.js +191 -0
- package/lib/service/DeviceConnect.d.ts +21 -0
- package/lib/service/DeviceConnect.js +32 -0
- package/lib/service/DevicePort.d.ts +24 -0
- package/lib/service/DevicePort.js +41 -0
- package/lib/service/IDeviceEvent.d.ts +5 -0
- package/lib/service/IDeviceEvent.js +2 -0
- package/lib/test.d.ts +1 -0
- package/lib/test.js +58 -0
- package/lib/validator/IValidationProblem.d.ts +8 -0
- package/lib/validator/IValidationProblem.js +2 -0
- package/lib/validator/IValidationRule.d.ts +9 -0
- package/lib/validator/IValidationRule.js +2 -0
- package/lib/validator/IValidationSubrule.d.ts +4 -0
- package/lib/validator/IValidationSubrule.js +2 -0
- package/lib/validator/Rule.d.ts +12 -0
- package/lib/validator/Rule.js +30 -0
- package/lib/validator/Validator.d.ts +14 -0
- package/lib/validator/Validator.js +57 -0
- package/lib/validator/types/ArrayType.d.ts +14 -0
- package/lib/validator/types/ArrayType.js +58 -0
- package/lib/validator/types/BasicType.d.ts +18 -0
- package/lib/validator/types/BasicType.js +54 -0
- package/lib/validator/types/NumberType.d.ts +19 -0
- package/lib/validator/types/NumberType.js +66 -0
- package/lib/validator/types/ObjectType.d.ts +18 -0
- package/lib/validator/types/ObjectType.js +51 -0
- package/lib/validator/types/StringType.d.ts +19 -0
- package/lib/validator/types/StringType.js +63 -0
- package/package.json +26 -0
- package/src/Container.ts +237 -0
- package/src/DeviceManager.ts +124 -0
- package/src/IServiceStructure.ts +6 -0
- package/src/IStructureDevice.ts +5 -0
- package/src/ImportManager.ts +112 -0
- package/src/MainProcess.ts +18 -0
- package/src/Utility.ts +44 -0
- package/src/actions/Action.ts +12 -0
- package/src/actions/BasicAction.ts +54 -0
- package/src/actions/GlobalAction.ts +14 -0
- package/src/actions/IAction.ts +8 -0
- package/src/actions/ILocalAction.ts +8 -0
- package/src/errors/CoreError.ts +87 -0
- package/src/errors/ErrorManager.ts +93 -0
- package/src/index.ts +30 -0
- package/src/ports/BasicPort.ts +53 -0
- package/src/ports/ILocalPort.ts +12 -0
- package/src/ports/IPort.ts +12 -0
- package/src/ports/Port.ts +17 -0
- package/src/ports/ReturnPort.ts +19 -0
- package/src/ports/StandartPort.ts +13 -0
- package/src/service/Device.ts +225 -0
- package/src/service/DeviceConnect.ts +36 -0
- package/src/service/DevicePort.ts +46 -0
- package/src/service/IDeviceEvent.ts +5 -0
- package/src/test.ts +82 -0
- package/src/validator/IValidationProblem.ts +9 -0
- package/src/validator/IValidationRule.ts +10 -0
- package/src/validator/IValidationSubrule.ts +5 -0
- package/src/validator/Rule.ts +30 -0
- package/src/validator/Validator.ts +67 -0
- package/src/validator/types/ArrayType.ts +67 -0
- package/src/validator/types/BasicType.ts +61 -0
- package/src/validator/types/NumberType.ts +86 -0
- package/src/validator/types/ObjectType.ts +58 -0
- package/src/validator/types/StringType.ts +79 -0
- package/tsconfig.json +103 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export default class ImportManager {
|
|
2
|
+
/**
|
|
3
|
+
* Dynamic import method
|
|
4
|
+
*
|
|
5
|
+
* @param {string} path Full or relative path to file
|
|
6
|
+
*/
|
|
7
|
+
static importPath(raPath: string): Promise<any>;
|
|
8
|
+
static importClass(cs: string): Promise<any>;
|
|
9
|
+
static importJSON(filePath: string): Promise<any>;
|
|
10
|
+
static tryJsonParse(jsonRaw: string): any;
|
|
11
|
+
static camelize(text: string): string;
|
|
12
|
+
protected static getSub(imp: any, get: string): any;
|
|
13
|
+
static systemPath(): string;
|
|
14
|
+
protected static tryImport(p: string): Promise<any>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
+
};
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
const fs_1 = require("fs");
|
|
39
|
+
const path_1 = __importDefault(require("path"));
|
|
40
|
+
const ErrorManager_1 = __importDefault(require("./errors/ErrorManager"));
|
|
41
|
+
const Rule_1 = __importDefault(require("./validator/Rule"));
|
|
42
|
+
ErrorManager_1.default.register('ImportManager', 'kwRobwFPzc5g', 'IM_FILE_NOT_FOUND', 'Import file not found', {
|
|
43
|
+
filePath: Rule_1.default.string().description('Path to file')
|
|
44
|
+
});
|
|
45
|
+
ErrorManager_1.default.register('ImportManager', 'dMJfR6rmC7o6', 'IM_JSON_INCORRECT', 'Import file json incorrect', {
|
|
46
|
+
jsonRaw: Rule_1.default.string().description('Raw json data'),
|
|
47
|
+
parsingError: Rule_1.default.string().description('Json parse error string')
|
|
48
|
+
});
|
|
49
|
+
ErrorManager_1.default.register('ImportManager', 'u3dsX3vZpKrz', 'IM_CLASS_PATH_ERROR', 'Error import class - No acts', {
|
|
50
|
+
path: Rule_1.default.string().description('Class path string')
|
|
51
|
+
});
|
|
52
|
+
ErrorManager_1.default.register('ImportManager', 'PscFAcmXr11U', 'IM_CLASS_VENDOR_ERROR', 'Error import class - vendor not found', {
|
|
53
|
+
path: Rule_1.default.string().description('Class path string')
|
|
54
|
+
});
|
|
55
|
+
ErrorManager_1.default.register('ImportManager', 'm9MJNeKv3xYW', 'IM_CLASS_ACT_ERROR', 'Error import class - class act = undefined', {
|
|
56
|
+
path: Rule_1.default.string().description('Class path string')
|
|
57
|
+
});
|
|
58
|
+
class ImportManager {
|
|
59
|
+
/**
|
|
60
|
+
* Dynamic import method
|
|
61
|
+
*
|
|
62
|
+
* @param {string} path Full or relative path to file
|
|
63
|
+
*/
|
|
64
|
+
static importPath(raPath) {
|
|
65
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
66
|
+
// IF we have absolute path
|
|
67
|
+
if (path_1.default.isAbsolute(raPath)) {
|
|
68
|
+
const ti = yield ImportManager.tryImport(raPath);
|
|
69
|
+
if (ti !== false)
|
|
70
|
+
return ti;
|
|
71
|
+
}
|
|
72
|
+
const mbfp = path_1.default.join(ImportManager.systemPath(), raPath);
|
|
73
|
+
if ((0, fs_1.existsSync)(mbfp)) {
|
|
74
|
+
const ti = yield ImportManager.tryImport(raPath);
|
|
75
|
+
if (ti !== false)
|
|
76
|
+
return ti;
|
|
77
|
+
}
|
|
78
|
+
const ti = yield Promise.resolve(`${raPath}`).then(s => __importStar(require(s)));
|
|
79
|
+
return ti;
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
static importClass(cs) {
|
|
83
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
84
|
+
const acts = cs.split('.');
|
|
85
|
+
const vendor = acts.shift();
|
|
86
|
+
if (typeof vendor !== 'string')
|
|
87
|
+
throw ErrorManager_1.default.make('IM_CLASS_PATH_ERROR', { path: cs });
|
|
88
|
+
let ret = yield ImportManager.tryImport(vendor);
|
|
89
|
+
if (ret === false)
|
|
90
|
+
throw ErrorManager_1.default.make('IM_CLASS_VENDOR_ERROR', { path: cs });
|
|
91
|
+
for (const act of acts) {
|
|
92
|
+
ret = ret[act];
|
|
93
|
+
if (ret === undefined)
|
|
94
|
+
throw ErrorManager_1.default.make('IM_CLASS_ACT_ERROR', { path: cs });
|
|
95
|
+
}
|
|
96
|
+
return ret;
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
static importJSON(filePath) {
|
|
100
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
101
|
+
if (!path_1.default.isAbsolute(filePath)) {
|
|
102
|
+
filePath = path_1.default.join(ImportManager.systemPath(), filePath);
|
|
103
|
+
}
|
|
104
|
+
if ((0, fs_1.existsSync)(filePath)) {
|
|
105
|
+
const jdata = (0, fs_1.readFileSync)(filePath).toString('utf-8');
|
|
106
|
+
return ImportManager.tryJsonParse(jdata);
|
|
107
|
+
}
|
|
108
|
+
throw ErrorManager_1.default.make('IM_FILE_NOT_FOUND', { filePath });
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
static tryJsonParse(jsonRaw) {
|
|
112
|
+
try {
|
|
113
|
+
return JSON.parse(jsonRaw);
|
|
114
|
+
}
|
|
115
|
+
catch (e) {
|
|
116
|
+
throw ErrorManager_1.default.make('IM_JSON_INCORRECT', {
|
|
117
|
+
jsonRaw, parsingError: (e instanceof Error) ? e.toString() : 'Unknown base json parse error'
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
static camelize(text) {
|
|
122
|
+
return text.replace(/^([A-Z])|[.]+(\w)/g, function (match, p1, p2, offset) {
|
|
123
|
+
if (p2)
|
|
124
|
+
return p2.toUpperCase();
|
|
125
|
+
return p1.toLowerCase();
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
static getSub(imp, get) {
|
|
129
|
+
return imp[get];
|
|
130
|
+
}
|
|
131
|
+
static systemPath() {
|
|
132
|
+
return process.cwd();
|
|
133
|
+
}
|
|
134
|
+
static tryImport(p) {
|
|
135
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
136
|
+
try {
|
|
137
|
+
return yield Promise.resolve(`${p}`).then(s => __importStar(require(s)));
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
exports.default = ImportManager;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import Container from "./Container";
|
|
2
|
+
import DeviceManager from "./DeviceManager";
|
|
3
|
+
import IServiceStructure from "./IServiceStructure";
|
|
4
|
+
export default class MainProcess {
|
|
5
|
+
Container: Container;
|
|
6
|
+
DeviceManager: DeviceManager;
|
|
7
|
+
constructor(ContainerClass: typeof Container, DeviceManagerClass: typeof DeviceManager, service: IServiceStructure);
|
|
8
|
+
run(): Promise<void>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const ImportManager_1 = __importDefault(require("./ImportManager"));
|
|
16
|
+
class MainProcess {
|
|
17
|
+
constructor(ContainerClass, DeviceManagerClass, service) {
|
|
18
|
+
this.DeviceManager = new DeviceManagerClass(ImportManager_1.default.systemPath(), './devices');
|
|
19
|
+
this.DeviceManager.updateList();
|
|
20
|
+
this.Container = new ContainerClass(service, this.DeviceManager);
|
|
21
|
+
}
|
|
22
|
+
run() {
|
|
23
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
24
|
+
yield this.Container.run();
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.default = MainProcess;
|
package/lib/Utility.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Преобразует строку типа `aaa.bbb.ccc` в строку типа `aaaBbbCcc`
|
|
3
|
+
* Обратите внимание на то, что первый символ первого актета не преобразуется,
|
|
4
|
+
* если есть такая необходимость, можно добавить точку в самое начало строки `.aaa.bbb.ccc`
|
|
5
|
+
* результат выполнения будет `AaaBbbCcc`
|
|
6
|
+
*/
|
|
7
|
+
declare function camelize(text: string): string;
|
|
8
|
+
/**
|
|
9
|
+
* Проверяет, является ли JSON строка валидным JSON
|
|
10
|
+
* Обычно используется, когда неважно в чем конретно проблема в JSON
|
|
11
|
+
* и нужно просто узнать валидный он или нет
|
|
12
|
+
*
|
|
13
|
+
*/
|
|
14
|
+
declare function validJSON(text: string): any;
|
|
15
|
+
/**
|
|
16
|
+
* Преобразует строку в локальный путь VRack, на данный момент
|
|
17
|
+
* это просто приведение строки в lowerCase
|
|
18
|
+
*
|
|
19
|
+
*/
|
|
20
|
+
declare function toPath(text: string): string;
|
|
21
|
+
export { camelize, validJSON, toPath };
|
package/lib/Utility.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright © 2022 Boris Bobylev. All rights reserved.
|
|
4
|
+
* Licensed under the Apache License, Version 2.0
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.toPath = exports.validJSON = exports.camelize = void 0;
|
|
8
|
+
/**
|
|
9
|
+
* Преобразует строку типа `aaa.bbb.ccc` в строку типа `aaaBbbCcc`
|
|
10
|
+
* Обратите внимание на то, что первый символ первого актета не преобразуется,
|
|
11
|
+
* если есть такая необходимость, можно добавить точку в самое начало строки `.aaa.bbb.ccc`
|
|
12
|
+
* результат выполнения будет `AaaBbbCcc`
|
|
13
|
+
*/
|
|
14
|
+
function camelize(text) {
|
|
15
|
+
return text.replace(/^([A-Z])|[.]+(\w)/g, function (match, p1, p2, offset) {
|
|
16
|
+
if (p2)
|
|
17
|
+
return p2.toUpperCase();
|
|
18
|
+
return p1.toLowerCase();
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
exports.camelize = camelize;
|
|
22
|
+
/**
|
|
23
|
+
* Проверяет, является ли JSON строка валидным JSON
|
|
24
|
+
* Обычно используется, когда неважно в чем конретно проблема в JSON
|
|
25
|
+
* и нужно просто узнать валидный он или нет
|
|
26
|
+
*
|
|
27
|
+
*/
|
|
28
|
+
function validJSON(text) {
|
|
29
|
+
try {
|
|
30
|
+
const cfg = JSON.parse(text);
|
|
31
|
+
if (!(cfg && typeof cfg === 'object'))
|
|
32
|
+
return false;
|
|
33
|
+
return cfg;
|
|
34
|
+
}
|
|
35
|
+
catch (e) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.validJSON = validJSON;
|
|
40
|
+
/**
|
|
41
|
+
* Преобразует строку в локальный путь VRack, на данный момент
|
|
42
|
+
* это просто приведение строки в lowerCase
|
|
43
|
+
*
|
|
44
|
+
*/
|
|
45
|
+
function toPath(text) {
|
|
46
|
+
return text.toLowerCase();
|
|
47
|
+
}
|
|
48
|
+
exports.toPath = toPath;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright © 2022 Boris Bobylev. All rights reserved.
|
|
4
|
+
* Licensed under the Apache License, Version 2.0
|
|
5
|
+
*/
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
const GlobalAction_1 = __importDefault(require("./GlobalAction"));
|
|
11
|
+
class Action {
|
|
12
|
+
static global() {
|
|
13
|
+
return new GlobalAction_1.default();
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.default = Action;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import BasicType from "../validator/types/BasicType";
|
|
2
|
+
import IAction from "./IAction";
|
|
3
|
+
import ILocalAction from "./ILocalAction";
|
|
4
|
+
export default class BasicAction {
|
|
5
|
+
protected action: ILocalAction;
|
|
6
|
+
constructor();
|
|
7
|
+
requirements(req: {
|
|
8
|
+
[key: string]: BasicType;
|
|
9
|
+
}): this;
|
|
10
|
+
returns(ret: {
|
|
11
|
+
[key: string]: BasicType;
|
|
12
|
+
}): this;
|
|
13
|
+
description(des: string): this;
|
|
14
|
+
export(): IAction;
|
|
15
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright © 2022 Boris Bobylev. All rights reserved.
|
|
4
|
+
* Licensed under the Apache License, Version 2.0
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
class BasicAction {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.action = {
|
|
10
|
+
type: 'unknown',
|
|
11
|
+
requirements: {},
|
|
12
|
+
returns: {},
|
|
13
|
+
description: ''
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
requirements(req) {
|
|
17
|
+
this.action.requirements = req;
|
|
18
|
+
return this;
|
|
19
|
+
}
|
|
20
|
+
returns(ret) {
|
|
21
|
+
this.action.returns = ret;
|
|
22
|
+
return this;
|
|
23
|
+
}
|
|
24
|
+
description(des) {
|
|
25
|
+
this.action.description = des;
|
|
26
|
+
return this;
|
|
27
|
+
}
|
|
28
|
+
export() {
|
|
29
|
+
const nAction = {
|
|
30
|
+
type: this.action.type,
|
|
31
|
+
requirements: {},
|
|
32
|
+
returns: {},
|
|
33
|
+
description: this.action.description,
|
|
34
|
+
};
|
|
35
|
+
for (const key in this.action.requirements) {
|
|
36
|
+
nAction.requirements[key] = this.action.requirements[key].export();
|
|
37
|
+
}
|
|
38
|
+
for (const key in this.action.returns) {
|
|
39
|
+
nAction.returns[key] = this.action.returns[key].export();
|
|
40
|
+
}
|
|
41
|
+
return nAction;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.default = BasicAction;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright © 2022 Boris Bobylev. All rights reserved.
|
|
4
|
+
* Licensed under the Apache License, Version 2.0
|
|
5
|
+
*/
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
const BasicAction_1 = __importDefault(require("./BasicAction"));
|
|
11
|
+
class GlobalAction extends BasicAction_1.default {
|
|
12
|
+
constructor() {
|
|
13
|
+
super();
|
|
14
|
+
this.action.type = 'global';
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.default = GlobalAction;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Базовый класс для реализаиции ошибок с возможностью
|
|
3
|
+
* импортирования и экспортирования классов ошибок для
|
|
4
|
+
* клиент-серверных операций.
|
|
5
|
+
*
|
|
6
|
+
* В VRack очень много передается по сети в виде JSON. Поскольку
|
|
7
|
+
* в чистом виде ошибки не преобрзауются в JSON, были сделаны методы
|
|
8
|
+
* для экспортирования и импортирования с сохранения основных важных свойств.
|
|
9
|
+
*
|
|
10
|
+
* Если импортируемая ошибка имеет свойства которых нет в базовом классе, буду добавлены.
|
|
11
|
+
* Для получения неизвестных свойств можно воспользоватся функцией (для typescript) getUnknownProperty
|
|
12
|
+
*
|
|
13
|
+
* Для работы с ошибками VRack рекомендуется использовать ErrorManager
|
|
14
|
+
*
|
|
15
|
+
*/
|
|
16
|
+
declare class CoreError extends Error {
|
|
17
|
+
/** Флаг того что ошибка пренадлежит VRack */
|
|
18
|
+
vError: boolean;
|
|
19
|
+
/** Код ошибки VRack */
|
|
20
|
+
vCode: string;
|
|
21
|
+
/** Кородкий код VRack */
|
|
22
|
+
vShort: string;
|
|
23
|
+
/** Список дополнительных параметров */
|
|
24
|
+
vAdd: Array<string>;
|
|
25
|
+
/** */
|
|
26
|
+
vAddErrors: Array<CoreError>;
|
|
27
|
+
constructor(name: string, message: string, code: string, short: string);
|
|
28
|
+
/**
|
|
29
|
+
* Импортирует ошибку пришедшую по сети в виде JSON объекта
|
|
30
|
+
* На всякий случай использует objectify для приходящего объекта
|
|
31
|
+
*
|
|
32
|
+
* @returns {CoreError} this после модификации
|
|
33
|
+
*/
|
|
34
|
+
import(error: any): this;
|
|
35
|
+
/**
|
|
36
|
+
* Возвращает объект для передачи его по сети с предварительным
|
|
37
|
+
* преобразованием в JSON
|
|
38
|
+
*/
|
|
39
|
+
export(): any;
|
|
40
|
+
add(err: CoreError): this;
|
|
41
|
+
/**
|
|
42
|
+
* Для Typescript используется для получения неизвестного
|
|
43
|
+
* свойства экземпляра после импорта пришедшей ошибки
|
|
44
|
+
*/
|
|
45
|
+
getUnknownProperty(field: string): any | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* Возвращает объект для передачи его по сети
|
|
48
|
+
*
|
|
49
|
+
* @param {any} error Ошибка для преобразования в объект
|
|
50
|
+
* */
|
|
51
|
+
static objectify(error: any): any;
|
|
52
|
+
}
|
|
53
|
+
export default CoreError;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright © 2022 Boris Bobylev. All rights reserved.
|
|
4
|
+
* Licensed under the Apache License, Version 2.0
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
/**
|
|
8
|
+
* Базовый класс для реализаиции ошибок с возможностью
|
|
9
|
+
* импортирования и экспортирования классов ошибок для
|
|
10
|
+
* клиент-серверных операций.
|
|
11
|
+
*
|
|
12
|
+
* В VRack очень много передается по сети в виде JSON. Поскольку
|
|
13
|
+
* в чистом виде ошибки не преобрзауются в JSON, были сделаны методы
|
|
14
|
+
* для экспортирования и импортирования с сохранения основных важных свойств.
|
|
15
|
+
*
|
|
16
|
+
* Если импортируемая ошибка имеет свойства которых нет в базовом классе, буду добавлены.
|
|
17
|
+
* Для получения неизвестных свойств можно воспользоватся функцией (для typescript) getUnknownProperty
|
|
18
|
+
*
|
|
19
|
+
* Для работы с ошибками VRack рекомендуется использовать ErrorManager
|
|
20
|
+
*
|
|
21
|
+
*/
|
|
22
|
+
class CoreError extends Error {
|
|
23
|
+
constructor(name, message, code, short) {
|
|
24
|
+
super(message);
|
|
25
|
+
/** Флаг того что ошибка пренадлежит VRack */
|
|
26
|
+
this.vError = true;
|
|
27
|
+
/** Код ошибки VRack */
|
|
28
|
+
this.vCode = "";
|
|
29
|
+
/** Кородкий код VRack */
|
|
30
|
+
this.vShort = "";
|
|
31
|
+
/** Список дополнительных параметров */
|
|
32
|
+
this.vAdd = [];
|
|
33
|
+
/** */
|
|
34
|
+
this.vAddErrors = [];
|
|
35
|
+
this.name = name;
|
|
36
|
+
this.vCode = code;
|
|
37
|
+
this.vShort = short;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Импортирует ошибку пришедшую по сети в виде JSON объекта
|
|
41
|
+
* На всякий случай использует objectify для приходящего объекта
|
|
42
|
+
*
|
|
43
|
+
* @returns {CoreError} this после модификации
|
|
44
|
+
*/
|
|
45
|
+
import(error) {
|
|
46
|
+
const objectifyError = CoreError.objectify(error);
|
|
47
|
+
Object.assign(this, objectifyError);
|
|
48
|
+
return this;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Возвращает объект для передачи его по сети с предварительным
|
|
52
|
+
* преобразованием в JSON
|
|
53
|
+
*/
|
|
54
|
+
export() {
|
|
55
|
+
return CoreError.objectify(this);
|
|
56
|
+
}
|
|
57
|
+
add(err) {
|
|
58
|
+
this.vAddErrors.push(CoreError.objectify(err));
|
|
59
|
+
return this;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Для Typescript используется для получения неизвестного
|
|
63
|
+
* свойства экземпляра после импорта пришедшей ошибки
|
|
64
|
+
*/
|
|
65
|
+
getUnknownProperty(field) {
|
|
66
|
+
const dynamicKey = field;
|
|
67
|
+
return this[dynamicKey];
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Возвращает объект для передачи его по сети
|
|
71
|
+
*
|
|
72
|
+
* @param {any} error Ошибка для преобразования в объект
|
|
73
|
+
* */
|
|
74
|
+
static objectify(error) {
|
|
75
|
+
const result = {};
|
|
76
|
+
for (const key of Object.getOwnPropertyNames(error))
|
|
77
|
+
result[key] = error[key];
|
|
78
|
+
return result;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
exports.default = CoreError;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import BasicType from "../validator/types/BasicType";
|
|
2
|
+
import CoreError from "./CoreError";
|
|
3
|
+
/**
|
|
4
|
+
* Класс является точкой входа для инициализации исключений
|
|
5
|
+
*
|
|
6
|
+
* Было принято решение вместо кучи мелких однотипных файлов сделать один класс
|
|
7
|
+
* со стандартным функционалом
|
|
8
|
+
*/
|
|
9
|
+
declare class ErrorManager {
|
|
10
|
+
private registeredList;
|
|
11
|
+
/**
|
|
12
|
+
* Регистрирует тип ошибки компонента
|
|
13
|
+
*
|
|
14
|
+
* Перед тем как менеджер ошибок может создать ошибки, необходимо зарегистрировать ее тип.
|
|
15
|
+
*
|
|
16
|
+
* @param {string} name Название компонента
|
|
17
|
+
* @param {string} code Код ошибки
|
|
18
|
+
* @param {string} short Короткий код ошибки
|
|
19
|
+
* @param {string} description Описание ошибки
|
|
20
|
+
*
|
|
21
|
+
*/
|
|
22
|
+
register(name: string, code: string, short: string, description: string, rules?: {
|
|
23
|
+
[key: string]: BasicType;
|
|
24
|
+
}): void;
|
|
25
|
+
/**
|
|
26
|
+
* Создание ошибки
|
|
27
|
+
*
|
|
28
|
+
*
|
|
29
|
+
*
|
|
30
|
+
* @param {string} short
|
|
31
|
+
*/
|
|
32
|
+
make(short: string, additional?: {}): CoreError;
|
|
33
|
+
/**
|
|
34
|
+
* Преобразует обычную ошибку в ошибку VRack
|
|
35
|
+
*
|
|
36
|
+
* @param {Error} error Ошибка для преобразования
|
|
37
|
+
*/
|
|
38
|
+
convert(error: any): any;
|
|
39
|
+
/**
|
|
40
|
+
* Возвращает тип ошибки или null
|
|
41
|
+
*
|
|
42
|
+
* @param {string} short Короткий код ошибки или код ошибки поиска
|
|
43
|
+
*/
|
|
44
|
+
private getRegistered;
|
|
45
|
+
}
|
|
46
|
+
declare const GlobalErrorManager: ErrorManager;
|
|
47
|
+
export default GlobalErrorManager;
|