@cadenza.io/service 1.9.55 → 1.10.1

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.js CHANGED
@@ -142,9 +142,11 @@ var DeputyTask = class extends import_core.Task {
142
142
  return new Promise((resolve, reject) => {
143
143
  if (context.__metadata.__blockRemoteExecution) {
144
144
  reject(new Error("Blocked remote execution"));
145
+ return;
145
146
  }
146
147
  if (context.__metadata.__skipRemoteExecution) {
147
148
  resolve(true);
149
+ return;
148
150
  }
149
151
  const processId = (0, import_uuid.v4)();
150
152
  context.__metadata.__deputyExecId = processId;
@@ -336,16 +338,16 @@ var ServiceRegistry = class _ServiceRegistry {
336
338
  "Handle Instance Update",
337
339
  (ctx, emit) => {
338
340
  var _a2;
339
- const { serviceInstance } = ctx;
340
- const { id, serviceName, address, port, exposed } = serviceInstance;
341
+ const { service_instance } = ctx;
342
+ const { id, serviceName, address, port, exposed } = service_instance;
341
343
  if (!this.instances.has(serviceName))
342
344
  this.instances.set(serviceName, []);
343
345
  const instances = this.instances.get(serviceName);
344
346
  const existing = instances.find((i) => i.id === id);
345
347
  if (existing) {
346
- Object.assign(existing, serviceInstance);
348
+ Object.assign(existing, service_instance);
347
349
  } else {
348
- if (this.deputies.has(serviceName) || this.remoteSignals.has(serviceName) || this.remoteSignals.has("*")) {
350
+ if (this.deputies.has(serviceName) || this.remoteSignals.has(serviceName) || this.remoteSignals.has("*") && this.serviceName !== serviceName) {
349
351
  const communicationTypes = Array.from(
350
352
  new Set(
351
353
  (_a2 = this.deputies.get(serviceName).map((d) => d.communicationType)) != null ? _a2 : []
@@ -362,7 +364,7 @@ var ServiceRegistry = class _ServiceRegistry {
362
364
  protocol: exposed ? "https" : "http",
363
365
  communicationTypes
364
366
  });
365
- serviceInstance.clientCreated = true;
367
+ service_instance.clientCreated = true;
366
368
  for (const instance of this.instances.get(serviceName)) {
367
369
  if (instance.clientCreated) continue;
368
370
  instance.clientCreated = true;
@@ -376,7 +378,7 @@ var ServiceRegistry = class _ServiceRegistry {
376
378
  });
377
379
  }
378
380
  }
379
- instances.push(serviceInstance);
381
+ instances.push(service_instance);
380
382
  }
381
383
  return true;
382
384
  },
@@ -422,7 +424,10 @@ var ServiceRegistry = class _ServiceRegistry {
422
424
  }, ctx);
423
425
  },
424
426
  "Gets remote signals"
425
- ).doOn("meta.fetch.handshake_complete");
427
+ ).doOn(
428
+ "meta.register_remote_signals_requested",
429
+ "meta.fetch.handshake_complete"
430
+ );
426
431
  this.handleSocketStatusUpdateTask = CadenzaService.createMetaTask(
427
432
  "Handle Socket Status Update",
428
433
  (ctx) => {
@@ -456,10 +461,7 @@ var ServiceRegistry = class _ServiceRegistry {
456
461
  "health",
457
462
  "exposed"
458
463
  ]
459
- }).doOn(
460
- "meta.service_registry_sync_requested",
461
- "meta.service_registry.instance_inserted"
462
- ).then(
464
+ }).doOn("meta.service_registry_sync_requested").then(
463
465
  CadenzaService.createMetaTask("Split service instances", function* (ctx) {
464
466
  const { serviceInstances } = ctx;
465
467
  if (!serviceInstances) return;
@@ -467,6 +469,7 @@ var ServiceRegistry = class _ServiceRegistry {
467
469
  yield { serviceInstance };
468
470
  }
469
471
  }).then(this.handleInstanceUpdateTask)
472
+ // .emits("meta.process_signal_queue_requested"), // TODO Has to happen after the endpoints has been created...
470
473
  );
471
474
  this.updateInstanceId = CadenzaService.createMetaTask(
472
475
  "Update instance id",
@@ -761,10 +764,7 @@ var ServiceRegistry = class _ServiceRegistry {
761
764
  return true;
762
765
  },
763
766
  "Sets service instance id after insertion"
764
- ).emits(
765
- "meta.service_registry.instance_inserted",
766
- "meta.process_signal_queue_requested"
767
- )
767
+ ).emits("meta.service_registry.instance_inserted")
768
768
  );
