@siemsiem/tonpleun 0.1.1 → 1.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.
Files changed (48) hide show
  1. package/dist/GEN.d.ts +1 -0
  2. package/dist/GEN.js +12 -0
  3. package/dist/GEN.js.map +1 -0
  4. package/dist/client.d.ts +1 -0
  5. package/dist/client.js +49 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/client2.d.ts +1 -0
  8. package/dist/client2.js +26 -0
  9. package/dist/client2.js.map +1 -0
  10. package/dist/clientLib.d.ts +11 -0
  11. package/dist/clientLib.js +172 -0
  12. package/dist/clientLib.js.map +1 -0
  13. package/dist/helpers.d.ts +5 -0
  14. package/dist/helpers.js +17 -0
  15. package/dist/helpers.js.map +1 -0
  16. package/dist/server.d.ts +1 -0
  17. package/dist/server.js +145 -0
  18. package/dist/server.js.map +1 -0
  19. package/dist/test3.d.ts +1 -0
  20. package/dist/test3.js +16 -0
  21. package/dist/test3.js.map +1 -0
  22. package/dist/types.d.ts +77 -0
  23. package/dist/types.js +25 -0
  24. package/dist/types.js.map +1 -0
  25. package/dist/v1/client.d.ts +1 -0
  26. package/dist/v1/client.js +17 -0
  27. package/dist/v1/client.js.map +1 -0
  28. package/dist/v1/lib.d.ts +28 -0
  29. package/dist/v1/lib.js +191 -0
  30. package/dist/v1/lib.js.map +1 -0
  31. package/dist/v1/main.d.ts +1 -0
  32. package/dist/v1/main.js +195 -0
  33. package/dist/v1/main.js.map +1 -0
  34. package/dist/v1/test2.d.ts +1 -0
  35. package/dist/v1/test2.js +13 -0
  36. package/dist/v1/test2.js.map +1 -0
  37. package/package.json +10 -3
  38. package/src/GEN.ts +11 -0
  39. package/src/client.ts +1 -1
  40. package/src/client2.ts +4 -1
  41. package/src/clientLib.ts +40 -7
  42. package/src/server.ts +29 -3
  43. package/src/test3.ts +11 -0
  44. package/src/types.ts +11 -2
  45. package/tsconfig.json +0 -39
  46. package/webui/clientLib.js +0 -186
  47. package/webui/index.html +0 -22
  48. package/webui/main.js +0 -22
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const lib_js_1 = require("./lib.js");
4
+ async function main() {
5
+ await (0, lib_js_1.initializeClient)();
6
+ // Init onze services
7
+ function serviceEcho(args) {
8
+ if (lib_js_1.config['echo']) {
9
+ console.log('Echo service aangeroepen met args:', args);
10
+ }
11
+ return args[0] || "ontvangen";
12
+ }
13
+ await (0, lib_js_1.registerService)('test.echo', serviceEcho, ['message']);
14
+ await (0, lib_js_1.registerConfigItem)('echo', 'gebruik echo', lib_js_1.configType.bool, true);
15
+ }
16
+ main();
17
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/v1/client.ts"],"names":[],"mappings":";;AAAA,qCAAqG;AAErG,KAAK,UAAU,IAAI;IAEf,MAAM,IAAA,yBAAgB,GAAE,CAAC;IAEzB,sBAAsB;IACtB,SAAS,WAAW,CAAC,IAAW;QAC5B,IAAI,eAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE,IAAI,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC;IAClC,CAAC;IAED,MAAM,IAAA,wBAAe,EAAC,WAAW,EAAE,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAE7D,MAAM,IAAA,2BAAkB,EAAC,MAAM,EAAE,cAAc,EAAE,mBAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC5E,CAAC;AAED,IAAI,EAAE,CAAC"}
@@ -0,0 +1,28 @@
1
+ import WebSocket from 'ws';
2
+ export type Message = {
3
+ status: string;
4
+ human_readable: string;
5
+ callbackId?: number;
6
+ serviceId?: string;
7
+ args?: any[];
8
+ data?: any;
9
+ id?: string;
10
+ value?: any;
11
+ };
12
+ export declare enum configType {
13
+ str = 0,
14
+ bool = 1,
15
+ int = 2
16
+ }
17
+ export declare let config: Record<string, any>;
18
+ export declare let ws: WebSocket;
19
+ export declare let successHandler: ((data: any) => void) | null;
20
+ export declare let errorHandler: ((error: any) => void) | null;
21
+ export declare let debugLogging: boolean;
22
+ export declare function registerService(serviceId: string, handler: (args: any[]) => any, args?: string[]): void;
23
+ export declare function registerServiceAsync(serviceId: string, handler: (args: any[]) => any, args?: string[]): Promise<any>;
24
+ export declare function callService(serviceId: string, args: any[], onSuccess: (data: any) => void, onError: (error: any) => void): void;
25
+ export declare function callServiceAsync(serviceId: string, args: any[]): Promise<any>;
26
+ export declare function registerConfigItem(id: string, human_name: string, configType: configType, value: any): Promise<any>;
27
+ export declare function setConfigItem(id: string, value: any): Promise<unknown>;
28
+ export declare function initializeClient(): Promise<void>;
package/dist/v1/lib.js ADDED
@@ -0,0 +1,191 @@
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
+ exports.debugLogging = exports.errorHandler = exports.successHandler = exports.ws = exports.config = exports.configType = void 0;
7
+ exports.registerService = registerService;
8
+ exports.registerServiceAsync = registerServiceAsync;
9
+ exports.callService = callService;
10
+ exports.callServiceAsync = callServiceAsync;
11
+ exports.registerConfigItem = registerConfigItem;
12
+ exports.setConfigItem = setConfigItem;
13
+ exports.initializeClient = initializeClient;
14
+ const ws_1 = __importDefault(require("ws"));
15
+ const url = "ws://localhost:8765";
16
+ var configType;
17
+ (function (configType) {
18
+ configType[configType["str"] = 0] = "str";
19
+ configType[configType["bool"] = 1] = "bool";
20
+ configType[configType["int"] = 2] = "int";
21
+ })(configType || (exports.configType = configType = {}));
22
+ exports.config = {};
23
+ exports.successHandler = null;
24
+ exports.errorHandler = null;
25
+ exports.debugLogging = false;
26
+ let serviceHandlers = {};
27
+ let waitingForData = false;
28
+ function debugLog(...message) {
29
+ if (exports.debugLogging) {
30
+ console.log('[DEBUG]', message);
31
+ }
32
+ }
33
+ function parseData(msg) {
34
+ var _a;
35
+ if (exports.ws) {
36
+ if (msg.status === "200") {
37
+ debugLog('Ontvangen data:', msg.data);
38
+ if (exports.successHandler && !waitingForData)
39
+ (0, exports.successHandler)(msg.data);
40
+ }
41
+ else if (msg.status === "210") {
42
+ if (waitingForData && exports.successHandler)
43
+ (0, exports.successHandler)(msg.data);
44
+ }
45
+ else if (msg.status === '700') {
46
+ debugLog('Service oproep ontvangen:', msg.callbackId);
47
+ (_a = serviceHandlers[msg.serviceId || '']) === null || _a === void 0 ? void 0 : _a.call(serviceHandlers, msg.args || []);
48
+ exports.ws.send(JSON.stringify({
49
+ action: 'response',
50
+ callbackId: msg.callbackId,
51
+ data: msg.args,
52
+ }));
53
+ }
54
+ else if (msg.status === "600") {
55
+ debugLog('config update ontvangen');
56
+ if (msg === null || msg === void 0 ? void 0 : msg.id) {
57
+ exports.config[msg === null || msg === void 0 ? void 0 : msg.id] = msg === null || msg === void 0 ? void 0 : msg.value;
58
+ }
59
+ }
60
+ else {
61
+ if (exports.errorHandler)
62
+ (0, exports.errorHandler)(msg.data);
63
+ // console.log('error code', msg.status)
64
+ }
65
+ }
66
+ else {
67
+ console.error('WebSocket is niet geïnitialiseerd.');
68
+ }
69
+ }
70
+ function registerService(serviceId, handler, args) {
71
+ if (exports.ws) {
72
+ serviceHandlers[serviceId] = handler;
73
+ exports.ws.send(JSON.stringify({
74
+ action: 'register',
75
+ service: serviceId,
76
+ args: args || [],
77
+ }));
78
+ }
79
+ else {
80
+ console.error('WebSocket is niet geïnitialiseerd.');
81
+ }
82
+ }
83
+ async function registerServiceAsync(serviceId, handler, args) {
84
+ if (exports.ws) {
85
+ return new Promise((resolve, reject) => {
86
+ exports.successHandler = resolve;
87
+ exports.errorHandler = reject;
88
+ exports.ws.send(JSON.stringify({
89
+ action: 'get',
90
+ service: serviceId,
91
+ args: args,
92
+ }));
93
+ });
94
+ }
95
+ else {
96
+ return Promise.reject('WebSocket is niet geïnitialiseerd.');
97
+ }
98
+ }
99
+ // met callback
100
+ function callService(serviceId, args, onSuccess, onError) {
101
+ if (exports.ws) {
102
+ exports.successHandler = onSuccess;
103
+ exports.errorHandler = onError;
104
+ waitingForData = true;
105
+ exports.ws.send(JSON.stringify({
106
+ action: 'get',
107
+ service: serviceId,
108
+ args: args,
109
+ }));
110
+ }
111
+ else {
112
+ console.error('WebSocket is niet geïnitialiseerd.');
113
+ }
114
+ }
115
+ // met promise
116
+ async function callServiceAsync(serviceId, args) {
117
+ if (exports.ws) {
118
+ return new Promise((resolve, reject) => {
119
+ exports.successHandler = resolve;
120
+ exports.errorHandler = reject;
121
+ waitingForData = true;
122
+ exports.ws.send(JSON.stringify({
123
+ action: 'get',
124
+ service: serviceId,
125
+ args: args,
126
+ }));
127
+ });
128
+ }
129
+ else {
130
+ return Promise.reject('WebSocket is niet geïnitialiseerd.');
131
+ }
132
+ }
133
+ async function registerConfigItem(id, human_name, configType, value) {
134
+ if (exports.ws) {
135
+ exports.config[id] = value;
136
+ return new Promise((resolve, reject) => {
137
+ exports.successHandler = resolve;
138
+ exports.errorHandler = reject;
139
+ exports.ws.send(JSON.stringify({
140
+ action: "makeConfigOption",
141
+ human: human_name,
142
+ id: id,
143
+ configType: configType,
144
+ value: value
145
+ }));
146
+ });
147
+ }
148
+ else {
149
+ return Promise.reject('WebSocket is niet geïnitialiseerd.d');
150
+ }
151
+ }
152
+ async function setConfigItem(id, value) {
153
+ if (exports.ws) {
154
+ return new Promise((resolve, reject) => {
155
+ exports.successHandler = resolve;
156
+ exports.errorHandler = reject;
157
+ exports.ws.send(JSON.stringify({
158
+ action: "makeConfigOption",
159
+ id: id,
160
+ value: value
161
+ }));
162
+ });
163
+ }
164
+ else {
165
+ return Promise.reject('WebSocket is niet geïnitialiseerd.');
166
+ }
167
+ }
168
+ async function initializeClient() {
169
+ exports.ws = new ws_1.default(url);
170
+ exports.ws.on('open', () => {
171
+ debugLog('Verbonden met de server');
172
+ console.log('Verbonden met tonpleun server.');
173
+ });
174
+ exports.ws.on('message', (data) => {
175
+ parseData(JSON.parse(data.toString()));
176
+ });
177
+ exports.ws.on('close', () => {
178
+ debugLog('Verbinding gesloten');
179
+ console.log('Verbinding met tonpleun server gesloten.');
180
+ });
181
+ exports.ws.on('error', (error) => {
182
+ console.error('Fout opgetreden:', error);
183
+ });
184
+ // Wacht tot de verbinding is geopend
185
+ return new Promise((resolve) => {
186
+ exports.ws.on('open', () => {
187
+ resolve();
188
+ });
189
+ });
190
+ }
191
+ //# sourceMappingURL=lib.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../../src/v1/lib.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const ws_1 = require("ws");
4
+ var configType;
5
+ (function (configType) {
6
+ configType[configType["str"] = 0] = "str";
7
+ configType[configType["bool"] = 1] = "bool";
8
+ configType[configType["int"] = 2] = "int";
9
+ })(configType || (configType = {}));
10
+ ;
11
+ const clients = new Set();
12
+ function getServices(args) {
13
+ return Object.keys(servicesAvailable);
14
+ }
15
+ ;
16
+ let servicesAvailable = {
17
+ 'connector.status': {
18
+ id: 0,
19
+ args: [],
20
+ client: 'BUILTIN',
21
+ },
22
+ 'connector.services': {
23
+ id: 1,
24
+ args: [],
25
+ client: 'BUILTIN',
26
+ FUNC: getServices,
27
+ },
28
+ 'connector.echo': {
29
+ id: 2,
30
+ args: ['message'],
31
+ client: 'BUILTIN',
32
+ FUNC: (args) => args[0] || "ontvangen",
33
+ }
34
+ };
35
+ let configOptions = {};
36
+ let awaitingResponses = {};
37
+ const wss = new ws_1.WebSocketServer({ host: '0.0.0.0', port: 8765 });
38
+ wss.on('connection', (ws, req) => {
39
+ clients.add(ws);
40
+ console.log('Client verbonden:', req.socket.remoteAddress);
41
+ ws.on('message', async (raw) => {
42
+ const message = raw.toString();
43
+ console.log(`Ontvangen bericht van ${req.socket.remoteAddress}: ${message}`);
44
+ let data;
45
+ try {
46
+ data = JSON.parse(message);
47
+ }
48
+ catch (_a) {
49
+ ws.send(JSON.stringify({ status: '400', human_readable: 'Ongeldige JSON' }));
50
+ return;
51
+ }
52
+ if ((data === null || data === void 0 ? void 0 : data.action) === 'get') {
53
+ const service = servicesAvailable[data === null || data === void 0 ? void 0 : data.service];
54
+ if (service) {
55
+ if (service.client === 'BUILTIN') {
56
+ if (!service.FUNC) {
57
+ ws.send(JSON.stringify({
58
+ status: '200',
59
+ human_readable: 'online, geen functie om uit te voeren.',
60
+ data: null,
61
+ }));
62
+ }
63
+ else {
64
+ try {
65
+ const result = await Promise.resolve(service.FUNC((data === null || data === void 0 ? void 0 : data.args) || []));
66
+ ws.send(JSON.stringify({
67
+ status: '200',
68
+ human_readable: 'success',
69
+ data: result,
70
+ }));
71
+ }
72
+ catch (_b) {
73
+ ws.send(JSON.stringify({
74
+ status: '500',
75
+ human_readable: 'Fout bij uitvoeren van service',
76
+ }));
77
+ }
78
+ }
79
+ }
80
+ else {
81
+ const id = Date.now();
82
+ service.client.send(JSON.stringify({
83
+ status: '700',
84
+ human_readable: 'service call',
85
+ args: (data === null || data === void 0 ? void 0 : data.args) || [],
86
+ serviceId: service.id,
87
+ callbackId: id,
88
+ }));
89
+ awaitingResponses[id] = ws;
90
+ ws.send(JSON.stringify({
91
+ status: '202',
92
+ human_readable: 'Verzoek verzonden naar service client',
93
+ calbackId: id,
94
+ }));
95
+ }
96
+ }
97
+ else {
98
+ ws.send(JSON.stringify({ status: '404', human_readable: 'Service niet gevonden' }));
99
+ }
100
+ }
101
+ else if ((data === null || data === void 0 ? void 0 : data.action) == "register") {
102
+ const newSerivice = {
103
+ id: data === null || data === void 0 ? void 0 : data.service,
104
+ args: (data === null || data === void 0 ? void 0 : data.args) || [],
105
+ client: ws,
106
+ };
107
+ servicesAvailable[data === null || data === void 0 ? void 0 : data.service] = newSerivice;
108
+ ws.send(JSON.stringify({
109
+ status: '201',
110
+ human_readable: `Service ${data === null || data === void 0 ? void 0 : data.service} geregistreerd.`,
111
+ data: { serviceId: newSerivice.id },
112
+ }));
113
+ }
114
+ else if ((data === null || data === void 0 ? void 0 : data.action) == "response") {
115
+ const callbackId = data === null || data === void 0 ? void 0 : data.callbackId;
116
+ const responseData = data === null || data === void 0 ? void 0 : data.data;
117
+ const originalRequester = awaitingResponses[callbackId];
118
+ if (originalRequester) {
119
+ originalRequester.send(JSON.stringify({
120
+ status: '210',
121
+ human_readable: 'Response van service client',
122
+ data: responseData,
123
+ }));
124
+ delete awaitingResponses[callbackId];
125
+ }
126
+ else {
127
+ ws.send(JSON.stringify({
128
+ status: '404',
129
+ human_readable: 'Oorspronkelijke aanvrager niet gevonden voor deze callbackId',
130
+ }));
131
+ }
132
+ }
133
+ else if ((data === null || data === void 0 ? void 0 : data.action) === "getConfigOptions") {
134
+ ws.send(JSON.stringify({ status: "200", human_readable: "config data", data: configOptions }));
135
+ }
136
+ else if ((data === null || data === void 0 ? void 0 : data.action) === "makeConfigOption") {
137
+ configOptions[data === null || data === void 0 ? void 0 : data.id] = {
138
+ id: data === null || data === void 0 ? void 0 : data.id,
139
+ human_name: data === null || data === void 0 ? void 0 : data.human,
140
+ owner: ws,
141
+ configType: data === null || data === void 0 ? void 0 : data.configType,
142
+ value: data === null || data === void 0 ? void 0 : data.value
143
+ };
144
+ ws.send(JSON.stringify({ status: '200', human_readable: "gemaakt!" }));
145
+ }
146
+ else if ((data === null || data === void 0 ? void 0 : data.action) === "setConfig") {
147
+ if ((data === null || data === void 0 ? void 0 : data.id) && (data === null || data === void 0 ? void 0 : data.value)) {
148
+ let c = configOptions[data.id];
149
+ if (!(c)) {
150
+ ws.send(JSON.stringify({
151
+ status: '404',
152
+ human_readable: 'config item niet gevonden',
153
+ }));
154
+ }
155
+ else {
156
+ c.value = data.value;
157
+ configOptions[data.id] = c;
158
+ if (!(c.owner === "BUILTIN")) {
159
+ c.owner.send(JSON.stringify({
160
+ status: "600",
161
+ id: data.id,
162
+ value: data.value
163
+ }));
164
+ }
165
+ ws.send(JSON.stringify({ status: "200", human_readable: "Config geupdate" }));
166
+ }
167
+ }
168
+ else {
169
+ ws.send(JSON.stringify({
170
+ status: "400",
171
+ human_readable: "je verzoek was niet goed"
172
+ }));
173
+ }
174
+ }
175
+ });
176
+ ws.on('close', () => {
177
+ // vewijder alles wat deze client heet geregistreerd
178
+ for (const [name, service] of Object.entries(servicesAvailable)) {
179
+ if (service.client === ws) {
180
+ delete servicesAvailable[name];
181
+ console.log(`Service ${name} verwijderd vanwege client disconnect.`);
182
+ }
183
+ }
184
+ for (const [name, service] of Object.entries(configOptions)) {
185
+ if (service.owner === ws) {
186
+ delete servicesAvailable[name];
187
+ console.log(`config ${name} verwijderd vanwege client disconnect.`);
188
+ }
189
+ }
190
+ clients.delete(ws);
191
+ console.log('Client weg');
192
+ });
193
+ });
194
+ console.log('Server draait op ws://localhost:8765');
195
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/v1/main.ts"],"names":[],"mappings":";;AAAA,2BAAgD;AAUhD,IAAK,UAIJ;AAJD,WAAK,UAAU;IACX,yCAAG,CAAA;IACH,2CAAI,CAAA;IACJ,yCAAG,CAAA;AACP,CAAC,EAJI,UAAU,KAAV,UAAU,QAId;AAAA,CAAC;AASF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAa,CAAC;AAErC,SAAS,WAAW,CAAC,IAAW;IAC5B,OAAO,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC1C,CAAC;AAAA,CAAC;AAEF,IAAI,iBAAiB,GAA+B;IAChD,kBAAkB,EAAE;QAChB,EAAE,EAAE,CAAC;QACL,IAAI,EAAE,EAAE;QACR,MAAM,EAAE,SAAS;KACpB;IACD,oBAAoB,EAAE;QAClB,EAAE,EAAE,CAAC;QACL,IAAI,EAAE,EAAE;QACR,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,WAAW;KACpB;IACD,gBAAgB,EAAE;QACd,EAAE,EAAE,CAAC;QACL,IAAI,EAAE,CAAC,SAAS,CAAC;QACjB,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,CAAC,IAAW,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,WAAW;KAChD;CACJ,CAAC;AAEF,IAAI,aAAa,GAAiC,EAAE,CAAC;AAErD,IAAI,iBAAiB,GAA8B,EAAE,CAAC;AAEtD,MAAM,GAAG,GAAG,IAAI,oBAAe,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAEjE,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE;IAC7B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAE3D,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC3B,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,yBAAyB,GAAG,CAAC,MAAM,CAAC,aAAa,KAAK,OAAO,EAAE,CAAC,CAAC;QAE7E,IAAI,IAAS,CAAC;QACd,IAAI,CAAC;YACD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAAC,WAAM,CAAC;YACL,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;YAC7E,OAAO;QACX,CAAC;QAED,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,MAAK,KAAK,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAiB,CAAC,CAAC;YAE3D,IAAI,OAAO,EAAE,CAAC;gBACV,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;wBAChB,EAAE,CAAC,IAAI,CACH,IAAI,CAAC,SAAS,CAAC;4BACX,MAAM,EAAE,KAAK;4BACb,cAAc,EAAE,wCAAwC;4BACxD,IAAI,EAAE,IAAI;yBACb,CAAC,CACL,CAAC;oBACN,CAAC;yBAAM,CAAC;wBACJ,IAAI,CAAC;4BACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,KAAI,EAAE,CAAC,CAAC,CAAC;4BACrE,EAAE,CAAC,IAAI,CACH,IAAI,CAAC,SAAS,CAAC;gCACX,MAAM,EAAE,KAAK;gCACb,cAAc,EAAE,SAAS;gCACzB,IAAI,EAAE,MAAM;6BACf,CAAC,CACL,CAAC;wBACN,CAAC;wBAAC,WAAM,CAAC;4BACL,EAAE,CAAC,IAAI,CACH,IAAI,CAAC,SAAS,CAAC;gCACX,MAAM,EAAE,KAAK;gCACb,cAAc,EAAE,gCAAgC;6BACnD,CAAC,CACL,CAAC;wBACN,CAAC;oBACL,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBACtB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;wBAC/B,MAAM,EAAE,KAAK;wBACb,cAAc,EAAE,cAAc;wBAC9B,IAAI,EAAE,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,KAAI,EAAE;wBACtB,SAAS,EAAE,OAAO,CAAC,EAAE;wBACrB,UAAU,EAAE,EAAE;qBACjB,CAAC,CAAC,CAAC;oBACJ,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;oBAC3B,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;wBACnB,MAAM,EAAE,KAAK;wBACb,cAAc,EAAE,uCAAuC;wBACvD,SAAS,EAAE,EAAE;qBAChB,CAAC,CAAC,CAAC;gBACR,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,uBAAuB,EAAE,CAAC,CAAC,CAAC;YACxF,CAAC;QACL,CAAC;aACI,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,KAAI,UAAU,EAAE,CAAC;YAClC,MAAM,WAAW,GAAe;gBAC5B,EAAE,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO;gBACjB,IAAI,EAAE,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,KAAI,EAAE;gBACtB,MAAM,EAAE,EAAE;aACb,CAAC;YACF,iBAAiB,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAiB,CAAC,GAAG,WAAW,CAAC;YACzD,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBACnB,MAAM,EAAE,KAAK;gBACb,cAAc,EAAE,WAAW,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,iBAAiB;gBACzD,IAAI,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,EAAE;aACtC,CAAC,CAAC,CAAC;QAER,CAAC;aACI,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,KAAI,UAAU,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,CAAC;YACpC,MAAM,YAAY,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAC;YAEhC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;YACxD,IAAI,iBAAiB,EAAE,CAAC;gBACpB,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;oBAClC,MAAM,EAAE,KAAK;oBACb,cAAc,EAAE,6BAA6B;oBAC7C,IAAI,EAAE,YAAY;iBACrB,CAAC,CAAC,CAAC;gBACJ,OAAO,iBAAiB,CAAC,UAAU,CAAC,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACJ,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;oBACnB,MAAM,EAAE,KAAK;oBACb,cAAc,EAAE,8DAA8D;iBACjF,CAAC,CAAC,CAAC;YACR,CAAC;QAEL,CAAC;aACI,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,MAAK,kBAAkB,EAAE,CAAC;YAC3C,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC,CAAA;QAClG,CAAC;aAAM,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,MAAK,kBAAkB,EAAE,CAAC;YAC7C,aAAa,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,EAAE,CAAC,GAAG;gBACtB,EAAE,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,EAAE;gBACZ,UAAU,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK;gBACvB,KAAK,EAAE,EAAE;gBACT,UAAU,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU;gBAC5B,KAAK,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK;aACrB,CAAA;YACD,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC,CAAC,CAAA;QAC1E,CAAC;aAAM,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,MAAK,WAAW,EAAE,CAAC;YACtC,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,EAAE,MAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,CAAA,EAAE,CAAC;gBAC1B,IAAI,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC/B,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACP,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;wBACnB,MAAM,EAAE,KAAK;wBACb,cAAc,EAAE,2BAA2B;qBAC9C,CAAC,CAAC,CAAC;gBACR,CAAC;qBAAM,CAAC;oBACJ,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;oBACrB,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;oBAC3B,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,EAAE,CAAC;wBAC3B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;4BACxB,MAAM,EAAE,KAAK;4BACb,EAAE,EAAE,IAAI,CAAC,EAAE;4BACX,KAAK,EAAE,IAAI,CAAC,KAAK;yBACpB,CAAC,CAAC,CAAA;oBACP,CAAC;oBACD,EAAE,CAAC,IAAI,CACH,IAAI,CAAC,SAAS,CACV,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,CACvD,CACJ,CAAA;gBACL,CAAC;YAEL,CAAC;iBAAM,CAAC;gBACJ,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;oBACnB,MAAM,EAAE,KAAK;oBACb,cAAc,EAAE,0BAA0B;iBAC7C,CAAC,CAAC,CAAA;YACP,CAAC;QACL,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QAChB,oDAAoD;QACpD,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC9D,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;gBACxB,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,wCAAwC,CAAC,CAAC;YACzE,CAAC;QACL,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YAC1D,IAAI,OAAO,CAAC,KAAK,KAAK,EAAE,EAAE,CAAC;gBACvB,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,wCAAwC,CAAC,CAAC;YACxE,CAAC;QACL,CAAC;QAED,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAE9B,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const lib_js_1 = require("./lib.js");
4
+ async function main() {
5
+ await (0, lib_js_1.initializeClient)();
6
+ const test = await (0, lib_js_1.callServiceAsync)('test.echo', ['Hallo van de client!']);
7
+ console.log('Antwoord van echo service (promise):', test);
8
+ await (0, lib_js_1.setConfigItem)('echo', false);
9
+ const test2 = await (0, lib_js_1.callServiceAsync)('test.echo', ['Hallo van de client!']);
10
+ console.log('Antwoord van echo service (promise):', test2);
11
+ }
12
+ main();
13
+ //# sourceMappingURL=test2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test2.js","sourceRoot":"","sources":["../../src/v1/test2.ts"],"names":[],"mappings":";;AAAA,qCAA6E;AAE7E,KAAK,UAAU,IAAI;IACf,MAAM,IAAA,yBAAgB,GAAE,CAAC;IAEzB,MAAM,IAAI,GAAG,MAAM,IAAA,yBAAgB,EAAC,WAAW,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAA;IAC1E,OAAO,CAAC,GAAG,CAAC,sCAAsC,EAAE,IAAI,CAAC,CAAC;IAE1D,MAAM,IAAA,sBAAa,EAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAElC,MAAM,KAAK,GAAG,MAAM,IAAA,yBAAgB,EAAC,WAAW,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAA;IAC3E,OAAO,CAAC,GAAG,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;AAC/D,CAAC;AACD,IAAI,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@siemsiem/tonpleun",
3
- "version": "0.1.1",
3
+ "version": "1.0.0",
4
4
  "description": "uhhh dit zijn zeer goede docs (nee) tonpleun is een websocket server die websocket clients verzoeken laat maken aan andere websocket clients die zich als service registreren. voor nu is tonpleun in js maar wrs moet ik het porten naar python omdat ik dan meer code kan hergebruiken voor andere projecten.",
