node-pluginsmanager-plugin 4.8.8 → 5.0.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.
Files changed (136) hide show
  1. package/lib/cjs/checkers/RangeError/checkArrayLength.d.ts +2 -0
  2. package/lib/cjs/checkers/RangeError/checkArrayLength.js +26 -0
  3. package/lib/cjs/checkers/RangeError/checkArrayLengthBetween.d.ts +2 -0
  4. package/lib/cjs/checkers/RangeError/checkArrayLengthBetween.js +33 -0
  5. package/lib/cjs/checkers/RangeError/checkIntegerBetween.d.ts +2 -0
  6. package/lib/cjs/checkers/RangeError/checkIntegerBetween.js +32 -0
  7. package/lib/cjs/checkers/RangeError/checkNonEmptyArray.d.ts +2 -0
  8. package/lib/cjs/checkers/RangeError/checkNonEmptyArray.js +22 -0
  9. package/lib/cjs/checkers/RangeError/checkNonEmptyInteger.d.ts +2 -0
  10. package/lib/cjs/checkers/RangeError/checkNonEmptyInteger.js +22 -0
  11. package/lib/cjs/checkers/RangeError/checkNonEmptyNumber.d.ts +2 -0
  12. package/lib/cjs/checkers/RangeError/checkNonEmptyNumber.js +22 -0
  13. package/lib/cjs/checkers/RangeError/checkNonEmptyObject.d.ts +2 -0
  14. package/lib/cjs/checkers/RangeError/checkNonEmptyObject.js +22 -0
  15. package/lib/cjs/checkers/RangeError/checkNonEmptyString.d.ts +2 -0
  16. package/lib/cjs/checkers/RangeError/checkNonEmptyString.js +22 -0
  17. package/lib/cjs/checkers/RangeError/checkNumberBetween.d.ts +2 -0
  18. package/lib/cjs/checkers/RangeError/checkNumberBetween.js +32 -0
  19. package/lib/cjs/checkers/RangeError/checkObjectLength.d.ts +2 -0
  20. package/lib/cjs/checkers/RangeError/checkObjectLength.js +31 -0
  21. package/lib/cjs/checkers/RangeError/checkObjectLengthBetween.d.ts +2 -0
  22. package/lib/cjs/checkers/RangeError/checkObjectLengthBetween.js +36 -0
  23. package/lib/cjs/checkers/RangeError/checkStringLength.d.ts +2 -0
  24. package/lib/cjs/checkers/RangeError/checkStringLength.js +26 -0
  25. package/lib/cjs/checkers/RangeError/checkStringLengthBetween.d.ts +2 -0
  26. package/lib/cjs/checkers/RangeError/checkStringLengthBetween.js +33 -0
  27. package/lib/cjs/checkers/ReferenceError/checkExists.d.ts +2 -0
  28. package/lib/cjs/checkers/ReferenceError/checkExists.js +19 -0
  29. package/lib/cjs/checkers/TypeError/checkArray.d.ts +2 -0
  30. package/lib/cjs/checkers/TypeError/checkArray.js +22 -0
  31. package/lib/cjs/checkers/TypeError/checkBoolean.d.ts +2 -0
  32. package/lib/cjs/checkers/TypeError/checkBoolean.js +22 -0
  33. package/lib/cjs/checkers/TypeError/checkFunction.d.ts +2 -0
  34. package/lib/cjs/checkers/TypeError/checkFunction.js +22 -0
  35. package/lib/cjs/checkers/TypeError/checkInteger.d.ts +2 -0
  36. package/lib/cjs/checkers/TypeError/checkInteger.js +22 -0
  37. package/lib/cjs/checkers/TypeError/checkNumber.d.ts +2 -0
  38. package/lib/cjs/checkers/TypeError/checkNumber.js +22 -0
  39. package/lib/cjs/checkers/TypeError/checkObject.d.ts +2 -0
  40. package/lib/cjs/checkers/TypeError/checkObject.js +22 -0
  41. package/lib/cjs/checkers/TypeError/checkString.d.ts +2 -0
  42. package/lib/cjs/checkers/TypeError/checkString.js +22 -0
  43. package/lib/cjs/components/DescriptorUser.d.ts +27 -0
  44. package/lib/cjs/components/DescriptorUser.js +120 -0
  45. package/lib/cjs/components/Mediator.d.ts +20 -0
  46. package/lib/cjs/components/Mediator.js +145 -0
  47. package/lib/cjs/components/MediatorUser.d.ts +12 -0
  48. package/lib/cjs/components/MediatorUser.js +40 -0
  49. package/lib/cjs/components/NotFoundError.d.ts +2 -0
  50. package/lib/cjs/components/NotFoundError.js +7 -0
  51. package/lib/cjs/components/Orchestrator.d.ts +55 -0
  52. package/lib/cjs/components/Orchestrator.js +386 -0
  53. package/lib/cjs/components/Server.d.ts +55 -0
  54. package/lib/cjs/components/Server.js +535 -0
  55. package/lib/cjs/main.cjs +90 -0
  56. package/lib/cjs/main.d.cts +30 -0
  57. package/lib/cjs/utils/cleanSendedError.d.ts +1 -0
  58. package/lib/cjs/utils/cleanSendedError.js +43 -0
  59. package/lib/cjs/utils/descriptor/extractParams.d.ts +3 -0
  60. package/lib/cjs/utils/descriptor/extractParams.js +21 -0
  61. package/lib/cjs/utils/descriptor/extractPathMethodByOperationId.d.ts +8 -0
  62. package/lib/cjs/utils/descriptor/extractPathMethodByOperationId.js +34 -0
  63. package/lib/cjs/utils/descriptor/extractPattern.d.ts +2 -0
  64. package/lib/cjs/utils/descriptor/extractPattern.js +28 -0
  65. package/lib/cjs/utils/descriptor/extractSchemaType.d.ts +4 -0
  66. package/lib/cjs/utils/descriptor/extractSchemaType.js +18 -0
  67. package/lib/cjs/utils/file/checkFile.d.ts +1 -0
  68. package/lib/cjs/utils/file/checkFile.js +17 -0
  69. package/lib/cjs/utils/file/isFile.d.ts +1 -0
  70. package/lib/cjs/utils/file/isFile.js +19 -0
  71. package/lib/cjs/utils/file/readJSONFile.d.ts +1 -0
  72. package/lib/cjs/utils/file/readJSONFile.js +24 -0
  73. package/lib/cjs/utils/getUniqueID.d.ts +1 -0
  74. package/lib/cjs/utils/getUniqueID.js +16 -0
  75. package/lib/cjs/utils/removeFirstSlash.d.ts +1 -0
  76. package/lib/cjs/utils/removeFirstSlash.js +8 -0
  77. package/lib/cjs/utils/request/extractBody.d.ts +7 -0
  78. package/lib/cjs/utils/request/extractBody.js +52 -0
  79. package/lib/cjs/utils/request/extractCookies.d.ts +4 -0
  80. package/lib/cjs/utils/request/extractCookies.js +53 -0
  81. package/lib/cjs/utils/request/extractIp.d.ts +1 -0
  82. package/lib/cjs/utils/request/extractIp.js +40 -0
  83. package/lib/cjs/utils/send.d.ts +2 -0
  84. package/lib/cjs/utils/send.js +57 -0
  85. package/lib/cjs/utils/serverCodes.d.ts +14 -0
  86. package/lib/cjs/utils/serverCodes.js +15 -0
  87. package/package.json +32 -13
  88. package/lib/checkers/RangeError/checkArrayLength.js +0 -74
  89. package/lib/checkers/RangeError/checkArrayLengthBetween.js +0 -97
  90. package/lib/checkers/RangeError/checkIntegerBetween.js +0 -96
  91. package/lib/checkers/RangeError/checkNonEmptyArray.js +0 -61
  92. package/lib/checkers/RangeError/checkNonEmptyInteger.js +0 -61
  93. package/lib/checkers/RangeError/checkNonEmptyNumber.js +0 -61
  94. package/lib/checkers/RangeError/checkNonEmptyObject.js +0 -61
  95. package/lib/checkers/RangeError/checkNonEmptyString.js +0 -61
  96. package/lib/checkers/RangeError/checkNumberBetween.js +0 -96
  97. package/lib/checkers/RangeError/checkObjectLength.js +0 -78
  98. package/lib/checkers/RangeError/checkObjectLengthBetween.js +0 -101
  99. package/lib/checkers/RangeError/checkStringLength.js +0 -70
  100. package/lib/checkers/RangeError/checkStringLengthBetween.js +0 -97
  101. package/lib/checkers/ReferenceError/checkExists.js +0 -49
  102. package/lib/checkers/TypeError/checkArray.js +0 -61
  103. package/lib/checkers/TypeError/checkBoolean.js +0 -61
  104. package/lib/checkers/TypeError/checkFunction.js +0 -61
  105. package/lib/checkers/TypeError/checkInteger.js +0 -61
  106. package/lib/checkers/TypeError/checkNumber.js +0 -61
  107. package/lib/checkers/TypeError/checkObject.js +0 -61
  108. package/lib/checkers/TypeError/checkString.js +0 -61
  109. package/lib/checkers/main.js +0 -76
  110. package/lib/components/DescriptorUser.js +0 -179
  111. package/lib/components/Mediator.js +0 -220
  112. package/lib/components/MediatorUser.js +0 -63
  113. package/lib/components/NotFoundError.js +0 -5
  114. package/lib/components/Orchestrator.js +0 -634
  115. package/lib/components/Server.js +0 -777
  116. package/lib/components/main.js +0 -25
  117. package/lib/index.d.ts +0 -279
  118. package/lib/main.js +0 -17
  119. package/lib/utils/cleanSendedError.js +0 -47
  120. package/lib/utils/descriptor/extractParams.js +0 -29
  121. package/lib/utils/descriptor/extractPathMethodByOperationId.js +0 -47
  122. package/lib/utils/descriptor/extractPattern.js +0 -38
  123. package/lib/utils/descriptor/extractSchemaType.js +0 -24
  124. package/lib/utils/descriptor/main.js +0 -21
  125. package/lib/utils/file/checkFile.js +0 -22
  126. package/lib/utils/file/isFile.js +0 -29
  127. package/lib/utils/file/main.js +0 -19
  128. package/lib/utils/file/readJSONFile.js +0 -30
  129. package/lib/utils/getUniqueID.js +0 -20
  130. package/lib/utils/removeFirstSlash.js +0 -7
  131. package/lib/utils/request/extractBody.js +0 -79
  132. package/lib/utils/request/extractCookies.js +0 -68
  133. package/lib/utils/request/extractIp.js +0 -47
  134. package/lib/utils/request/main.js +0 -19
  135. package/lib/utils/send.js +0 -75
  136. package/lib/utils/serverCodes.json +0 -17
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkString = exports.checkStringSync = void 0;
4
+ // deps
5
+ // locals
6
+ const checkExists_1 = require("../ReferenceError/checkExists");
7
+ // module
8
+ function checkStringSync(dataName, data) {
9
+ let err = (0, checkExists_1.checkExistsSync)(dataName, data);
10
+ if (!err && "string" !== typeof data) {
11
+ err = new TypeError("\"" + dataName + "\" is not a string");
12
+ }
13
+ return err;
14
+ }
15
+ exports.checkStringSync = checkStringSync;
16
+ ;
17
+ function checkString(dataName, data) {
18
+ const err = checkStringSync(dataName, data);
19
+ return err ? Promise.reject(err) : Promise.resolve();
20
+ }
21
+ exports.checkString = checkString;
22
+ ;
@@ -0,0 +1,27 @@
1
+ /// <reference types="node" />
2
+ import Events from "events";
3
+ import { OpenApiDocument } from "express-openapi-validate";
4
+ export declare type tLogType = "log" | "info" | "success" | "warning" | "error";
5
+ export declare type tLogger = (type: tLogType, message: string | Error, bold?: boolean, pluginName?: string) => void;
6
+ export interface iDescriptorUserOptions {
7
+ "externalRessourcesDirectory": string;
8
+ "descriptor"?: OpenApiDocument;
9
+ "logger"?: tLogger;
10
+ }
11
+ export default class DescriptorUser extends Events {
12
+ initialized: boolean;
13
+ protected _descriptorValidated: boolean;
14
+ protected _externalRessourcesDirectory: string;
15
+ protected _Descriptor: OpenApiDocument | null;
16
+ protected _Logger: tLogger | null;
17
+ constructor(options: iDescriptorUserOptions);
18
+ protected _initWorkSpace(...data: any): Promise<void>;
19
+ protected _releaseWorkSpace(...data: any): Promise<void>;
20
+ protected _log(type: tLogType, message: string | Error, bold?: boolean): this;
21
+ getPluginName(): string;
22
+ getPluginVersion(): string;
23
+ getPluginDescription(): string;
24
+ init(...data: any): Promise<void>;
25
+ release(...data: any): Promise<void>;
26
+ checkDescriptor(): Promise<void>;
27
+ }
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ // deps
7
+ // natives
8
+ const events_1 = __importDefault(require("events"));
9
+ // locals
10
+ const checkObject_1 = require("../checkers/TypeError/checkObject");
11
+ const checkNonEmptyObject_1 = require("../checkers/RangeError/checkNonEmptyObject");
12
+ const checkNonEmptyString_1 = require("../checkers/RangeError/checkNonEmptyString");
13
+ ;
14
+ // consts
15
+ const LOG_TYPES_ALLOWED = ["log", "info", "success", "warning", "error"];
16
+ // module
17
+ // Please note the fact that "_initWorkSpace" and "_releaseWorkSpace" method MUST be re-writted in Mediator class, and not in MediatorUser childs.
18
+ // Please note the fact that "init" and "release" method MUST NOT be re-writted. Each child has is own init logic.
19
+ class DescriptorUser extends events_1.default {
20
+ // constructor
21
+ constructor(options) {
22
+ super();
23
+ // public
24
+ this.initialized = false;
25
+ // protected
26
+ this._descriptorValidated = false;
27
+ this._externalRessourcesDirectory = options && "string" === typeof options.externalRessourcesDirectory ?
28
+ options.externalRessourcesDirectory : "";
29
+ this._Descriptor = options && "object" === typeof options.descriptor ?
30
+ options.descriptor : null;
31
+ this._Logger = options && "function" === typeof options.logger ?
32
+ options.logger : null;
33
+ }
34
+ // protected
35
+ // must be inherited
36
+ _initWorkSpace(...data) {
37
+ return Promise.reject(new Error("\"_initWorkSpace\" method must be inherited"));
38
+ }
39
+ // must be inherited
40
+ _releaseWorkSpace(...data) {
41
+ return Promise.reject(new Error("\"_releaseWorkSpace\" method must be inherited"));
42
+ }
43
+ _log(type, message, bold) {
44
+ if (message && "function" === typeof this._Logger && LOG_TYPES_ALLOWED.includes(type)) {
45
+ this._Logger(type, message, bold, this.getPluginName());
46
+ }
47
+ return this;
48
+ }
49
+ // public
50
+ getPluginName() {
51
+ return this._Descriptor && this._Descriptor.info && this._Descriptor.info.title ? this._Descriptor.info.title : "";
52
+ }
53
+ getPluginVersion() {
54
+ return this._Descriptor && this._Descriptor.info && this._Descriptor.info.version ? this._Descriptor.info.version : "";
55
+ }
56
+ getPluginDescription() {
57
+ return this._Descriptor && this._Descriptor.info && this._Descriptor.info.description ? this._Descriptor.info.description : "";
58
+ }
59
+ // must be inherited
60
+ init(...data) {
61
+ console.log("DescriptorUser", "init", ...data);
62
+ return Promise.reject(new Error("\"init\" method must be inherited"));
63
+ }
64
+ // must be inherited
65
+ release(...data) {
66
+ console.log("DescriptorUser", "release", ...data);
67
+ return Promise.reject(new Error("\"release\" method must be inherited"));
68
+ }
69
+ // must be inherited
70
+ checkDescriptor() {
71
+ // check Descriptor object
72
+ return this._descriptorValidated ? Promise.resolve() : (0, checkNonEmptyObject_1.checkNonEmptyObject)("Descriptor", this._Descriptor).then(() => {
73
+ // check info object
74
+ return (0, checkNonEmptyObject_1.checkNonEmptyObject)("Descriptor.info", this._Descriptor.info).then(() => {
75
+ // check title
76
+ return (0, checkNonEmptyString_1.checkNonEmptyString)("Descriptor.info.title", this._Descriptor.info.title).then(() => {
77
+ return this._Descriptor.info.title !== this._Descriptor.info.title.toLowerCase() ?
78
+ Promise.reject(new Error("The descriptor's title (\"" + this._Descriptor.info.title + "\") " +
79
+ "is not equals in lower case (package.json convention)")) : Promise.resolve();
80
+ // check version
81
+ }).then(() => {
82
+ return (0, checkNonEmptyString_1.checkNonEmptyString)("Descriptor.info.version", this._Descriptor.info.version);
83
+ });
84
+ });
85
+ }).then(() => {
86
+ // check paths object
87
+ return ((0, checkObject_1.checkObject)("Descriptor.paths", this._Descriptor.paths)).then(() => {
88
+ // check multiple operationIds
89
+ return Promise.resolve().then(() => {
90
+ const operationIds = [];
91
+ Object.keys(this._Descriptor.paths).forEach((p) => {
92
+ Object.keys(this._Descriptor.paths[p]).forEach((m) => {
93
+ const path = this._Descriptor.paths[p];
94
+ if (path[m].operationId) {
95
+ operationIds.push(path[m].operationId);
96
+ }
97
+ });
98
+ });
99
+ let multiple = false;
100
+ for (let i = 0; i < operationIds.length - 1; ++i) {
101
+ for (let j = i + 1; j < operationIds.length; ++j) {
102
+ if (operationIds[i] === operationIds[j]) {
103
+ multiple = true;
104
+ break;
105
+ }
106
+ }
107
+ if (multiple) {
108
+ break;
109
+ }
110
+ }
111
+ return multiple ? Promise.reject(new Error("There is multiple operationIds in [\" " + operationIds.join("\", ") + " \"]")) : Promise.resolve();
112
+ });
113
+ });
114
+ }).then(() => {
115
+ this._descriptorValidated = true;
116
+ });
117
+ }
118
+ }
119
+ exports.default = DescriptorUser;
120
+ ;
@@ -0,0 +1,20 @@
1
+ import { OpenApiValidator } from "express-openapi-validate";
2
+ import { iServerResponse } from "./Server";
3
+ import DescriptorUser, { iDescriptorUserOptions } from "./DescriptorUser";
4
+ export interface iUrlParameters {
5
+ "path": object;
6
+ "query": object;
7
+ "headers": object;
8
+ "cookies": object;
9
+ }
10
+ export interface iBodyParameters {
11
+ [key: string]: any;
12
+ }
13
+ export default class Mediator extends DescriptorUser {
14
+ protected _validator: OpenApiValidator | null;
15
+ constructor(options: iDescriptorUserOptions);
16
+ checkParameters(operationId: string, urlParams: iUrlParameters, bodyParams: iBodyParameters): Promise<void>;
17
+ checkResponse(operationId: string, res: iServerResponse): Promise<void>;
18
+ init(...data: any): Promise<void>;
19
+ release(...data: any): Promise<void>;
20
+ }
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ // deps
7
+ // externals
8
+ const express_openapi_validate_1 = require("express-openapi-validate");
9
+ const checkObject_1 = require("../checkers/TypeError/checkObject");
10
+ const checkNonEmptyString_1 = require("../checkers/RangeError/checkNonEmptyString");
11
+ const checkNonEmptyObject_1 = require("../checkers/RangeError/checkNonEmptyObject");
12
+ const extractPathMethodByOperationId_1 = __importDefault(require("../utils/descriptor/extractPathMethodByOperationId"));
13
+ const DescriptorUser_1 = __importDefault(require("./DescriptorUser"));
14
+ // module
15
+ class Mediator extends DescriptorUser_1.default {
16
+ // constructor
17
+ constructor(options) {
18
+ super(options);
19
+ this._validator = null;
20
+ }
21
+ // public
22
+ // Check sended parameters by method name (used by the Server)
23
+ checkParameters(operationId, urlParams, bodyParams) {
24
+ // parameters validation
25
+ return this.checkDescriptor().then(() => {
26
+ return (0, checkNonEmptyString_1.checkNonEmptyString)("operationId", operationId);
27
+ }).then(() => {
28
+ return (0, checkNonEmptyObject_1.checkNonEmptyObject)("urlParams", urlParams).then(() => {
29
+ return (0, checkObject_1.checkObject)("urlParams.path", urlParams.path);
30
+ }).then(() => {
31
+ return (0, checkObject_1.checkObject)("urlParams.query", urlParams.query);
32
+ }).then(() => {
33
+ return (0, checkObject_1.checkObject)("urlParams.headers", urlParams.headers);
34
+ }).then(() => {
35
+ return (0, checkObject_1.checkObject)("urlParams.cookies", urlParams.cookies);
36
+ });
37
+ }).then(() => {
38
+ return (0, checkObject_1.checkObject)("bodyParams", bodyParams);
39
+ }).then(() => {
40
+ // search wanted operation
41
+ const foundPathMethod = (0, extractPathMethodByOperationId_1.default)(this._Descriptor.paths, operationId);
42
+ return !foundPathMethod ? Promise.reject(new ReferenceError("Unknown operationId \"" + operationId + "\"")) : new Promise((resolve, reject) => {
43
+ const req = {
44
+ "path": foundPathMethod.path,
45
+ "method": foundPathMethod.method,
46
+ "params": urlParams.path,
47
+ "query": urlParams.query,
48
+ "headers": urlParams.headers,
49
+ "cookies": urlParams.cookies,
50
+ "body": bodyParams
51
+ };
52
+ const validateRequest = this._validator.validate(req.method, req.path); // set to "any" for ts validation
53
+ validateRequest(req, null, (err) => {
54
+ return err ? reject(err) : resolve();
55
+ });
56
+ });
57
+ }).catch((err) => {
58
+ return err instanceof express_openapi_validate_1.ValidationError ? Promise.resolve().then(() => {
59
+ switch (err.data[0].keyword) { // extract first Error
60
+ case "required":
61
+ return Promise.reject(new ReferenceError(err.message));
62
+ case "type":
63
+ return Promise.reject(new TypeError(err.message));
64
+ case "minimum":
65
+ case "maximum":
66
+ case "minLength":
67
+ case "maxLength":
68
+ case "minItems":
69
+ case "maxItems":
70
+ case "enum":
71
+ return Promise.reject(new RangeError(err.message));
72
+ default:
73
+ return Promise.reject(new Error(err.message));
74
+ }
75
+ }) : Promise.reject(err);
76
+ });
77
+ }
78
+ // Check sended parameters by method name (used by the Server)
79
+ checkResponse(operationId, res) {
80
+ // parameters validation
81
+ return this.checkDescriptor().then(() => {
82
+ return (0, checkNonEmptyString_1.checkNonEmptyString)("operationId", operationId);
83
+ }).then(() => {
84
+ // search wanted operation
85
+ const foundPathMethod = (0, extractPathMethodByOperationId_1.default)(this._Descriptor.paths, operationId);
86
+ return !foundPathMethod ? Promise.reject(new ReferenceError("Unknown operationId \"" + operationId + "\"")) : new Promise((resolve, reject) => {
87
+ // no content, no validation
88
+ if (204 === res.statusCode) {
89
+ return "undefined" !== typeof res.body ? reject(new ReferenceError("You should not have content data with 204 statusCode")) : resolve();
90
+ }
91
+ // no content, no validation (put requests)
92
+ else if (201 === res.statusCode && "undefined" === typeof res.body) {
93
+ return resolve();
94
+ }
95
+ // validator cannot correctly check pure boolean return
96
+ else if ("undefined" !== typeof res.body && ["true", "false"].includes(res.body)) {
97
+ return resolve();
98
+ }
99
+ else {
100
+ try {
101
+ res.headers = res.getHeaders();
102
+ if ("undefined" === typeof res.body) {
103
+ res.body = null;
104
+ }
105
+ else {
106
+ res.body = "string" === typeof res.body ? JSON.parse(res.body) : res.body;
107
+ }
108
+ const validateResponse = this._validator.validateResponse(foundPathMethod.method, foundPathMethod.path);
109
+ validateResponse(res);
110
+ return resolve();
111
+ }
112
+ catch (e) {
113
+ return reject(new Error("[" + foundPathMethod.method + "]" +
114
+ foundPathMethod.path +
115
+ " (" + foundPathMethod.operationId + ") => " +
116
+ res.statusCode +
117
+ "\r\n" +
118
+ (e.message ? e.message : e)));
119
+ }
120
+ }
121
+ });
122
+ });
123
+ }
124
+ // init / release
125
+ init(...data) {
126
+ return this._initWorkSpace(...data).then(() => {
127
+ this._validator = new express_openapi_validate_1.OpenApiValidator(this._Descriptor);
128
+ this.initialized = true;
129
+ this.emit("initialized", ...data);
130
+ });
131
+ }
132
+ release(...data) {
133
+ return this._releaseWorkSpace(...data).then(() => {
134
+ // can only be released by Orchestrator
135
+ this._Descriptor = null;
136
+ this._validator = null;
137
+ this.initialized = false;
138
+ this.emit("released", ...data);
139
+ }).then(() => {
140
+ this.removeAllListeners();
141
+ });
142
+ }
143
+ }
144
+ exports.default = Mediator;
145
+ ;
@@ -0,0 +1,12 @@
1
+ import DescriptorUser, { iDescriptorUserOptions } from "./DescriptorUser";
2
+ import Mediator from "./Mediator";
3
+ export interface iMediatorUserOptions extends iDescriptorUserOptions {
4
+ "mediator"?: Mediator;
5
+ }
6
+ export default class MediatorUser extends DescriptorUser {
7
+ protected _Mediator: Mediator | null;
8
+ constructor(options: iMediatorUserOptions);
9
+ _initWorkSpace(...data: any): Promise<void>;
10
+ _releaseWorkSpace(...data: any): Promise<void>;
11
+ checkMediator(): Promise<void>;
12
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ // deps
7
+ // locals
8
+ const DescriptorUser_1 = __importDefault(require("./DescriptorUser"));
9
+ const Mediator_1 = __importDefault(require("./Mediator"));
10
+ // module
11
+ // Please note the fact that "init" and "release" method MUST NOT be re-writted. Each child has is own init logic
12
+ class MediatorUser extends DescriptorUser_1.default {
13
+ // constructor
14
+ constructor(options) {
15
+ super(options);
16
+ this._Mediator = options && "undefined" !== typeof options.mediator ?
17
+ options.mediator : null;
18
+ }
19
+ // protected
20
+ _initWorkSpace(...data) {
21
+ return Promise.resolve();
22
+ }
23
+ _releaseWorkSpace(...data) {
24
+ return Promise.resolve();
25
+ }
26
+ // public
27
+ checkMediator() {
28
+ if ("undefined" === typeof this._Mediator || null === this._Mediator) {
29
+ return Promise.reject(new ReferenceError("Mediator not registered"));
30
+ }
31
+ else if ("object" !== typeof this._Mediator || !(this._Mediator instanceof Mediator_1.default)) {
32
+ return Promise.reject(new TypeError("The plugin has an invalid Mediator which is not an instance (or a child) of the official Mediator class"));
33
+ }
34
+ else {
35
+ return Promise.resolve();
36
+ }
37
+ }
38
+ }
39
+ exports.default = MediatorUser;
40
+ ;
@@ -0,0 +1,2 @@
1
+ export default class NotFoundError extends Error {
2
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ // module
4
+ class NotFoundError extends Error {
5
+ }
6
+ exports.default = NotFoundError;
7
+ ;
@@ -0,0 +1,55 @@
1
+ import MediatorUser from "./MediatorUser";
2
+ import Server from "./Server";
3
+ import { Server as WebSocketServer } from "ws";
4
+ import { Server as SocketIOServer } from "socket.io";
5
+ import { iIncomingMessage, iServerResponse } from "./Server";
6
+ export interface iOrchestratorOptions {
7
+ "externalRessourcesDirectory": string;
8
+ "packageFile": string;
9
+ "descriptorFile": string;
10
+ "mediatorFile": string;
11
+ "serverFile": string;
12
+ }
13
+ export default class Orchestrator extends MediatorUser {
14
+ protected _Server: Server | null;
15
+ protected _socketServer: WebSocketServer | SocketIOServer | null;
16
+ protected _checkParameters: boolean;
17
+ protected _checkResponse: boolean;
18
+ protected _packageFile: string;
19
+ protected _descriptorFile: string;
20
+ protected _mediatorFile: string;
21
+ protected _serverFile: string;
22
+ protected _extended: Array<string>;
23
+ enabled: boolean;
24
+ authors: Array<string>;
25
+ description: string;
26
+ dependencies: object | null;
27
+ devDependencies: object | null;
28
+ engines: object | null;
29
+ license: string;
30
+ main: string;
31
+ name: string;
32
+ scripts: object | null;
33
+ version: string;
34
+ constructor(options: iOrchestratorOptions);
35
+ checkDescriptor(): Promise<void>;
36
+ checkConf(): Promise<void>;
37
+ isEnable(): Promise<void>;
38
+ checkFiles(): Promise<void>;
39
+ checkServer(): Promise<void>;
40
+ disableCheckParameters(): this;
41
+ enableCheckParameters(): this;
42
+ disableCheckResponse(): this;
43
+ enableCheckResponse(): this;
44
+ disableCors(): this;
45
+ enableCors(): this;
46
+ appMiddleware(req: iIncomingMessage, res: iServerResponse, next: Function): void;
47
+ socketMiddleware(server: WebSocketServer | SocketIOServer): void;
48
+ load(): Promise<void>;
49
+ destroy(): Promise<void>;
50
+ init(...data: any): Promise<void>;
51
+ release(...data: any): Promise<void>;
52
+ install(): Promise<void>;
53
+ update(): Promise<void>;
54
+ uninstall(): Promise<void>;
55
+ }