769
769
  CadenzaService.createMetaTask(
770
770
  "Handle service creation",
@@ -1344,53 +1344,58 @@ var SocketController = class _SocketController {
1344
1344
  if (!ctx.__useSocket) {
1345
1345
  return;
1346
1346
  }
1347
- const server = new import_socket.Server((_a2 = ctx.__httpsServer) != null ? _a2 : ctx.__httpServer);
1348
- ctx.__socketServer = server;
1349
- const profile = (_b2 = ctx.__securityProfile) != null ? _b2 : "medium";
1350
- server.use((socket, next) => {
1351
- var _a3;
1352
- const origin = socket.handshake.headers.origin;
1353
- const allowedOrigins = ["*"];
1354
- const networkType = (_a3 = ctx.__networkType) != null ? _a3 : "internal";
1355
- let effectiveOrigin = origin || "unknown";
1356
- if (networkType === "internal") effectiveOrigin = "internal";
1357
- if (profile !== "low" && !allowedOrigins.includes(effectiveOrigin) && !allowedOrigins.includes("*")) {
1358
- return next(new Error("Unauthorized origin"));
1359
- }
1360
- const limiterOptions = {
1361
- low: { points: Infinity, duration: 300 },
1362
- medium: { points: 100, duration: 300 },
1363
- high: { points: 50, duration: 60, blockDuration: 300 }
1364
- };
1365
- const limiter = new import_rate_limiter_flexible2.RateLimiterMemory(limiterOptions[profile]);
1366
- socket.use((packet, next2) => {
1367
- limiter.consume(socket.handshake.address).then(() => next2()).catch((rej) => {
1368
- if (rej.msBeforeNext > 0) {
1369
- socket.emit("error", {
1370
- message: "Rate limit exceeded",
1371
- retryAfter: rej.msBeforeNext / 1e3
1372
- });
1373
- } else {
1374
- socket.disconnect(true);
1375
- }
1347
+ console.log("SocketServer: Setting up", ctx);
1348
+ try {
1349
+ const server = new import_socket.Server((_a2 = ctx.__httpsServer) != null ? _a2 : ctx.__httpServer);
1350
+ ctx.__socketServer = server;
1351
+ const profile = (_b2 = ctx.__securityProfile) != null ? _b2 : "medium";
1352
+ server.use((socket, next) => {
1353
+ var _a3;
1354
+ const origin = socket.handshake.headers.origin;
1355
+ const allowedOrigins = ["*"];
1356
+ const networkType = (_a3 = ctx.__networkType) != null ? _a3 : "internal";
1357
+ let effectiveOrigin = origin || "unknown";
1358
+ if (networkType === "internal") effectiveOrigin = "internal";
1359
+ if (profile !== "low" && !allowedOrigins.includes(effectiveOrigin) && !allowedOrigins.includes("*")) {
1360
+ return next(new Error("Unauthorized origin"));
1361
+ }
1362
+ const limiterOptions = {
1363
+ low: { points: Infinity, duration: 300 },
1364
+ medium: { points: 100, duration: 300 },
1365
+ high: { points: 50, duration: 60, blockDuration: 300 }
1366
+ };
1367
+ const limiter = new import_rate_limiter_flexible2.RateLimiterMemory(limiterOptions[profile]);
1368
+ socket.use((packet, next2) => {
1369
+ limiter.consume(socket.handshake.address).then(() => next2()).catch((rej) => {
1370
+ if (rej.msBeforeNext > 0) {
1371
+ socket.emit("error", {
1372
+ message: "Rate limit exceeded",
1373
+ retryAfter: rej.msBeforeNext / 1e3
1374
+ });
1375
+ } else {
1376
+ socket.disconnect(true);
1377
+ }
1378
+ });
1376
1379
  });
1377
- });
1378
- socket.use((packet, next2) => {
1379
- if (profile !== "low") {
1380
- const sanitize = (data) => {
1381
- if (typeof data === "string") return (0, import_xss.default)(data);
1382
- if (typeof data === "object") {
1383
- for (const key in data) {
1384
- data[key] = sanitize(data[key]);
1380
+ socket.use((packet, next2) => {
1381
+ if (profile !== "low") {
1382
+ const sanitize = (data) => {
1383
+ if (typeof data === "string") return (0, import_xss.default)(data);
1384
+ if (typeof data === "object") {
1385
+ for (const key in data) {
1386
+ data[key] = sanitize(data[key]);
1387
+ }
1385
1388
  }
1386
- }
1387
- return data;
1388
- };
1389
- packet[1] = sanitize(packet[1]);
1390
- }
1391
- next2();
1389
+ return data;
1390
+ };
1391
+ packet[1] = sanitize(packet[1]);
1392
+ }
1393
+ next2();
1394
+ });
1392
1395
  });
1393
- });
1396
+ } catch (err) {
1397
+ console.error("Socket setup error:", err);
1398
+ }
1394
1399
  }).then(
1395
1400
  CadenzaService.createMetaTask(
1396
1401
  "Start SocketServer",
@@ -1548,6 +1553,7 @@ var SocketController = class _SocketController {
1548
1553
  if (ctx2.__remoteRoutineName === void 0) {
1549
1554
  return;
1550
1555
  }
1556
+ console.log("Socket Delegate:", ctx2);
1551
1557
  let resultContext;
1552
1558
  try {
1553
1559
  resultContext = yield socket.timeout((_a2 = ctx2.__timeout) != null ? _a2 : 0).emitWithAck("delegation", ctx2);
@@ -1558,6 +1564,7 @@ var SocketController = class _SocketController {
1558
1564
  __spreadValues(__spreadValues({}, resultContext), metadata)
1559
1565
  );
1560
1566
  } catch (e) {
1567
+ console.log("socket error:", e);
1561
1568
  resultContext = __spreadValues(__spreadValues({
1562
1569
  __error: `Timeout error: ${e}`,
1563
1570
  errored: true
@@ -1647,6 +1654,9 @@ var SignalController = class _SignalController {
1647
1654
  const firstChar = __signalName.charAt(0);
1648
1655
  if (firstChar === firstChar.toUpperCase() && firstChar !== firstChar.toLowerCase() || firstChar === "*") {
1649
1656
  const serviceName = __signalName.split(".")[0];
1657
+ if (CadenzaService.serviceRegistry.serviceName === serviceName) {
1658
+ return false;
1659
+ }
1650
1660
  ctx.__listenerServiceName = CadenzaService.serviceRegistry.serviceName;
1651
1661
  ctx.__emitterSignalName = __signalName.split(".").slice(1).join(".");
1652
1662
  ctx.__signalName = "meta.signal_controller.foreign_signal_registered";
@@ -3628,8 +3638,8 @@ var CadenzaService = class {
3628
3638
  if ((_g = options.cadenzaDB) == null ? void 0 : _g.connect) {
3629
3639
  import_core3.default.broker.emit("meta.initializing_service", {
3630
3640
  // Seed the CadenzaDB
3631
- serviceInstance: {
3632
- id: "cadenza-db",
3641
+ service_instance: {
3642
+ uuid: "cadenza-db",
3633
3643
  serviceName: "CadenzaDB",
3634
3644
  address: (_h = options.cadenzaDB) == null ? void 0 : _h.address,
3635
3645
  port: (_i = options.cadenzaDB) == null ? void 0 : _i.port,
@@ -3646,8 +3656,8 @@ var CadenzaService = class {
3646
3656
  (_j = options.relatedServices) == null ? void 0 : _j.forEach((service) => {
3647
3657
  var _a3;
3648
3658
  import_core3.default.broker.emit("meta.initializing_service", {
3649
- serviceInstance: {
3650
- id: service[0],
3659
+ service_instance: {
3660
+ uuid: service[0],
3651
3661
  serviceName: service[1],
3652
3662
  address: service[2].split(":")[0],
3653
3663
  port: (_a3 = service[2].split(":")[1]) != null ? _a3 : 3e3,
@@ -3691,6 +3701,8 @@ var CadenzaService = class {
3691
3701
  (ctx, emit) => {
3692
3702
  SignalController.instance;
3693
3703
  GraphMetadataController.instance;
3704
+ emit("meta.service_registry_sync_requested", {});
3705
+ emit("meta.register_remote_signals_requested", { serviceName });
3694
3706
  emit("meta.register_all_routines", {});
3695
3707
  emit("meta.register_all_tasks", {});
3696
3708
  emit("meta.register_all_signals", {});