@cadenza.io/service 1.8.4 → 1.9.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.d.mts +3 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +112 -19
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +112 -19
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -154,11 +154,14 @@ declare class ServiceRegistry {
|
|
|
154
154
|
static get instance(): ServiceRegistry;
|
|
155
155
|
private instances;
|
|
156
156
|
private deputies;
|
|
157
|
+
private remoteSignals;
|
|
157
158
|
serviceName: string | null;
|
|
158
159
|
serviceInstanceId: string | null;
|
|
159
160
|
useSocket: boolean;
|
|
160
161
|
retryCount: number;
|
|
161
162
|
handleInstanceUpdateTask: Task;
|
|
163
|
+
handleRemoteSignalRegistrationTask: Task;
|
|
164
|
+
getRemoteSignalsTask: Task;
|
|
162
165
|
handleSocketStatusUpdateTask: Task;
|
|
163
166
|
fullSyncTask: Task;
|
|
164
167
|
getAllInstances: Task;
|
package/dist/index.d.ts
CHANGED
|
@@ -154,11 +154,14 @@ declare class ServiceRegistry {
|
|
|
154
154
|
static get instance(): ServiceRegistry;
|
|
155
155
|
private instances;
|
|
156
156
|
private deputies;
|
|
157
|
+
private remoteSignals;
|
|
157
158
|
serviceName: string | null;
|
|
158
159
|
serviceInstanceId: string | null;
|
|
159
160
|
useSocket: boolean;
|
|
160
161
|
retryCount: number;
|
|
161
162
|
handleInstanceUpdateTask: Task;
|
|
163
|
+
handleRemoteSignalRegistrationTask: Task;
|
|
164
|
+
getRemoteSignalsTask: Task;
|
|
162
165
|
handleSocketStatusUpdateTask: Task;
|
|
163
166
|
fullSyncTask: Task;
|
|
164
167
|
getAllInstances: Task;
|
package/dist/index.js
CHANGED
|
@@ -327,6 +327,7 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
327
327
|
constructor() {
|
|
328
328
|
this.instances = /* @__PURE__ */ new Map();
|
|
329
329
|
this.deputies = /* @__PURE__ */ new Map();
|
|
330
|
+
this.remoteSignals = /* @__PURE__ */ new Map();
|
|
330
331
|
this.serviceName = null;
|
|
331
332
|
this.serviceInstanceId = null;
|
|
332
333
|
this.useSocket = false;
|
|
@@ -344,12 +345,15 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
344
345
|
if (existing) {
|
|
345
346
|
Object.assign(existing, serviceInstance);
|
|
346
347
|
} else {
|
|
347
|
-
if (this.deputies.has(serviceName)) {
|
|
348
|
+
if (this.deputies.has(serviceName) || this.remoteSignals.has(serviceName)) {
|
|
348
349
|
const communicationTypes = Array.from(
|
|
349
350
|
new Set(
|
|
350
351
|
(_a2 = this.deputies.get(serviceName).map((d) => d.communicationType)) != null ? _a2 : []
|
|
351
352
|
)
|
|
352
353
|
);
|
|
354
|
+
if (!communicationTypes.includes("signal") && this.remoteSignals.has(serviceName)) {
|
|
355
|
+
communicationTypes.push("signal");
|
|
356
|
+
}
|
|
353
357
|
emit("meta.service_registry.dependee_registered", {
|
|
354
358
|
serviceName,
|
|
355
359
|
serviceInstanceId: id,
|
|
@@ -382,6 +386,43 @@ var ServiceRegistry = class _ServiceRegistry {
|
|
|
382
386
|
"CadenzaDB.meta.service_instance.inserted",
|
|
383
387
|
"CadenzaDB.meta.service_instance.updated"
|
|
384
388
|
);
|
|
389
|
+
this.handleRemoteSignalRegistrationTask = CadenzaService.createMetaTask(
|
|
390
|
+
"Handle Remote Signal Registration",
|
|
391
|
+
(ctx) => {
|
|
392
|
+
const { __remoteServiceName, __emitterSignalName } = ctx;
|
|
393
|
+
let remoteSignals = this.remoteSignals.get(__remoteServiceName);
|
|
394
|
+
if (!remoteSignals) {
|
|
395
|
+
this.remoteSignals.set(__remoteServiceName, []);
|
|
396
|
+
remoteSignals = this.remoteSignals.get(__remoteServiceName);
|
|
397
|
+
}
|
|
398
|
+
if (remoteSignals && remoteSignals.findIndex(
|
|
399
|
+
(s) => s.__emitterSignalName === __emitterSignalName
|
|
400
|
+
) === -1) {
|
|
401
|
+
remoteSignals.push({
|
|
402
|
+
__listenerServiceName: ctx.__listenerServiceName,
|
|
403
|
+
__emitterSignalName,
|
|
404
|
+
__signalName: ctx.__signalName,
|
|
405
|
+
__remoteServiceName
|
|
406
|
+
});
|
|
407
|
+
return true;
|
|
408
|
+
}
|
|
409
|
+
return false;
|
|
410
|
+
},
|
|
411
|
+
"Handles registration of remote signals"
|
|
412
|
+
);
|
|
413
|
+
this.getRemoteSignalsTask = CadenzaService.createMetaTask(
|
|
414
|
+
"Get remote signals",
|
|
415
|
+
(ctx) => {
|
|
416
|
+
var _a2, _b2;
|
|
417
|
+
const { serviceName } = ctx;
|
|
418
|
+
let remoteSignals = (_a2 = this.remoteSignals.get(serviceName)) != null ? _a2 : [];
|
|
419
|
+
remoteSignals = remoteSignals.concat((_b2 = this.remoteSignals.get("*")) != null ? _b2 : []);
|
|
420
|
+
return __spreadValues({
|
|
421
|
+
__remoteSignals: remoteSignals
|
|
422
|
+
}, ctx);
|
|
423
|
+
},
|
|
424
|
+
"Gets remote signals"
|
|
425
|
+
).doOn("meta.fetch.handshake_complete");
|
|
385
426
|
this.handleSocketStatusUpdateTask = CadenzaService.createMetaTask(
|
|
386
427
|
"Handle Socket Status Update",
|
|
387
428
|
(ctx) => {
|
|
@@ -1111,7 +1152,7 @@ var RestController = class _RestController {
|
|
|
1111
1152
|
var _a2;
|
|
1112
1153
|
const response = yield (0, import_node_fetch.default)(`${URL}/handshake`, {
|
|
1113
1154
|
method: "POST",
|
|
1114
|
-
body: JSON.stringify(ctx2)
|
|
1155
|
+
body: JSON.stringify(ctx2.handshakeData)
|
|
1115
1156
|
});
|
|
1116
1157
|
const result = yield response.json();
|
|
1117
1158
|
if (result.__status === "error" || result.status !== 200) {
|
|
@@ -1125,11 +1166,14 @@ var RestController = class _RestController {
|
|
|
1125
1166
|
);
|
|
1126
1167
|
for (const communicationType of ctx2.communicationTypes) {
|
|
1127
1168
|
emit2("meta.fetch.service_communication_established", {
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1169
|
+
data: {
|
|
1170
|
+
serviceInstanceId: ctx2.serviceInstanceId,
|
|
1171
|
+
serviceInstanceClientId: CadenzaService.serviceRegistry.serviceInstanceId,
|
|
1172
|
+
communicationType
|
|
1173
|
+
}
|
|
1131
1174
|
});
|
|
1132
1175
|
}
|
|
1176
|
+
return true;
|
|
1133
1177
|
}),
|
|
1134
1178
|
"Sends handshake request",
|
|
1135
1179
|
{
|
|
@@ -1214,10 +1258,24 @@ var RestController = class _RestController {
|
|
|
1214
1258
|
}),
|
|
1215
1259
|
"Requests status"
|
|
1216
1260
|
).doOn("meta.fetch.status_check_requested").emits("meta.fetch.status_checked").emitsOnFail("meta.fetch.status_check_failed");
|
|
1217
|
-
emit(`meta.fetch.handshake_requested:${serviceInstanceId}`, __spreadValues({}, ctx));
|
|
1218
1261
|
return true;
|
|
1219
1262
|
},
|
|
1220
1263
|
"Manages REST client requests as fallback"
|
|
1264
|
+
).then(
|
|
1265
|
+
CadenzaService.createMetaTask(
|
|
1266
|
+
"Prepare handshake",
|
|
1267
|
+
(ctx, emit) => {
|
|
1268
|
+
const { serviceInstanceId, serviceName } = ctx;
|
|
1269
|
+
emit(`meta.fetch.handshake_requested:${serviceInstanceId}`, {
|
|
1270
|
+
serviceInstanceId,
|
|
1271
|
+
serviceName,
|
|
1272
|
+
handshakeData: {
|
|
1273
|
+
// JWT token...
|
|
1274
|
+
}
|
|
1275
|
+
});
|
|
1276
|
+
},
|
|
1277
|
+
"Prepares handshake"
|
|
1278
|
+
)
|
|
1221
1279
|
).doOn("meta.service_registry.dependee_registered").emitsOnFail("meta.fetch.connect_failed");
|
|
1222
1280
|
}
|
|
1223
1281
|
};
|
|
@@ -1511,7 +1569,6 @@ var SignalController = class _SignalController {
|
|
|
1511
1569
|
"Handle Signal Registration",
|
|
1512
1570
|
(ctx, emit) => {
|
|
1513
1571
|
const { __signalName } = ctx;
|
|
1514
|
-
const firstChar = __signalName.charAt(0);
|
|
1515
1572
|
const parts = __signalName.split(".");
|
|
1516
1573
|
const domain = parts[0] === "meta" ? parts[1] : parts[0];
|
|
1517
1574
|
const action = parts[parts.length - 1];
|
|
@@ -1524,24 +1581,55 @@ var SignalController = class _SignalController {
|
|
|
1524
1581
|
service_name: CadenzaService.serviceRegistry.serviceName
|
|
1525
1582
|
}
|
|
1526
1583
|
});
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1584
|
+
return ctx;
|
|
1585
|
+
},
|
|
1586
|
+
"Handles signal registration from a service instance"
|
|
1587
|
+
).then(
|
|
1588
|
+
CadenzaService.createMetaTask(
|
|
1589
|
+
"Handle foreign signal registration",
|
|
1590
|
+
(ctx, emit) => {
|
|
1591
|
+
const { __signalName } = ctx;
|
|
1592
|
+
const firstChar = __signalName.charAt(0);
|
|
1593
|
+
if (firstChar === firstChar.toUpperCase() && firstChar !== firstChar.toLowerCase() || firstChar === "*") {
|
|
1594
|
+
const serviceName = __signalName.split(".")[0];
|
|
1595
|
+
ctx.__listenerServiceName = CadenzaService.serviceRegistry.serviceName;
|
|
1596
|
+
ctx.__emitterSignalName = __signalName.split(".").slice(1).join(".");
|
|
1597
|
+
ctx.__signalName = "meta.signal_controller.foreign_signal_registered";
|
|
1598
|
+
ctx.__remoteServiceName = serviceName;
|
|
1599
|
+
if (serviceName === "*") {
|
|
1600
|
+
emit("meta.signal_controller.wildcard_signal_registered", ctx);
|
|
1601
|
+
} else {
|
|
1602
|
+
emit(
|
|
1603
|
+
`meta.signal_controller.remote_signal_registered:${serviceName}`,
|
|
1604
|
+
ctx
|
|
1605
|
+
);
|
|
1606
|
+
}
|
|
1607
|
+
return ctx;
|
|
1608
|
+
}
|
|
1609
|
+
}
|
|
1610
|
+
).then(CadenzaService.serviceRegistry.handleRemoteSignalRegistrationTask)
|
|
1611
|
+
).doOn("meta.signal_broker.added");
|
|
1612
|
+
CadenzaService.createMetaTask(
|
|
1613
|
+
"Forward signal observations to remote service",
|
|
1614
|
+
(ctx, emit) => {
|
|
1615
|
+
const { __remoteSignals } = ctx;
|
|
1616
|
+
for (const remoteSignal of __remoteSignals) {
|
|
1617
|
+
if (remoteSignal.__remoteServiceName === "*") {
|
|
1618
|
+
emit(
|
|
1619
|
+
"meta.signal_controller.wildcard_signal_registered",
|
|
1620
|
+
remoteSignal
|
|
1621
|
+
);
|
|
1534
1622
|
} else {
|
|
1535
1623
|
emit(
|
|
1536
|
-
`meta.signal_controller.remote_signal_registered:${
|
|
1537
|
-
|
|
1624
|
+
`meta.signal_controller.remote_signal_registered:${remoteSignal.__remoteServiceName}`,
|
|
1625
|
+
remoteSignal
|
|
1538
1626
|
);
|
|
1539
1627
|
}
|
|
1540
1628
|
}
|
|
1541
|
-
return
|
|
1629
|
+
return true;
|
|
1542
1630
|
},
|
|
1543
|
-
"
|
|
1544
|
-
).
|
|
1631
|
+
"Forwards signal observations to remote service"
|
|
1632
|
+
).doAfter(CadenzaService.serviceRegistry.getRemoteSignalsTask);
|
|
1545
1633
|
CadenzaService.createMetaTask("Handle foreign signal registration", (ctx) => {
|
|
1546
1634
|
const { __emitterSignalName, __listenerServiceName } = ctx;
|
|
1547
1635
|
CadenzaService.createSignalTransmissionTask(
|
|
@@ -2995,6 +3083,11 @@ var DatabaseController = class _DatabaseController {
|
|
|
2995
3083
|
delete context.sort;
|
|
2996
3084
|
delete context.limit;
|
|
2997
3085
|
delete context.offset;
|
|
3086
|
+
console.log(
|
|
3087
|
+
"EXECUTED",
|
|
3088
|
+
`db${op.charAt(0).toUpperCase() + op.slice(1)}${tableName.charAt(0).toUpperCase() + tableName.slice(1)}`,
|
|
3089
|
+
context
|
|
3090
|
+
);
|
|
2998
3091
|
return context;
|
|
2999
3092
|
}),
|
|
3000
3093
|
`Auto-generated ${op} task for ${tableName}`,
|