5
5
  "keywords": [],
6
6
  "homepage": "https://github.com/supersiem/Tonpleun#readme",
@@ -15,11 +15,18 @@
15
15
  "author": "Siemvk",
16
16
  "type": "module",
17
17
  "main": "./dist/clientLib.js",
18
+ "files": [
19
+ "dist",
20
+ "src"
21
+ ],
18
22
  "scripts": {
19
23
  "start": "tsc && clear && node ./dist/server.js",
20
24
  "test": "tsc && clear && node ./dist/client.js",
21
25
  "testDeTest": "tsc && clear && node ./dist/client2.js",
22
- "build": "tsc"
26
+ "prebuild": "npm run clean",
27
+ "clean": "rm -rf ./dist",
28
+ "build": "tsc --module commonjs",
29
+ "preversion": "npm run build"
23
30
  },
24
31
  "dependencies": {
25
32
  "@types/ws": "^8.18.1",
@@ -29,4 +36,4 @@
29
36
  "typescript": "^5.9.3"
30
37
  },
31
38
  "packageManager": "pnpm@10.12.1"
32
- }
39
+ }
package/src/GEN.ts ADDED
@@ -0,0 +1,11 @@
1
+ /* Dit bestand is automatisch gegenereerd door Tonpleun. Wijzigingen hierin worden overschreven. */
2
+
3
+ import { getService } from './clientLib.js';
4
+
5
+ // Services for client: testClient
6
+ // echo
7
+ export async function echo(tekst: string): Promise<any> {
8
+ return await getService('echo', 'testClient', [tekst]);
9
+ }
10
+
11
+ // Services for client: Client2
package/src/client.ts CHANGED
@@ -6,7 +6,7 @@ function echo(args: any[]) {
6
6
  }
