@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
package/dist/GEN.d.ts ADDED
@@ -0,0 +1 @@
1
+ export declare function echo(tekst: string): Promise<any>;
package/dist/GEN.js ADDED
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ /* Dit bestand is automatisch gegenereerd door Tonpleun. Wijzigingen hierin worden overschreven. */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.echo = echo;
5
+ const clientLib_js_1 = require("./clientLib.js");
6
+ // Services for client: testClient
7
+ // echo
8
+ async function echo(tekst) {
9
+ return await (0, clientLib_js_1.getService)('echo', 'testClient', [tekst]);
10
+ }
11
+ // Services for client: Client2
12
+ //# sourceMappingURL=GEN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GEN.js","sourceRoot":"","sources":["../src/GEN.ts"],"names":[],"mappings":";AAAA,mGAAmG;;AAMnG,oBAEC;AAND,iDAA4C;AAE5C,kCAAkC;AAClC,OAAO;AACA,KAAK,UAAU,IAAI,CAAC,KAAa;IACpC,OAAO,MAAM,IAAA,yBAAU,EAAC,MAAM,EAAE,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,+BAA+B"}
@@ -0,0 +1 @@
1
+ export {};
package/dist/client.js ADDED
@@ -0,0 +1,49 @@
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
+ const clientLib_js_1 = require("./clientLib.js");
7
+ const strict_1 = __importDefault(require("node:assert/strict"));
8
+ function echo(args) {
9
+ console.log(args);
10
+ return 'pindakaas';
11
+ }
12
+ async function main() {
13
+ await (0, clientLib_js_1.initializeClient)('testClient');
14
+ console.log(await (0, clientLib_js_1.registerService)('echo', [{ name: 'tekst', type: 'string' }], echo));
15
+ console.log(await (0, clientLib_js_1.getService)('getServices', 'tonpleun', []));
16
+ // Config tests: register and update a config item, then verify via tonpleun service
17
+ await (0, clientLib_js_1.registerConfigItem)('greeting', 'Simple greeting config', 'hello', 'conf:greeting');
18
+ const configsAfterRegister = await (0, clientLib_js_1.getService)('getConfigs', 'tonpleun', []);
19
+ strict_1.default.ok(configsAfterRegister['testClient'], 'configs for testClient should exist');
20
+ strict_1.default.ok(configsAfterRegister['testClient']['conf:greeting'], 'conf:greeting should be registered');
21
+ strict_1.default.equal(configsAfterRegister['testClient']['conf:greeting'].defaultValue, 'hello');
22
+ console.log('[Client1] registered config OK');
23
+ await (0, clientLib_js_1.SetConfigItem)('conf:greeting', 'hi');
24
+ const configsAfterSet = await (0, clientLib_js_1.getService)('getConfigs', 'tonpleun', []);
25
+ strict_1.default.equal(configsAfterSet['testClient']['conf:greeting'].value, 'hi');
26
+ console.log('[Client1] set config value OK');
27
+ strict_1.default.equal((0, clientLib_js_1.getConfigValue)('conf:greeting'), 'hi');
28
+ console.log('[Client1] local config value OK');
29
+ // Wait for a potential remote update (e.g., from Client2) and verify locally
30
+ await new Promise((resolve) => {
31
+ const expected = 'bye';
32
+ const start = Date.now();
33
+ const interval = setInterval(() => {
34
+ const current = (0, clientLib_js_1.getConfigValue)('conf:greeting');
35
+ if (current === expected) {
36
+ clearInterval(interval);
37
+ console.log('[Client1] remote config update applied OK');
38
+ resolve();
39
+ }
40
+ else if (Date.now() - start > 5000) {
41
+ clearInterval(interval);
42
+ console.warn('[Client1] timeout waiting remote update; current:', current);
43
+ resolve();
44
+ }
45
+ }, 200);
46
+ });
47
+ }
48
+ main();
49
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;;;AAAA,iDAAqI;AACrI,gEAAwC;AACxC,SAAS,IAAI,CAAC,IAAW;IACvB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACjB,OAAO,WAAW,CAAA;AACpB,CAAC;AACD,KAAK,UAAU,IAAI;IACjB,MAAM,IAAA,+BAAgB,EAAC,YAAY,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAA,8BAAe,EAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAA;IACrF,OAAO,CAAC,GAAG,CAAC,MAAM,IAAA,yBAAU,EAAC,aAAa,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,CAAA;IAC5D,oFAAoF;IACpF,MAAM,IAAA,iCAAkB,EAAC,UAAU,EAAE,wBAAwB,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;IACzF,MAAM,oBAAoB,GAAQ,MAAM,IAAA,yBAAU,EAAC,YAAY,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;IACjF,gBAAM,CAAC,EAAE,CAAC,oBAAoB,CAAC,YAAY,CAAC,EAAE,qCAAqC,CAAC,CAAC;IACrF,gBAAM,CAAC,EAAE,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC,eAAe,CAAC,EAAE,oCAAoC,CAAC,CAAC;IACrG,gBAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC,eAAe,CAAC,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACxF,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAE9C,MAAM,IAAA,4BAAa,EAAC,eAAe,EAAE,IAAI,CAAC,CAAC;IAC3C,MAAM,eAAe,GAAQ,MAAM,IAAA,yBAAU,EAAC,YAAY,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;IAC5E,gBAAM,CAAC,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,eAAe,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC7C,gBAAM,CAAC,KAAK,CAAC,IAAA,6BAAc,EAAC,eAAe,CAAC,EAAE,IAAI,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC/C,6EAA6E;IAC7E,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAClC,MAAM,QAAQ,GAAG,KAAK,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;YAChC,MAAM,OAAO,GAAG,IAAA,6BAAc,EAAC,eAAe,CAAC,CAAC;YAChD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACzB,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;gBACzD,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,EAAE,CAAC;gBACrC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACxB,OAAO,CAAC,IAAI,CAAC,mDAAmD,EAAE,OAAO,CAAC,CAAC;gBAC3E,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC,CAAC,CAAC;AACL,CAAC;AACD,IAAI,EAAE,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,26 @@
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
+ const clientLib_js_1 = require("./clientLib.js");
7
+ const strict_1 = __importDefault(require("node:assert/strict"));
8
+ async function main() {
9
+ await (0, clientLib_js_1.initializeClient)('Client2');
10
+ const result = await (0, clientLib_js_1.getService)('echo', 'testClient', ['hoi!!!!']);
11
+ console.log('[Client2] echo result:', result);
12
+ // Validate that configs registered by Client1 are visible and updated
13
+ const configs = await (0, clientLib_js_1.getService)('getConfigs', 'tonpleun', []);
14
+ strict_1.default.ok(configs['testClient'], 'configs for testClient should exist');
15
+ strict_1.default.ok(configs['testClient']['conf:greeting'], 'conf:greeting should be present');
16
+ console.log('[Client2] observed config:', configs['testClient']['conf:greeting']);
17
+ // Trigger a remote config update for owner 'testClient' and verify server state
18
+ await (0, clientLib_js_1.SetConfigItem)('conf:greeting', 'bye', 'testClient');
19
+ const configsAfterSet = await (0, clientLib_js_1.getService)('getConfigs', 'tonpleun', []);
20
+ strict_1.default.equal(configsAfterSet['testClient']['conf:greeting'].value, 'bye');
21
+ console.log('[Client2] remote config update OK');
22
+ const genResult = await (0, clientLib_js_1.genHelper)();
23
+ console.log('[Client2] genHelper result length:', genResult.length);
24
+ }
25
+ main();
26
+ //# sourceMappingURL=client2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client2.js","sourceRoot":"","sources":["../src/client2.ts"],"names":[],"mappings":";;;;;AAAA,iDAAuF;AACvF,gEAAwC;AACxC,KAAK,UAAU,IAAI;IACf,MAAM,IAAA,+BAAgB,EAAC,SAAS,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,IAAA,yBAAU,EAAC,MAAM,EAAE,YAAY,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IAClE,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAA;IAC7C,sEAAsE;IACtE,MAAM,OAAO,GAAQ,MAAM,IAAA,yBAAU,EAAC,YAAY,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;IACpE,gBAAM,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,qCAAqC,CAAC,CAAC;IACxE,gBAAM,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,eAAe,CAAC,EAAE,iCAAiC,CAAC,CAAC;IACrF,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;IAClF,gFAAgF;IAChF,MAAM,IAAA,4BAAa,EAAC,eAAe,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;IAC1D,MAAM,eAAe,GAAQ,MAAM,IAAA,yBAAU,EAAC,YAAY,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;IAC5E,gBAAM,CAAC,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,eAAe,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IAEjD,MAAM,SAAS,GAAG,MAAM,IAAA,wBAAS,GAAE,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;AACxE,CAAC;AACD,IAAI,EAAE,CAAC"}
@@ -0,0 +1,11 @@
1
+ import WebSocket from 'ws';
2
+ import { stringPacketOptions, type StringPacket, type namedFakeType } from './types.js';
3
+ export declare let ws: WebSocket;
4
+ export declare function genHelper(): Promise<any>;
5
+ export declare function awaitServiceMessage(expectedFor: stringPacketOptions): Promise<StringPacket>;
6
+ export declare function registerConfigItem(name: string, description: string, value: string, idthing: string): Promise<void>;
7
+ export declare function SetConfigItem(idthing: string, newValue: string, clientId?: string): Promise<void>;
8
+ export declare function registerService(ServiceId: string, args: namedFakeType[], callback: (...args: any[]) => any): Promise<void>;
9
+ export declare function getService(ServiceId: string, ClientId: string, inputs: any[]): Promise<any>;
10
+ export declare function initializeClient(ClientId: string): Promise<StringPacket>;
11
+ export declare function getConfigValue(id: string): any | undefined;
@@ -0,0 +1,172 @@
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.ws = void 0;
7
+ exports.genHelper = genHelper;
8
+ exports.awaitServiceMessage = awaitServiceMessage;
9
+ exports.registerConfigItem = registerConfigItem;
10
+ exports.SetConfigItem = SetConfigItem;
11
+ exports.registerService = registerService;
12
+ exports.getService = getService;
13
+ exports.initializeClient = initializeClient;
14
+ exports.getConfigValue = getConfigValue;
15
+ const ws_1 = __importDefault(require("ws"));
16
+ const crypto_1 = require("crypto");
17
+ const types_js_1 = require("./types.js");
18
+ const helpers_js_1 = require("./helpers.js");
19
+ const console_1 = require("console");
20
+ const fs_1 = require("fs");
21
+ const path_1 = require("path");
22
+ const url = "ws://localhost:8765";
23
+ const serviceCallbacks = new Map();
24
+ let clinetIDStore = "error";
25
+ const localConfigs = new Map();
26
+ const VERSION = {
27
+ MAJOR: 1,
28
+ MINOR: 1,
29
+ PATCH: 2
30
+ };
31
+ async function genHelper() {
32
+ console.info('genHelper called');
33
+ const result = await getService('genHelper', 'tonpleun', []);
34
+ const outPath = (0, path_1.dirname)('./src/GEN.ts');
35
+ (0, fs_1.mkdirSync)(outPath, { recursive: true });
36
+ (0, fs_1.writeFileSync)('./src/GEN.ts', result);
37
+ console.info('GEN.ts gegenereerd in ./src/GEN.ts');
38
+ return result;
39
+ }
40
+ async function awaitServiceMessage(expectedFor) {
41
+ return new Promise((resolve) => {
42
+ const handler = (raw) => {
43
+ const rawPacket = JSON.parse(raw.toString());
44
+ if (rawPacket.type === types_js_1.requestType.Success) {
45
+ const data = rawPacket.data;
46
+ if (data.for === expectedFor) {
47
+ exports.ws.removeListener('message', handler);
48
+ resolve(data);
49
+ }
50
+ }
51
+ };
52
+ exports.ws.on('message', handler);
53
+ });
54
+ }
55
+ async function registerConfigItem(name, description, value, idthing) {
56
+ (0, helpers_js_1.WsSend)(exports.ws, { type: types_js_1.requestType.RegisterConifg, data: { name: name, description: description, defaultValue: value, type: typeof value, id: idthing } });
57
+ // Wacht tot de verbinding is geopend
58
+ return new Promise((resolve) => {
59
+ awaitServiceMessage(types_js_1.stringPacketOptions.registerConfigSuccess).then(() => {
60
+ localConfigs.set(idthing, { name, id: idthing, description, type: typeof value, defaultValue: value });
61
+ resolve();
62
+ });
63
+ });
64
+ }
65
+ async function SetConfigItem(idthing, newValue, clientId) {
66
+ (0, helpers_js_1.WsSend)(exports.ws, { type: types_js_1.requestType.SetConfig, data: { ClientId: clientId || clinetIDStore, id: idthing, newValue: newValue } });
67
+ return new Promise((resolve) => {
68
+ awaitServiceMessage(types_js_1.stringPacketOptions.setConfigSuccess).then(() => {
69
+ const existing = localConfigs.get(idthing);
70
+ if (existing) {
71
+ localConfigs.set(idthing, { ...existing, value: newValue });
72
+ }
73
+ resolve();
74
+ });
75
+ });
76
+ }
77
+ async function registerService(ServiceId, args, callback) {
78
+ (0, helpers_js_1.WsSend)(exports.ws, { type: types_js_1.requestType.RegisterService, data: { ServiceId, args } });
79
+ serviceCallbacks.set(ServiceId, callback);
80
+ return new Promise((resolve) => {
81
+ awaitServiceMessage(types_js_1.stringPacketOptions.registerServiceSuccess).then(() => {
82
+ resolve();
83
+ });
84
+ });
85
+ }
86
+ async function getService(ServiceId, ClientId, inputs) {
87
+ const connectionId = (0, crypto_1.randomUUID)();
88
+ (0, helpers_js_1.WsSend)(exports.ws, { type: types_js_1.requestType.GetService, data: { ClientId, ServiceId, args: inputs, connectionId } });
89
+ return new Promise((resolve) => {
90
+ const handler = (raw) => {
91
+ const rawPacket = JSON.parse(raw.toString());
92
+ if (rawPacket.type === types_js_1.requestType.GetServiceResponse) {
93
+ const data = rawPacket.data;
94
+ if (data.serviceId === ServiceId && data.connectionId === connectionId) {
95
+ exports.ws.removeListener('message', handler);
96
+ resolve(data.result);
97
+ }
98
+ }
99
+ };
100
+ exports.ws.on('message', handler);
101
+ });
102
+ }
103
+ async function initializeClient(ClientId) {
104
+ clinetIDStore = ClientId;
105
+ exports.ws = new ws_1.default(url);
106
+ exports.ws.on('open', () => {
107
+ console.log('Verbonden met tonpleun server.');
108
+ (0, helpers_js_1.WsSend)(exports.ws, { type: types_js_1.requestType.Init, data: { ClientId } });
109
+ });
110
+ exports.ws.on('close', () => {
111
+ console.log('Verbinding met tonpleun server gesloten.');
112
+ });
113
+ exports.ws.on('error', (error) => {
114
+ console.error('Fout opgetreden:', error);
115
+ exports.ws.close();
116
+ });
117
+ exports.ws.on('message', (data) => {
118
+ const rawPacket = JSON.parse(data.toString());
119
+ if (rawPacket.type === types_js_1.requestType.GetService) {
120
+ const serviceData = rawPacket.data;
121
+ const callback = serviceCallbacks.get(serviceData.ServiceId);
122
+ if (callback) {
123
+ try {
124
+ const result = callback(...serviceData.args);
125
+ (0, helpers_js_1.WsSend)(exports.ws, {
126
+ type: types_js_1.requestType.GetServiceResponse, data: {
127
+ result: result,
128
+ ServiceId: serviceData.ServiceId,
129
+ connectionId: serviceData.connectionId,
130
+ }
131
+ });
132
+ }
133
+ catch (error) {
134
+ console.error(`Fout bij uitvoeren van service ${serviceData.ServiceId}:`, error);
135
+ }
136
+ }
137
+ }
138
+ else if (rawPacket.type === types_js_1.requestType.SetConfig) {
139
+ const cfg = rawPacket.data;
140
+ const existing = localConfigs.get(cfg.id);
141
+ if (existing) {
142
+ localConfigs.set(cfg.id, { ...existing, value: cfg.newValue });
143
+ }
144
+ }
145
+ });
146
+ return new Promise((resolve) => {
147
+ const handler = (raw) => {
148
+ const rawPacket = JSON.parse(raw.toString());
149
+ if (rawPacket.type === types_js_1.requestType.Init) {
150
+ const data = rawPacket.data;
151
+ (0, console_1.assert)(data.versionMajor === VERSION.MAJOR, `Major versie mismatch: Client versie is ${VERSION.MAJOR}, server versie is ${data.versionMajor}.`);
152
+ if (data.versionMinor !== VERSION.MINOR) {
153
+ console.warn(`Waarschuwing: Minor versie mismatch: Client versie is ${VERSION.MINOR}, server versie is ${data.versionMinor}. Mogelijk zijn er incompatibiliteiten.`);
154
+ }
155
+ if (data.versionPatch !== VERSION.PATCH) {
156
+ console.warn(`Waarschuwing: Patch versie mismatch: Client versie is ${VERSION.PATCH}, server versie is ${data.versionPatch}. Mogelijk zijn er bugs of ontbrekende functies.`);
157
+ }
158
+ exports.ws.removeListener('message', handler);
159
+ console.info('Client geïnitialiseerd met versie:', data.versionMajor, data.versionMinor, data.versionPatch);
160
+ console.info('gebruik via GEN.ts is aanbevolen');
161
+ resolve({ for: types_js_1.stringPacketOptions.initSuccess, msg: 'Init succesvol' });
162
+ }
163
+ };
164
+ exports.ws.on('message', handler);
165
+ });
166
+ }
167
+ function getConfigValue(id) {
168
+ var _a;
169
+ const item = localConfigs.get(id);
170
+ return item ? ((_a = item.value) !== null && _a !== void 0 ? _a : item.defaultValue) : undefined;
171
+ }
172
+ //# sourceMappingURL=clientLib.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clientLib.js","sourceRoot":"","sources":["../src/clientLib.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type WebSocket from "ws";
2
+ import { stringPacketOptions, type packet } from "./types.js";
3
+ export declare function log(id: any, ...args: any): void;
4
+ export declare function WsSend(ws: WebSocket, data: packet): void;
5
+ export declare function successPacketBuilder(msg: string, B: stringPacketOptions): packet;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.log = log;
4
+ exports.WsSend = WsSend;
5
+ exports.successPacketBuilder = successPacketBuilder;
6
+ const types_js_1 = require("./types.js");
7
+ function log(id, ...args) {
8
+ // .toString() als je niet groen wil
9
+ console.log('[', id, ']', args);
10
+ }
11
+ function WsSend(ws, data) {
12
+ ws.send(JSON.stringify(data));
13
+ }
14
+ function successPacketBuilder(msg, B) {
15
+ return { type: types_js_1.requestType.Success, data: { msg: msg, for: B } };
16
+ }
17
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":";;AAEA,kBAGC;AACD,wBAEC;AACD,oDAEC;AAVD,yCAA8F;AAC9F,SAAgB,GAAG,CAAC,EAAO,EAAE,GAAG,IAAS;IACrC,oCAAoC;IACpC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC;AACD,SAAgB,MAAM,CAAC,EAAa,EAAE,IAAY;IAC9C,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAClC,CAAC;AACD,SAAgB,oBAAoB,CAAC,GAAW,EAAE,CAAsB;IACpE,OAAO,EAAE,IAAI,EAAE,sBAAW,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAkB,EAAY,CAAA;AAC9F,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
package/dist/server.js ADDED
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const helpers_js_1 = require("./helpers.js");
4
+ const ws_1 = require("ws");
5
+ const types_js_1 = require("./types.js");
6
+ function mapToObject(map) {
7
+ return Object.fromEntries([...map.entries()].map(([kMaxLength, v]) => [kMaxLength, v instanceof Map ? mapToObject(v) : v]));
8
+ }
9
+ const VERSION = {
10
+ MAJOR: 1,
11
+ MINOR: 1,
12
+ PATCH: 2
13
+ };
14
+ let clients = {};
15
+ let services = new Map();
16
+ let configs = new Map();
17
+ let localServices = new Map();
18
+ localServices.set('getServices', (...args) => { return mapToObject(services); });
19
+ localServices.set('getConfigs', (...args) => { return mapToObject(configs); });
20
+ localServices.set('genHelper', (...args) => {
21
+ let output = '/* Dit bestand is automatisch gegenereerd door Tonpleun. Wijzigingen hierin worden overschreven. */\n\n';
22
+ output += `import { getService } from './clientLib.js';\n\n`;
23
+ services.forEach((serviceMap, clientId) => {
24
+ output += `// Services for client: ${clientId}\n`;
25
+ serviceMap.forEach((argTypes, serviceId) => {
26
+ output += `// ${serviceId}\n`;
27
+ output += `export async function ${serviceId}(`;
28
+ output += argTypes.map((type, _) => `${type.name}: ${type.type}`).join(', ');
29
+ output += `): Promise<any> {\n`;
30
+ output += ` return await getService('${serviceId}', '${clientId}', [${argTypes.map((arg, _) => `${arg.name}`).join(', ')}]);\n`;
31
+ output += `}\n\n`;
32
+ });
33
+ });
34
+ output += `// Tonpleun versie: ${VERSION.MAJOR}.${VERSION.MINOR}.${VERSION.PATCH}\n`;
35
+ output += `// Genereer dit bestand opnieuw met de genHelper service indien services zijn gewijzigd.\n`;
36
+ return output;
37
+ });
38
+ // Map a unique connectionId to the original requester WebSocket
39
+ const connectionMap = new Map();
40
+ const wsServer = new ws_1.WebSocketServer({ host: '0.0.0.0', port: 8765 });
41
+ wsServer.on('connection', (ws, req) => {
42
+ let id = req.socket.remoteAddress;
43
+ (0, helpers_js_1.log)(id, 'ws verbonden wachten op init.');
44
+ ws.on('message', async (raw) => {
45
+ var _a;
46
+ const jsonData = JSON.parse(raw.toString());
47
+ let data;
48
+ switch (jsonData.type) {
49
+ case types_js_1.requestType.Init:
50
+ data = jsonData.data;
51
+ clients[data.ClientId] = ws;
52
+ id = data.ClientId;
53
+ services.set(id, new Map());
54
+ // initialize per-client config store to avoid undefined access
55
+ configs.set(id, new Map());
56
+ (0, helpers_js_1.log)(id, 'ws init gedaan, client id gegeven. ip: ', req.socket.remoteAddress);
57
+ (0, helpers_js_1.WsSend)(ws, { type: types_js_1.requestType.Init, data: { versionMajor: VERSION.MAJOR, versionMinor: VERSION.MINOR, versionPatch: VERSION.MINOR } });
58
+ break;
59
+ case types_js_1.requestType.RegisterService:
60
+ data = jsonData.data;
61
+ services.get(id).set(data.ServiceId, data.args);
62
+ (0, helpers_js_1.log)(id, `service ${data.ServiceId} geregistreerd.`);
63
+ (0, helpers_js_1.WsSend)(ws, (0, helpers_js_1.successPacketBuilder)(`service ${data.ServiceId} geregistreerd.`, types_js_1.stringPacketOptions.registerServiceSuccess));
64
+ break;
65
+ case types_js_1.requestType.GetService:
66
+ data = jsonData.data;
67
+ (0, helpers_js_1.log)(id, `service ${data.ServiceId} opgevraagd bij client ${data.ClientId}.`);
68
+ if (!(data.ClientId == "tonpleun")) {
69
+ const serviceOwnerWs = clients[data.ClientId];
70
+ if (serviceOwnerWs && ((_a = services.get(data.ClientId)) === null || _a === void 0 ? void 0 : _a.has(data.ServiceId))) {
71
+ // store mapping from this request's connectionId to the original requester
72
+ connectionMap.set(data.connectionId, ws);
73
+ (0, helpers_js_1.WsSend)(serviceOwnerWs, {
74
+ type: types_js_1.requestType.GetService,
75
+ data: {
76
+ ServiceId: data.ServiceId,
77
+ args: data.args,
78
+ connectionId: data.connectionId,
79
+ }
80
+ });
81
+ }
82
+ else {
83
+ (0, helpers_js_1.log)(id, `service ${data.ServiceId} niet gevonden voor client ${data.ClientId}.`);
84
+ }
85
+ }
86
+ else {
87
+ const returnMe = localServices.get(data.ServiceId)(data.args);
88
+ (0, helpers_js_1.WsSend)(ws, {
89
+ type: types_js_1.requestType.GetServiceResponse,
90
+ data: {
91
+ result: returnMe,
92
+ connectionId: data.connectionId,
93
+ serviceId: data.ServiceId
94
+ }
95
+ });
96
+ }
97
+ break;
98
+ case types_js_1.requestType.GetServiceResponse:
99
+ data = jsonData.data;
100
+ (0, helpers_js_1.log)(id, `antwoord voor service ${data.ServiceId} ontvangen, doorsturen naar client.`);
101
+ const originalRequesterWs = connectionMap.get(data.connectionId);
102
+ if (originalRequesterWs) {
103
+ (0, helpers_js_1.WsSend)(originalRequesterWs, {
104
+ type: types_js_1.requestType.GetServiceResponse,
105
+ data: {
106
+ result: data.result,
107
+ serviceId: data.ServiceId,
108
+ connectionId: data.connectionId,
109
+ }
110
+ });
111
+ connectionMap.delete(data.connectionId);
112
+ }
113
+ break;
114
+ case types_js_1.requestType.RegisterConifg:
115
+ data = jsonData.data;
116
+ (0, helpers_js_1.log)(id, 'registeer een nieuwe config ityem');
117
+ // fuck het we slaan de hele packet op
118
+ configs.get(id).set(data.id, data);
119
+ (0, helpers_js_1.WsSend)(ws, (0, helpers_js_1.successPacketBuilder)('dinges', types_js_1.stringPacketOptions.registerConfigSuccess));
120
+ break;
121
+ case types_js_1.requestType.SetConfig:
122
+ data = jsonData.data;
123
+ (0, helpers_js_1.log)(id, 'update de dinges');
124
+ const otherGuy = clients[data.ClientId];
125
+ if (otherGuy) {
126
+ const prev = configs.get(data.ClientId).get(data.id);
127
+ configs.get(data.ClientId).set(data.id, { ...prev, value: data.newValue });
128
+ (0, helpers_js_1.WsSend)(otherGuy, { type: types_js_1.requestType.SetConfig, data: data });
129
+ }
130
+ (0, helpers_js_1.WsSend)(ws, (0, helpers_js_1.successPacketBuilder)('dinges', types_js_1.stringPacketOptions.setConfigSuccess));
131
+ break;
132
+ default:
133
+ (0, helpers_js_1.log)(id, 'invalid msg');
134
+ break;
135
+ }
136
+ });
137
+ ws.on('close', () => {
138
+ services.delete(id);
139
+ (0, helpers_js_1.log)(id, 'ws gesloten.');
140
+ });
141
+ });
142
+ wsServer.on('listening', () => {
143
+ console.log('klaar voor clients.');
144
+ });
145
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
package/dist/test3.js ADDED
@@ -0,0 +1,16 @@
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
+ const clientLib_js_1 = require("./clientLib.js");
7
+ const GEN_js_1 = require("./GEN.js");
8
+ const strict_1 = __importDefault(require("node:assert/strict"));
9
+ async function main() {
10
+ await (0, clientLib_js_1.initializeClient)('Client3');
11
+ (0, GEN_js_1.echo)('Hello from Client3').then((result) => {
12
+ strict_1.default.equal(result, 'pindakaas');
13
+ });
14
+ }
15
+ main();
16
+ //# sourceMappingURL=test3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test3.js","sourceRoot":"","sources":["../src/test3.ts"],"names":[],"mappings":";;;;;AAAA,iDAAuF;AACvF,qCAAgC;AAChC,gEAAwC;AAExC,KAAK,UAAU,IAAI;IACf,MAAM,IAAA,+BAAgB,EAAC,SAAS,CAAC,CAAC;IAClC,IAAA,aAAI,EAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;QACvC,gBAAM,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACP,CAAC;AACD,IAAI,EAAE,CAAC"}
@@ -0,0 +1,77 @@
1
+ export declare enum requestType {
2
+ Init = 0,
3
+ Success = 1,
4
+ Error = 2,
5
+ RegisterService = 3,
6
+ GetServiceResponse = 4,
7
+ GetService = 5,
8
+ RegisterConifg = 6,
9
+ SetConfig = 7
10
+ }
11
+ export declare enum stringPacketOptions {
12
+ Error = 0,
13
+ initSuccess = 1,
14
+ registerServiceSuccess = 2,
15
+ getServiceSuccess = 3,
16
+ registerConfigSuccess = 4,
17
+ setConfigSuccess = 5
18
+ }
19
+ export type fakeTypeType = "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function";
20
+ export type namedFakeType = {
21
+ name: string;
22
+ type: fakeTypeType;
23
+ };
24
+ export type packet = {
25
+ type: requestType;
26
+ data: any;
27
+ };
28
+ export type InitPacket = {
29
+ ClientId: string;
30
+ };
31
+ export type InitResponsePacket = {
32
+ versionMajor: number;
33
+ versionMinor: number;
34
+ versionPatch: number;
35
+ };
36
+ export type StringPacket = {
37
+ msg: string;
38
+ for: stringPacketOptions;
39
+ };
40
+ export type RegisterServicePacket = {
41
+ ServiceId: string;
42
+ args: namedFakeType[];
43
+ };
44
+ export type getServicePacket = {
45
+ ClientId: string;
46
+ ServiceId: string;
47
+ connectionId: string;
48
+ args: any[];
49
+ };
50
+ export type getServicePacketClient = {
51
+ ServiceId: string;
52
+ args: any[];
53
+ connectionId: string;
54
+ };
55
+ export type GetServiceResponsePacketToServer = {
56
+ ServiceId: string;
57
+ result: any;
58
+ connectionId: string;
59
+ };
60
+ export type GetServiceResponsePacketToClient = {
61
+ result: any;
62
+ serviceId: string;
63
+ connectionId: string;
64
+ };
65
+ export type registerConfigPacket = {
66
+ name: string;
67
+ id: string;
68
+ description: string;
69
+ type: fakeTypeType;
70
+ defaultValue: any;
71
+ value?: any;
72
+ };
73
+ export type setConfigPacket = {
74
+ ClientId: string;
75
+ newValue: any;
76
+ id: string;
77
+ };
package/dist/types.js ADDED
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stringPacketOptions = exports.requestType = void 0;
4
+ var requestType;
5
+ (function (requestType) {
6
+ requestType[requestType["Init"] = 0] = "Init";
7
+ requestType[requestType["Success"] = 1] = "Success";
8
+ requestType[requestType["Error"] = 2] = "Error";
9
+ requestType[requestType["RegisterService"] = 3] = "RegisterService";
10
+ requestType[requestType["GetServiceResponse"] = 4] = "GetServiceResponse";
11
+ requestType[requestType["GetService"] = 5] = "GetService";
12
+ requestType[requestType["RegisterConifg"] = 6] = "RegisterConifg";
13
+ requestType[requestType["SetConfig"] = 7] = "SetConfig";
14
+ })(requestType || (exports.requestType = requestType = {}));
15
+ var stringPacketOptions;
16
+ (function (stringPacketOptions) {
17
+ stringPacketOptions[stringPacketOptions["Error"] = 0] = "Error";
18
+ stringPacketOptions[stringPacketOptions["initSuccess"] = 1] = "initSuccess";
19
+ stringPacketOptions[stringPacketOptions["registerServiceSuccess"] = 2] = "registerServiceSuccess";
20
+ stringPacketOptions[stringPacketOptions["getServiceSuccess"] = 3] = "getServiceSuccess";
21
+ stringPacketOptions[stringPacketOptions["registerConfigSuccess"] = 4] = "registerConfigSuccess";
22
+ stringPacketOptions[stringPacketOptions["setConfigSuccess"] = 5] = "setConfigSuccess";
23
+ })(stringPacketOptions || (exports.stringPacketOptions = stringPacketOptions = {}));
24
+ ;
25
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAAA,IAAY,WASX;AATD,WAAY,WAAW;IACnB,6CAAI,CAAA;IACJ,mDAAO,CAAA;IACP,+CAAK,CAAA;IACL,mEAAe,CAAA;IACf,yEAAkB,CAAA;IAClB,yDAAU,CAAA;IACV,iEAAc,CAAA;IACd,uDAAS,CAAA;AACb,CAAC,EATW,WAAW,2BAAX,WAAW,QAStB;AACD,IAAY,mBAA8H;AAA1I,WAAY,mBAAmB;IAAG,+DAAK,CAAA;IAAE,2EAAW,CAAA;IAAE,iGAAsB,CAAA;IAAE,uFAAiB,CAAA;IAAE,+FAAqB,CAAA;IAAE,qFAAgB,CAAA;AAAC,CAAC,EAA9H,mBAAmB,mCAAnB,mBAAmB,QAA2G;AAAA,CAAC"}
@@ -0,0 +1 @@
1
+ export {};