node-pluginsmanager-plugin 4.8.8 → 5.0.0
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/lib/cjs/checkers/RangeError/checkArrayLength.d.ts +2 -0
- package/lib/cjs/checkers/RangeError/checkArrayLength.js +26 -0
- package/lib/cjs/checkers/RangeError/checkArrayLengthBetween.d.ts +2 -0
- package/lib/cjs/checkers/RangeError/checkArrayLengthBetween.js +33 -0
- package/lib/cjs/checkers/RangeError/checkIntegerBetween.d.ts +2 -0
- package/lib/cjs/checkers/RangeError/checkIntegerBetween.js +32 -0
- package/lib/cjs/checkers/RangeError/checkNonEmptyArray.d.ts +2 -0
- package/lib/cjs/checkers/RangeError/checkNonEmptyArray.js +22 -0
- package/lib/cjs/checkers/RangeError/checkNonEmptyInteger.d.ts +2 -0
- package/lib/cjs/checkers/RangeError/checkNonEmptyInteger.js +22 -0
- package/lib/cjs/checkers/RangeError/checkNonEmptyNumber.d.ts +2 -0
- package/lib/cjs/checkers/RangeError/checkNonEmptyNumber.js +22 -0
- package/lib/cjs/checkers/RangeError/checkNonEmptyObject.d.ts +2 -0
- package/lib/cjs/checkers/RangeError/checkNonEmptyObject.js +22 -0
- package/lib/cjs/checkers/RangeError/checkNonEmptyString.d.ts +2 -0
- package/lib/cjs/checkers/RangeError/checkNonEmptyString.js +22 -0
- package/lib/cjs/checkers/RangeError/checkNumberBetween.d.ts +2 -0
- package/lib/cjs/checkers/RangeError/checkNumberBetween.js +32 -0
- package/lib/cjs/checkers/RangeError/checkObjectLength.d.ts +2 -0
- package/lib/cjs/checkers/RangeError/checkObjectLength.js +31 -0
- package/lib/cjs/checkers/RangeError/checkObjectLengthBetween.d.ts +2 -0
- package/lib/cjs/checkers/RangeError/checkObjectLengthBetween.js +36 -0
- package/lib/cjs/checkers/RangeError/checkStringLength.d.ts +2 -0
- package/lib/cjs/checkers/RangeError/checkStringLength.js +26 -0
- package/lib/cjs/checkers/RangeError/checkStringLengthBetween.d.ts +2 -0
- package/lib/cjs/checkers/RangeError/checkStringLengthBetween.js +33 -0
- package/lib/cjs/checkers/ReferenceError/checkExists.d.ts +2 -0
- package/lib/cjs/checkers/ReferenceError/checkExists.js +19 -0
- package/lib/cjs/checkers/TypeError/checkArray.d.ts +2 -0
- package/lib/cjs/checkers/TypeError/checkArray.js +22 -0
- package/lib/cjs/checkers/TypeError/checkBoolean.d.ts +2 -0
- package/lib/cjs/checkers/TypeError/checkBoolean.js +22 -0
- package/lib/cjs/checkers/TypeError/checkFunction.d.ts +2 -0
- package/lib/cjs/checkers/TypeError/checkFunction.js +22 -0
- package/lib/cjs/checkers/TypeError/checkInteger.d.ts +2 -0
- package/lib/cjs/checkers/TypeError/checkInteger.js +22 -0
- package/lib/cjs/checkers/TypeError/checkNumber.d.ts +2 -0
- package/lib/cjs/checkers/TypeError/checkNumber.js +22 -0
- package/lib/cjs/checkers/TypeError/checkObject.d.ts +2 -0
- package/lib/cjs/checkers/TypeError/checkObject.js +22 -0
- package/lib/cjs/checkers/TypeError/checkString.d.ts +2 -0
- package/lib/cjs/checkers/TypeError/checkString.js +22 -0
- package/lib/cjs/components/DescriptorUser.d.ts +27 -0
- package/lib/cjs/components/DescriptorUser.js +120 -0
- package/lib/cjs/components/Mediator.d.ts +19 -0
- package/lib/cjs/components/Mediator.js +145 -0
- package/lib/cjs/components/MediatorUser.d.ts +12 -0
- package/lib/cjs/components/MediatorUser.js +40 -0
- package/lib/cjs/components/NotFoundError.d.ts +2 -0
- package/lib/cjs/components/NotFoundError.js +7 -0
- package/lib/cjs/components/Orchestrator.d.ts +54 -0
- package/lib/cjs/components/Orchestrator.js +386 -0
- package/lib/cjs/components/Server.d.ts +55 -0
- package/lib/cjs/components/Server.js +534 -0
- package/lib/cjs/main.cjs +90 -0
- package/lib/cjs/main.d.cts +29 -0
- package/lib/cjs/utils/cleanSendedError.d.ts +1 -0
- package/lib/cjs/utils/cleanSendedError.js +43 -0
- package/lib/cjs/utils/descriptor/extractParams.d.ts +3 -0
- package/lib/cjs/utils/descriptor/extractParams.js +21 -0
- package/lib/cjs/utils/descriptor/extractPathMethodByOperationId.d.ts +8 -0
- package/lib/cjs/utils/descriptor/extractPathMethodByOperationId.js +34 -0
- package/lib/cjs/utils/descriptor/extractPattern.d.ts +2 -0
- package/lib/cjs/utils/descriptor/extractPattern.js +27 -0
- package/lib/cjs/utils/descriptor/extractSchemaType.d.ts +4 -0
- package/lib/cjs/utils/descriptor/extractSchemaType.js +18 -0
- package/lib/cjs/utils/file/checkFile.d.ts +1 -0
- package/lib/cjs/utils/file/checkFile.js +17 -0
- package/lib/cjs/utils/file/isFile.d.ts +1 -0
- package/lib/cjs/utils/file/isFile.js +19 -0
- package/lib/cjs/utils/file/readJSONFile.d.ts +1 -0
- package/lib/cjs/utils/file/readJSONFile.js +24 -0
- package/lib/cjs/utils/getUniqueID.d.ts +1 -0
- package/lib/cjs/utils/getUniqueID.js +16 -0
- package/lib/cjs/utils/removeFirstSlash.d.ts +1 -0
- package/lib/cjs/utils/removeFirstSlash.js +8 -0
- package/lib/cjs/utils/request/extractBody.d.ts +7 -0
- package/lib/cjs/utils/request/extractBody.js +50 -0
- package/lib/cjs/utils/request/extractCookies.d.ts +4 -0
- package/lib/cjs/utils/request/extractCookies.js +53 -0
- package/lib/cjs/utils/request/extractIp.d.ts +1 -0
- package/lib/cjs/utils/request/extractIp.js +40 -0
- package/lib/cjs/utils/send.d.ts +2 -0
- package/lib/cjs/utils/send.js +57 -0
- package/lib/cjs/utils/serverCodes.d.ts +14 -0
- package/lib/cjs/utils/serverCodes.js +15 -0
- package/package.json +32 -13
- package/lib/checkers/RangeError/checkArrayLength.js +0 -74
- package/lib/checkers/RangeError/checkArrayLengthBetween.js +0 -97
- package/lib/checkers/RangeError/checkIntegerBetween.js +0 -96
- package/lib/checkers/RangeError/checkNonEmptyArray.js +0 -61
- package/lib/checkers/RangeError/checkNonEmptyInteger.js +0 -61
- package/lib/checkers/RangeError/checkNonEmptyNumber.js +0 -61
- package/lib/checkers/RangeError/checkNonEmptyObject.js +0 -61
- package/lib/checkers/RangeError/checkNonEmptyString.js +0 -61
- package/lib/checkers/RangeError/checkNumberBetween.js +0 -96
- package/lib/checkers/RangeError/checkObjectLength.js +0 -78
- package/lib/checkers/RangeError/checkObjectLengthBetween.js +0 -101
- package/lib/checkers/RangeError/checkStringLength.js +0 -70
- package/lib/checkers/RangeError/checkStringLengthBetween.js +0 -97
- package/lib/checkers/ReferenceError/checkExists.js +0 -49
- package/lib/checkers/TypeError/checkArray.js +0 -61
- package/lib/checkers/TypeError/checkBoolean.js +0 -61
- package/lib/checkers/TypeError/checkFunction.js +0 -61
- package/lib/checkers/TypeError/checkInteger.js +0 -61
- package/lib/checkers/TypeError/checkNumber.js +0 -61
- package/lib/checkers/TypeError/checkObject.js +0 -61
- package/lib/checkers/TypeError/checkString.js +0 -61
- package/lib/checkers/main.js +0 -76
- package/lib/components/DescriptorUser.js +0 -179
- package/lib/components/Mediator.js +0 -220
- package/lib/components/MediatorUser.js +0 -63
- package/lib/components/NotFoundError.js +0 -5
- package/lib/components/Orchestrator.js +0 -634
- package/lib/components/Server.js +0 -777
- package/lib/components/main.js +0 -25
- package/lib/index.d.ts +0 -279
- package/lib/main.js +0 -17
- package/lib/utils/cleanSendedError.js +0 -47
- package/lib/utils/descriptor/extractParams.js +0 -29
- package/lib/utils/descriptor/extractPathMethodByOperationId.js +0 -47
- package/lib/utils/descriptor/extractPattern.js +0 -38
- package/lib/utils/descriptor/extractSchemaType.js +0 -24
- package/lib/utils/descriptor/main.js +0 -21
- package/lib/utils/file/checkFile.js +0 -22
- package/lib/utils/file/isFile.js +0 -29
- package/lib/utils/file/main.js +0 -19
- package/lib/utils/file/readJSONFile.js +0 -30
- package/lib/utils/getUniqueID.js +0 -20
- package/lib/utils/removeFirstSlash.js +0 -7
- package/lib/utils/request/extractBody.js +0 -79
- package/lib/utils/request/extractCookies.js +0 -68
- package/lib/utils/request/extractIp.js +0 -47
- package/lib/utils/request/main.js +0 -19
- package/lib/utils/send.js +0 -75
- package/lib/utils/serverCodes.json +0 -17
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
// deps
|
|
4
|
-
|
|
5
|
-
// natives
|
|
6
|
-
const { join } = require("path");
|
|
7
|
-
|
|
8
|
-
// locals
|
|
9
|
-
const checkExists = require(join(__dirname, "..", "ReferenceError", "checkExists.js"));
|
|
10
|
-
|
|
11
|
-
// private
|
|
12
|
-
|
|
13
|
-
// methods
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Execute an asynchronous check on data
|
|
17
|
-
* @param {string} dataName: data identifier
|
|
18
|
-
* @param {any} data: data to check
|
|
19
|
-
* @returns {Promise} check result
|
|
20
|
-
*/
|
|
21
|
-
function _async (dataName, data) {
|
|
22
|
-
|
|
23
|
-
return checkExists(dataName, data, true).then(() => {
|
|
24
|
-
|
|
25
|
-
return "object" !== typeof data || null === data ? Promise.reject(new TypeError(
|
|
26
|
-
"\"" + dataName + "\" is not an object"
|
|
27
|
-
)) : Promise.resolve();
|
|
28
|
-
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Execute a synchronous check on data
|
|
35
|
-
* @param {string} dataName: data identifier
|
|
36
|
-
* @param {any} data: data to check
|
|
37
|
-
* @returns {ReferenceError|TypeError|null} check result
|
|
38
|
-
*/
|
|
39
|
-
function _sync (dataName, data) {
|
|
40
|
-
|
|
41
|
-
let err = checkExists(dataName, data, false);
|
|
42
|
-
|
|
43
|
-
if (!err && ("object" !== typeof data || null === data)) {
|
|
44
|
-
|
|
45
|
-
err = new TypeError(
|
|
46
|
-
"\"" + dataName + "\" is not an object"
|
|
47
|
-
);
|
|
48
|
-
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
return err;
|
|
52
|
-
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
// module
|
|
56
|
-
|
|
57
|
-
module.exports = function checkObject (dataName, data, async = true) {
|
|
58
|
-
|
|
59
|
-
return async ? _async(dataName, data) : _sync(dataName, data);
|
|
60
|
-
|
|
61
|
-
};
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
// deps
|
|
4
|
-
|
|
5
|
-
// natives
|
|
6
|
-
const { join } = require("path");
|
|
7
|
-
|
|
8
|
-
// locals
|
|
9
|
-
const checkExists = require(join(__dirname, "..", "ReferenceError", "checkExists.js"));
|
|
10
|
-
|
|
11
|
-
// private
|
|
12
|
-
|
|
13
|
-
// methods
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Execute an asynchronous check on data
|
|
17
|
-
* @param {string} dataName: data identifier
|
|
18
|
-
* @param {any} data: data to check
|
|
19
|
-
* @returns {Promise} check result
|
|
20
|
-
*/
|
|
21
|
-
function _async (dataName, data) {
|
|
22
|
-
|
|
23
|
-
return checkExists(dataName, data, true).then(() => {
|
|
24
|
-
|
|
25
|
-
return "string" !== typeof data ? Promise.reject(new TypeError(
|
|
26
|
-
"\"" + dataName + "\" is not a string"
|
|
27
|
-
)) : Promise.resolve();
|
|
28
|
-
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Execute a synchronous check on data
|
|
35
|
-
* @param {string} dataName: data identifier
|
|
36
|
-
* @param {any} data: data to check
|
|
37
|
-
* @returns {ReferenceError|TypeError|null} check result
|
|
38
|
-
*/
|
|
39
|
-
function _sync (dataName, data) {
|
|
40
|
-
|
|
41
|
-
let err = checkExists(dataName, data, false);
|
|
42
|
-
|
|
43
|
-
if (!err && "string" !== typeof data) {
|
|
44
|
-
|
|
45
|
-
err = new TypeError(
|
|
46
|
-
"\"" + dataName + "\" is not a string"
|
|
47
|
-
);
|
|
48
|
-
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
return err;
|
|
52
|
-
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
// module
|
|
56
|
-
|
|
57
|
-
module.exports = function checkString (dataName, data, async = true) {
|
|
58
|
-
|
|
59
|
-
return async ? _async(dataName, data) : _sync(dataName, data);
|
|
60
|
-
|
|
61
|
-
};
|
package/lib/checkers/main.js
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
// deps
|
|
4
|
-
|
|
5
|
-
// natives
|
|
6
|
-
const { join } = require("path");
|
|
7
|
-
|
|
8
|
-
// locals
|
|
9
|
-
|
|
10
|
-
// undefined
|
|
11
|
-
const checkExists = require(join(__dirname, "ReferenceError", "checkExists.js"));
|
|
12
|
-
|
|
13
|
-
// native
|
|
14
|
-
const checkBoolean = require(join(__dirname, "TypeError", "checkBoolean.js"));
|
|
15
|
-
const checkFunction = require(join(__dirname, "TypeError", "checkFunction.js"));
|
|
16
|
-
const checkNumber = require(join(__dirname, "TypeError", "checkNumber.js"));
|
|
17
|
-
const checkObject = require(join(__dirname, "TypeError", "checkObject.js"));
|
|
18
|
-
const checkString = require(join(__dirname, "TypeError", "checkString.js"));
|
|
19
|
-
|
|
20
|
-
// abstract
|
|
21
|
-
const checkArray = require(join(__dirname, "TypeError", "checkArray.js"));
|
|
22
|
-
const checkInteger = require(join(__dirname, "TypeError", "checkInteger.js"));
|
|
23
|
-
|
|
24
|
-
// empty
|
|
25
|
-
const checkNonEmptyArray = require(join(__dirname, "RangeError", "checkNonEmptyArray.js"));
|
|
26
|
-
const checkNonEmptyInteger = require(join(__dirname, "RangeError", "checkNonEmptyInteger.js"));
|
|
27
|
-
const checkNonEmptyNumber = require(join(__dirname, "RangeError", "checkNonEmptyNumber.js"));
|
|
28
|
-
const checkNonEmptyObject = require(join(__dirname, "RangeError", "checkNonEmptyObject.js"));
|
|
29
|
-
const checkNonEmptyString = require(join(__dirname, "RangeError", "checkNonEmptyString.js"));
|
|
30
|
-
|
|
31
|
-
// range
|
|
32
|
-
const checkArrayLength = require(join(__dirname, "RangeError", "checkArrayLength.js"));
|
|
33
|
-
const checkArrayLengthBetween = require(join(__dirname, "RangeError", "checkArrayLengthBetween.js"));
|
|
34
|
-
const checkIntegerBetween = require(join(__dirname, "RangeError", "checkIntegerBetween.js"));
|
|
35
|
-
const checkNumberBetween = require(join(__dirname, "RangeError", "checkNumberBetween.js"));
|
|
36
|
-
const checkObjectLength = require(join(__dirname, "RangeError", "checkObjectLength.js"));
|
|
37
|
-
const checkObjectLengthBetween = require(join(__dirname, "RangeError", "checkObjectLengthBetween.js"));
|
|
38
|
-
const checkStringLength = require(join(__dirname, "RangeError", "checkStringLength.js"));
|
|
39
|
-
const checkStringLengthBetween = require(join(__dirname, "RangeError", "checkStringLengthBetween.js"));
|
|
40
|
-
|
|
41
|
-
// module
|
|
42
|
-
|
|
43
|
-
module.exports = {
|
|
44
|
-
|
|
45
|
-
// undefined
|
|
46
|
-
checkExists,
|
|
47
|
-
|
|
48
|
-
// native
|
|
49
|
-
checkBoolean,
|
|
50
|
-
checkFunction,
|
|
51
|
-
checkNumber,
|
|
52
|
-
checkObject,
|
|
53
|
-
checkString,
|
|
54
|
-
|
|
55
|
-
// abstract
|
|
56
|
-
checkArray,
|
|
57
|
-
checkInteger,
|
|
58
|
-
|
|
59
|
-
// empty
|
|
60
|
-
checkNonEmptyArray,
|
|
61
|
-
checkNonEmptyInteger,
|
|
62
|
-
checkNonEmptyNumber,
|
|
63
|
-
checkNonEmptyObject,
|
|
64
|
-
checkNonEmptyString,
|
|
65
|
-
|
|
66
|
-
// range
|
|
67
|
-
checkArrayLength,
|
|
68
|
-
checkArrayLengthBetween,
|
|
69
|
-
checkIntegerBetween,
|
|
70
|
-
checkNumberBetween,
|
|
71
|
-
checkObjectLength,
|
|
72
|
-
checkObjectLengthBetween,
|
|
73
|
-
checkStringLength,
|
|
74
|
-
checkStringLengthBetween
|
|
75
|
-
|
|
76
|
-
};
|
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
// deps
|
|
4
|
-
|
|
5
|
-
// natives
|
|
6
|
-
const Events = require("events");
|
|
7
|
-
const { join } = require("path");
|
|
8
|
-
|
|
9
|
-
// locals
|
|
10
|
-
const {
|
|
11
|
-
checkObject,
|
|
12
|
-
checkNonEmptyObject,
|
|
13
|
-
checkNonEmptyString
|
|
14
|
-
} = require(join(__dirname, "..", "checkers", "main.js"));
|
|
15
|
-
|
|
16
|
-
// consts
|
|
17
|
-
|
|
18
|
-
const LOG_TYPES_ALLOWED = [ "log", "info", "success", "warning", "error" ];
|
|
19
|
-
|
|
20
|
-
// module
|
|
21
|
-
|
|
22
|
-
module.exports = class DescriptorUser extends Events {
|
|
23
|
-
|
|
24
|
-
constructor (options) {
|
|
25
|
-
|
|
26
|
-
super(options);
|
|
27
|
-
|
|
28
|
-
// public
|
|
29
|
-
|
|
30
|
-
this.initialized = false;
|
|
31
|
-
|
|
32
|
-
// protected
|
|
33
|
-
|
|
34
|
-
this._descriptorValidated = false;
|
|
35
|
-
|
|
36
|
-
this._externalRessourcesDirectory = options && "string" === typeof options.externalRessourcesDirectory ?
|
|
37
|
-
options.externalRessourcesDirectory : "";
|
|
38
|
-
|
|
39
|
-
this._Descriptor = options && "undefined" !== typeof options.descriptor ?
|
|
40
|
-
options.descriptor : null;
|
|
41
|
-
|
|
42
|
-
this._Logger = options && "undefined" !== typeof options.logger ?
|
|
43
|
-
options.logger : null;
|
|
44
|
-
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
// protected
|
|
48
|
-
|
|
49
|
-
// must be inherited
|
|
50
|
-
_initWorkSpace () {
|
|
51
|
-
|
|
52
|
-
return Promise.reject(new Error("\"_initWorkSpace\" method must be inherited"));
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// must be inherited
|
|
57
|
-
_releaseWorkSpace () {
|
|
58
|
-
|
|
59
|
-
return Promise.reject(new Error("\"_releaseWorkSpace\" method must be inherited"));
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
_log (type, message, bold = false) {
|
|
64
|
-
|
|
65
|
-
if (message && "function" === typeof this._Logger && LOG_TYPES_ALLOWED.includes(type)) {
|
|
66
|
-
this._Logger(type, message, bold, this.getPluginName());
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
return this;
|
|
70
|
-
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
// public
|
|
74
|
-
|
|
75
|
-
getPluginName () {
|
|
76
|
-
return this._Descriptor && this._Descriptor.info && this._Descriptor.info.title ? this._Descriptor.info.title : "";
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
getPluginVersion () {
|
|
80
|
-
return this._Descriptor && this._Descriptor.info && this._Descriptor.info.version ? this._Descriptor.info.version : "";
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
getPluginDescription () {
|
|
84
|
-
return this._Descriptor && this._Descriptor.info && this._Descriptor.info.description ? this._Descriptor.info.description : "";
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
// must be inherited
|
|
88
|
-
init () {
|
|
89
|
-
|
|
90
|
-
return Promise.reject(new Error("\"init\" method must be inherited"));
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
// must be inherited
|
|
95
|
-
release () {
|
|
96
|
-
|
|
97
|
-
return Promise.reject(new Error("\"release\" method must be inherited"));
|
|
98
|
-
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
// must be inherited
|
|
102
|
-
checkDescriptor () {
|
|
103
|
-
|
|
104
|
-
// check Descriptor object
|
|
105
|
-
return this._descriptorValidated ? Promise.resolve() :
|
|
106
|
-
checkNonEmptyObject("Descriptor", this._Descriptor).then(() => {
|
|
107
|
-
|
|
108
|
-
// check info object
|
|
109
|
-
return checkNonEmptyObject("Descriptor.info", this._Descriptor.info).then(() => {
|
|
110
|
-
|
|
111
|
-
// check title
|
|
112
|
-
return checkNonEmptyString("Descriptor.info.title", this._Descriptor.info.title).then(() => {
|
|
113
|
-
|
|
114
|
-
return this._Descriptor.info.title !== this._Descriptor.info.title.toLowerCase() ?
|
|
115
|
-
Promise.reject(new Error(
|
|
116
|
-
"The descriptor's title (\"" + this._Descriptor.info.title + "\") " +
|
|
117
|
-
"is not equals in lower case (package.json convention)"
|
|
118
|
-
)) : Promise.resolve();
|
|
119
|
-
|
|
120
|
-
// check version
|
|
121
|
-
}).then(() => {
|
|
122
|
-
return checkNonEmptyString("Descriptor.info.version", this._Descriptor.info.version);
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
}).then(() => {
|
|
128
|
-
|
|
129
|
-
// check paths object
|
|
130
|
-
return checkObject("Descriptor.paths", this._Descriptor.paths).then(() => {
|
|
131
|
-
|
|
132
|
-
// check multiple operationIds
|
|
133
|
-
return Promise.resolve().then(() => {
|
|
134
|
-
|
|
135
|
-
const operationIds = [];
|
|
136
|
-
Object.keys(this._Descriptor.paths).forEach((p) => {
|
|
137
|
-
|
|
138
|
-
Object.keys(this._Descriptor.paths[p]).forEach((m) => {
|
|
139
|
-
|
|
140
|
-
if (this._Descriptor.paths[p][m].operationId) {
|
|
141
|
-
operationIds.push(this._Descriptor.paths[p][m].operationId);
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
});
|
|
147
|
-
|
|
148
|
-
let multiple = false;
|
|
149
|
-
for (let i = 0; i < operationIds.length - 1; ++i) {
|
|
150
|
-
|
|
151
|
-
for (let j = i + 1; j < operationIds.length; ++j) {
|
|
152
|
-
|
|
153
|
-
if (operationIds[i] === operationIds[j]) {
|
|
154
|
-
multiple = true; break;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
if (multiple) {
|
|
160
|
-
break;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
return multiple ? Promise.reject(new Error(
|
|
166
|
-
"There is multiple operationIds in [\" " + operationIds.join("\", ") + " \"]"
|
|
167
|
-
)) : Promise.resolve();
|
|
168
|
-
|
|
169
|
-
});
|
|
170
|
-
|
|
171
|
-
});
|
|
172
|
-
|
|
173
|
-
}).then(() => {
|
|
174
|
-
this._descriptorValidated = true;
|
|
175
|
-
});
|
|
176
|
-
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
};
|
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
// deps
|
|
4
|
-
|
|
5
|
-
// natives
|
|
6
|
-
const { join } = require("path");
|
|
7
|
-
|
|
8
|
-
// externals
|
|
9
|
-
const { OpenApiValidator, ValidationError } = require("express-openapi-validate");
|
|
10
|
-
|
|
11
|
-
// locals
|
|
12
|
-
const {
|
|
13
|
-
checkNonEmptyString,
|
|
14
|
-
checkObject,
|
|
15
|
-
checkNonEmptyObject
|
|
16
|
-
} = require(join(__dirname, "..", "checkers", "main.js"));
|
|
17
|
-
const { extractPathMethodByOperationId } = require(join(__dirname, "..", "utils", "descriptor", "main.js"));
|
|
18
|
-
const DescriptorUser = require(join(__dirname, "DescriptorUser.js"));
|
|
19
|
-
|
|
20
|
-
// module
|
|
21
|
-
|
|
22
|
-
module.exports = class Mediator extends DescriptorUser {
|
|
23
|
-
|
|
24
|
-
constructor (options) {
|
|
25
|
-
|
|
26
|
-
super(options);
|
|
27
|
-
|
|
28
|
-
this._validator = null;
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
// public
|
|
33
|
-
|
|
34
|
-
checkParameters (operationId, urlParams, bodyParams) {
|
|
35
|
-
|
|
36
|
-
// parameters validation
|
|
37
|
-
return this.checkDescriptor().then(() => {
|
|
38
|
-
return checkNonEmptyString("operationId", operationId);
|
|
39
|
-
}).then(() => {
|
|
40
|
-
|
|
41
|
-
return checkNonEmptyObject("urlParams", urlParams).then(() => {
|
|
42
|
-
return checkObject("urlParams.path", urlParams.path);
|
|
43
|
-
}).then(() => {
|
|
44
|
-
return checkObject("urlParams.query", urlParams.query);
|
|
45
|
-
}).then(() => {
|
|
46
|
-
return checkObject("urlParams.headers", urlParams.headers);
|
|
47
|
-
}).then(() => {
|
|
48
|
-
return checkObject("urlParams.cookies", urlParams.cookies);
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
}).then(() => {
|
|
52
|
-
return checkObject("bodyParams", bodyParams);
|
|
53
|
-
}).then(() => {
|
|
54
|
-
|
|
55
|
-
// search wanted operation
|
|
56
|
-
const foundPathMethod = extractPathMethodByOperationId(this._Descriptor.paths, operationId);
|
|
57
|
-
|
|
58
|
-
return !foundPathMethod ? Promise.reject(
|
|
59
|
-
new ReferenceError("Unknown operationId \"" + operationId + "\"")
|
|
60
|
-
) : new Promise((resolve, reject) => {
|
|
61
|
-
|
|
62
|
-
const req = {
|
|
63
|
-
"path": foundPathMethod.path,
|
|
64
|
-
"method": foundPathMethod.method,
|
|
65
|
-
"params": urlParams.path,
|
|
66
|
-
"query": urlParams.query,
|
|
67
|
-
"headers": urlParams.headers,
|
|
68
|
-
"cookies": urlParams.cookies,
|
|
69
|
-
"body": bodyParams
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
const validateRequest = this._validator.validate(req.method, req.path);
|
|
73
|
-
|
|
74
|
-
validateRequest(req, null, (err) => {
|
|
75
|
-
return err ? reject(err) : resolve();
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
}).catch((err) => {
|
|
79
|
-
|
|
80
|
-
return err instanceof ValidationError ? Promise.resolve().then(() => {
|
|
81
|
-
|
|
82
|
-
switch (err.data[0].keyword) { // extract first Error
|
|
83
|
-
|
|
84
|
-
case "required":
|
|
85
|
-
return Promise.reject(new ReferenceError(err.message));
|
|
86
|
-
|
|
87
|
-
case "type":
|
|
88
|
-
return Promise.reject(new TypeError(err.message));
|
|
89
|
-
|
|
90
|
-
case "minimum":
|
|
91
|
-
case "maximum":
|
|
92
|
-
case "minLength":
|
|
93
|
-
case "maxLength":
|
|
94
|
-
case "minItems":
|
|
95
|
-
case "maxItems":
|
|
96
|
-
case "enum":
|
|
97
|
-
return Promise.reject(new RangeError(err.message));
|
|
98
|
-
|
|
99
|
-
default:
|
|
100
|
-
return Promise.reject(new Error(err.message));
|
|
101
|
-
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
}) : Promise.reject(err);
|
|
105
|
-
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
checkResponse (operationId, res) {
|
|
113
|
-
|
|
114
|
-
// parameters validation
|
|
115
|
-
return this.checkDescriptor().then(() => {
|
|
116
|
-
return checkNonEmptyString("operationId", operationId);
|
|
117
|
-
}).then(() => {
|
|
118
|
-
|
|
119
|
-
// search wanted operation
|
|
120
|
-
const foundPathMethod = extractPathMethodByOperationId(this._Descriptor.paths, operationId);
|
|
121
|
-
|
|
122
|
-
return !foundPathMethod ? Promise.reject(
|
|
123
|
-
new ReferenceError("Unknown operationId \"" + operationId + "\"")
|
|
124
|
-
) : new Promise((resolve, reject) => {
|
|
125
|
-
|
|
126
|
-
// no content, no validation
|
|
127
|
-
if (204 === res.statusCode) {
|
|
128
|
-
|
|
129
|
-
return "undefined" !== typeof res.body ? reject(
|
|
130
|
-
new ReferenceError("You should not have content data with 204 statusCode")
|
|
131
|
-
) : resolve();
|
|
132
|
-
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
// no content, no validation (put requests)
|
|
136
|
-
else if (201 === res.statusCode && "undefined" === typeof res.body) {
|
|
137
|
-
return resolve();
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
// validator cannot correctly check pure boolean return
|
|
141
|
-
else if ("undefined" !== typeof res.body && [ "true", "false" ].includes(res.body)) {
|
|
142
|
-
return resolve();
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
else {
|
|
146
|
-
|
|
147
|
-
const validateResponse = this._validator.validateResponse(foundPathMethod.method, foundPathMethod.path);
|
|
148
|
-
|
|
149
|
-
try {
|
|
150
|
-
|
|
151
|
-
res.headers = res.getHeaders();
|
|
152
|
-
|
|
153
|
-
if ("undefined" === typeof res.body) {
|
|
154
|
-
res.body = null;
|
|
155
|
-
}
|
|
156
|
-
else {
|
|
157
|
-
res.body = "string" === typeof res.body ? JSON.parse(res.body) : res.body;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
validateResponse(res);
|
|
161
|
-
|
|
162
|
-
return resolve();
|
|
163
|
-
|
|
164
|
-
}
|
|
165
|
-
catch (e) {
|
|
166
|
-
|
|
167
|
-
return reject(new Error(
|
|
168
|
-
"[" + foundPathMethod.method + "]" +
|
|
169
|
-
foundPathMethod.path +
|
|
170
|
-
" (" + foundPathMethod.operationId + ") => " +
|
|
171
|
-
res.statusCode +
|
|
172
|
-
"\r\n" +
|
|
173
|
-
(e.message ? e.message : e)
|
|
174
|
-
));
|
|
175
|
-
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
});
|
|
181
|
-
|
|
182
|
-
});
|
|
183
|
-
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
// init / release
|
|
187
|
-
|
|
188
|
-
init (...data) {
|
|
189
|
-
|
|
190
|
-
return this._initWorkSpace(...data).then(() => {
|
|
191
|
-
|
|
192
|
-
this._validator = new OpenApiValidator(this._Descriptor);
|
|
193
|
-
|
|
194
|
-
this.initialized = true;
|
|
195
|
-
this.emit("initialized", ...data);
|
|
196
|
-
|
|
197
|
-
});
|
|
198
|
-
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
release (...data) {
|
|
202
|
-
|
|
203
|
-
return this._releaseWorkSpace(...data).then(() => {
|
|
204
|
-
|
|
205
|
-
// can only be released by Orchestrator
|
|
206
|
-
this._Descriptor = null;
|
|
207
|
-
this._validator = null;
|
|
208
|
-
|
|
209
|
-
this.initialized = false;
|
|
210
|
-
this.emit("released", ...data);
|
|
211
|
-
|
|
212
|
-
}).then(() => {
|
|
213
|
-
|
|
214
|
-
this.removeAllListeners();
|
|
215
|
-
|
|
216
|
-
});
|
|
217
|
-
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
};
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
// deps
|
|
4
|
-
|
|
5
|
-
// natives
|
|
6
|
-
const { join } = require("path");
|
|
7
|
-
|
|
8
|
-
// locals
|
|
9
|
-
const DescriptorUser = require(join(__dirname, "DescriptorUser.js"));
|
|
10
|
-
const Mediator = require(join(__dirname, "Mediator.js"));
|
|
11
|
-
|
|
12
|
-
// module
|
|
13
|
-
|
|
14
|
-
module.exports = class MediatorUser extends DescriptorUser {
|
|
15
|
-
|
|
16
|
-
constructor (options) {
|
|
17
|
-
|
|
18
|
-
super(options);
|
|
19
|
-
|
|
20
|
-
this._Mediator = options && "undefined" !== typeof options.mediator ?
|
|
21
|
-
options.mediator : null;
|
|
22
|
-
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
// protected
|
|
26
|
-
|
|
27
|
-
_initWorkSpace () {
|
|
28
|
-
|
|
29
|
-
return Promise.resolve();
|
|
30
|
-
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
_releaseWorkSpace () {
|
|
34
|
-
|
|
35
|
-
return Promise.resolve();
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
// public
|
|
40
|
-
|
|
41
|
-
checkMediator () {
|
|
42
|
-
|
|
43
|
-
if ("undefined" === typeof this._Mediator || null === this._Mediator) {
|
|
44
|
-
|
|
45
|
-
return Promise.reject(new ReferenceError("Mediator not registered"));
|
|
46
|
-
|
|
47
|
-
}
|
|
48
|
-
else if ("object" !== typeof this._Mediator || !(this._Mediator instanceof Mediator)) {
|
|
49
|
-
|
|
50
|
-
return Promise.reject(new TypeError(
|
|
51
|
-
"The plugin has an invalid Mediator which is not an instance (or a child) of the official Mediator class"
|
|
52
|
-
));
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
|
|
57
|
-
return Promise.resolve();
|
|
58
|
-
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
};
|