7
7
  async function main() {
8
8
  await initializeClient('testClient');
9
- console.log(await registerService('echo', ['string'], echo))
9
+ console.log(await registerService('echo', [{ name: 'tekst', type: 'string' }], echo))
10
10
  console.log(await getService('getServices', 'tonpleun', []))
11
11
  // Config tests: register and update a config item, then verify via tonpleun service
12
12
  await registerConfigItem('greeting', 'Simple greeting config', 'hello', 'conf:greeting');
package/src/client2.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { getService, initializeClient, SetConfigItem } from './clientLib.js'
1
+ import { getService, initializeClient, SetConfigItem, genHelper } from './clientLib.js'
2
2
  import assert from 'node:assert/strict';
3
3
  async function main() {
4
4
  await initializeClient('Client2');
@@ -14,5 +14,8 @@ async function main() {
14
14
  const configsAfterSet: any = await getService('getConfigs', 'tonpleun', []);
15
15
  assert.equal(configsAfterSet['testClient']['conf:greeting'].value, 'bye');
16
16
  console.log('[Client2] remote config update OK');
17
+
18
+ const genResult = await genHelper();
19
+ console.log('[Client2] genHelper result length:', genResult.length);
17
20
  }
18
21
  main();
package/src/clientLib.ts CHANGED
@@ -1,7 +1,10 @@
1
1
  import WebSocket from 'ws';
2
2
  import { randomUUID } from 'crypto';
3
- import { requestType, stringPacketOptions, type getServicePacketClient, type GetServiceResponsePacketToServer, type GetServiceResponsePacketToClient, type InitPacket, type packet, type StringPacket, type registerConfigPacket, type setConfigPacket, type fakeTypeType } from './types.js';
3
+ import { requestType, stringPacketOptions, type getServicePacketClient, type GetServiceResponsePacketToServer, type GetServiceResponsePacketToClient, type InitPacket, type packet, type StringPacket, type registerConfigPacket, type setConfigPacket, type fakeTypeType, type namedFakeType, InitResponsePacket } from './types.js';
4
4
  import { WsSend } from './helpers.js';
5
+ import { assert } from 'console';
6
+ import { writeFileSync, mkdirSync } from 'fs';
7
+ import { dirname } from 'path';
5
8
 
6
9
  const url = "ws://localhost:8765";
7
10
  export let ws: WebSocket;
@@ -9,6 +12,22 @@ const serviceCallbacks = new Map<string, (...args: any[]) => any>();
9
12
  let clinetIDStore = "error";
10
13
  const localConfigs = new Map<string, registerConfigPacket>();
11
14
 
15
+ const VERSION = {
16
+ MAJOR: 1,
17
+ MINOR: 1,
18
+ PATCH: 2
19
+ }
20
+ export async function genHelper() {
21
+ console.info('genHelper called');
22
+ const result = await getService('genHelper', 'tonpleun', []);
23
+
24
+ const outPath = dirname('./src/GEN.ts');
25
+ mkdirSync(outPath, { recursive: true });
26
+ writeFileSync('./src/GEN.ts', result);
27
+ console.info('GEN.ts gegenereerd in ./src/GEN.ts');
28
+ return result;
29
+ }
30
+
12
31
  export async function awaitServiceMessage(expectedFor: stringPacketOptions): Promise<StringPacket> {
13
32
  return new Promise<StringPacket>((resolve) => {
14
33
  const handler = (raw: Buffer) => {
@@ -48,7 +67,7 @@ export async function SetConfigItem(idthing: string, newValue: string, clientId?
48
67
  });
49
68
  }
50
69
 
51
- export async function registerService(ServiceId: string, args: fakeTypeType[], callback: (...args: any[]) => any) {
70
+ export async function registerService(ServiceId: string, args: namedFakeType[], callback: (...args: any[]) => any) {
52
71
  WsSend(ws, { type: requestType.RegisterService, data: { ServiceId, args } });
53
72
  serviceCallbacks.set(ServiceId, callback);
54
73
  return new Promise<void>((resolve) => {
@@ -120,11 +139,25 @@ export async function initializeClient(ClientId: string) {
120
139
  }
121
140
  });
122
141
 
123
- // Wacht tot de verbinding is geopend
124
- return new Promise<void>((resolve) => {
125
- awaitServiceMessage(stringPacketOptions.initSuccess).then(() => {
126
- resolve();
127
- });
142
+ return new Promise<StringPacket>((resolve) => {
143
+ const handler = (raw: Buffer) => {
144
+ const rawPacket = JSON.parse(raw.toString()) as packet;
145
+ if (rawPacket.type === requestType.Init) {
146
+ const data = rawPacket.data as InitResponsePacket;
147
+ assert(data.versionMajor === VERSION.MAJOR, `Major versie mismatch: Client versie is ${VERSION.MAJOR}, server versie is ${data.versionMajor}.`);
148
+ if (data.versionMinor !== VERSION.MINOR) {
149
+ console.warn(`Waarschuwing: Minor versie mismatch: Client versie is ${VERSION.MINOR}, server versie is ${data.versionMinor}. Mogelijk zijn er incompatibiliteiten.`);
150
+ }
151
+ if (data.versionPatch !== VERSION.PATCH) {
152
+ console.warn(`Waarschuwing: Patch versie mismatch: Client versie is ${VERSION.PATCH}, server versie is ${data.versionPatch}. Mogelijk zijn er bugs of ontbrekende functies.`);
153
+ }
154
+ ws.removeListener('message', handler);
155
+ console.info('Client geïnitialiseerd met versie:', data.versionMajor, data.versionMinor, data.versionPatch);
156
+ console.info('gebruik via GEN.ts is aanbevolen')
157
+ resolve({ for: stringPacketOptions.initSuccess, msg: 'Init succesvol' } as StringPacket);
158
+ }
159
+ };
160
+ ws.on('message', handler);
128
161
  });
129
162
  }
130
163