node-pluginsmanager-plugin 6.4.5 → 6.5.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/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2024, Sébastien Vidal
1
+ Copyright (c) 2025, Sébastien Vidal
2
2
 
3
3
  Permission to use, copy, modify, and/or distribute this software for any
4
4
  purpose with or without fee is hereby granted, provided that the above
@@ -7,7 +7,14 @@ export interface iDescriptorUserOptions {
7
7
  "descriptor"?: OpenApiDocument;
8
8
  "logger"?: tLogger;
9
9
  }
10
- export default class DescriptorUser extends EventEmitter {
10
+ export type tEventMap<T> = Record<keyof T, any[]> | tEventsNoEvent;
11
+ export type tEventsNoEvent = [never];
12
+ export interface iEventsMinimal {
13
+ "error": [Error];
14
+ "initialized": [any];
15
+ "released": [any];
16
+ }
17
+ export default class DescriptorUser<T extends tEventMap<T> = tEventsNoEvent> extends EventEmitter<T> {
11
18
  initialized: boolean;
12
19
  protected _descriptorValidated: boolean;
13
20
  protected _externalRessourcesDirectory: string;
@@ -17,6 +24,7 @@ export default class DescriptorUser extends EventEmitter {
17
24
  protected _initWorkSpace(...data: any): Promise<void>;
18
25
  protected _releaseWorkSpace(...data: any): Promise<void>;
19
26
  protected _log(type: tLogType, message: string | Error, bold?: boolean): this;
27
+ protected _emitEventGenericForTSPurposeDONOTUSE(event: string, ...args: any[]): boolean;
20
28
  getPluginName(): string;
21
29
  getPluginVersion(): string;
22
30
  getPluginDescription(): string;
@@ -51,6 +51,10 @@ class DescriptorUser extends node_events_1.EventEmitter {
51
51
  }
52
52
  return this;
53
53
  }
54
+ // used to faint the typing of EventEmitter for emit into a generic class (which MUST be inherited anyway) like Mediator/Server/Orchestrator
55
+ _emitEventGenericForTSPurposeDONOTUSE(event, ...args) {
56
+ return this.emit(event, ...args);
57
+ }
54
58
  // public
55
59
  getPluginName() {
56
60
  return this._Descriptor && this._Descriptor.info && this._Descriptor.info.title ? this._Descriptor.info.title : "";
@@ -1,5 +1,6 @@
1
1
  import { OpenApiValidator } from "express-openapi-validate";
2
- import DescriptorUser, { type iDescriptorUserOptions } from "./DescriptorUser";
2
+ import DescriptorUser from "./DescriptorUser";
3
+ import type { iDescriptorUserOptions, tEventMap, iEventsMinimal } from "./DescriptorUser";
3
4
  import type { iIncomingMessage, iServerResponse } from "./Server";
4
5
  export interface iIncomingMessageForMediatorValidation extends iIncomingMessage {
5
6
  "body": any;
@@ -15,7 +16,7 @@ export interface iUrlAllowedParameters {
15
16
  "header"?: Record<string, any>;
16
17
  "cookie"?: Record<string, any>;
17
18
  }
18
- export default class Mediator extends DescriptorUser {
19
+ export default class Mediator<T extends tEventMap<T> = iEventsMinimal> extends DescriptorUser<T> {
19
20
  protected _validator: OpenApiValidator | null;
20
21
  constructor(options: iDescriptorUserOptions);
21
22
  checkParameters(operationId: string, urlParams?: iUrlAllowedParameters, bodyParams?: any): Promise<void>;
@@ -133,7 +133,7 @@ class Mediator extends DescriptorUser_1.default {
133
133
  return this._initWorkSpace(...data).then(() => {
134
134
  this._validator = new express_openapi_validate_1.OpenApiValidator(this._Descriptor);
135
135
  this.initialized = true;
136
- this.emit("initialized", ...data);
136
+ this._emitEventGenericForTSPurposeDONOTUSE("initialized", [...data]);
137
137
  });
138
138
  }
139
139
  release(...data) {
@@ -142,7 +142,7 @@ class Mediator extends DescriptorUser_1.default {
142
142
  this._Descriptor = null;
143
143
  this._validator = null;
144
144
  this.initialized = false;
145
- this.emit("released", ...data);
145
+ this._emitEventGenericForTSPurposeDONOTUSE("released", [...data]);
146
146
  }).then(() => {
147
147
  this.removeAllListeners();
148
148
  });
@@ -1,9 +1,10 @@
1
- import DescriptorUser, { type iDescriptorUserOptions } from "./DescriptorUser";
1
+ import DescriptorUser from "./DescriptorUser";
2
2
  import Mediator from "./Mediator";
3
+ import type { iDescriptorUserOptions, tEventMap, tEventsNoEvent } from "./DescriptorUser";
3
4
  export interface iMediatorUserOptions extends iDescriptorUserOptions {
4
5
  "mediator"?: Mediator;
5
6
  }
6
- export default class MediatorUser extends DescriptorUser {
7
+ export default class MediatorUser<T extends tEventMap<T> = tEventsNoEvent> extends DescriptorUser<T> {
7
8
  protected _Mediator: Mediator | null;
8
9
  constructor(options: iMediatorUserOptions);
9
10
  protected _initWorkSpace(...data: any): Promise<void>;
@@ -1,10 +1,10 @@
1
1
  import MediatorUser from "./MediatorUser";
2
2
  import Server from "./Server";
3
- import { IncomingMessage } from "node:http";
3
+ import type { IncomingMessage } from "node:http";
4
4
  import type { Server as SocketIOServer } from "socket.io";
5
5
  import type { Server as WebSocketServer } from "ws";
6
6
  import type { iServerResponse } from "./Server";
7
- import type { tLogger } from "./DescriptorUser";
7
+ import type { tLogger, tEventMap, iEventsMinimal } from "./DescriptorUser";
8
8
  export interface iOrchestratorOptions {
9
9
  "externalRessourcesDirectory": string;
10
10
  "packageFile": string;
@@ -13,7 +13,7 @@ export interface iOrchestratorOptions {
13
13
  "serverFile": string;
14
14
  "logger"?: tLogger;
15
15
  }
16
- export default class Orchestrator extends MediatorUser {
16
+ export default class Orchestrator<T extends tEventMap<T> = iEventsMinimal> extends MediatorUser<T> {
17
17
  protected _Server: Server | null;
18
18
  protected _socketServer: WebSocketServer | SocketIOServer | null;
19
19
  protected _checkParameters: boolean;
@@ -121,7 +121,7 @@ class Orchestrator extends MediatorUser_1.default {
121
121
  this.checkServer().then(() => {
122
122
  this._Server.disableCors();
123
123
  }).catch((err) => {
124
- this.emit("error", err);
124
+ this._emitEventGenericForTSPurposeDONOTUSE("error", err);
125
125
  });
126
126
  return this;
127
127
  }
@@ -129,7 +129,7 @@ class Orchestrator extends MediatorUser_1.default {
129
129
  this.checkServer().then(() => {
130
130
  this._Server.enableCors();
131
131
  }).catch((err) => {
132
- this.emit("error", err);
132
+ this._emitEventGenericForTSPurposeDONOTUSE("error", err);
133
133
  });
134
134
  return this;
135
135
  }
@@ -303,7 +303,7 @@ class Orchestrator extends MediatorUser_1.default {
303
303
  return this.checkMediator().then(() => {
304
304
  // intercept errors to avoid non-catched ones
305
305
  this._Mediator.on("error", (err) => {
306
- this.emit("error", err);
306
+ this._emitEventGenericForTSPurposeDONOTUSE("error", err);
307
307
  });
308
308
  });
309
309
  });
@@ -339,7 +339,7 @@ class Orchestrator extends MediatorUser_1.default {
339
339
  return this.checkServer().then(() => {
340
340
  // intercept errors to avoid non-catched ones
341
341
  this._Server.on("error", (err) => {
342
- this.emit("error", err);
342
+ this._emitEventGenericForTSPurposeDONOTUSE("error", err);
343
343
  });
344
344
  });
345
345
  });
@@ -363,7 +363,7 @@ class Orchestrator extends MediatorUser_1.default {
363
363
  return this._Mediator.init(...data);
364
364
  }).then(() => {
365
365
  this.initialized = true;
366
- this.emit("initialized", ...data);
366
+ this._emitEventGenericForTSPurposeDONOTUSE("initialized", ...data);
367
367
  });
368
368
  });
369
369
  }
@@ -381,7 +381,7 @@ class Orchestrator extends MediatorUser_1.default {
381
381
  }).then(() => {
382
382
  this._Descriptor = null;
383
383
  this.initialized = false;
384
- this.emit("released", ...data);
384
+ this._emitEventGenericForTSPurposeDONOTUSE("released", ...data);
385
385
  });
386
386
  }
387
387
  // write
@@ -2,6 +2,7 @@ import MediatorUser, { type iMediatorUserOptions } from "./MediatorUser";
2
2
  import type { IncomingMessage, ServerResponse } from "node:http";
3
3
  import type { Server as WebSocketServer } from "ws";
4
4
  import type { Server as SocketIOServer } from "socket.io";
5
+ import type { tEventMap, iEventsMinimal } from "./DescriptorUser";
5
6
  export interface iClient {
6
7
  "id": string;
7
8
  "status": "CONNECTED" | "DISCONNECTED";
@@ -22,7 +23,7 @@ export interface iServerResponse extends ServerResponse {
22
23
  "body": string;
23
24
  "headers": Record<string, any>;
24
25
  }
25
- export default class Server extends MediatorUser {
26
+ export default class Server<T extends tEventMap<T> = iEventsMinimal> extends MediatorUser<T> {
26
27
  protected _socketServer: WebSocketServer | SocketIOServer | null;
27
28
  protected _checkParameters: boolean;
28
29
  protected _checkResponse: boolean;
@@ -634,7 +634,7 @@ class Server extends MediatorUser_1.default {
634
634
  return this._initWorkSpace(...data);
635
635
  }).then(() => {
636
636
  this.initialized = true;
637
- this.emit("initialized", ...data);
637
+ this._emitEventGenericForTSPurposeDONOTUSE("initialized", ...data);
638
638
  });
639
639
  }
640
640
  release(...data) {
@@ -650,7 +650,7 @@ class Server extends MediatorUser_1.default {
650
650
  this._externalRessourcesDirectory = "";
651
651
  this._socketServer = null;
652
652
  this.initialized = false;
653
- this.emit("released", ...data);
653
+ this._emitEventGenericForTSPurposeDONOTUSE("released", ...data);
654
654
  }).then(() => {
655
655
  this.removeAllListeners();
656
656
  });
@@ -20,7 +20,7 @@ import { checkIntegerBetween, checkIntegerBetweenSync } from "./checkers/RangeEr
20
20
  import { checkArrayLength, checkArrayLengthSync } from "./checkers/RangeError/checkArrayLength";
21
21
  import { checkArrayLengthBetween, checkArrayLengthBetweenSync } from "./checkers/RangeError/checkArrayLengthBetween";
22
22
  export { checkExists, checkExistsSync, checkBoolean, checkBooleanSync, checkFunction, checkFunctionSync, checkNumber, checkNumberSync, checkObject, checkObjectSync, checkString, checkStringSync, checkArray, checkArraySync, checkInteger, checkIntegerSync, checkNonEmptyArray, checkNonEmptyArraySync, checkNonEmptyInteger, checkNonEmptyIntegerSync, checkNonEmptyNumber, checkNonEmptyNumberSync, checkNonEmptyObject, checkNonEmptyObjectSync, checkNonEmptyString, checkNonEmptyStringSync, checkNumberBetween, checkNumberBetweenSync, checkObjectLength, checkObjectLengthSync, checkObjectLengthBetween, checkObjectLengthBetweenSync, checkStringLength, checkStringLengthSync, checkStringLengthBetween, checkStringLengthBetweenSync, checkIntegerBetween, checkIntegerBetweenSync, checkArrayLength, checkArrayLengthSync, checkArrayLengthBetween, checkArrayLengthBetweenSync };
23
- import DescriptorUser, { type iDescriptorUserOptions, type tLogType, type tLogger } from "./components/DescriptorUser";
23
+ import DescriptorUser, { type iDescriptorUserOptions, type tLogType, type tLogger, type iEventsMinimal } from "./components/DescriptorUser";
24
24
  import Mediator, { type iUrlAllowedParameters } from "./components/Mediator";
25
25
  import MediatorUser, { type iMediatorUserOptions } from "./components/MediatorUser";
26
26
  import Orchestrator, { type iOrchestratorOptions } from "./components/Orchestrator";
@@ -28,5 +28,5 @@ import Server, { type iClient, type iServerResponse } from "./components/Server"
28
28
  import UnauthorizedError from "./components/errors/UnauthorizedError";
29
29
  import NotFoundError from "./components/errors/NotFoundError";
30
30
  import LockedError from "./components/errors/LockedError";
31
- export type { tLogType, tLogger, iUrlAllowedParameters, iClient, iServerResponse };
31
+ export type { tLogType, tLogger, iEventsMinimal, iUrlAllowedParameters, iClient, iServerResponse };
32
32
  export { DescriptorUser, type iDescriptorUserOptions, Mediator, MediatorUser, type iMediatorUserOptions, Orchestrator, type iOrchestratorOptions, Server, UnauthorizedError, NotFoundError, LockedError };
@@ -1,4 +1,4 @@
1
- import { OpenApiDocument } from "express-openapi-validate";
1
+ import type { OpenApiDocument } from "express-openapi-validate";
2
2
  export type tMethod = "get" | "put" | "post" | "delete" | "options" | "head" | "patch" | "trace";
3
3
  export interface iPathMethod {
4
4
  "path": string;
@@ -1,2 +1,2 @@
1
- import { iIncomingMessage } from "../../components/Server";
1
+ import type { iIncomingMessage } from "../../components/Server";
2
2
  export default function extractCookies(req: iIncomingMessage): Record<string, string>;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
 
3
3
  "name": "node-pluginsmanager-plugin",
4
- "version": "6.4.5",
4
+ "version": "6.5.0",
5
5
  "description": "An abstract parent plugin for node-pluginsmanager",
6
6
 
7
7
  "type": "commonjs",
@@ -43,13 +43,13 @@
43
43
  },
44
44
 
45
45
  "dependencies": {
46
- "@apidevtools/swagger-parser": "12.0.0",
46
+ "@apidevtools/swagger-parser": "12.1.0",
47
47
  "express-openapi-validate": "0.6.1",
48
48
  "uniqid": "5.4.0"
49
49
  },
50
50
  "devDependencies": {
51
- "@types/express": "5.0.3",
52
- "@types/node": "24.3.0",
51
+ "@types/express": "5.0.5",
52
+ "@types/node": "24.9.2",
53
53
  "@types/socket.io": "3.0.2",
54
54
  "@types/uniqid": "5.3.4",
55
55
  "@types/ws": "8.18.1",
@@ -58,13 +58,13 @@
58
58
  "eslint-plugin-personnallinter": "git+ssh://git@github.com/Psychopoulet/eslint-plugin-personnallinter",
59
59
  "express": "5.1.0",
60
60
  "husky": "9.1.7",
61
- "mocha": "11.7.1",
61
+ "mocha": "11.7.4",
62
62
  "nyc": "17.1.0",
63
63
  "openapi-types": "12.1.3",
64
- "rimraf": "6.0.1",
64
+ "rimraf": "6.1.0",
65
65
  "socket.io": "4.8.1",
66
66
  "socket.io-client": "4.8.1",
67
- "typescript": "5.9.2",
67
+ "typescript": "5.9.3",
68
68
  "used-deps-analyzer": "0.1.8",
69
69
  "ws": "8.18.3"
70
70
  },