@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 CHANGED
@@ -130,7 +130,7 @@ declare class DatabaseTask extends DeputyTask {
130
130
  }
131
131
 
132
132
  interface ServiceInstanceDescriptor {
133
- id: string;
133
+ uuid: string;
134
134
  address: string;
135
135
  port: number;
136
136
  serviceName: string;
package/dist/index.d.ts CHANGED
@@ -130,7 +130,7 @@ declare class DatabaseTask extends DeputyTask {
130
130
  }
131
131
 
132
132
  interface ServiceInstanceDescriptor {
133
- id: string;
133
+ uuid: string;
134
134
  address: string;
135
135
  port: number;
136
136
  serviceName: string;
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 { id, serviceName, address, port, exposed } = service_instance;
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.id === id);
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: id,
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: id,
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.id === instanceId);
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.id === __id);
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.id))
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.id;
587
+ context.__instance = selected.uuid;
588
588
  context.__triedInstances = triedInstances;
589
- context.__triedInstances.push(selected.id);
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.id === this.serviceInstanceId);
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
- const server = new import_socket.Server((_a2 = ctx.__httpsServer) != null ? _a2 : ctx.__httpServer);
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 false;
1413
+ return __spreadProps(__spreadValues({}, ctx), { __error: err, errored: true });
1401
1414
  }
1402
- return ctx;
1403
- }).then(
1404
- CadenzaService.createMetaTask(
1405
- "Start SocketServer",
1406
- (ctx) => {
1407
- const server = ctx.__socketServer;
1408
- console.log("SocketServer: Starting", server);
1409
- server.on("connection", (ws) => {
1410
- console.log("SocketServer: New connection");
1411
- ws.on("handshake", (ctx2) => {
1412
- console.log("Socket HANDSHAKE", ctx2.serviceInstanceId);
1413
- ws.emit("handshake", {
1414
- serviceInstanceId: CadenzaService.serviceRegistry.serviceInstanceId,
1415
- __status: "success"
1416
- });
1417
- CadenzaService.broker.emit("meta.socket.handshake", ctx2);
1418
- });
1419
- ws.on(
1420
- "delegation",
1421
- (ctx2, callback) => {
1422
- const deputyExecId = ctx2.__metadata.__deputyExecId;
1423
- CadenzaService.createEphemeralMetaTask(
1424
- "Resolve delegation",
1425
- callback,
1426
- "Resolves a delegation request using the provided callback from the client (.emitWithAck())"
1427
- ).doOn(`meta.node.graph_completed:${deputyExecId}`).emits(`meta.socket.delegation_resolved:${deputyExecId}`);
1428
- CadenzaService.createEphemeralMetaTask(
1429
- "Delegation progress update",
1430
- (ctx3) => {
1431
- if (ctx3.__progress !== void 0)
1432
- ws.emit("delegation_progress", ctx3);
1433
- },
1434
- "Updates delegation progress",
1435
- {
1436
- once: false,
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
- ws.on(
1473
- "status_check",
1474
- (ctx2, callback) => {
1475
- CadenzaService.createEphemeralMetaTask(
1476
- "Resolve status check",
1477
- callback,
1478
- "Resolves a status check request"
1479
- ).doAfter(CadenzaService.serviceRegistry.getStatusTask);
1480
- CadenzaService.broker.emit(
1481
- "meta.socket.status_check_requested",
1482
- ctx2
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
- CadenzaService.broker.emit("meta.socket.connected", { __wsId: ws.id });
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
- CadenzaService.createMetaTask(
1494
- "Broadcast status",
1495
- (ctx2) => server.emit("status_update", ctx2),
1496
- "Broadcasts the status of the server to all clients"
1497
- ).doOn("meta.service.updated");
1498
- CadenzaService.createMetaTask(
1499
- "Shutdown SocketServer",
1500
- () => server.close(),
1501
- "Shuts down the socket server"
1502
- ).doOn("meta.socket_server_shutdown_requested").emits("meta.socket.shutdown");
1503
- return true;
1504
- },
1505
- "Starts socket server and initiates meta-handling"
1506
- ).emitsOnFail("meta.socket.failed")
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
  });