vona-module-a-broadcast 5.1.13 → 5.1.15
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 +55 -6
- package/dist/index.js.map +1 -1
- package/dist/service/broadcast.d.ts +2 -0
- package/dist/service/broadcast.d.ts.map +1 -1
- package/dist/types/broadcast.d.ts +1 -0
- package/dist/types/broadcast.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/service/broadcast.ts +64 -9
- package/src/types/broadcast.ts +1 -0
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BeanInfo, BeanBase, BeanSimple, BeanScopeBase, createBeanDecorator } from 'vona';
|
|
1
|
+
import { BeanInfo, BeanBase, getTestAsyncCompletion, uuidv4, BeanSimple, BeanScopeBase, createBeanDecorator } from 'vona';
|
|
2
2
|
import { __decorate } from 'tslib';
|
|
3
3
|
import { isNil } from '@cabloy/utils';
|
|
4
4
|
import { Service, Scope } from 'vona-module-a-bean';
|
|
@@ -11,6 +11,8 @@ let ServiceBroadcast = class ServiceBroadcast extends BeanBase {
|
|
|
11
11
|
this.__channelName = void 0;
|
|
12
12
|
this.__sub = void 0;
|
|
13
13
|
this.__pub = void 0;
|
|
14
|
+
this.__subReady = void 0;
|
|
15
|
+
this.__ownedDeliveries = new Map();
|
|
14
16
|
}
|
|
15
17
|
__init__() {
|
|
16
18
|
const app = this.app;
|
|
@@ -18,11 +20,26 @@ let ServiceBroadcast = class ServiceBroadcast extends BeanBase {
|
|
|
18
20
|
this.__channelName = getRedisClientKeyPrefix('broadcast', this.app);
|
|
19
21
|
this.__pub = app.bean.redis.get('broadcast').duplicate();
|
|
20
22
|
this.__sub = app.bean.redis.get('broadcast').duplicate();
|
|
21
|
-
this.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
this.__subReady = new Promise((resolve, reject) => {
|
|
24
|
+
this.__sub.subscribe(this.__channelName, err => {
|
|
25
|
+
if (err) reject(err);else resolve();
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
void this.__subReady.catch(err => this.app.handleError(err));
|
|
29
|
+
this.__sub.on('message', (_channel, payload) => {
|
|
30
|
+
const info = JSON.parse(payload);
|
|
31
|
+
const delivery = info.callerId === this.__callerId && info.testCompletionId ? this.__ownedDeliveries.get(info.testCompletionId) : undefined;
|
|
32
|
+
const execute = async () => {
|
|
33
|
+
delivery?.owner.assertScope(info.options);
|
|
34
|
+
await this._performTask(info);
|
|
35
|
+
};
|
|
36
|
+
const task = delivery ? delivery.owner.bind(execute) : execute();
|
|
37
|
+
void task.then(() => {
|
|
38
|
+
delivery?.ticket.complete();
|
|
39
|
+
if (delivery) this.__ownedDeliveries.delete(info.testCompletionId);
|
|
40
|
+
}, err => {
|
|
41
|
+
delivery?.ticket.complete(err);
|
|
42
|
+
if (delivery) this.__ownedDeliveries.delete(info.testCompletionId);
|
|
26
43
|
this.app.handleError(err);
|
|
27
44
|
});
|
|
28
45
|
});
|
|
@@ -55,6 +72,35 @@ let ServiceBroadcast = class ServiceBroadcast extends BeanBase {
|
|
|
55
72
|
}
|
|
56
73
|
};
|
|
57
74
|
}
|
|
75
|
+
const owner = getTestAsyncCompletion(this.app);
|
|
76
|
+
if (owner) {
|
|
77
|
+
owner.assertScope(info.options);
|
|
78
|
+
const deliveryId = uuidv4();
|
|
79
|
+
const ticket = owner.reserve(`broadcast receipt: ${String(info.broadcastName)}`);
|
|
80
|
+
this.__ownedDeliveries.set(deliveryId, {
|
|
81
|
+
owner,
|
|
82
|
+
ticket
|
|
83
|
+
});
|
|
84
|
+
const ownedInfo = {
|
|
85
|
+
...infoWithCaller,
|
|
86
|
+
testCompletionId: deliveryId
|
|
87
|
+
};
|
|
88
|
+
void owner.track(`broadcast publish: ${String(info.broadcastName)}`, async () => {
|
|
89
|
+
try {
|
|
90
|
+
await this.__subReady;
|
|
91
|
+
} catch (err) {
|
|
92
|
+
this.__ownedDeliveries.delete(deliveryId);
|
|
93
|
+
ticket.complete(err);
|
|
94
|
+
throw err;
|
|
95
|
+
}
|
|
96
|
+
// A transport failure can follow delivery; only receipt can settle its ticket.
|
|
97
|
+
await this.__pub.publish(this.__channelName, JSON.stringify(ownedInfo));
|
|
98
|
+
}).catch(err => {
|
|
99
|
+
if (span) telemetry.recordException(span, err);
|
|
100
|
+
this.app.handleError(err);
|
|
101
|
+
}).finally(() => span?.end());
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
58
104
|
this.__pub.publish(this.__channelName, JSON.stringify(infoWithCaller)).catch(err => {
|
|
59
105
|
if (span) telemetry.recordException(span, err);
|
|
60
106
|
this.app.handleError(err);
|
|
@@ -81,6 +127,9 @@ let ServiceBroadcast = class ServiceBroadcast extends BeanBase {
|
|
|
81
127
|
try {
|
|
82
128
|
// check
|
|
83
129
|
if ((!isNil(instanceName) || instance) && !this.app.meta.appReady) {
|
|
130
|
+
if (info.testCompletionId && info.callerId === this.__callerId) {
|
|
131
|
+
throw new Error('Owned broadcast requires a ready application');
|
|
132
|
+
}
|
|
84
133
|
// ignore
|
|
85
134
|
return;
|
|
86
135
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/service/broadcast.ts","../src/.metadata/this.ts","../src/monkey.ts","../src/main.ts","../src/.metadata/index.ts","../src/lib/beanBroadcastBase.ts","../src/lib/broadcast.ts"],"sourcesContent":[null,null,null,null,null,null,null],"names":["ServiceBroadcast","BeanBase","constructor","args","__callerId","__channelName","__sub","__pub","__init__","app","bean","worker","id","getRedisClientKeyPrefix","redis","get","duplicate","subscribe","on","_channel","info","_performTask","JSON","parse","then","catch","err","handleError","disposePub","disconnect","disposeSub","emit","telemetry","$scope","service","infoWithCaller","callerId","span","enabled","startSpan","String","broadcastName","kind","attributes","undefined","options","injectCarrier","createContext","publish","stringify","recordException","finally","end","parent","extractCarrier","isEmitter","broadcastItem","onion","broadcast","getOnionSlice","broadcastConfig","getOnionOptions","instanceName","instance","isNil","meta","appReady","execute","executor","newCtx","beanFullName","beanOptions","beanInstance","_getBean","data","dbInfo","locale","tz","extraData","state","context","transaction","withSpan","__decorate","Service","__z_BeanInfo","module","__ThisModule__","Monkey","BeanSimple","appClose","scopeSelf","scope","appClosed","Main","moduleLoading","moduleLoaded","configLoaded","_config","ScopeModuleABroadcast","BeanScopeBase","Scope","BeanBroadcastBase","_prepareInfo","prepareGeneralInfo","$onionName","Broadcast","createBeanDecorator"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/service/broadcast.ts","../src/.metadata/this.ts","../src/monkey.ts","../src/main.ts","../src/.metadata/index.ts","../src/lib/beanBroadcastBase.ts","../src/lib/broadcast.ts"],"sourcesContent":[null,null,null,null,null,null,null],"names":["ServiceBroadcast","BeanBase","constructor","args","__callerId","__channelName","__sub","__pub","__subReady","__ownedDeliveries","Map","__init__","app","bean","worker","id","getRedisClientKeyPrefix","redis","get","duplicate","Promise","resolve","reject","subscribe","err","catch","handleError","on","_channel","payload","info","JSON","parse","delivery","callerId","testCompletionId","undefined","execute","owner","assertScope","options","_performTask","task","bind","then","ticket","complete","delete","disposePub","disconnect","disposeSub","emit","telemetry","$scope","service","infoWithCaller","span","enabled","startSpan","String","broadcastName","kind","attributes","injectCarrier","createContext","getTestAsyncCompletion","deliveryId","uuidv4","reserve","set","ownedInfo","track","publish","stringify","recordException","finally","end","parent","extractCarrier","isEmitter","broadcastItem","onion","broadcast","getOnionSlice","broadcastConfig","getOnionOptions","instanceName","instance","isNil","meta","appReady","Error","executor","newCtx","beanFullName","beanOptions","beanInstance","_getBean","data","dbInfo","locale","tz","extraData","state","context","transaction","withSpan","__decorate","Service","__z_BeanInfo","module","__ThisModule__","Monkey","BeanSimple","appClose","scopeSelf","scope","appClosed","Main","moduleLoading","moduleLoaded","configLoaded","_config","ScopeModuleABroadcast","BeanScopeBase","Scope","BeanBroadcastBase","_prepareInfo","prepareGeneralInfo","$onionName","Broadcast","createBeanDecorator"],"mappings":";;;;;;AAWO,IAAMA,gBAAgB,GAAtB,MAAMA,gBAAiB,SAAQC,QAAQ,CAAA;AAAAC,EAAAA,WAAAA,CAAA,GAAAC,IAAA,EAAA;AAAA,IAAA,KAAA,CAAA,GAAAA,IAAA,CAAA;AAAA,IAAA,IAAA,CACpCC,UAAU,GAAA,MAAA;AAAA,IAAA,IAAA,CACVC,aAAa,GAAA,MAAA;AAAA,IAAA,IAAA,CACbC,KAAK,GAAA,MAAA;AAAA,IAAA,IAAA,CACLC,KAAK,GAAA,MAAA;AAAA,IAAA,IAAA,CACLC,UAAU,GAAA,MAAA;AAAA,IAAA,IAAA,CACDC,iBAAiB,GAAG,IAAIC,GAAG,EAGzC;AAAA,EAAA;AAEOC,EAAAA,QAAQA,GAAA;AAChB,IAAA,MAAMC,GAAG,GAAG,IAAI,CAACA,GAAG;IACpB,IAAI,CAACR,UAAU,GAAGQ,GAAG,CAACC,IAAI,CAACC,MAAM,CAACC,EAAE;IACpC,IAAI,CAACV,aAAa,GAAGW,uBAAuB,CAAC,WAAW,EAAE,IAAI,CAACJ,GAAG,CAAC;AACnE,IAAA,IAAI,CAACL,KAAK,GAAGK,GAAG,CAACC,IAAI,CAACI,KAAK,CAACC,GAAG,CAAC,WAAW,CAAC,CAACC,SAAS,EAAE;AACxD,IAAA,IAAI,CAACb,KAAK,GAAGM,GAAG,CAACC,IAAI,CAACI,KAAK,CAACC,GAAG,CAAC,WAAW,CAAC,CAACC,SAAS,EAAE;IACxD,IAAI,CAACX,UAAU,GAAG,IAAIY,OAAO,CAAO,CAACC,OAAO,EAAEC,MAAM,KAAI;MACtD,IAAI,CAAChB,KAAK,CAACiB,SAAS,CAAC,IAAI,CAAClB,aAAa,EAAEmB,GAAG,IAAG;QAC7C,IAAIA,GAAG,EAAEF,MAAM,CAACE,GAAG,CAAC,CAAC,KAChBH,OAAO,EAAE;AAChB,MAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AACF,IAAA,KAAK,IAAI,CAACb,UAAU,CAACiB,KAAK,CAACD,GAAG,IAAI,IAAI,CAACZ,GAAG,CAACc,WAAW,CAACF,GAAG,CAAC,CAAC;IAC5D,IAAI,CAAClB,KAAK,CAACqB,EAAE,CAAC,SAAS,EAAE,CAACC,QAAQ,EAAEC,OAAO,KAAI;AAC7C,MAAA,MAAMC,IAAI,GAAkCC,IAAI,CAACC,KAAK,CAACH,OAAO,CAAC;MAC/D,MAAMI,QAAQ,GACZH,IAAI,CAACI,QAAQ,KAAK,IAAI,CAAC9B,UAAU,IAAI0B,IAAI,CAACK,gBAAgB,GACtD,IAAI,CAAC1B,iBAAiB,CAACS,GAAG,CAACY,IAAI,CAACK,gBAAgB,CAAC,GACjDC,SAAS;AACf,MAAA,MAAMC,OAAO,GAAG,YAAW;QACzBJ,QAAQ,EAAEK,KAAK,CAACC,WAAW,CAACT,IAAI,CAACU,OAAO,CAAC;AACzC,QAAA,MAAM,IAAI,CAACC,YAAY,CAACX,IAAI,CAAC;MAC/B,CAAC;AACD,MAAA,MAAMY,IAAI,GAAGT,QAAQ,GAAGA,QAAQ,CAACK,KAAK,CAACK,IAAI,CAACN,OAAO,CAAC,GAAGA,OAAO,EAAE;AAChE,MAAA,KAAKK,IAAI,CAACE,IAAI,CACZ,MAAK;AACHX,QAAAA,QAAQ,EAAEY,MAAM,CAACC,QAAQ,EAAE;QAC3B,IAAIb,QAAQ,EAAE,IAAI,CAACxB,iBAAiB,CAACsC,MAAM,CAACjB,IAAI,CAACK,gBAAiB,CAAC;MACrE,CAAC,EACDX,GAAG,IAAG;AACJS,QAAAA,QAAQ,EAAEY,MAAM,CAACC,QAAQ,CAACtB,GAAG,CAAC;QAC9B,IAAIS,QAAQ,EAAE,IAAI,CAACxB,iBAAiB,CAACsC,MAAM,CAACjB,IAAI,CAACK,gBAAiB,CAAC;AACnE,QAAA,IAAI,CAACvB,GAAG,CAACc,WAAW,CAACF,GAAG,CAAC;AAC3B,MAAA,CAAC,CACF;AACH,IAAA,CAAC,CAAC;AACJ,EAAA;EAEO,MAAMwB,UAAUA,GAAA;AACrB,IAAA,MAAM,IAAI,CAACzC,KAAK,EAAE0C,UAAU,EAAE;AAChC,EAAA;EAEO,MAAMC,UAAUA,GAAA;AACrB,IAAA,MAAM,IAAI,CAAC5C,KAAK,EAAE2C,UAAU,EAAE;AAChC,EAAA;EAEAE,IAAIA,CAAOrB,IAAgC,EAAA;IACzC,MAAMsB,SAAS,GAAG,IAAI,CAACC,MAAM,CAACD,SAAS,CAACE,OAAO,CAACF,SAAS;AACzD,IAAA,IAAIG,cAAc,GAAG;AACnB,MAAA,GAAGzB,IAAI;MACPI,QAAQ,EAAE,IAAI,CAAC9B;KAChB;AACD,IAAA,MAAMoD,IAAI,GAAGJ,SAAS,CAACK,OAAO,GAC1BL,SAAS,CAACM,SAAS,CAAC,CAAA,kBAAA,EAAqBC,MAAM,CAAC7B,IAAI,CAAC8B,aAAa,CAAC,EAAE,EAAE;AACrEC,MAAAA,IAAI,EAAE,CAAC;AACPC,MAAAA,UAAU,EAAE;AACV,QAAA,0BAA0B,EAAE,SAAS;AACrC,QAAA,4BAA4B,EAAEH,MAAM,CAAC7B,IAAI,CAAC8B,aAAa;AACxD;KACF,CAAC,GACFxB,SAAS;AACb,IAAA,IAAIoB,IAAI,EAAE;AACRD,MAAAA,cAAc,GAAG;AACf,QAAA,GAAGA,cAAc;AACjBf,QAAAA,OAAO,EAAE;UACP,GAAGV,IAAI,CAACU,OAAO;UACfY,SAAS,EAAEA,SAAS,CAACW,aAAa,CAACX,SAAS,CAACY,aAAa,CAACR,IAAI,CAAC;AACjE;OACF;AACH,IAAA;AACA,IAAA,MAAMlB,KAAK,GAAG2B,sBAAsB,CAAC,IAAI,CAACrD,GAAG,CAAC;AAC9C,IAAA,IAAI0B,KAAK,EAAE;AACTA,MAAAA,KAAK,CAACC,WAAW,CAACT,IAAI,CAACU,OAAO,CAAC;AAC/B,MAAA,MAAM0B,UAAU,GAAGC,MAAM,EAAE;AAC3B,MAAA,MAAMtB,MAAM,GAAGP,KAAK,CAAC8B,OAAO,CAAC,CAAA,mBAAA,EAAsBT,MAAM,CAAC7B,IAAI,CAAC8B,aAAa,CAAC,EAAE,CAAC;AAChF,MAAA,IAAI,CAACnD,iBAAiB,CAAC4D,GAAG,CAACH,UAAU,EAAE;QAAE5B,KAAK;AAAEO,QAAAA;AAAM,OAAE,CAAC;AACzD,MAAA,MAAMyB,SAAS,GAAG;AAAE,QAAA,GAAGf,cAAc;AAAEpB,QAAAA,gBAAgB,EAAE+B;OAAY;AACrE,MAAA,KAAK5B,KAAK,CACPiC,KAAK,CAAC,CAAA,mBAAA,EAAsBZ,MAAM,CAAC7B,IAAI,CAAC8B,aAAa,CAAC,CAAA,CAAE,EAAE,YAAW;QACpE,IAAI;UACF,MAAM,IAAI,CAACpD,UAAU;QACvB,CAAC,CAAC,OAAOgB,GAAG,EAAE;AACZ,UAAA,IAAI,CAACf,iBAAiB,CAACsC,MAAM,CAACmB,UAAU,CAAC;AACzCrB,UAAAA,MAAM,CAACC,QAAQ,CAACtB,GAAG,CAAC;AACpB,UAAA,MAAMA,GAAG;AACX,QAAA;AACA;AACA,QAAA,MAAM,IAAI,CAACjB,KAAK,CAACiE,OAAO,CAAC,IAAI,CAACnE,aAAa,EAAE0B,IAAI,CAAC0C,SAAS,CAACH,SAAS,CAAC,CAAC;AACzE,MAAA,CAAC,CAAC,CACD7C,KAAK,CAACD,GAAG,IAAG;QACX,IAAIgC,IAAI,EAAEJ,SAAS,CAACsB,eAAe,CAAClB,IAAI,EAAEhC,GAAG,CAAC;AAC9C,QAAA,IAAI,CAACZ,GAAG,CAACc,WAAW,CAACF,GAAG,CAAC;MAC3B,CAAC,CAAC,CACDmD,OAAO,CAAC,MAAMnB,IAAI,EAAEoB,GAAG,EAAE,CAAC;AAC7B,MAAA;AACF,IAAA;IACA,IAAI,CAACrE,KAAK,CACPiE,OAAO,CAAC,IAAI,CAACnE,aAAa,EAAE0B,IAAI,CAAC0C,SAAS,CAAClB,cAAc,CAAC,CAAC,CAC3D9B,KAAK,CAACD,GAAG,IAAG;MACX,IAAIgC,IAAI,EAAEJ,SAAS,CAACsB,eAAe,CAAClB,IAAI,EAAEhC,GAAG,CAAC;AAC9C,MAAA,IAAI,CAACZ,GAAG,CAACc,WAAW,CAACF,GAAG,CAAC;IAC3B,CAAC,CAAC,CACDmD,OAAO,CAAC,MAAMnB,IAAI,EAAEoB,GAAG,EAAE,CAAC;AAC/B,EAAA;EAEA,MAAMnC,YAAYA,CAAOX,IAAgC,EAAA;IACvD,MAAMsB,SAAS,GAAG,IAAI,CAACC,MAAM,CAACD,SAAS,CAACE,OAAO,CAACF,SAAS;IACzD,MAAMyB,MAAM,GAAGzB,SAAS,CAAC0B,cAAc,CAAChD,IAAI,CAACU,OAAO,EAAEY,SAAS,CAAC;AAChE,IAAA,MAAMI,IAAI,GAAGJ,SAAS,CAACK,OAAO,GAC1BL,SAAS,CAACM,SAAS,CACjB,CAAA,kBAAA,EAAqBC,MAAM,CAAC7B,IAAI,CAAC8B,aAAa,CAAC,EAAE,EACjD;AACEC,MAAAA,IAAI,EAAE,CAAC;AACPC,MAAAA,UAAU,EAAE;AACV,QAAA,0BAA0B,EAAE,SAAS;AACrC,QAAA,4BAA4B,EAAEH,MAAM,CAAC7B,IAAI,CAAC8B,aAAa;AACxD;AACF,KAAA,EACDiB,MAAM,CACP,GACDzC,SAAS;AACb;IACA,MAAM2C,SAAS,GAAGjD,IAAI,CAACI,QAAQ,KAAK,IAAI,CAAC9B,UAAU;AACnD;AACA,IAAA,MAAM4E,aAAa,GAAG,IAAI,CAACnE,IAAI,CAACoE,KAAK,CAACC,SAAS,CAACC,aAAa,CAACrD,IAAI,CAAC8B,aAAa,CAAC;AACjF,IAAA,MAAMwB,eAAe,GAAG,IAAI,CAACvE,IAAI,CAACoE,KAAK,CAACC,SAAS,CAACG,eAAe,CAACvD,IAAI,CAAC8B,aAAa,CAAC;AACrF;AACA,IAAA,MAAM0B,YAAY,GAAGxD,IAAI,CAACU,OAAO,EAAE8C,YAAY;AAC/C,IAAA,MAAMC,QAAQ,GAAGH,eAAe,EAAEG,QAAQ,KAAK,KAAK;IACpD,IAAI;AACF;AACA,MAAA,IAAI,CAAC,CAACC,KAAK,CAACF,YAAY,CAAC,IAAIC,QAAQ,KAAK,CAAC,IAAI,CAAC3E,GAAG,CAAC6E,IAAI,CAACC,QAAQ,EAAE;QACjE,IAAI5D,IAAI,CAACK,gBAAgB,IAAIL,IAAI,CAACI,QAAQ,KAAK,IAAI,CAAC9B,UAAU,EAAE;AAC9D,UAAA,MAAM,IAAIuF,KAAK,CAAC,8CAA8C,CAAC;AACjE,QAAA;AACA;AACA,QAAA;AACF,MAAA;AACA,MAAA,MAAMtD,OAAO,GAAGA,MACd,IAAI,CAACxB,IAAI,CAAC+E,QAAQ,CAACC,MAAM,CACvB,YAAW;AACT,QAAA,MAAMC,YAAY,GAAGd,aAAa,CAACe,WAAW,CAACD,YAAY;QAC3D,MAAME,YAAY,GAChB,IAAI,CAACpF,GAAG,CAACC,IAAI,CAACoF,QAAQ,CAACH,YAAmB,CAC3C;QACD,OAAO,MAAME,YAAY,CAAC3D,OAAO,CAACP,IAAI,CAACoE,IAAI,EAAEnB,SAAS,CAAC;AACzD,MAAA,CAAC,EACD;AACEoB,QAAAA,MAAM,EAAErE,IAAI,CAACU,OAAO,EAAE2D,MAAM;AAC5BC,QAAAA,MAAM,EAAEtE,IAAI,CAACU,OAAO,EAAE4D,MAAM;AAC5BC,QAAAA,EAAE,EAAEvE,IAAI,CAACU,OAAO,EAAE6D,EAAE;QACpBf,YAAY;AACZgB,QAAAA,SAAS,EAAE;AACT,UAAA,GAAGxE,IAAI,CAACU,OAAO,EAAE8D,SAAS;AAC1BC,UAAAA,KAAK,EAAE;AACL,YAAA,GAAGzE,IAAI,CAACU,OAAO,EAAE8D,SAAS,EAAEC,KAAK;YACjCnD,SAAS,EAAEI,IAAI,GACX;cAAEgD,OAAO,EAAEpD,SAAS,CAACY,aAAa,CAACR,IAAI,EAAEqB,MAAM,CAAC;AAAErB,cAAAA;AAAI,aAAE,GACxDpB;AACL;SACF;QACDqE,WAAW,EAAErB,eAAe,EAAEqB,WAAW;AACzClB,QAAAA;AACD,OAAA,CACF;AACH,MAAA,OAAO,OAAO/B,IAAI,GAAGJ,SAAS,CAACsD,QAAQ,CAAClD,IAAI,EAAEnB,OAAO,CAAC,GAAGA,OAAO,EAAE,CAAC;IACrE,CAAC,CAAC,OAAOb,GAAG,EAAE;MACZ,IAAIgC,IAAI,EAAEJ,SAAS,CAACsB,eAAe,CAAClB,IAAI,EAAEhC,GAAG,CAAC;AAC9C,MAAA,MAAMA,GAAG;AACX,IAAA,CAAC,SAAS;MACRgC,IAAI,EAAEoB,GAAG,EAAE;AACb,IAAA;AACF,EAAA;;AAvLW5E,gBAAgB,GAAA2G,UAAA,CAAA,CAD5BC,OAAO,EAAE,EAAAC,QAAA,CAAA;EAAAC,MAAA,EAAA;AAAA,CAAA,CAAA,CACG,EAAA9G,gBAAgB,CAwL5B;;ACnMM,MAAM+G,cAAc,GAAG,aAAa;;ACMrC,MAAOC,MAAO,SAAQC,UAAU,CAAA;EACpC,MAAMC,QAAQA,GAAA;IACZ,MAAMC,SAAS,GAAG,IAAI,CAACvG,GAAG,CAACwG,KAAK,CAACL,cAAc,CAAC;IAChD,MAAMI,SAAS,CAAC7D,OAAO,CAAC4B,SAAS,CAAChC,UAAU,EAAE;AAChD,EAAA;EAEA,MAAMmE,SAASA,GAAA;IACb,MAAMF,SAAS,GAAG,IAAI,CAACvG,GAAG,CAACwG,KAAK,CAACL,cAAc,CAAC;IAChD,MAAMI,SAAS,CAAC7D,OAAO,CAAC4B,SAAS,CAAClC,UAAU,EAAE;AAChD,EAAA;AACD;;ACZK,MAAOsE,IAAK,SAAQL,UAAU,CAAA;EAClC,MAAMM,aAAaA,GAAA,CAAI;EACvB,MAAMC,YAAYA,GAAA;AAChB;AACA,IAAA,IAAI,CAAC3G,IAAI,CAACoF,QAAQ,CAAC,+BAA+B,CAAC;AACrD,EAAA;AAEA,EAAA,MAAMwB,YAAYA,CAACC,OAAY,GAAG;AACnC;;ACwCM,IAAMC,qBAAqB,GAA3B,MAAMA,qBAAsB,SAAQC,aAAa,CAAA;AAA3CD,qBAAqB,GAAAhB,UAAA,CAAA,CADjCkB,KAAK,EAAE,EAAAhB,QAAA,CAAA;EAAAC,MAAA,EAAA;AAAA,CAAA,CAAA,CACK,EAAAa,qBAAqB,CAAyB;AAuB3D;;ACvEM,MAAOG,iBAAkC,SAAQ7H,QAAQ,CAAA;AAC7DkD,EAAAA,IAAIA,CAAC+C,IAAW,EAAE1D,OAA+B,EAAA;IAC/C,OAAO,IAAI,CAACa,MAAM,CAAC6B,SAAS,CAAC5B,OAAO,CAAC4B,SAAS,CAAC/B,IAAI,CAAC,IAAI,CAAC4E,YAAY,CAAC7B,IAAI,EAAE1D,OAAO,CAAC,CAAC;AACvF,EAAA;AAEQuF,EAAAA,YAAYA,CAAC7B,IAAW,EAAE1D,OAA+B,EAAA;AAC/DA,IAAAA,OAAO,GAAG,IAAI,CAACa,MAAM,CAACuC,QAAQ,CAACtC,OAAO,CAACsC,QAAQ,CAACoC,kBAAkB,CAACxF,OAAO,CAAC;IAC3E,OAAO;MACLoB,aAAa,EAAE,IAAI,CAACqE,UAAmB;MACvC/B,IAAI;AACJ1D,MAAAA;KACD;AACH,EAAA;AACD;;ACbK,SAAU0F,SAASA,CAAC1F,OAAoC,EAAA;AAC5D,EAAA,OAAO2F,mBAAmB,CAAC,WAAW,EAAE3F,OAAO,CAAC;AAClD;;"}
|
|
@@ -5,6 +5,8 @@ export declare class ServiceBroadcast extends BeanBase {
|
|
|
5
5
|
private __channelName;
|
|
6
6
|
private __sub;
|
|
7
7
|
private __pub;
|
|
8
|
+
private __subReady;
|
|
9
|
+
private readonly __ownedDeliveries;
|
|
8
10
|
protected __init__(): void;
|
|
9
11
|
disposePub(): Promise<void>;
|
|
10
12
|
disposeSub(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broadcast.d.ts","sourceRoot":"","sources":["../../src/service/broadcast.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"broadcast.d.ts","sourceRoot":"","sources":["../../src/service/broadcast.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAkC,MAAM,MAAM,CAAC;AAIhE,OAAO,KAAK,EAAqB,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAErF,qBACa,gBAAiB,SAAQ,QAAQ;IAC5C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAG9B;IAEJ,SAAS,CAAC,QAAQ;IAsCL,UAAU;IAIV,UAAU;IAIvB,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,oBAAoB,CAAC,IAAI,CAAC;IA2DrC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,oBAAoB,CAAC,IAAI,CAAC;CAoE1D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broadcast.d.ts","sourceRoot":"","sources":["../../src/types/broadcast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,WAAW,qBAAsB,SAAQ,mBAAmB;IAChE,SAAS,CAAC,EAAE;QACV,OAAO,EAAE,CAAC,CAAC;QACX,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB,CAAC,IAAI,GAAG,OAAO;IAC/C,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,oBAAoB,CAAC,IAAI;IACxC,aAAa,EAAE,MAAM,gBAAgB,CAAC;IACtC,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"broadcast.d.ts","sourceRoot":"","sources":["../../src/types/broadcast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,WAAW,qBAAsB,SAAQ,mBAAmB;IAChE,SAAS,CAAC,EAAE;QACV,OAAO,EAAE,CAAC,CAAC;QACX,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB,CAAC,IAAI,GAAG,OAAO;IAC/C,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,oBAAoB,CAAC,IAAI;IACxC,aAAa,EAAE,MAAM,gBAAgB,CAAC;IACtC,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;CAAG;AAEpC,MAAM,WAAW,0BAA0B;IACzC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAiB,SAAS;QACxB,SAAS,EAAE,YAAY,CAAC,gBAAgB,CAAC,CAAC;KAC3C;CACF;AAED,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAiB,YAAY;QAC3B,SAAS,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;KACxC;IAED,UAAiB,gBAAgB;QAC/B,SAAS,EAAE,KAAK,CAAC;KAClB;CACF"}
|
package/package.json
CHANGED
package/src/service/broadcast.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { Redis } from 'ioredis';
|
|
2
|
+
import type { TestAsyncCompletion, TestAsyncCompletionTicket } from 'vona';
|
|
2
3
|
|
|
3
4
|
import { isNil } from '@cabloy/utils';
|
|
4
|
-
import { BeanBase } from 'vona';
|
|
5
|
+
import { BeanBase, getTestAsyncCompletion, uuidv4 } from 'vona';
|
|
5
6
|
import { Service } from 'vona-module-a-bean';
|
|
6
7
|
import { getRedisClientKeyPrefix } from 'vona-module-a-redis';
|
|
7
8
|
|
|
@@ -13,6 +14,11 @@ export class ServiceBroadcast extends BeanBase {
|
|
|
13
14
|
private __channelName: string;
|
|
14
15
|
private __sub: Redis;
|
|
15
16
|
private __pub: Redis;
|
|
17
|
+
private __subReady: Promise<void>;
|
|
18
|
+
private readonly __ownedDeliveries = new Map<
|
|
19
|
+
string,
|
|
20
|
+
{ owner: TestAsyncCompletion; ticket: TestAsyncCompletionTicket }
|
|
21
|
+
>();
|
|
16
22
|
|
|
17
23
|
protected __init__() {
|
|
18
24
|
const app = this.app;
|
|
@@ -20,15 +26,35 @@ export class ServiceBroadcast extends BeanBase {
|
|
|
20
26
|
this.__channelName = getRedisClientKeyPrefix('broadcast', this.app);
|
|
21
27
|
this.__pub = app.bean.redis.get('broadcast').duplicate();
|
|
22
28
|
this.__sub = app.bean.redis.get('broadcast').duplicate();
|
|
23
|
-
this.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
this.__subReady = new Promise<void>((resolve, reject) => {
|
|
30
|
+
this.__sub.subscribe(this.__channelName, err => {
|
|
31
|
+
if (err) reject(err);
|
|
32
|
+
else resolve();
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
void this.__subReady.catch(err => this.app.handleError(err));
|
|
36
|
+
this.__sub.on('message', (_channel, payload) => {
|
|
37
|
+
const info: IBroadcastJobContext<unknown> = JSON.parse(payload);
|
|
38
|
+
const delivery =
|
|
39
|
+
info.callerId === this.__callerId && info.testCompletionId
|
|
40
|
+
? this.__ownedDeliveries.get(info.testCompletionId)
|
|
41
|
+
: undefined;
|
|
42
|
+
const execute = async () => {
|
|
43
|
+
delivery?.owner.assertScope(info.options);
|
|
44
|
+
await this._performTask(info);
|
|
45
|
+
};
|
|
46
|
+
const task = delivery ? delivery.owner.bind(execute) : execute();
|
|
47
|
+
void task.then(
|
|
48
|
+
() => {
|
|
49
|
+
delivery?.ticket.complete();
|
|
50
|
+
if (delivery) this.__ownedDeliveries.delete(info.testCompletionId!);
|
|
51
|
+
},
|
|
52
|
+
err => {
|
|
53
|
+
delivery?.ticket.complete(err);
|
|
54
|
+
if (delivery) this.__ownedDeliveries.delete(info.testCompletionId!);
|
|
30
55
|
this.app.handleError(err);
|
|
31
|
-
}
|
|
56
|
+
},
|
|
57
|
+
);
|
|
32
58
|
});
|
|
33
59
|
}
|
|
34
60
|
|
|
@@ -64,6 +90,32 @@ export class ServiceBroadcast extends BeanBase {
|
|
|
64
90
|
},
|
|
65
91
|
};
|
|
66
92
|
}
|
|
93
|
+
const owner = getTestAsyncCompletion(this.app);
|
|
94
|
+
if (owner) {
|
|
95
|
+
owner.assertScope(info.options);
|
|
96
|
+
const deliveryId = uuidv4();
|
|
97
|
+
const ticket = owner.reserve(`broadcast receipt: ${String(info.broadcastName)}`);
|
|
98
|
+
this.__ownedDeliveries.set(deliveryId, { owner, ticket });
|
|
99
|
+
const ownedInfo = { ...infoWithCaller, testCompletionId: deliveryId };
|
|
100
|
+
void owner
|
|
101
|
+
.track(`broadcast publish: ${String(info.broadcastName)}`, async () => {
|
|
102
|
+
try {
|
|
103
|
+
await this.__subReady;
|
|
104
|
+
} catch (err) {
|
|
105
|
+
this.__ownedDeliveries.delete(deliveryId);
|
|
106
|
+
ticket.complete(err);
|
|
107
|
+
throw err;
|
|
108
|
+
}
|
|
109
|
+
// A transport failure can follow delivery; only receipt can settle its ticket.
|
|
110
|
+
await this.__pub.publish(this.__channelName, JSON.stringify(ownedInfo));
|
|
111
|
+
})
|
|
112
|
+
.catch(err => {
|
|
113
|
+
if (span) telemetry.recordException(span, err);
|
|
114
|
+
this.app.handleError(err);
|
|
115
|
+
})
|
|
116
|
+
.finally(() => span?.end());
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
67
119
|
this.__pub
|
|
68
120
|
.publish(this.__channelName, JSON.stringify(infoWithCaller))
|
|
69
121
|
.catch(err => {
|
|
@@ -100,6 +152,9 @@ export class ServiceBroadcast extends BeanBase {
|
|
|
100
152
|
try {
|
|
101
153
|
// check
|
|
102
154
|
if ((!isNil(instanceName) || instance) && !this.app.meta.appReady) {
|
|
155
|
+
if (info.testCompletionId && info.callerId === this.__callerId) {
|
|
156
|
+
throw new Error('Owned broadcast requires a ready application');
|
|
157
|
+
}
|
|
103
158
|
// ignore
|
|
104
159
|
return;
|
|
105
160
|
}
|