@digipair/skill-client-websocket 0.90.0 → 0.91.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/.swcrc ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "jsc": {
3
+ "target": "es2017",
4
+ "parser": {
5
+ "syntax": "typescript",
6
+ "decorators": true,
7
+ "dynamicImport": true
8
+ },
9
+ "transform": {
10
+ "decoratorMetadata": true,
11
+ "legacyDecorator": true
12
+ },
13
+ "keepClassNames": true,
14
+ "externalHelpers": true,
15
+ "loose": true
16
+ },
17
+ "module": {
18
+ "type": "es6"
19
+ },
20
+ "sourceMaps": true,
21
+ "exclude": [
22
+ "jest.config.ts",
23
+ ".*\\.spec.tsx?$",
24
+ ".*\\.test.tsx?$",
25
+ "./src/jest-setup.ts$",
26
+ "./**/jest-setup.ts$"
27
+ ]
28
+ }
package/README.md ADDED
@@ -0,0 +1,7 @@
1
+ # mylib
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Building
6
+
7
+ Run `nx build mylib` to build the library.
@@ -0,0 +1,22 @@
1
+ import baseConfig from '../../eslint.config.mjs';
2
+
3
+ export default [
4
+ ...baseConfig,
5
+ {
6
+ files: ['**/*.json'],
7
+ rules: {
8
+ '@nx/dependency-checks': [
9
+ 'error',
10
+ {
11
+ ignoredFiles: [
12
+ '{projectRoot}/eslint.config.{js,cjs,mjs}',
13
+ '{projectRoot}/rollup.config.{js,ts,mjs,mts,cjs,cts}',
14
+ ],
15
+ },
16
+ ],
17
+ },
18
+ languageOptions: {
19
+ parser: await import('jsonc-eslint-parser'),
20
+ },
21
+ },
22
+ ];
package/package.json CHANGED
@@ -1,15 +1,28 @@
1
1
  {
2
2
  "name": "@digipair/skill-client-websocket",
3
- "version": "0.90.0",
3
+ "version": "0.91.0-0",
4
+ "type": "module",
5
+ "main": "dist/libs/skill-client-websocket/index.cjs.js",
6
+ "module": "dist/libs/skill-client-websocket/index.esm.js",
7
+ "types": "dist/libs/skill-client-websocket/index.esm.d.ts",
8
+ "exports": {
9
+ "./package.json": "./libs/skill-client-websocket/package.json",
10
+ ".": {
11
+ "development": "./dist/libs/skill-client-websocket/src/index.ts",
12
+ "types": "./dist/libs/skill-client-websocket/index.esm.d.ts",
13
+ "import": "./dist/libs/skill-client-websocket/index.esm.js",
14
+ "default": "./dist/libs/skill-client-websocket/index.cjs.js"
15
+ }
16
+ },
4
17
  "keywords": [
5
18
  "digipair",
6
19
  "web",
7
- "service",
8
- "tool"
20
+ "service"
9
21
  ],
10
- "dependencies": {
11
- "ws": "^8.18.0"
22
+ "nx": {
23
+ "name": "skill-client-websocket"
12
24
  },
13
- "main": "./index.cjs.js",
14
- "module": "./index.esm.js"
15
- }
25
+ "dependencies": {
26
+ "@digipair/engine": "0.91.0-0"
27
+ }
28
+ }
@@ -0,0 +1,28 @@
1
+ const { withNx } = require('@nx/rollup/with-nx');
2
+
3
+ module.exports = withNx(
4
+ {
5
+ main: 'libs/skill-client-websocket/src/index.ts',
6
+ outputPath: 'dist/libs/skill-client-websocket',
7
+ tsConfig: 'libs/skill-client-websocket/tsconfig.lib.json',
8
+ compiler: 'swc',
9
+ format: ['esm', "cjs"],
10
+ assets: [
11
+ {
12
+ input: 'libs/skill-client-websocket/',
13
+ glob: 'package.json',
14
+ output: '.'
15
+ },
16
+ {
17
+ input: 'libs/skill-client-websocket/src/',
18
+ glob: '*.json',
19
+ output: '.'
20
+ }
21
+ ]
22
+ },
23
+ {
24
+ // Provide additional rollup configuration here. See: https://rollupjs.org/configuration-options
25
+ // e.g.
26
+ // output: { sourcemap: true },
27
+ }
28
+ );
@@ -0,0 +1 @@
1
+ declare module 'handlebars/dist/handlebars.min.js';
@@ -0,0 +1,7 @@
1
+ import { skillWebsocket } from './skill-client-websocket';
2
+
3
+ describe('skillWebsocket', () => {
4
+ it('should work', () => {
5
+ expect(skillWebsocket()).toEqual('skill-client-websocket');
6
+ });
7
+ });
@@ -0,0 +1,130 @@
1
+ /* eslint-disable @typescript-eslint/no-unused-vars */
2
+ import { PinsSettings, executePinsList } from '@digipair/engine';
3
+
4
+ const WS = typeof WebSocket === 'undefined' ? require('ws') : WebSocket;
5
+
6
+ class ClientWebSocketService {
7
+ private retryInterval!: number;
8
+ private maxRetries!: number;
9
+ private retryCount = 0;
10
+
11
+ ws: WebSocket | null = null;
12
+ cwssForceClose = false;
13
+
14
+ async send(params: any, _pinsSettingsList: PinsSettings[], context: any): Promise<any> {
15
+ const { websocket = context.websocket, message } = params;
16
+ return websocket.ws?.send(JSON.stringify(message));
17
+ }
18
+
19
+ async close(params: any, _pinsSettingsList: PinsSettings[], context: any): Promise<any> {
20
+ const { websocket = context.websocket } = params;
21
+ websocket.cwssForceClose = true;
22
+ return websocket.ws?.close();
23
+ }
24
+
25
+ async connect(params: any, pinsSettingsList: PinsSettings[], context: any): Promise<any> {
26
+ const {
27
+ url = '',
28
+ message = [],
29
+ open = [],
30
+ close = [],
31
+ error = [],
32
+ retryInterval = 1000,
33
+ maxRetries = 10,
34
+ } = params;
35
+
36
+ this.retryInterval = retryInterval;
37
+ this.maxRetries = maxRetries;
38
+
39
+ // Crée une nouvelle instance WebSocket
40
+ this.ws = new WS(url, { signal: context.protected?.signal }) as WebSocket;
41
+
42
+ // Event onopen: Connexion réussie
43
+ this.ws.onopen = async () => {
44
+ this.retryCount = 0; // Réinitialise le compteur de tentatives après une connexion réussie
45
+
46
+ try {
47
+ await executePinsList(open, { ...context, websocket: this }, `${context.__PATH__}.open`);
48
+ } catch (error: any) {
49
+ console.error(error);
50
+
51
+ const skillLogger = require('@digipair/skill-logger');
52
+ skillLogger.addLog(context, 'ERROR', error.message);
53
+ }
54
+ };
55
+
56
+ // Event onmessage: Réception d'un message
57
+ this.ws.onmessage = async (event: any) => {
58
+ try {
59
+ await executePinsList(message, {
60
+ ...context,
61
+ message: JSON.parse(event.data),
62
+ websocket: this,
63
+ }, `${context.__PATH__}.message`);
64
+ } catch (error: any) {
65
+ console.error(error);
66
+
67
+ const skillLogger = require('@digipair/skill-logger');
68
+ skillLogger.addLog(context, 'ERROR', error.message);
69
+ }
70
+ };
71
+
72
+ // Event onclose: Déconnexion
73
+ this.ws.onclose = async () => {
74
+ this.ws = null;
75
+ const reconnect = this.cwssForceClose
76
+ ? false
77
+ : this.reconnectWebSocket(params, pinsSettingsList, context);
78
+
79
+ if (!reconnect) {
80
+ try {
81
+ await executePinsList(close, { ...context, websocket: this }, `${context.__PATH__}.close`);
82
+ } catch (error: any) {
83
+ console.error(error);
84
+
85
+ const skillLogger = require('@digipair/skill-logger');
86
+ skillLogger.addLog(context, 'ERROR', error.message);
87
+ }
88
+ }
89
+ };
90
+
91
+ // Event onerror: Erreur
92
+ this.ws.onerror = async (err: Event) => {
93
+ try {
94
+ await executePinsList(error, { ...context, error: err, websocket: this }, `${context.__PATH__}.error`);
95
+ } catch (error: any) {
96
+ console.error(error);
97
+
98
+ const skillLogger = require('@digipair/skill-logger');
99
+ skillLogger.addLog(context, 'ERROR', error.message);
100
+ }
101
+
102
+ this.ws?.close(); // Ferme la connexion en cas d'erreur
103
+ };
104
+
105
+ return this;
106
+ }
107
+
108
+ private reconnectWebSocket(params: any, pinsSettingsList: PinsSettings[], context: any) {
109
+ if (this.retryCount >= this.maxRetries) {
110
+ return false;
111
+ }
112
+
113
+ setTimeout(() => {
114
+ this.retryCount++;
115
+ this.retryInterval *= 2; // Double l'intervalle entre les tentatives
116
+ this.connect(params, pinsSettingsList, context);
117
+ }, this.retryInterval);
118
+
119
+ return true;
120
+ }
121
+ }
122
+
123
+ export const connect = (params: any, pinsSettingsList: PinsSettings[], context: any) =>
124
+ new ClientWebSocketService().connect(params, pinsSettingsList, context);
125
+
126
+ export const send = (params: any, pinsSettingsList: PinsSettings[], context: any) =>
127
+ new ClientWebSocketService().send(params, pinsSettingsList, context);
128
+
129
+ export const close = (params: any, pinsSettingsList: PinsSettings[], context: any) =>
130
+ new ClientWebSocketService().close(params, pinsSettingsList, context);
package/tsconfig.json ADDED
@@ -0,0 +1,16 @@
1
+ {
2
+ "extends": "../../tsconfig.base.json",
3
+ "files": [],
4
+ "include": [],
5
+ "references": [
6
+ {
7
+ "path": "../skill-logger"
8
+ },
9
+ {
10
+ "path": "../engine"
11
+ },
12
+ {
13
+ "path": "./tsconfig.lib.json"
14
+ }
15
+ ]
16
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "extends": "../../tsconfig.base.json",
3
+ "compilerOptions": {
4
+ "rootDir": "src",
5
+ "outDir": "dist",
6
+ "tsBuildInfoFile": "dist/tsconfig.lib.tsbuildinfo",
7
+ "emitDeclarationOnly": true,
8
+ "module": "esnext",
9
+ "moduleResolution": "node",
10
+ "forceConsistentCasingInFileNames": true,
11
+ "types": ["node"]
12
+ },
13
+ "include": ["src/**/*.ts"],
14
+ "references": [
15
+ {
16
+ "path": "../skill-logger/tsconfig.lib.json"
17
+ },
18
+ {
19
+ "path": "../engine/tsconfig.lib.json"
20
+ }
21
+ ]
22
+ }
package/index.cjs.d.ts DELETED
@@ -1 +0,0 @@
1
- export * from "./src/index";
package/index.cjs.js DELETED
@@ -1,122 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var engine = require('@digipair/engine');
6
-
7
- function _extends() {
8
- _extends = Object.assign || function assign(target) {
9
- for(var i = 1; i < arguments.length; i++){
10
- var source = arguments[i];
11
- for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
12
- }
13
- return target;
14
- };
15
- return _extends.apply(this, arguments);
16
- }
17
-
18
- const WS = typeof WebSocket === 'undefined' ? require('ws') : WebSocket;
19
- let ClientWebSocketService = class ClientWebSocketService {
20
- async send(params, _pinsSettingsList, context) {
21
- var _websocket_ws;
22
- const { websocket = context.websocket, message } = params;
23
- return (_websocket_ws = websocket.ws) == null ? void 0 : _websocket_ws.send(JSON.stringify(message));
24
- }
25
- async close(params, _pinsSettingsList, context) {
26
- var _websocket_ws;
27
- const { websocket = context.websocket } = params;
28
- websocket.cwssForceClose = true;
29
- return (_websocket_ws = websocket.ws) == null ? void 0 : _websocket_ws.close();
30
- }
31
- async connect(params, pinsSettingsList, context) {
32
- var _context_protected;
33
- const { url = '', message = [], open = [], close = [], error = [], retryInterval = 1000, maxRetries = 10 } = params;
34
- this.retryInterval = retryInterval;
35
- this.maxRetries = maxRetries;
36
- // Crée une nouvelle instance WebSocket
37
- this.ws = new WS(url, {
38
- signal: (_context_protected = context.protected) == null ? void 0 : _context_protected.signal
39
- });
40
- // Event onopen: Connexion réussie
41
- this.ws.onopen = async ()=>{
42
- this.retryCount = 0; // Réinitialise le compteur de tentatives après une connexion réussie
43
- try {
44
- await engine.executePinsList(open, _extends({}, context, {
45
- websocket: this
46
- }), `${context.__PATH__}.open`);
47
- } catch (error) {
48
- console.error(error);
49
- const skillLogger = require('@digipair/skill-logger');
50
- skillLogger.addLog(context, 'ERROR', error.message);
51
- }
52
- };
53
- // Event onmessage: Réception d'un message
54
- this.ws.onmessage = async (event)=>{
55
- try {
56
- await engine.executePinsList(message, _extends({}, context, {
57
- message: JSON.parse(event.data),
58
- websocket: this
59
- }), `${context.__PATH__}.message`);
60
- } catch (error) {
61
- console.error(error);
62
- const skillLogger = require('@digipair/skill-logger');
63
- skillLogger.addLog(context, 'ERROR', error.message);
64
- }
65
- };
66
- // Event onclose: Déconnexion
67
- this.ws.onclose = async ()=>{
68
- this.ws = null;
69
- const reconnect = this.cwssForceClose ? false : this.reconnectWebSocket(params, pinsSettingsList, context);
70
- if (!reconnect) {
71
- try {
72
- await engine.executePinsList(close, _extends({}, context, {
73
- websocket: this
74
- }), `${context.__PATH__}.close`);
75
- } catch (error) {
76
- console.error(error);
77
- const skillLogger = require('@digipair/skill-logger');
78
- skillLogger.addLog(context, 'ERROR', error.message);
79
- }
80
- }
81
- };
82
- // Event onerror: Erreur
83
- this.ws.onerror = async (err)=>{
84
- var _this_ws;
85
- try {
86
- await engine.executePinsList(error, _extends({}, context, {
87
- error: err,
88
- websocket: this
89
- }), `${context.__PATH__}.error`);
90
- } catch (error) {
91
- console.error(error);
92
- const skillLogger = require('@digipair/skill-logger');
93
- skillLogger.addLog(context, 'ERROR', error.message);
94
- }
95
- (_this_ws = this.ws) == null ? void 0 : _this_ws.close(); // Ferme la connexion en cas d'erreur
96
- };
97
- return this;
98
- }
99
- reconnectWebSocket(params, pinsSettingsList, context) {
100
- if (this.retryCount >= this.maxRetries) {
101
- return false;
102
- }
103
- setTimeout(()=>{
104
- this.retryCount++;
105
- this.retryInterval *= 2; // Double l'intervalle entre les tentatives
106
- this.connect(params, pinsSettingsList, context);
107
- }, this.retryInterval);
108
- return true;
109
- }
110
- constructor(){
111
- this.retryCount = 0;
112
- this.ws = null;
113
- this.cwssForceClose = false;
114
- }
115
- };
116
- const connect = (params, pinsSettingsList, context)=>new ClientWebSocketService().connect(params, pinsSettingsList, context);
117
- const send = (params, pinsSettingsList, context)=>new ClientWebSocketService().send(params, pinsSettingsList, context);
118
- const close = (params, pinsSettingsList, context)=>new ClientWebSocketService().close(params, pinsSettingsList, context);
119
-
120
- exports.close = close;
121
- exports.connect = connect;
122
- exports.send = send;