@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 +28 -0
- package/README.md +7 -0
- package/eslint.config.mjs +22 -0
- package/package.json +21 -8
- package/rollup.config.cjs +28 -0
- package/src/handlebars.d.ts +1 -0
- package/src/lib/skill-client-websocket.spec.ts +7 -0
- package/src/lib/skill-client-websocket.ts +130 -0
- package/tsconfig.json +16 -0
- package/tsconfig.lib.json +22 -0
- package/index.cjs.d.ts +0 -1
- package/index.cjs.js +0 -122
- package/index.esm.js +0 -28085
- package/libs/skill-client-websocket/src/lib/skill-client-websocket.d.ts +0 -4
- /package/{index.d.ts → src/index.d.ts} +0 -0
- /package/{libs/skill-client-websocket/src/index.d.ts → src/index.ts} +0 -0
- /package/{schema.fr.json → src/schema.fr.json} +0 -0
- /package/{schema.json → src/schema.json} +0 -0
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,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.
|
|
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
|
-
"
|
|
11
|
-
"
|
|
22
|
+
"nx": {
|
|
23
|
+
"name": "skill-client-websocket"
|
|
12
24
|
},
|
|
13
|
-
"
|
|
14
|
-
|
|
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,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,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;
|