@cadenza.io/service 1.10.5 → 1.10.7
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/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +116 -115
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +116 -115
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -339,11 +339,11 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
339
339
|
(ctx, emit) => {
|
|
340
340
|
var _a2;
|
|
341
341
|
const { service_instance } = ctx;
|
|
342
|
-
const {
|
|
342
|
+
const { uuid: uuid4, serviceName, address, port, exposed } = service_instance;
|
|
343
343
|
if (!this.instances.has(serviceName))
|
|
344
344
|
this.instances.set(serviceName, []);
|
|
345
345
|
const instances = this.instances.get(serviceName);
|
|
346
|
-
const existing = instances.find((i) => i.
|
|
346
|
+
const existing = instances.find((i) => i.uuid === uuid4);
|
|
347
347
|
if (existing) {
|
|
348
348
|
Object.assign(existing, service_instance);
|
|
349
349
|
} else {
|
|
@@ -358,7 +358,7 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
358
358
|
}
|
|
359
359
|
emit("meta.service_registry.dependee_registered", {
|
|
360
360
|
serviceName,
|
|
361
|
-
serviceInstanceId:
|
|
361
|
+
serviceInstanceId: uuid4,
|
|
362
362
|
serviceAddress: address,
|
|
363
363
|
servicePort: port,
|
|
364
364
|
protocol: exposed ? "https" : "http",
|
|
@@ -370,7 +370,7 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
370
370
|
instance.clientCreated = true;
|
|
371
371
|
emit("meta.service_registry.dependee_registered", {
|
|
372
372
|
serviceName,
|
|
373
|
-
serviceInstanceId:
|
|
373
|
+
serviceInstanceId: uuid4,
|
|
374
374
|
serviceAddress: address,
|
|
375
375
|
servicePort: port,
|
|
376
376
|
protocol: exposed ? "https" : "http",
|
|
@@ -434,7 +434,7 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
434
434
|
const instanceId = ctx.__serviceInstanceId;
|
|
435
435
|
const serviceName = ctx.__serviceName;
|
|
436
436
|
const instances = this.instances.get(serviceName);
|
|
437
|
-
const instance = instances == null ? void 0 : instances.find((i) => i.
|
|
437
|
+
const instance = instances == null ? void 0 : instances.find((i) => i.uuid === instanceId);
|
|
438
438
|
if (instance) {
|
|
439
439
|
instance.health = ctx.health;
|
|
440
440
|
instance.numberOfRunningGraphs = ctx.numberOfRunningGraphs;
|
|
@@ -489,7 +489,7 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
489
489
|
const { __id } = context;
|
|
490
490
|
let instance;
|
|
491
491
|
for (const instances of this.instances.values()) {
|
|
492
|
-
instance = instances.find((i) => i.
|
|
492
|
+
instance = instances.find((i) => i.uuid === __id);
|
|
493
493
|
if (instance) break;
|
|
494
494
|
}
|
|
495
495
|
return __spreadProps(__spreadValues({}, context), { __instance: instance });
|
|
@@ -567,7 +567,7 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
567
567
|
return context;
|
|
568
568
|
}
|
|
569
569
|
let instancesToTry = instances.filter(
|
|
570
|
-
(i) => !(__triedInstances == null ? void 0 : __triedInstances.includes(i.
|
|
570
|
+
(i) => !(__triedInstances == null ? void 0 : __triedInstances.includes(i.uuid))
|
|
571
571
|
);
|
|
572
572
|
if (instancesToTry.length === 0) {
|
|
573
573
|
if (this.useSocket) {
|
|
@@ -584,9 +584,9 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
584
584
|
if (retries > 0) {
|
|
585
585
|
selected = instancesToTry[Math.floor(Math.random() * instancesToTry.length)];
|
|
586
586
|
}
|
|
587
|
-
context.__instance = selected.
|
|
587
|
+
context.__instance = selected.uuid;
|
|
588
588
|
context.__triedInstances = triedInstances;
|
|
589
|
-
context.__triedInstances.push(selected.
|
|
589
|
+
context.__triedInstances.push(selected.uuid);
|
|
590
590
|
context.__retries = retries;
|
|
591
591
|
if (this.useSocket) {
|
|
592
592
|
emit(
|
|
@@ -625,7 +625,7 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
625
625
|
errored: true
|
|
626
626
|
};
|
|
627
627
|
}
|
|
628
|
-
const self2 = (_a2 = this.instances.get(this.serviceName)) == null ? void 0 : _a2.find((i) => i.
|
|
628
|
+
const self2 = (_a2 = this.instances.get(this.serviceName)) == null ? void 0 : _a2.find((i) => i.uuid === this.serviceInstanceId);
|
|
629
629
|
return __spreadProps(__spreadValues({}, ctx), {
|
|
630
630
|
__status: "ok",
|
|
631
631
|
__numberOfRunningGraphs: (_b2 = self2 == null ? void 0 : self2.numberOfRunningGraphs) != null ? _b2 : 0,
|
|
@@ -1345,13 +1345,19 @@ var SocketController = class _SocketController {
|
|
|
1345
1345
|
return;
|
|
1346
1346
|
}
|
|
1347
1347
|
console.log("SocketServer: Setting up", ctx);
|
|
1348
|
+
let server;
|
|
1348
1349
|
try {
|
|
1349
|
-
|
|
1350
|
-
ctx.__socketServer = server;
|
|
1350
|
+
server = new import_socket.Server((_a2 = ctx.__httpsServer) != null ? _a2 : ctx.__httpServer);
|
|
1351
1351
|
console.log("SocketServer:", server);
|
|
1352
1352
|
const profile = (_b2 = ctx.__securityProfile) != null ? _b2 : "medium";
|
|
1353
1353
|
server.use((socket, next) => {
|
|
1354
1354
|
var _a3;
|
|
1355
|
+
console.log(
|
|
1356
|
+
"SocketServer: middleware",
|
|
1357
|
+
socket.handshake.headers.origin,
|
|
1358
|
+
profile,
|
|
1359
|
+
ctx.__networkType
|
|
1360
|
+
);
|
|
1355
1361
|
const origin = socket.handshake.headers.origin;
|
|
1356
1362
|
const allowedOrigins = ["*"];
|
|
1357
1363
|
const networkType = (_a3 = ctx.__networkType) != null ? _a3 : "internal";
|
|
@@ -1369,11 +1375,16 @@ var SocketController = class _SocketController {
|
|
|
1369
1375
|
socket.use((packet, next2) => {
|
|
1370
1376
|
limiter.consume(socket.handshake.address).then(() => next2()).catch((rej) => {
|
|
1371
1377
|
if (rej.msBeforeNext > 0) {
|
|
1378
|
+
console.log(
|
|
1379
|
+
"SocketServer: Rate limit exceeded",
|
|
1380
|
+
rej.msBeforeNext / 1e3
|
|
1381
|
+
);
|
|
1372
1382
|
socket.emit("error", {
|
|
1373
1383
|
message: "Rate limit exceeded",
|
|
1374
1384
|
retryAfter: rej.msBeforeNext / 1e3
|
|
1375
1385
|
});
|
|
1376
1386
|
} else {
|
|
1387
|
+
console.log("SocketServer: Rate limit exceeded, blocked");
|
|
1377
1388
|
socket.disconnect(true);
|
|
1378
1389
|
}
|
|
1379
1390
|
});
|
|
@@ -1389,7 +1400,9 @@ var SocketController = class _SocketController {
|
|
|
1389
1400
|
}
|
|
1390
1401
|
return data;
|
|
1391
1402
|
};
|
|
1403
|
+
console.log("SocketServer: Sanitizing", packet[1]);
|
|
1392
1404
|
packet[1] = sanitize(packet[1]);
|
|
1405
|
+
console.log("SocketServer: Sanitized", packet[1]);
|
|
1393
1406
|
}
|
|
1394
1407
|
next2();
|
|
1395
1408
|
});
|
|
@@ -1397,114 +1410,101 @@ var SocketController = class _SocketController {
|
|
|
1397
1410
|
console.log("SocketServer: Setup complete");
|
|
1398
1411
|
} catch (err) {
|
|
1399
1412
|
console.error("Socket setup error:", err);
|
|
1400
|
-
return
|
|
1413
|
+
return __spreadProps(__spreadValues({}, ctx), { __error: err, errored: true });
|
|
1401
1414
|
}
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
"
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
destroyCondition: (ctx3) => {
|
|
1438
|
-
var _a2;
|
|
1439
|
-
return ctx3.data.progress === 1 || ((_a2 = ctx3.data) == null ? void 0 : _a2.progress) === void 0;
|
|
1440
|
-
}
|
|
1441
|
-
}
|
|
1442
|
-
).doOn(
|
|
1443
|
-
`meta.node.routine_execution_progress:${deputyExecId}`,
|
|
1444
|
-
`meta.node.graph_completed:${deputyExecId}`
|
|
1445
|
-
).emitsOnFail(
|
|
1446
|
-
`meta.socket.progress_failed:${deputyExecId}`
|
|
1447
|
-
);
|
|
1448
|
-
CadenzaService.broker.emit(
|
|
1449
|
-
"meta.socket.delegation_requested",
|
|
1450
|
-
ctx2
|
|
1451
|
-
);
|
|
1452
|
-
}
|
|
1453
|
-
);
|
|
1454
|
-
ws.on(
|
|
1455
|
-
"signal",
|
|
1456
|
-
(ctx2, callback) => {
|
|
1457
|
-
if (CadenzaService.broker.listObservedSignals().includes(ctx2.__signalName)) {
|
|
1458
|
-
callback({
|
|
1459
|
-
__status: "success",
|
|
1460
|
-
__signalName: ctx2.__signalName
|
|
1461
|
-
});
|
|
1462
|
-
CadenzaService.broker.emit(ctx2.__signalName, ctx2);
|
|
1463
|
-
} else {
|
|
1464
|
-
callback({
|
|
1465
|
-
__status: "error",
|
|
1466
|
-
__error: "No such signal",
|
|
1467
|
-
errored: true
|
|
1468
|
-
});
|
|
1415
|
+
if (!server) {
|
|
1416
|
+
console.error("Socket setup error: No server");
|
|
1417
|
+
return __spreadProps(__spreadValues({}, ctx), { __error: "No server", errored: true });
|
|
1418
|
+
}
|
|
1419
|
+
server.on("connection", (ws) => {
|
|
1420
|
+
console.log("SocketServer: New connection");
|
|
1421
|
+
ws.on("handshake", (ctx2) => {
|
|
1422
|
+
console.log("Socket HANDSHAKE", ctx2.serviceInstanceId);
|
|
1423
|
+
ws.emit("handshake", {
|
|
1424
|
+
serviceInstanceId: CadenzaService.serviceRegistry.serviceInstanceId,
|
|
1425
|
+
__status: "success"
|
|
1426
|
+
});
|
|
1427
|
+
CadenzaService.broker.emit("meta.socket.handshake", ctx2);
|
|
1428
|
+
});
|
|
1429
|
+
ws.on(
|
|
1430
|
+
"delegation",
|
|
1431
|
+
(ctx2, callback) => {
|
|
1432
|
+
const deputyExecId = ctx2.__metadata.__deputyExecId;
|
|
1433
|
+
CadenzaService.createEphemeralMetaTask(
|
|
1434
|
+
"Resolve delegation",
|
|
1435
|
+
callback,
|
|
1436
|
+
"Resolves a delegation request using the provided callback from the client (.emitWithAck())"
|
|
1437
|
+
).doOn(`meta.node.graph_completed:${deputyExecId}`).emits(`meta.socket.delegation_resolved:${deputyExecId}`);
|
|
1438
|
+
CadenzaService.createEphemeralMetaTask(
|
|
1439
|
+
"Delegation progress update",
|
|
1440
|
+
(ctx3) => {
|
|
1441
|
+
if (ctx3.__progress !== void 0)
|
|
1442
|
+
ws.emit("delegation_progress", ctx3);
|
|
1443
|
+
},
|
|
1444
|
+
"Updates delegation progress",
|
|
1445
|
+
{
|
|
1446
|
+
once: false,
|
|
1447
|
+
destroyCondition: (ctx3) => {
|
|
1448
|
+
var _a3;
|
|
1449
|
+
return ctx3.data.progress === 1 || ((_a3 = ctx3.data) == null ? void 0 : _a3.progress) === void 0;
|
|
1469
1450
|
}
|
|
1470
1451
|
}
|
|
1471
|
-
)
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
);
|
|
1486
|
-
ws.on("disconnect", () => {
|
|
1487
|
-
CadenzaService.broker.emit("meta.socket.disconnected", {
|
|
1488
|
-
__wsId: ws.id
|
|
1452
|
+
).doOn(
|
|
1453
|
+
`meta.node.routine_execution_progress:${deputyExecId}`,
|
|
1454
|
+
`meta.node.graph_completed:${deputyExecId}`
|
|
1455
|
+
).emitsOnFail(`meta.socket.progress_failed:${deputyExecId}`);
|
|
1456
|
+
CadenzaService.broker.emit("meta.socket.delegation_requested", ctx2);
|
|
1457
|
+
}
|
|
1458
|
+
);
|
|
1459
|
+
ws.on(
|
|
1460
|
+
"signal",
|
|
1461
|
+
(ctx2, callback) => {
|
|
1462
|
+
if (CadenzaService.broker.listObservedSignals().includes(ctx2.__signalName)) {
|
|
1463
|
+
callback({
|
|
1464
|
+
__status: "success",
|
|
1465
|
+
__signalName: ctx2.__signalName
|
|
1489
1466
|
});
|
|
1490
|
-
|
|
1491
|
-
|
|
1467
|
+
CadenzaService.broker.emit(ctx2.__signalName, ctx2);
|
|
1468
|
+
} else {
|
|
1469
|
+
callback({
|
|
1470
|
+
__status: "error",
|
|
1471
|
+
__error: "No such signal",
|
|
1472
|
+
errored: true
|
|
1473
|
+
});
|
|
1474
|
+
}
|
|
1475
|
+
}
|
|
1476
|
+
);
|
|
1477
|
+
ws.on(
|
|
1478
|
+
"status_check",
|
|
1479
|
+
(ctx2, callback) => {
|
|
1480
|
+
CadenzaService.createEphemeralMetaTask(
|
|
1481
|
+
"Resolve status check",
|
|
1482
|
+
callback,
|
|
1483
|
+
"Resolves a status check request"
|
|
1484
|
+
).doAfter(CadenzaService.serviceRegistry.getStatusTask);
|
|
1485
|
+
CadenzaService.broker.emit("meta.socket.status_check_requested", ctx2);
|
|
1486
|
+
}
|
|
1487
|
+
);
|
|
1488
|
+
ws.on("disconnect", () => {
|
|
1489
|
+
console.log("SocketServer: Disconnected");
|
|
1490
|
+
CadenzaService.broker.emit("meta.socket.disconnected", {
|
|
1491
|
+
__wsId: ws.id
|
|
1492
1492
|
});
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
)
|
|
1493
|
+
});
|
|
1494
|
+
CadenzaService.broker.emit("meta.socket.connected", { __wsId: ws.id });
|
|
1495
|
+
});
|
|
1496
|
+
CadenzaService.createMetaTask(
|
|
1497
|
+
"Broadcast status",
|
|
1498
|
+
(ctx2) => server.emit("status_update", ctx2),
|
|
1499
|
+
"Broadcasts the status of the server to all clients"
|
|
1500
|
+
).doOn("meta.service.updated");
|
|
1501
|
+
CadenzaService.createMetaTask(
|
|
1502
|
+
"Shutdown SocketServer",
|
|
1503
|
+
() => server.close(),
|
|
1504
|
+
"Shuts down the socket server"
|
|
1505
|
+
).doOn("meta.socket_server_shutdown_requested").emits("meta.socket.shutdown");
|
|
1506
|
+
return ctx;
|
|
1507
|
+
})
|
|
1508
1508
|
],
|
|
1509
1509
|
"Bootstraps the socket server"
|
|
1510
1510
|
).doOn("meta.rest.network_configured");
|
|
@@ -1554,6 +1554,7 @@ var SocketController = class _SocketController {
|
|
|
1554
1554
|
CadenzaService.broker.emit("meta.socket_client.status_received", status);
|
|
1555
1555
|
});
|
|
1556
1556
|
socket.on("disconnect", () => {
|
|
1557
|
+
console.log("SocketClient: Disconnected", serviceInstanceId);
|
|
1557
1558
|
CadenzaService.broker.emit("meta.socket_client.disconnected", {
|
|
1558
1559
|
serviceInstanceId
|
|
1559
1560
|
});
|