@siemsiem/tonpleun 1.1.3 → 2.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/dist/clientLib.d.ts +36 -13
- package/dist/clientLib.js +239 -157
- package/dist/clientLib.js.map +1 -1
- package/dist/helpers.js +10 -5
- package/dist/helpers.js.map +1 -1
- package/dist/server.js +143 -80
- package/dist/server.js.map +1 -1
- package/dist/types.d.ts +86 -8
- package/dist/types.js +64 -4
- package/dist/types.js.map +1 -1
- package/package.json +15 -10
- package/readme.md +22 -16
- package/src/clientLib.ts +256 -147
- package/src/server.ts +116 -38
- package/src/types.ts +84 -10
- package/dist/GEN.d.ts +0 -1
- package/dist/GEN.js +0 -9
- package/dist/GEN.js.map +0 -1
- package/dist/client.d.ts +0 -1
- package/dist/client.js +0 -49
- package/dist/client.js.map +0 -1
- package/dist/client2.d.ts +0 -1
- package/dist/client2.js +0 -26
- package/dist/client2.js.map +0 -1
- package/dist/test3.d.ts +0 -1
- package/dist/test3.js +0 -16
- package/dist/test3.js.map +0 -1
- package/dist/tests/clients/basic/clientA.d.ts +0 -1
- package/dist/tests/clients/basic/clientA.js +0 -17
- package/dist/tests/clients/basic/clientA.js.map +0 -1
- package/dist/tests/clients/basic/clientB.d.ts +0 -1
- package/dist/tests/clients/basic/clientB.js +0 -20
- package/dist/tests/clients/basic/clientB.js.map +0 -1
- package/dist/tests/clients/privleges/clientA.d.ts +0 -1
- package/dist/tests/clients/privleges/clientA.js +0 -17
- package/dist/tests/clients/privleges/clientA.js.map +0 -1
- package/dist/tests/clients/privleges/clientB.d.ts +0 -1
- package/dist/tests/clients/privleges/clientB.js +0 -20
- package/dist/tests/clients/privleges/clientB.js.map +0 -1
- package/dist/tests/server/basic.d.ts +0 -1
- package/dist/tests/server/basic.js +0 -3
- package/dist/tests/server/basic.js.map +0 -1
- package/dist/tests/server/privleges.d.ts +0 -1
- package/dist/tests/server/privleges.js +0 -22
- package/dist/tests/server/privleges.js.map +0 -1
- package/dist/tests/testMaster.d.ts +0 -1
- package/dist/tests/testMaster.js +0 -54
- package/dist/tests/testMaster.js.map +0 -1
- package/dist/v1/client.d.ts +0 -1
- package/dist/v1/client.js +0 -17
- package/dist/v1/client.js.map +0 -1
- package/dist/v1/lib.d.ts +0 -28
- package/dist/v1/lib.js +0 -191
- package/dist/v1/lib.js.map +0 -1
- package/dist/v1/main.d.ts +0 -1
- package/dist/v1/main.js +0 -195
- package/dist/v1/main.js.map +0 -1
- package/dist/v1/test2.d.ts +0 -1
- package/dist/v1/test2.js +0 -13
- package/dist/v1/test2.js.map +0 -1
- package/src/GEN.ts +0 -11
- package/src/tests/clients/basic/clientA.ts +0 -18
- package/src/tests/clients/basic/clientB.ts +0 -20
- package/src/tests/clients/privleges/clientA.ts +0 -18
- package/src/tests/clients/privleges/clientB.ts +0 -20
- package/src/tests/server/basic.ts +0 -3
- package/src/tests/server/privleges.ts +0 -20
- package/src/tests/testMaster.ts +0 -57
package/src/server.ts
CHANGED
|
@@ -1,15 +1,41 @@
|
|
|
1
1
|
import { log, successPacketBuilder, WsSend } from './helpers.js';
|
|
2
2
|
import { WebSocketServer, WebSocket } from 'ws';
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
InitResponsePacket,
|
|
5
|
+
type StringPacket,
|
|
6
|
+
requestType,
|
|
7
|
+
stringPacketOptions,
|
|
8
|
+
type getServicePacket,
|
|
9
|
+
type getServicePacketClient,
|
|
10
|
+
type GetServiceResponsePacketToClient,
|
|
11
|
+
type InitPacket,
|
|
12
|
+
type packet,
|
|
13
|
+
type registerConfigPacket,
|
|
14
|
+
type RegisterServicePacket,
|
|
15
|
+
type setConfigPacket,
|
|
16
|
+
getServicePacketSchema,
|
|
17
|
+
getServiceResponsePacketToServerSchema,
|
|
18
|
+
initPacketSchema,
|
|
19
|
+
packetSchema,
|
|
20
|
+
registerConfigPacketSchema,
|
|
21
|
+
registerServicePacketSchema,
|
|
22
|
+
setConfigPacketSchema,
|
|
23
|
+
sendExternalDataPacket
|
|
24
|
+
} from './types.js';
|
|
4
25
|
|
|
5
26
|
function mapToObject(map: Map<any, any>) {
|
|
6
|
-
return Object.fromEntries([
|
|
27
|
+
return Object.fromEntries([
|
|
28
|
+
...map.entries()
|
|
29
|
+
].map(([kMaxLength, v]): any => [
|
|
30
|
+
kMaxLength,
|
|
31
|
+
v instanceof Map ? mapToObject(v) : v instanceof Set ? [...v.values()] : v
|
|
32
|
+
]))
|
|
7
33
|
}
|
|
8
34
|
|
|
9
35
|
const VERSION = {
|
|
10
|
-
MAJOR:
|
|
11
|
-
MINOR:
|
|
12
|
-
PATCH:
|
|
36
|
+
MAJOR: 2,
|
|
37
|
+
MINOR: 0,
|
|
38
|
+
PATCH: 0
|
|
13
39
|
};
|
|
14
40
|
enum PRIVLEGE_LEVELS {
|
|
15
41
|
NONE = 0,
|
|
@@ -45,34 +71,12 @@ const unprivlegedError = {
|
|
|
45
71
|
} as packet;
|
|
46
72
|
|
|
47
73
|
let clients: Record<string, WebSocket> = {};
|
|
48
|
-
let services = new Map<string,
|
|
74
|
+
let services = new Map<string, Set<string>>();
|
|
49
75
|
let configs = new Map<string, Map<string, registerConfigPacket>>();
|
|
50
76
|
let localServices = new Map<string, (...args: any[]) => any>();
|
|
51
77
|
localServices.set('getServices', (...args: any[]) => { if (!config.ALLOW_SCANNING) { return; } return mapToObject(services) })
|
|
52
78
|
localServices.set('getConfigs', (...args: any[]) => { if (!config.ALLOW_SCANNING) { return; } return mapToObject(configs) })
|
|
53
|
-
localServices.set('genHelper', (...args: any[]) => {
|
|
54
|
-
if (!config.ALLOW_CONFIG_GENERATION) {
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
let output = '/* Dit bestand is automatisch gegenereerd door Tonpleun. Wijzigingen hierin worden overschreven. */\n\n';
|
|
58
|
-
output += `import { getService } from './clientLib.js';\n\n`;
|
|
59
|
-
|
|
60
|
-
services.forEach((serviceMap, clientId) => {
|
|
61
|
-
output += `// Services for client: ${clientId}\n`;
|
|
62
|
-
serviceMap.forEach((argTypes, serviceId) => {
|
|
63
|
-
output += `// ${serviceId}\n`;
|
|
64
|
-
output += `export async function ${serviceId}(`;
|
|
65
|
-
output += argTypes.map((type, _) => `${type.name}: ${type.type}`).join(', ');
|
|
66
|
-
output += `): Promise<any> {\n`;
|
|
67
|
-
output += ` return await getService('${serviceId}', '${clientId}', [${argTypes.map((arg, _) => `${arg.name}`).join(', ')}]);\n`;
|
|
68
|
-
output += `}\n\n`;
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
79
|
|
|
72
|
-
output += `// Tonpleun versie: ${VERSION.MAJOR}.${VERSION.MINOR}.${VERSION.PATCH}\n`;
|
|
73
|
-
output += `// Genereer dit bestand opnieuw met de genHelper service indien services zijn gewijzigd.\n`;
|
|
74
|
-
return output;
|
|
75
|
-
});
|
|
76
80
|
// Map a unique connectionId to the original requester WebSocket
|
|
77
81
|
const connectionMap = new Map<string, WebSocket>();
|
|
78
82
|
|
|
@@ -96,11 +100,30 @@ export default function startServer(customConfig?: Partial<configType>) {
|
|
|
96
100
|
log(id, 'ws verbonden wachten op init.');
|
|
97
101
|
|
|
98
102
|
ws.on('message', async (raw) => {
|
|
99
|
-
|
|
103
|
+
let parsedRaw: unknown;
|
|
104
|
+
try {
|
|
105
|
+
parsedRaw = JSON.parse(raw.toString());
|
|
106
|
+
} catch {
|
|
107
|
+
log(id, 'invalid json ontvangen.');
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
const parsedPacket = packetSchema.safeParse(parsedRaw);
|
|
111
|
+
if (!parsedPacket.success) {
|
|
112
|
+
log(id, 'ongeldig packet ontvangen.');
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
const jsonData = parsedPacket.data as packet;
|
|
100
116
|
let data;
|
|
101
117
|
switch (jsonData.type) {
|
|
102
118
|
case requestType.Init:
|
|
103
|
-
|
|
119
|
+
{
|
|
120
|
+
const initData = initPacketSchema.safeParse(jsonData.data);
|
|
121
|
+
if (!initData.success) {
|
|
122
|
+
log(id, 'ongeldig init packet ontvangen.');
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
data = initData.data as InitPacket;
|
|
126
|
+
}
|
|
104
127
|
clients[data.ClientId] = ws;
|
|
105
128
|
id = data.ClientId;
|
|
106
129
|
// voor deze kunnen we direct afsluiten als ze niet mogen initen
|
|
@@ -109,25 +132,39 @@ export default function startServer(customConfig?: Partial<configType>) {
|
|
|
109
132
|
ws.close();
|
|
110
133
|
return;
|
|
111
134
|
}
|
|
112
|
-
services.set(id, new
|
|
135
|
+
services.set(id, new Set())
|
|
113
136
|
// initialize per-client config store to avoid undefined access
|
|
114
137
|
configs.set(id, new Map())
|
|
115
138
|
log(id, 'ws init gedaan, client id gegeven. ip: ', req.socket.remoteAddress);
|
|
116
|
-
WsSend(ws, { type: requestType.Init, data: { versionMajor: VERSION.MAJOR, versionMinor: VERSION.MINOR, versionPatch: VERSION.
|
|
139
|
+
WsSend(ws, { type: requestType.Init, data: { versionMajor: VERSION.MAJOR, versionMinor: VERSION.MINOR, versionPatch: VERSION.PATCH } as InitResponsePacket } as packet);
|
|
117
140
|
break;
|
|
118
141
|
case requestType.RegisterService:
|
|
119
|
-
|
|
142
|
+
{
|
|
143
|
+
const registerData = registerServicePacketSchema.safeParse(jsonData.data);
|
|
144
|
+
if (!registerData.success) {
|
|
145
|
+
log(id, 'ongeldig register service packet ontvangen.');
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
data = registerData.data as RegisterServicePacket;
|
|
149
|
+
}
|
|
120
150
|
if (!privlegeCheck(id, 5)) {
|
|
121
151
|
log(id, 'register service geweigerd vanwege privleges.');
|
|
122
152
|
WsSend(ws, unprivlegedError);
|
|
123
153
|
return;
|
|
124
154
|
}
|
|
125
|
-
services.get(id)!.
|
|
155
|
+
services.get(id)!.add(data.ServiceId);
|
|
126
156
|
log(id, `service ${data.ServiceId} geregistreerd.`);
|
|
127
157
|
WsSend(ws, successPacketBuilder(`service ${data.ServiceId} geregistreerd.`, stringPacketOptions.registerServiceSuccess));
|
|
128
158
|
break;
|
|
129
159
|
case requestType.GetService:
|
|
130
|
-
|
|
160
|
+
{
|
|
161
|
+
const getServiceData = getServicePacketSchema.safeParse(jsonData.data);
|
|
162
|
+
if (!getServiceData.success) {
|
|
163
|
+
log(id, 'ongeldig get service packet ontvangen.');
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
data = getServiceData.data as getServicePacket;
|
|
167
|
+
}
|
|
131
168
|
log(id, `service ${data.ServiceId} opgevraagd bij client ${data.ClientId}.`);
|
|
132
169
|
if (!privlegeCheck(id, PRIVLEGE_LEVELS.SERVICE_ACCESS)) {
|
|
133
170
|
log(id, 'get service geweigerd vanwege privleges.');
|
|
@@ -165,7 +202,14 @@ export default function startServer(customConfig?: Partial<configType>) {
|
|
|
165
202
|
}
|
|
166
203
|
break;
|
|
167
204
|
case requestType.GetServiceResponse:
|
|
168
|
-
|
|
205
|
+
{
|
|
206
|
+
const responseData = getServiceResponsePacketToServerSchema.safeParse(jsonData.data);
|
|
207
|
+
if (!responseData.success) {
|
|
208
|
+
log(id, 'ongeldig get service response packet ontvangen.');
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
data = responseData.data;
|
|
212
|
+
}
|
|
169
213
|
if (!privlegeCheck(id, PRIVLEGE_LEVELS.SERVICE_ACCESS)) {
|
|
170
214
|
console.error('GetServiceResponse received from unprivileged client how tf does this even happen:', id);
|
|
171
215
|
WsSend(ws, unprivlegedError);
|
|
@@ -187,7 +231,14 @@ export default function startServer(customConfig?: Partial<configType>) {
|
|
|
187
231
|
}
|
|
188
232
|
break;
|
|
189
233
|
case requestType.RegisterConifg:
|
|
190
|
-
|
|
234
|
+
{
|
|
235
|
+
const registerConfigData = registerConfigPacketSchema.safeParse(jsonData.data);
|
|
236
|
+
if (!registerConfigData.success) {
|
|
237
|
+
log(id, 'ongeldig register config packet ontvangen.');
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
data = registerConfigData.data as registerConfigPacket;
|
|
241
|
+
}
|
|
191
242
|
if (!privlegeCheck(id, PRIVLEGE_LEVELS.CONFIG_ACCESS)) {
|
|
192
243
|
log(id, 'register geweigerd vanwege privleges.');
|
|
193
244
|
WsSend(ws, unprivlegedError);
|
|
@@ -204,7 +255,14 @@ export default function startServer(customConfig?: Partial<configType>) {
|
|
|
204
255
|
WsSend(ws, unprivlegedError);
|
|
205
256
|
return;
|
|
206
257
|
}
|
|
207
|
-
|
|
258
|
+
{
|
|
259
|
+
const setConfigData = setConfigPacketSchema.safeParse(jsonData.data);
|
|
260
|
+
if (!setConfigData.success) {
|
|
261
|
+
log(id, 'ongeldig set config packet ontvangen.');
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
data = setConfigData.data as setConfigPacket;
|
|
265
|
+
}
|
|
208
266
|
log(id, 'update de dinges');
|
|
209
267
|
const otherGuy = clients[data.ClientId]
|
|
210
268
|
if (otherGuy) {
|
|
@@ -233,6 +291,26 @@ export default function startServer(customConfig?: Partial<configType>) {
|
|
|
233
291
|
console.info('test server afgesloten.');
|
|
234
292
|
}
|
|
235
293
|
break;
|
|
294
|
+
case requestType.SendExternalData:
|
|
295
|
+
{
|
|
296
|
+
if (!privlegeCheck(id, PRIVLEGE_LEVELS.FULL_ACCESS)) {
|
|
297
|
+
log(id, 'Externe data verzenden geweigerd vanwege privleges.');
|
|
298
|
+
WsSend(ws, unprivlegedError);
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
const externalData = jsonData.data as sendExternalDataPacket;
|
|
302
|
+
const recipientWs = clients[externalData.ToClientId];
|
|
303
|
+
if (recipientWs) {
|
|
304
|
+
WsSend(recipientWs, {
|
|
305
|
+
type: requestType.SendExternalData,
|
|
306
|
+
data: externalData.externalDataPacket,
|
|
307
|
+
key: undefined
|
|
308
|
+
});
|
|
309
|
+
} else {
|
|
310
|
+
log(id, `externe data ontvanger ${externalData.ToClientId} niet gevonden.`);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
break;
|
|
236
314
|
default:
|
|
237
315
|
log(id, 'invalid msg');
|
|
238
316
|
break;
|
package/src/types.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
1
3
|
export enum requestType {
|
|
2
4
|
Init,
|
|
3
5
|
Success,
|
|
@@ -7,14 +9,10 @@ export enum requestType {
|
|
|
7
9
|
GetService,
|
|
8
10
|
RegisterConifg,
|
|
9
11
|
SetConfig,
|
|
10
|
-
|
|
12
|
+
SendExternalData,
|
|
11
13
|
}
|
|
12
|
-
export enum stringPacketOptions { Error, initSuccess, registerServiceSuccess, getServiceSuccess, registerConfigSuccess, setConfigSuccess };
|
|
13
|
-
export type
|
|
14
|
-
export type namedFakeType = {
|
|
15
|
-
name: string,
|
|
16
|
-
type: fakeTypeType
|
|
17
|
-
};
|
|
14
|
+
export enum stringPacketOptions { Error, initSuccess, registerServiceSuccess, getServiceSuccess, registerConfigSuccess, setConfigSuccess, };
|
|
15
|
+
export type configValueType = "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function";
|
|
18
16
|
export type packet = {
|
|
19
17
|
type: requestType,
|
|
20
18
|
data: any,
|
|
@@ -38,7 +36,6 @@ export type StringPacket = {
|
|
|
38
36
|
// requestType.RegisterService
|
|
39
37
|
export type RegisterServicePacket = {
|
|
40
38
|
ServiceId: string,
|
|
41
|
-
args: namedFakeType[]
|
|
42
39
|
}
|
|
43
40
|
// requestType.GetService ( client1 -> server)
|
|
44
41
|
export type getServicePacket = {
|
|
@@ -72,7 +69,7 @@ export type registerConfigPacket = {
|
|
|
72
69
|
name: string,
|
|
73
70
|
id: string,
|
|
74
71
|
description: string,
|
|
75
|
-
type:
|
|
72
|
+
type: configValueType,
|
|
76
73
|
defaultValue: any,
|
|
77
74
|
value?: any
|
|
78
75
|
}
|
|
@@ -81,4 +78,81 @@ export type setConfigPacket = {
|
|
|
81
78
|
ClientId: string,
|
|
82
79
|
newValue: any,
|
|
83
80
|
id: string
|
|
84
|
-
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export type sendExternalDataPacket = {
|
|
84
|
+
ToClientId: string,
|
|
85
|
+
externalDataPacket: externalDataPacket
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export type externalDataPacket = {
|
|
89
|
+
FromClientId: string,
|
|
90
|
+
data: any
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export const configValueTypeSchema = z.enum(["string", "number", "bigint", "boolean", "symbol", "undefined", "object", "function"]);
|
|
94
|
+
|
|
95
|
+
export const initPacketSchema = z.object({
|
|
96
|
+
ClientId: z.string().min(1)
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
export const initResponsePacketSchema = z.object({
|
|
100
|
+
versionMajor: z.number().int(),
|
|
101
|
+
versionMinor: z.number().int(),
|
|
102
|
+
versionPatch: z.number().int()
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
export const stringPacketSchema = z.object({
|
|
106
|
+
msg: z.string(),
|
|
107
|
+
for: z.nativeEnum(stringPacketOptions)
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
export const registerServicePacketSchema = z.object({
|
|
111
|
+
ServiceId: z.string().min(1)
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
export const getServicePacketSchema = z.object({
|
|
115
|
+
ClientId: z.string().min(1),
|
|
116
|
+
ServiceId: z.string().min(1),
|
|
117
|
+
connectionId: z.string().min(1),
|
|
118
|
+
args: z.array(z.unknown())
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
export const getServicePacketClientSchema = z.object({
|
|
122
|
+
ServiceId: z.string().min(1),
|
|
123
|
+
args: z.array(z.unknown()),
|
|
124
|
+
connectionId: z.string().min(1)
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
export const getServiceResponsePacketToServerSchema = z.object({
|
|
128
|
+
ServiceId: z.string().min(1),
|
|
129
|
+
result: z.unknown(),
|
|
130
|
+
connectionId: z.string().min(1)
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
export const getServiceResponsePacketToClientSchema = z.object({
|
|
134
|
+
result: z.unknown(),
|
|
135
|
+
serviceId: z.string().min(1),
|
|
136
|
+
connectionId: z.string().min(1)
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
export const registerConfigPacketSchema = z.object({
|
|
140
|
+
name: z.string().min(1),
|
|
141
|
+
id: z.string().min(1),
|
|
142
|
+
description: z.string(),
|
|
143
|
+
type: configValueTypeSchema,
|
|
144
|
+
defaultValue: z.unknown(),
|
|
145
|
+
value: z.unknown().optional()
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
export const setConfigPacketSchema = z.object({
|
|
149
|
+
ClientId: z.string().min(1),
|
|
150
|
+
newValue: z.unknown(),
|
|
151
|
+
id: z.string().min(1)
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
export const packetSchema = z.object({
|
|
155
|
+
type: z.nativeEnum(requestType),
|
|
156
|
+
data: z.unknown(),
|
|
157
|
+
key: z.unknown().optional()
|
|
158
|
+
});
|
package/dist/GEN.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function echo(tekst: string): Promise<any>;
|
package/dist/GEN.js
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/* Dit bestand is automatisch gegenereerd door Tonpleun. Wijzigingen hierin worden overschreven. */
|
|
2
|
-
import { getService } from './clientLib.js';
|
|
3
|
-
// Services for client: testClient
|
|
4
|
-
// echo
|
|
5
|
-
export async function echo(tekst) {
|
|
6
|
-
return await getService('echo', 'testClient', [tekst]);
|
|
7
|
-
}
|
|
8
|
-
// Services for client: Client2
|
|
9
|
-
//# sourceMappingURL=GEN.js.map
|
package/dist/GEN.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GEN.js","sourceRoot":"","sources":["../src/GEN.ts"],"names":[],"mappings":"AAAA,mGAAmG;AAEnG,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,kCAAkC;AAClC,OAAO;AACP,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,KAAa;IACpC,OAAO,MAAM,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,+BAA+B"}
|
package/dist/client.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/client.js
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
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
|
package/dist/client.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/dist/client2.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/client2.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
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
|
package/dist/client2.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/dist/test3.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/test3.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
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
|
package/dist/test3.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { initializeClient, registerService, registerConfigItem, getConfigValue } from "~/clientLib";
|
|
2
|
-
async function main() {
|
|
3
|
-
await initializeClient('clientA');
|
|
4
|
-
console.log('Client A is initialized and ready to use services.');
|
|
5
|
-
await registerService('addNumbers', [{ name: 'a', type: 'number' }, { name: 'b', type: 'number' }], (a, b) => {
|
|
6
|
-
if (getConfigValue('addNumbersMode') === 'double') {
|
|
7
|
-
return (a + b) * 2;
|
|
8
|
-
}
|
|
9
|
-
return a + b;
|
|
10
|
-
});
|
|
11
|
-
console.log('Service addNumbers registered on Client A.');
|
|
12
|
-
await registerConfigItem('addNumbers mode', 'Determines how addNumbers behaves', 'normal', 'addNumbersMode');
|
|
13
|
-
console.log('Config item addNumbers mode registered on Client A.');
|
|
14
|
-
// B sluit af als alles gelukt is
|
|
15
|
-
}
|
|
16
|
-
main();
|
|
17
|
-
//# sourceMappingURL=clientA.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clientA.js","sourceRoot":"","sources":["../../../../src/tests/clients/basic/clientA.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGpG,KAAK,UAAU,IAAI;IACf,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;IAClE,MAAM,eAAe,CAAC,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;QACzH,IAAI,cAAc,CAAC,gBAAgB,CAAC,KAAK,QAAQ,EAAE,CAAC;YAChD,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC1D,MAAM,kBAAkB,CAAC,iBAAiB,EAAE,mCAAmC,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAC7G,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IACnE,iCAAiC;AACrC,CAAC;AACD,IAAI,EAAE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { initializeClient, getService, SetConfigItem, TESTING_HELPERS } from "~/clientLib";
|
|
2
|
-
async function main() {
|
|
3
|
-
await initializeClient('clientB');
|
|
4
|
-
console.log('Client B is initialized and ready to use services.');
|
|
5
|
-
const firstResult = await getService('addNumbers', 'clientA', [5, 10]);
|
|
6
|
-
if (firstResult !== 15) {
|
|
7
|
-
TESTING_HELPERS.error(`Expected 15 but got ${firstResult}`);
|
|
8
|
-
return;
|
|
9
|
-
}
|
|
10
|
-
await SetConfigItem('addNumbersMode', 'double', 'clientA');
|
|
11
|
-
console.log('Config item addNumbers mode set to double on Client A.');
|
|
12
|
-
const secondResult = await getService('addNumbers', 'clientA', [5, 10]);
|
|
13
|
-
if (secondResult !== 30) {
|
|
14
|
-
TESTING_HELPERS.error(`Expected 30 but got ${secondResult}`);
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
TESTING_HELPERS.done();
|
|
18
|
-
}
|
|
19
|
-
main();
|
|
20
|
-
//# sourceMappingURL=clientB.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clientB.js","sourceRoot":"","sources":["../../../../src/tests/clients/basic/clientB.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE3F,KAAK,UAAU,IAAI;IACf,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;IAClE,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACvE,IAAI,WAAW,KAAK,EAAE,EAAE,CAAC;QACrB,eAAe,CAAC,KAAK,CAAC,uBAAuB,WAAW,EAAE,CAAC,CAAC;QAC5D,OAAO;IACX,CAAC;IACD,MAAM,aAAa,CAAC,gBAAgB,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;IACtE,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACxE,IAAI,YAAY,KAAK,EAAE,EAAE,CAAC;QACtB,eAAe,CAAC,KAAK,CAAC,uBAAuB,YAAY,EAAE,CAAC,CAAC;QAC7D,OAAO;IACX,CAAC;IACD,eAAe,CAAC,IAAI,EAAE,CAAC;AAC3B,CAAC;AACD,IAAI,EAAE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { initializeClient, registerService, registerConfigItem, getConfigValue } from "~/clientLib";
|
|
2
|
-
async function main() {
|
|
3
|
-
await initializeClient('clientA', 'service-access-key');
|
|
4
|
-
console.log('Client A is initialized and ready to use services.');
|
|
5
|
-
await registerService('addNumbers', [{ name: 'a', type: 'number' }, { name: 'b', type: 'number' }], (a, b) => {
|
|
6
|
-
if (getConfigValue('addNumbersMode') === 'double') {
|
|
7
|
-
return (a + b) * 2;
|
|
8
|
-
}
|
|
9
|
-
return a + b;
|
|
10
|
-
});
|
|
11
|
-
console.log('Service addNumbers registered on Client A.');
|
|
12
|
-
await registerConfigItem('addNumbers mode', 'Determines how addNumbers behaves', 'normal', 'addNumbersMode');
|
|
13
|
-
console.log('Config item addNumbers mode registered on Client A.');
|
|
14
|
-
// B sluit af als alles gelukt is
|
|
15
|
-
}
|
|
16
|
-
main();
|
|
17
|
-
//# sourceMappingURL=clientA.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clientA.js","sourceRoot":"","sources":["../../../../src/tests/clients/privleges/clientA.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGpG,KAAK,UAAU,IAAI;IACf,MAAM,gBAAgB,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;IAClE,MAAM,eAAe,CAAC,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;QACzH,IAAI,cAAc,CAAC,gBAAgB,CAAC,KAAK,QAAQ,EAAE,CAAC;YAChD,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC1D,MAAM,kBAAkB,CAAC,iBAAiB,EAAE,mCAAmC,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAC7G,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IACnE,iCAAiC;AACrC,CAAC;AACD,IAAI,EAAE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { initializeClient, getService, SetConfigItem, TESTING_HELPERS } from "~/clientLib";
|
|
2
|
-
async function main() {
|
|
3
|
-
await initializeClient('clientB');
|
|
4
|
-
console.log('Client B is initialized and ready to use services.');
|
|
5
|
-
const firstResult = await getService('addNumbers', 'clientA', [5, 10]);
|
|
6
|
-
if (firstResult !== 15) {
|
|
7
|
-
TESTING_HELPERS.error(`Expected 15 but got ${firstResult}`);
|
|
8
|
-
return;
|
|
9
|
-
}
|
|
10
|
-
await SetConfigItem('addNumbersMode', 'double', 'clientA');
|
|
11
|
-
console.log('Config item addNumbers mode set to double on Client A.');
|
|
12
|
-
const secondResult = await getService('addNumbers', 'clientA', [5, 10]);
|
|
13
|
-
if (secondResult !== 30) {
|
|
14
|
-
TESTING_HELPERS.error(`Expected 30 but got ${secondResult}`);
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
TESTING_HELPERS.done();
|
|
18
|
-
}
|
|
19
|
-
main();
|
|
20
|
-
//# sourceMappingURL=clientB.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clientB.js","sourceRoot":"","sources":["../../../../src/tests/clients/privleges/clientB.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE3F,KAAK,UAAU,IAAI;IACf,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;IAClE,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACvE,IAAI,WAAW,KAAK,EAAE,EAAE,CAAC;QACrB,eAAe,CAAC,KAAK,CAAC,uBAAuB,WAAW,EAAE,CAAC,CAAC;QAC5D,OAAO;IACX,CAAC;IACD,MAAM,aAAa,CAAC,gBAAgB,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;IACtE,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACxE,IAAI,YAAY,KAAK,EAAE,EAAE,CAAC;QACtB,eAAe,CAAC,KAAK,CAAC,uBAAuB,YAAY,EAAE,CAAC,CAAC;QAC7D,OAAO;IACX,CAAC;IACD,eAAe,CAAC,IAAI,EAAE,CAAC;AAC3B,CAAC;AACD,IAAI,EAAE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"basic.js","sourceRoot":"","sources":["../../../src/tests/server/basic.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,UAAU,CAAC;AAEnC,WAAW,EAAE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import startServer from '~/server';
|
|
2
|
-
const customConfig = {
|
|
3
|
-
CLIENT_ALLOWED_CHECK: (key) => {
|
|
4
|
-
if (key === 'full-access-key') {
|
|
5
|
-
return 7; // Full access
|
|
6
|
-
}
|
|
7
|
-
else if (key === 'service-access-key') {
|
|
8
|
-
return 2; // Service access only
|
|
9
|
-
}
|
|
10
|
-
else if (key === 'config-access-key') {
|
|
11
|
-
return 3; // Config access only
|
|
12
|
-
}
|
|
13
|
-
else {
|
|
14
|
-
return 0; // No access
|
|
15
|
-
}
|
|
16
|
-
},
|
|
17
|
-
PRIVLEGE_CHECK_AT: 2, // Enforce privilege checks at level 2 and above
|
|
18
|
-
ALLOW_CONFIG_GENERATION: false,
|
|
19
|
-
ALLOW_SCANNING: false,
|
|
20
|
-
};
|
|
21
|
-
startServer(customConfig);
|
|
22
|
-
//# sourceMappingURL=privleges.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"privleges.js","sourceRoot":"","sources":["../../../src/tests/server/privleges.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,UAAU,CAAA;AAElC,MAAM,YAAY,GAAG;IACjB,oBAAoB,EAAE,CAAC,GAAQ,EAAU,EAAE;QACvC,IAAI,GAAG,KAAK,iBAAiB,EAAE,CAAC;YAC5B,OAAO,CAAC,CAAC,CAAC,cAAc;QAC5B,CAAC;aAAM,IAAI,GAAG,KAAK,oBAAoB,EAAE,CAAC;YACtC,OAAO,CAAC,CAAC,CAAC,sBAAsB;QACpC,CAAC;aAAM,IAAI,GAAG,KAAK,mBAAmB,EAAE,CAAC;YACrC,OAAO,CAAC,CAAC,CAAC,qBAAqB;QACnC,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,CAAC,CAAC,YAAY;QAC1B,CAAC;IACL,CAAC;IACD,iBAAiB,EAAE,CAAC,EAAE,gDAAgD;IACtE,uBAAuB,EAAE,KAAK;IAC9B,cAAc,EAAE,KAAK;CACxB,CAAC;AAEF,WAAW,CAAC,YAAY,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|