@esfaenza/signalr-notifications 11.2.11 → 11.2.13
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/bundles/esfaenza-signalr-notifications.umd.js +28 -21
- package/bundles/esfaenza-signalr-notifications.umd.js.map +1 -1
- package/bundles/esfaenza-signalr-notifications.umd.min.js +1 -1
- package/bundles/esfaenza-signalr-notifications.umd.min.js.map +1 -1
- package/esfaenza-signalr-notifications.d.ts +1 -1
- package/esfaenza-signalr-notifications.metadata.json +1 -1
- package/esm2015/esfaenza-signalr-notifications.js +2 -2
- package/esm2015/lib/config/SignalrNotificationsModuleConfig.js +1 -1
- package/esm2015/lib/signalr-notifications.module.js +3 -3
- package/esm2015/lib/signalr-notifications.service.js +26 -20
- package/esm2015/lib/signalr-notifications.service.loc.js +2 -1
- package/esm2015/lib/tokens.js +2 -2
- package/fesm2015/esfaenza-signalr-notifications.js +28 -21
- package/fesm2015/esfaenza-signalr-notifications.js.map +1 -1
- package/lib/config/SignalrNotificationsModuleConfig.d.ts +1 -1
- package/lib/signalr-notifications.service.d.ts +8 -16
- package/lib/signalr-notifications.service.loc.d.ts +4 -0
- package/lib/tokens.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"__symbolic":"module","version":4,"metadata":{"NotificationsService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":
|
|
1
|
+
{"__symbolic":"module","version":4,"metadata":{"NotificationsService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":31,"character":57},"arguments":[{"__symbolic":"reference","name":"ɵa"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":31,"character":109},"arguments":[{"__symbolic":"reference","name":"ɵe"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":31,"character":157},"arguments":[{"__symbolic":"reference","name":"ɵb"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":31,"character":208},"arguments":[{"__symbolic":"reference","name":"ɵc"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":31,"character":252},"arguments":[{"__symbolic":"reference","name":"ɵf"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":31,"character":300},"arguments":[{"__symbolic":"reference","name":"ɵd"}]}]],"parameters":[{"__symbolic":"reference","name":"BaseMessageService"},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"boolean"},{"__symbolic":"reference","name":"boolean"},{"__symbolic":"reference","name":"boolean"},{"__symbolic":"reference","name":"boolean"},{"__symbolic":"reference","name":"string"}]}],"connect":[{"__symbolic":"method"}],"ensureConnected":[{"__symbolic":"method"}],"send":[{"__symbolic":"method"}],"invoke":[{"__symbolic":"method"}],"observe":[{"__symbolic":"method"}],"disconnect":[{"__symbolic":"method"}],"substringLog":[{"__symbolic":"method"}],"log":[{"__symbolic":"method"}],"loc":[{"__symbolic":"method"}]}},"SignalrNotificationsModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":7,"character":1}}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["config"],"value":{"ngModule":{"__symbolic":"reference","name":"SignalrNotificationsModule"},"providers":[{"__symbolic":"reference","name":"NotificationsService"},{"provide":{"__symbolic":"reference","name":"BaseMessageService"},"useClass":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"messageService"},"right":{"__symbolic":"reference","name":"BaseMessageService"}}},{"provide":{"__symbolic":"reference","name":"ɵa"},"useValue":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"endpointUrl"}},{"provide":{"__symbolic":"reference","name":"ɵd"},"useValue":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"locale"},"right":"it-IT"}},{"provide":{"__symbolic":"reference","name":"ɵb"},"useValue":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"!=","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"enabled"},"right":null},"thenExpression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"enabled"},"elseExpression":true}},{"provide":{"__symbolic":"reference","name":"ɵc"},"useValue":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"!=","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"debugMode"},"right":null},"thenExpression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"debugMode"},"elseExpression":false}},{"provide":{"__symbolic":"reference","name":"ɵe"},"useValue":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"!=","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"autoReconnect"},"right":null},"thenExpression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"autoReconnect"},"elseExpression":false}},{"provide":{"__symbolic":"reference","name":"ɵf"},"useValue":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"!=","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"useMessagePack"},"right":null},"thenExpression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"useMessagePack"},"elseExpression":false}}]}}}},"BaseMessageService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":9,"character":1}}],"members":{"add":[{"__symbolic":"method"}]}},"EndpointDef":{"__symbolic":"class","arity":2,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"error","message":"Could not resolve type","line":12,"character":63,"context":{"typeName":"TIn"},"module":"./lib/models/EndpointDef"},{"__symbolic":"error","message":"Could not resolve type","line":12,"character":91,"context":{"typeName":"TOut"},"module":"./lib/models/EndpointDef"}]}]},"statics":{"In":{"__symbolic":"function","parameters":["name","inTypeDefault"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"EndpointDef"},"arguments":[{"__symbolic":"reference","name":"name"},{"__symbolic":"reference","name":"inTypeDefault"},{"__symbolic":"reference","name":"undefined"}]}},"Out":{"__symbolic":"function","parameters":["name","outTypeDefault"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"EndpointDef"},"arguments":[{"__symbolic":"reference","name":"name"},{"__symbolic":"reference","name":"undefined"},{"__symbolic":"reference","name":"outTypeDefault"}]}},"Bi":{"__symbolic":"function","parameters":["name","inTypeDefault","outTypeDefault"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"EndpointDef"},"arguments":[{"__symbolic":"reference","name":"name"},{"__symbolic":"reference","name":"inTypeDefault"},{"__symbolic":"reference","name":"outTypeDefault"}]}}}},"SignalrNotificationsModuleConfig":{"__symbolic":"class","members":{}},"ɵa":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":5,"character":56},"arguments":["ENDPOINT_URL"]},"ɵb":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":10,"character":59},"arguments":["SIGNALR_ENABLED"]},"ɵc":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":15,"character":54},"arguments":["DEBUG_MODE"]},"ɵd":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":20,"character":50},"arguments":["LOCALE"]},"ɵe":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":25,"character":57},"arguments":["MESSAGE_PACK"]},"ɵf":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":30,"character":59},"arguments":["AUTO_RECONNECT"]}},"origins":{"NotificationsService":"./lib/signalr-notifications.service","SignalrNotificationsModule":"./lib/signalr-notifications.module","BaseMessageService":"./lib/models/BaseMessageService","EndpointDef":"./lib/models/EndpointDef","SignalrNotificationsModuleConfig":"./lib/config/SignalrNotificationsModuleConfig","ɵa":"./lib/tokens","ɵb":"./lib/tokens","ɵc":"./lib/tokens","ɵd":"./lib/tokens","ɵe":"./lib/tokens","ɵf":"./lib/tokens"},"importAs":"@esfaenza/signalr-notifications"}
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* Generated bundle index. Do not edit.
|
|
3
3
|
*/
|
|
4
4
|
export * from './public-api';
|
|
5
|
-
export { AUTO_RECONNECT as ɵf, DEBUG_MODE as ɵc,
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
export { AUTO_RECONNECT as ɵf, DEBUG_MODE as ɵc, ENDPOINT_URL as ɵa, LOCALE as ɵd, MESSAGE_PACK as ɵe, SIGNALR_ENABLED as ɵb } from './lib/tokens';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNmYWVuemEtc2lnbmFsci1ub3RpZmljYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvc2lnbmFsci1ub3RpZmljYXRpb25zL3NyYy9lc2ZhZW56YS1zaWduYWxyLW5vdGlmaWNhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQztBQUU3QixPQUFPLEVBQUMsY0FBYyxJQUFJLEVBQUUsRUFBQyxVQUFVLElBQUksRUFBRSxFQUFDLFlBQVksSUFBSSxFQUFFLEVBQUMsTUFBTSxJQUFJLEVBQUUsRUFBQyxZQUFZLElBQUksRUFBRSxFQUFDLGVBQWUsSUFBSSxFQUFFLEVBQUMsTUFBTSxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG5cbmV4cG9ydCB7QVVUT19SRUNPTk5FQ1QgYXMgybVmLERFQlVHX01PREUgYXMgybVjLEVORFBPSU5UX1VSTCBhcyDJtWEsTE9DQUxFIGFzIMm1ZCxNRVNTQUdFX1BBQ0sgYXMgybVlLFNJR05BTFJfRU5BQkxFRCBhcyDJtWJ9IGZyb20gJy4vbGliL3Rva2Vucyc7Il19
|
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export class SignalrNotificationsModuleConfig {
|
|
5
5
|
}
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2lnbmFsck5vdGlmaWNhdGlvbnNNb2R1bGVDb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaWduYWxyLW5vdGlmaWNhdGlvbnMvc3JjL2xpYi9jb25maWcvU2lnbmFsck5vdGlmaWNhdGlvbnNNb2R1bGVDb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUE7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZ0NBQWdDO0NBb0M1QyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuLy8gTW9kZWxsaVxyXG5pbXBvcnQgeyBCYXNlTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi9tb2RlbHMvQmFzZU1lc3NhZ2VTZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBDbGFzc2UgZGkgY29uZmlndXJhemlvbmUgcGVyIGxhIGxpYnJlcmlhXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU2lnbmFsck5vdGlmaWNhdGlvbnNNb2R1bGVDb25maWcge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXJsIG5laSBjb25mcm9udGkgZGVsIHF1YWxlIGFwcmlyZSBsYSBjb25uZXNzaW9uZSBTaWduYWxSXHJcbiAgICAgKi9cclxuICAgIGVuZHBvaW50VXJsIDogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2Vydml6aW8gY2hlIGRlZmluaXNjZSBpIG1lc3NhZ2dpIGRpIElOIGUgT1VUIGNvaSBsb3JvIGRlZmF1bHRcclxuICAgICAqL1xyXG4gICAgbWVzc2FnZVNlcnZpY2U/IDogVHlwZTxCYXNlTWVzc2FnZVNlcnZpY2U+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhIHNlIGFiaWxpdGFyZSBvIG1lbm8gbGEgY29ubmVzc2lvbmUgU2lnbmFsUiBuZWkgY29uZnJvbnRpIGRlbGwnVVJMICoqaHViVXJsKipcclxuICAgICAqL1xyXG4gICAgZW5hYmxlZD8gOiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhIHNlIHV0aWxpenphcmUgbWVzc2FnZSBwYWNrIGNvbWUgcHJvdG9jb2xsbyBkaSB0cmFzbWlzc2lvbmVcclxuICAgICAqL1xyXG4gICAgdXNlTWVzc2FnZVBhY2s/IDogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYSBzZSB0ZW50YXJlIGRpIHJpY29ubmV0dGVyc2kgYXV0b21hdGljYW1lbnRlIHF1YW5kbyBsYSBjb25uZXNzaW9uZSBjYWRlXHJcbiAgICAgKi9cclxuICAgIGF1dG9SZWNvbm5lY3Q/IDogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYSBzZSBzY3JpdmVyZSBvIG1lbm8gaSBtZXNzYWdnaSBkaSBkZWJ1Z1xyXG4gICAgICovXHJcbiAgICBkZWJ1Z01vZGU/IDogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIExpbmd1YSBkZWkgZmVlZGJhY2sgYSBjb25zb2xlLCBzb25vIHN1cHBvcnRhdGkgJ2l0LUlUJyBlZCAnZW4tVVMnXHJcbiAgICAgKi9cclxuICAgIGxvY2FsZT8gOiBzdHJpbmdcclxufSJdfQ==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { NgModule } from '@angular/core';
|
|
2
2
|
import { BaseMessageService } from './models/BaseMessageService';
|
|
3
3
|
import { NotificationsService } from './signalr-notifications.service';
|
|
4
|
-
import {
|
|
4
|
+
import { ENDPOINT_URL, SIGNALR_ENABLED, DEBUG_MODE, LOCALE, MESSAGE_PACK, AUTO_RECONNECT } from './tokens';
|
|
5
5
|
export class SignalrNotificationsModule {
|
|
6
6
|
static forRoot(config) {
|
|
7
7
|
return {
|
|
@@ -9,7 +9,7 @@ export class SignalrNotificationsModule {
|
|
|
9
9
|
providers: [
|
|
10
10
|
NotificationsService,
|
|
11
11
|
{ provide: BaseMessageService, useClass: (config === null || config === void 0 ? void 0 : config.messageService) || BaseMessageService },
|
|
12
|
-
{ provide:
|
|
12
|
+
{ provide: ENDPOINT_URL, useValue: config === null || config === void 0 ? void 0 : config.endpointUrl },
|
|
13
13
|
{ provide: LOCALE, useValue: (config === null || config === void 0 ? void 0 : config.locale) || 'it-IT' },
|
|
14
14
|
{ provide: SIGNALR_ENABLED, useValue: (config === null || config === void 0 ? void 0 : config.enabled) != null ? config === null || config === void 0 ? void 0 : config.enabled : true },
|
|
15
15
|
{ provide: DEBUG_MODE, useValue: (config === null || config === void 0 ? void 0 : config.debugMode) != null ? config === null || config === void 0 ? void 0 : config.debugMode : false },
|
|
@@ -22,4 +22,4 @@ export class SignalrNotificationsModule {
|
|
|
22
22
|
SignalrNotificationsModule.decorators = [
|
|
23
23
|
{ type: NgModule }
|
|
24
24
|
];
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsci1ub3RpZmljYXRpb25zLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NpZ25hbHItbm90aWZpY2F0aW9ucy9zcmMvbGliL3NpZ25hbHItbm90aWZpY2F0aW9ucy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRzNHLE1BQU0sT0FBTywwQkFBMEI7SUFDckMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUF5QztRQUN0RCxPQUFPO1lBQ0wsUUFBUSxFQUFFLDBCQUEwQjtZQUNwQyxTQUFTLEVBQUU7Z0JBQ1Qsb0JBQW9CO2dCQUNwQixFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsQ0FBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsY0FBYyxLQUFJLGtCQUFrQixFQUFFO2dCQUN2RixFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxXQUFXLEVBQUU7Z0JBQ3hELEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsTUFBTSxLQUFJLE9BQU8sRUFBRTtnQkFDeEQsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxDQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxPQUFPLEtBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3hGLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsU0FBUyxLQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFO2dCQUN4RixFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLGFBQWEsS0FBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRTtnQkFDbEcsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxDQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxjQUFjLEtBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUU7YUFDdkc7U0FDRixDQUFDO0lBQ0osQ0FBQzs7O1lBaEJGLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuaW1wb3J0IHsgTmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2lnbmFsck5vdGlmaWNhdGlvbnNNb2R1bGVDb25maWcgfSBmcm9tICcuL2NvbmZpZy9TaWduYWxyTm90aWZpY2F0aW9uc01vZHVsZUNvbmZpZyc7XHJcbmltcG9ydCB7IEJhc2VNZXNzYWdlU2VydmljZSB9IGZyb20gJy4vbW9kZWxzL0Jhc2VNZXNzYWdlU2VydmljZSc7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi9zaWduYWxyLW5vdGlmaWNhdGlvbnMuc2VydmljZSc7XHJcbmltcG9ydCB7IEVORFBPSU5UX1VSTCwgU0lHTkFMUl9FTkFCTEVELCBERUJVR19NT0RFLCBMT0NBTEUsIE1FU1NBR0VfUEFDSywgQVVUT19SRUNPTk5FQ1QgfSBmcm9tICcuL3Rva2Vucyc7XHJcblxyXG5ATmdNb2R1bGUoKVxyXG5leHBvcnQgY2xhc3MgU2lnbmFsck5vdGlmaWNhdGlvbnNNb2R1bGUge1xyXG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZz86IFNpZ25hbHJOb3RpZmljYXRpb25zTW9kdWxlQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxTaWduYWxyTm90aWZpY2F0aW9uc01vZHVsZT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmdNb2R1bGU6IFNpZ25hbHJOb3RpZmljYXRpb25zTW9kdWxlLFxyXG4gICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICBOb3RpZmljYXRpb25zU2VydmljZSxcclxuICAgICAgICB7IHByb3ZpZGU6IEJhc2VNZXNzYWdlU2VydmljZSwgdXNlQ2xhc3M6IGNvbmZpZz8ubWVzc2FnZVNlcnZpY2UgfHwgQmFzZU1lc3NhZ2VTZXJ2aWNlIH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiBFTkRQT0lOVF9VUkwsIHVzZVZhbHVlOiBjb25maWc/LmVuZHBvaW50VXJsIH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiBMT0NBTEUsIHVzZVZhbHVlOiBjb25maWc/LmxvY2FsZSB8fCAnaXQtSVQnIH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiBTSUdOQUxSX0VOQUJMRUQsIHVzZVZhbHVlOiBjb25maWc/LmVuYWJsZWQgIT0gbnVsbCA/IGNvbmZpZz8uZW5hYmxlZCA6IHRydWUgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IERFQlVHX01PREUsIHVzZVZhbHVlOiBjb25maWc/LmRlYnVnTW9kZSAhPSBudWxsID8gY29uZmlnPy5kZWJ1Z01vZGUgOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogTUVTU0FHRV9QQUNLLCB1c2VWYWx1ZTogY29uZmlnPy5hdXRvUmVjb25uZWN0ICE9IG51bGwgPyBjb25maWc/LmF1dG9SZWNvbm5lY3QgOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogQVVUT19SRUNPTk5FQ1QsIHVzZVZhbHVlOiBjb25maWc/LnVzZU1lc3NhZ2VQYWNrICE9IG51bGwgPyBjb25maWc/LnVzZU1lc3NhZ2VQYWNrIDogZmFsc2UgfSxcclxuICAgICAgXVxyXG4gICAgfTtcclxuICB9XHJcbn0iXX0=
|
|
@@ -7,36 +7,30 @@ import { Subject, EMPTY, from, of } from "rxjs";
|
|
|
7
7
|
import { catchError, concatMap, delay, tap } from "rxjs/operators";
|
|
8
8
|
// Modelli
|
|
9
9
|
import { BaseMessageService } from './models/BaseMessageService';
|
|
10
|
-
import { DEBUG_MODE,
|
|
10
|
+
import { DEBUG_MODE, ENDPOINT_URL, LOCALE, MESSAGE_PACK, SIGNALR_ENABLED, AUTO_RECONNECT } from "./tokens";
|
|
11
11
|
// Localizzazione
|
|
12
12
|
import { Loc } from './signalr-notifications.service.loc';
|
|
13
|
-
/**
|
|
14
|
-
* Servizio che gestisce la comunicazione con un Hub SignalR in base alle configurazioni fornite dall'applicazione
|
|
15
|
-
*/
|
|
13
|
+
/** Servizio che gestisce la comunicazione con un Hub SignalR in base alle configurazioni fornite dall'applicazione */
|
|
16
14
|
export class NotificationsService {
|
|
17
|
-
/**
|
|
18
|
-
|
|
19
|
-
*
|
|
20
|
-
* @ignore
|
|
21
|
-
*/
|
|
22
|
-
constructor(MessageDef, hub_url, msgpack, enabled, debug, autoreconnect, locale) {
|
|
15
|
+
/** @ignore Costruttore */
|
|
16
|
+
constructor(MessageDef, endpoint_url, msgpack, enabled, debug, autoreconnect, locale) {
|
|
23
17
|
this.MessageDef = MessageDef;
|
|
24
|
-
this.
|
|
18
|
+
this.endpoint_url = endpoint_url;
|
|
25
19
|
this.msgpack = msgpack;
|
|
26
20
|
this.enabled = enabled;
|
|
27
21
|
this.debug = debug;
|
|
28
22
|
this.locale = locale;
|
|
29
|
-
/**
|
|
30
|
-
* Cache degli Observable generati in base agli Endpoint disponibili
|
|
31
|
-
*/
|
|
23
|
+
/** Cache degli Observable generati in base agli Endpoint disponibili */
|
|
32
24
|
this.notifications$ = {};
|
|
25
|
+
/** Coda di chiamate da recuperare quando la connessione viene finalmente aperta */
|
|
26
|
+
this.RequestsToRecover = [];
|
|
33
27
|
if (!this.enabled) {
|
|
34
28
|
this.log(this.loc("SignalR won't be enabled as per configuration"));
|
|
35
29
|
return;
|
|
36
30
|
}
|
|
37
31
|
this.MessageDef.AllDefinitions.forEach(def => { this.notifications$[def.endpoint] = new Subject(); });
|
|
38
32
|
let pars = { skipNegotiation: true, transport: signalR.HttpTransportType.WebSockets, logger: debug ? signalR.LogLevel.Debug : signalR.LogLevel.None };
|
|
39
|
-
var builder = new signalR.HubConnectionBuilder().withUrl(this.
|
|
33
|
+
var builder = new signalR.HubConnectionBuilder().withUrl("/" + this.endpoint_url, pars);
|
|
40
34
|
if (autoreconnect) {
|
|
41
35
|
this.log(this.loc("Building SignalR Hub with Automatic Reconnection"));
|
|
42
36
|
// 100 tentativi di riconnessione, 1 ogni 5 secondi
|
|
@@ -48,13 +42,21 @@ export class NotificationsService {
|
|
|
48
42
|
builder = builder.withHubProtocol(new mphpModule.MessagePackHubProtocol());
|
|
49
43
|
}
|
|
50
44
|
this.connection = builder.build();
|
|
51
|
-
this.connect()
|
|
45
|
+
this.connect(() => {
|
|
46
|
+
if (this.RequestsToRecover.length == 0)
|
|
47
|
+
return;
|
|
48
|
+
for (let i = 0; i < this.RequestsToRecover.length; i++) {
|
|
49
|
+
this.log(this.loc("Recovering request to Endpoint") + " " + this.RequestsToRecover[i].item.endpoint);
|
|
50
|
+
this.send(this.RequestsToRecover[i].item, this.RequestsToRecover[i].dto);
|
|
51
|
+
}
|
|
52
|
+
this.RequestsToRecover = [];
|
|
53
|
+
});
|
|
52
54
|
}
|
|
53
55
|
/**
|
|
54
56
|
* Effettua la connessione all'Hub Signalr e registra tutti gli Endpoint per cui il Backend comunica con il Frontend sulla **connection**
|
|
55
57
|
*/
|
|
56
|
-
connect() {
|
|
57
|
-
this.connection.start().catch(err => console.log(err));
|
|
58
|
+
connect(onConnected) {
|
|
59
|
+
this.connection.start().catch(err => console.log(err)).then(_ => onConnected === null || onConnected === void 0 ? void 0 : onConnected());
|
|
58
60
|
this.MessageDef.AllDefinitions.forEach(d => {
|
|
59
61
|
//Registro solo le cose di IN, quelle di out sono chiamate che faccio io al BE quindi non servono
|
|
60
62
|
if (d.inTypeDefault !== null && d.outTypeDefault === null)
|
|
@@ -95,6 +97,10 @@ export class NotificationsService {
|
|
|
95
97
|
* @param {TOut} dto Dto da inviare all'Endpoint
|
|
96
98
|
*/
|
|
97
99
|
send(item, dto) {
|
|
100
|
+
if (!this.connection) {
|
|
101
|
+
this.RequestsToRecover.push({ item, dto });
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
98
104
|
if (!this.enabled) {
|
|
99
105
|
this.log(this.loc("Send request ignored because SignalR is not active by configuration"));
|
|
100
106
|
return EMPTY;
|
|
@@ -222,11 +228,11 @@ NotificationsService.decorators = [
|
|
|
222
228
|
];
|
|
223
229
|
NotificationsService.ctorParameters = () => [
|
|
224
230
|
{ type: BaseMessageService },
|
|
225
|
-
{ type: String, decorators: [{ type: Inject, args: [
|
|
231
|
+
{ type: String, decorators: [{ type: Inject, args: [ENDPOINT_URL,] }] },
|
|
226
232
|
{ type: Boolean, decorators: [{ type: Inject, args: [MESSAGE_PACK,] }] },
|
|
227
233
|
{ type: Boolean, decorators: [{ type: Inject, args: [SIGNALR_ENABLED,] }] },
|
|
228
234
|
{ type: Boolean, decorators: [{ type: Inject, args: [DEBUG_MODE,] }] },
|
|
229
235
|
{ type: Boolean, decorators: [{ type: Inject, args: [AUTO_RECONNECT,] }] },
|
|
230
236
|
{ type: String, decorators: [{ type: Inject, args: [LOCALE,] }] }
|
|
231
237
|
];
|
|
232
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsci1ub3RpZmljYXRpb25zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zaWduYWxyLW5vdGlmaWNhdGlvbnMvc3JjL2xpYi9zaWduYWxyLW5vdGlmaWNhdGlvbnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsa0NBQWtDO0FBQ2xDLE9BQU8sS0FBSyxPQUFPLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDeEQsT0FBTyxFQUFjLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkUsVUFBVTtBQUNWLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRWpFLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV0RyxpQkFBaUI7QUFDakIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRTFEOztHQUVHO0FBRUgsTUFBTSxPQUFPLG9CQUFvQjtJQVk3Qjs7OztPQUlHO0lBQ0gsWUFBb0IsVUFBOEIsRUFBMkIsT0FBZSxFQUFnQyxPQUFnQixFQUFtQyxPQUFnQixFQUE4QixLQUFjLEVBQTBCLGFBQXNCLEVBQTBCLE1BQWU7UUFBaFQsZUFBVSxHQUFWLFVBQVUsQ0FBb0I7UUFBMkIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUFnQyxZQUFPLEdBQVAsT0FB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QUcsT0FBTyxDQUFDLENBQUE7WUFDaEQsT0FBTyxFQUFFLENBQUM7U0FDYjtRQUNELE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyQyxDQUFDOzs7WUFuT0osVUFBVTs7O1lBVkYsa0JBQWtCO3lDQTRCOEIsTUFBTSxTQUFDLE9BQU87MENBQTRCLE1BQU0sU0FBQyxZQUFZOzBDQUE2QixNQUFNLFNBQUMsZUFBZTswQ0FBNkIsTUFBTSxTQUFDLFVBQVU7MENBQTJCLE1BQU0sU0FBQyxjQUFjO3lDQUEyQixNQUFNLFNBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8vIERpcmV0dGl2ZSwgQ29tcG9uZW50aSwgTGlicmVyaWVcclxuaW1wb3J0ICogYXMgc2lnbmFsUiBmcm9tICdAbWljcm9zb2Z0L3NpZ25hbHInO1xyXG5pbXBvcnQgeyBIdWJDb25uZWN0aW9uU3RhdGUgfSBmcm9tIFwiQG1pY3Jvc29mdC9zaWduYWxyXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIEVNUFRZLCBmcm9tLCBvZiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGNvbmNhdE1hcCwgZGVsYXksIHRhcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuLy8gTW9kZWxsaVxyXG5pbXBvcnQgeyBCYXNlTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuL21vZGVscy9CYXNlTWVzc2FnZVNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbmRwb2ludERlZiB9IGZyb20gJy4vbW9kZWxzL0VuZHBvaW50RGVmJztcclxuaW1wb3J0IHsgREVCVUdfTU9ERSwgSFVCX1VSTCwgTE9DQUxFLCBNRVNTQUdFX1BBQ0ssIFNJR05BTFJfRU5BQkxFRCwgQVVUT19SRUNPTk5FQ1QgfSBmcm9tIFwiLi90b2tlbnNcIjtcclxuXHJcbi8vIExvY2FsaXp6YXppb25lXHJcbmltcG9ydCB7IExvYyB9IGZyb20gJy4vc2lnbmFsci1ub3RpZmljYXRpb25zLnNlcnZpY2UubG9jJztcclxuXHJcbi8qKlxyXG4gKiBTZXJ2aXppbyBjaGUgZ2VzdGlzY2UgbGEgY29tdW5pY2F6aW9uZSBjb24gdW4gSHViIFNpZ25hbFIgaW4gYmFzZSBhbGxlIGNvbmZpZ3VyYXppb25pIGZvcm5pdGUgZGFsbCdhcHBsaWNhemlvbmVcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbnNTZXJ2aWNlIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENhY2hlIGRlZ2xpIE9ic2VydmFibGUgZ2VuZXJhdGkgaW4gYmFzZSBhZ2xpIEVuZHBvaW50IGRpc3BvbmliaWxpXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9ucyQ6IHsgW2luZGV4OiBzdHJpbmddOiBTdWJqZWN0PGFueT4gfSA9IHt9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29ubmVzc2lvbmUgU2lnbmFsclxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGNvbm5lY3Rpb246IHNpZ25hbFIuSHViQ29ubmVjdGlvbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvc3RydXR0b3JlXHJcbiAgICAgKiBcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBNZXNzYWdlRGVmOiBCYXNlTWVzc2FnZVNlcnZpY2UsIEBJbmplY3QoSFVCX1VSTCkgcHJpdmF0ZSBodWJfdXJsOiBzdHJpbmcsIEBJbmplY3QoTUVTU0FHRV9QQUNLKSBwcml2YXRlIG1zZ3BhY2s6IGJvb2xlYW4sIEBJbmplY3QoU0lHTkFMUl9FTkFCTEVEKSBwcml2YXRlIGVuYWJsZWQ6IGJvb2xlYW4sIEBJbmplY3QoREVCVUdfTU9ERSkgcHJpdmF0ZSBkZWJ1ZzogYm9vbGVhbiwgQEluamVjdChBVVRPX1JFQ09OTkVDVCkgYXV0b3JlY29ubmVjdDogYm9vbGVhbiwgQEluamVjdChMT0NBTEUpIHByaXZhdGUgbG9jYWxlIDogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmVuYWJsZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2codGhpcy5sb2MoXCJTaWduYWxSIHdvbid0IGJlIGVuYWJsZWQgYXMgcGVyIGNvbmZpZ3VyYXRpb25cIikpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLk1lc3NhZ2VEZWYuQWxsRGVmaW5pdGlvbnMuZm9yRWFjaChkZWYgPT4geyB0aGlzLm5vdGlmaWNhdGlvbnMkW2RlZi5lbmRwb2ludF0gPSBuZXcgU3ViamVjdDx0eXBlb2YgZGVmLmluVHlwZURlZmF1bHQ+KCk7IH0pO1xyXG5cclxuICAgICAgICBsZXQgcGFyczogc2lnbmFsUi5JSHR0cENvbm5lY3Rpb25PcHRpb25zID0geyBza2lwTmVnb3RpYXRpb246IHRydWUsIHRyYW5zcG9ydDogc2lnbmFsUi5IdHRwVHJhbnNwb3J0VHlwZS5XZWJTb2NrZXRzLCBsb2dnZXI6IGRlYnVnID8gc2lnbmFsUi5Mb2dMZXZlbC5EZWJ1ZyA6IHNpZ25hbFIuTG9nTGV2ZWwuTm9uZSB9O1xyXG4gICAgICAgIHZhciBidWlsZGVyID0gbmV3IHNpZ25hbFIuSHViQ29ubmVjdGlvbkJ1aWxkZXIoKS53aXRoVXJsKHRoaXMuaHViX3VybCwgcGFycyk7XHJcblxyXG4gICAgICAgIGlmIChhdXRvcmVjb25uZWN0KSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nKHRoaXMubG9jKFwiQnVpbGRpbmcgU2lnbmFsUiBIdWIgd2l0aCBBdXRvbWF0aWMgUmVjb25uZWN0aW9uXCIpKTtcclxuICAgICAgICAgICAgLy8gMTAwIHRlbnRhdGl2aSBkaSByaWNvbm5lc3Npb25lLCAxIG9nbmkgNSBzZWNvbmRpXHJcbiAgICAgICAgICAgIGJ1aWxkZXIgPSBidWlsZGVyLndpdGhBdXRvbWF0aWNSZWNvbm5lY3QobmV3IEFycmF5KDEwMCkuZmlsbCg1ICogMTAwMCkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMubXNncGFjaykge1xyXG4gICAgICAgICAgICB0aGlzLmxvZyh0aGlzLmxvYyhcIkJ1aWxkaW5nIFNpZ25hbFIgSHViIHdpdGggTWVzc2FnZVBhY2sgcHJvdG9jb2xcIikpO1xyXG4gICAgICAgICAgICB2YXIgbXBocE1vZHVsZSA9IHJlcXVpcmUoXCJAbWljcm9zb2Z0L3NpZ25hbHItcHJvdG9jb2wtbXNncGFja1wiKTtcclxuICAgICAgICAgICAgYnVpbGRlciA9IGJ1aWxkZXIud2l0aEh1YlByb3RvY29sKG5ldyBtcGhwTW9kdWxlLk1lc3NhZ2VQYWNrSHViUHJvdG9jb2woKSlcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuY29ubmVjdGlvbiA9IGJ1aWxkZXIuYnVpbGQoKTtcclxuICAgICAgICB0aGlzLmNvbm5lY3QoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEVmZmV0dHVhIGxhIGNvbm5lc3Npb25lIGFsbCdIdWIgU2lnbmFsciBlIHJlZ2lzdHJhIHR1dHRpIGdsaSBFbmRwb2ludCBwZXIgY3VpIGlsIEJhY2tlbmQgY29tdW5pY2EgY29uIGlsIEZyb250ZW5kIHN1bGxhICoqY29ubmVjdGlvbioqXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgY29ubmVjdCgpIHtcclxuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uc3RhcnQoKS5jYXRjaChlcnIgPT4gY29uc29sZS5sb2coZXJyKSk7XHJcbiAgICAgICAgdGhpcy5NZXNzYWdlRGVmLkFsbERlZmluaXRpb25zLmZvckVhY2goZCA9PiB7XHJcbiAgICAgICAgICAgIC8vUmVnaXN0cm8gc29sbyBsZSBjb3NlIGRpIElOLCBxdWVsbGUgZGkgb3V0IHNvbm8gY2hpYW1hdGUgY2hlIGZhY2NpbyBpbyBhbCBCRSBxdWluZGkgbm9uIHNlcnZvbm9cclxuICAgICAgICAgICAgaWYgKGQuaW5UeXBlRGVmYXVsdCAhPT0gbnVsbCAmJiBkLm91dFR5cGVEZWZhdWx0ID09PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uLm9uKGQuZW5kcG9pbnQsIChtZXNzYWdlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2codGhpcy5sb2MoXCJSZXF1ZXN0IHJlY2VpdmVkIGZyb20gdGhlIHNlcnZlciBmb3IgZW5kcG9pbnRcIikgKyBcIiAnXCIgKyBkLmVuZHBvaW50ICsgXCInOiBcIiArIHRoaXMuc3Vic3RyaW5nTG9nKEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zJFtkLmVuZHBvaW50XS5uZXh0KG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHRoaXMubG9nKHRoaXMubG9jKFwiUmVmdXNpbmcgdG8gcmVnaXN0ZXIgZW5kcG9pbnRcIikgKyBcIiBcIiArIGQuZW5kcG9pbnQgKyBcIiBcIiArIHRoaXMubG9jKFwiYmVjYXVzZSBpdCBpcyBub3QgZGVjbGFyZWQgYXMgSU4gLSBPTkxZXCIpKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEVmZmV0dHVhIHZlcmlmaWNoZSBzdWxsYSBjb25uZXNzaW9uZSBlLCBpbiBjYXNvIG5vbiBmb3NzZSBjb2xsZWdhdGEsIHRlbnRhIGRpIHJpY29ubmV0dGVybGFcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge1Byb21pc2U8J09LJyB8ICdLTycgfCAnTk8tT1AnPn0gJ09LJyBTZSBsYSBjb25uZXNzaW9uZSDDqCBnacOgIGNvbm5lc3NhIG8gw6ggc3RhdGEgcmljb25uZXNzYSBjb24gc3VjY2Vzc28sICdLTycgU2Ugbm9uIMOoIHN0YXRvIHBvc3NpYmlsZSByaWNvbm5ldHRlcmUgXHJcbiAgICAgKiB1bmEgY29ubmVzc2lvbmUgZGlzY29ubmVzc2EsICdOTy1PUCcgc2UgbGEgY29ubmVzaXNvbmUgw6ggaW4gdW5vIHN0YXRvIGludGVybWVkaW8gY2hlIG5vbiBwdcOyIGVzc2VyZSBtb2RpZmljYXRvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBlbnN1cmVDb25uZWN0ZWQoKTogUHJvbWlzZTwnT0snIHwgJ0tPJyB8ICdOTy1PUCc+IHtcclxuICAgICAgICBpZiAodGhpcy5jb25uZWN0aW9uLnN0YXRlID09IEh1YkNvbm5lY3Rpb25TdGF0ZS5EaXNjb25uZWN0ZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2codGhpcy5sb2MoXCJDb25uZWN0aW9uIGxvc3Qgb3IgbWlzc2luZywgcmVjb25uZWN0aW5nLi4uXCIpKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb24uc3RhcnQoKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4oXyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShcIk9LXCIpO1xyXG4gICAgICAgICAgICAgICAgfSwgXyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2codGhpcy5sb2MoXCJDYW5ub3QgcmVjb25uZWN0IFNpZ25hbFIsIGZyb250ZW5kIEhVQiBvZmZsaW5lXCIpKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFwiS09cIik7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5jb25uZWN0aW9uLnN0YXRlID09IEh1YkNvbm5lY3Rpb25TdGF0ZS5Db25uZWN0ZWQpXHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoXCJPS1wiKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoXCJOTy1PUFwiKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEludmlhIHVuIG1lc3NhZ2dpbyBhbGwnSHViIGRlbCBCYWNrZW5kXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7RW5kcG9pbnREZWY8VE91dCwgYW55Pn0gaXRlbSBFbmRwb2ludCBkYSBjb250YXR0YXJlXHJcbiAgICAgKiBAcGFyYW0ge1RPdXR9IGR0byBEdG8gZGEgaW52aWFyZSBhbGwnRW5kcG9pbnRcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNlbmQ8VE91dD4oaXRlbTogRW5kcG9pbnREZWY8VE91dCwgYW55PiwgZHRvOiBUT3V0KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmVuYWJsZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2codGhpcy5sb2MoXCJTZW5kIHJlcXVlc3QgaWdub3JlZCBiZWNhdXNlIFNpZ25hbFIgaXMgbm90IGFjdGl2ZSBieSBjb25maWd1cmF0aW9uXCIpKTtcclxuICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29ubmVjdGlvbi5zdGF0ZSA9PSBIdWJDb25uZWN0aW9uU3RhdGUuQ29ubmVjdGluZyB8fCB0aGlzLmNvbm5lY3Rpb24uc3RhdGUgPT0gSHViQ29ubmVjdGlvblN0YXRlLlJlY29ubmVjdGluZyB8fCB0aGlzLmNvbm5lY3Rpb24uc3RhdGUgPT0gSHViQ29ubmVjdGlvblN0YXRlLkRpc2Nvbm5lY3RpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2codGhpcy5sb2MoXCJTZW5kIHJlcXVlc3Qgc2VudCBiZWZvcmUgYSBjb25uZWN0aW9uIHdhcyBpbiBzdGFibGUgU3RhdGUsIHdhaXRpbmcgMSBzZWNvbmQgYW5kIHJldHJ5aW5nXCIpKTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IHRoaXMuc2VuZChpdGVtLCBkdG8pOyB9LCAxMDAwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5jb25uZWN0aW9uLnN0YXRlID09IEh1YkNvbm5lY3Rpb25TdGF0ZS5EaXNjb25uZWN0ZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5lbnN1cmVDb25uZWN0ZWQoKS50aGVuKHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHQgPT0gXCJLT1wiKSB0aGlzLmxvZyh0aGlzLmxvYyhcIkVSUk9SUyBvbiByZWNvbm5lY3RpbmcgYmVmb3JlIHJldHJ5aW5nIGEgc2VuZCBjb21tYW5kLiBTZW50IG1lc3NhZ2UgV0lMTCBCRSBMT1NUXCIpKTtcclxuICAgICAgICAgICAgICAgIGVsc2UgdGhpcy5zZW5kKGl0ZW0sIGR0byk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb24uc2VuZChpdGVtLmVuZHBvaW50LCBkdG8pLnRoZW4oXyA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kZWJ1ZylcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmluZm8odGhpcy5sb2MoXCJSZXF1ZXN0IHNlbnQgdG8gc2VydmVyXCIpICsgXCIgLSBcIiArIGl0ZW0uZW5kcG9pbnQgKyBcIjogXCIgKyB0aGlzLnN1YnN0cmluZ0xvZyhKU09OLnN0cmluZ2lmeShkdG8pKSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEludmlhIHVuIG1lc3NhZ2dpbyBhbGwnSHViIGRlbCBCYWNrZW5kLCBhc3BldHRhbmRvc2kgdW5hIHJpc3Bvc3RhXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7RW5kcG9pbnREZWY8VE91dCwgVEluPn0gaXRlbSBFbmRwb2ludCBkYSBjb250YXR0YXJlXHJcbiAgICAgKiBAcGFyYW0ge1RPdXR9IGR0byBEdG8gZGEgaW52aWFyZSBhbGwnRW5kcG9pbnRcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge09ic2VydmFibGU8VEluPn0gT2JzZXJ2YWJsZSBzdSBjdWkgY2kgc2kgcHXDsiByZWdpc3RyYXJlIHBlciByaWNldmVyZSBpbCByaXN1bHRhdG8gZGVsbGEgY2hpYW1hdGFcclxuICAgICAqL1xyXG4gICAgcHVibGljIGludm9rZTxUT3V0LCBUSW4+KGl0ZW06IEVuZHBvaW50RGVmPFRPdXQsIFRJbj4sIGR0bzogVE91dCk6IE9ic2VydmFibGU8VEluPiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmVuYWJsZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2codGhpcy5sb2MoXCJJbnZva2UgcmVxdWVzdCBpZ25vcmVkIGJlY2F1c2UgU2lnbmFsUiBpcyBub3QgYWN0aXZlIGJ5IGNvbmZpZ3VyYXRpb25cIikpO1xyXG4gICAgICAgICAgICByZXR1cm4gRU1QVFk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5jb25uZWN0aW9uLnN0YXRlID09IEh1YkNvbm5lY3Rpb25TdGF0ZS5Db25uZWN0aW5nIHx8IHRoaXMuY29ubmVjdGlvbi5zdGF0ZSA9PSBIdWJDb25uZWN0aW9uU3RhdGUuUmVjb25uZWN0aW5nIHx8IHRoaXMuY29ubmVjdGlvbi5zdGF0ZSA9PSBIdWJDb25uZWN0aW9uU3RhdGUuRGlzY29ubmVjdGluZykge1xyXG4gICAgICAgICAgICB0aGlzLmxvZyh0aGlzLmxvYyhcIkludm9rZSByZXF1ZXN0IHNlbnQgYmVmb3JlIGEgY29ubmVjdGlvbiB3YXMgaW4gc3RhYmxlIFN0YXRlLCB3YWl0aW5nIDEgc2Vjb25kIGFuZCByZXRyeWluZ1wiKSk7XHJcbiAgICAgICAgICAgIHJldHVybiBvZigpLnBpcGUoZGVsYXkoMTAwMCksIGNvbmNhdE1hcCgoKSA9PiB0aGlzLmludm9rZShpdGVtLCBkdG8pKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuY29ubmVjdGlvbi5zdGF0ZSA9PSBIdWJDb25uZWN0aW9uU3RhdGUuRGlzY29ubmVjdGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmcm9tKHRoaXMuZW5zdXJlQ29ubmVjdGVkKCkpLnBpcGUoY29uY2F0TWFwKChyZXMpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXMgPT0gXCJLT1wiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2codGhpcy5sb2MoXCJFUlJPUlMgb24gcmVjb25uZWN0aW5nIGJlZm9yZSByZXRyeWluZyBhIHNlbmQgY29tbWFuZC4gU2VudCBtZXNzYWdlIFdJTEwgQkUgTE9TVFwiKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gdGhpcy5pbnZva2UoaXRlbSwgZHRvKTtcclxuICAgICAgICAgICAgfSkpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gZnJvbSh0aGlzLmNvbm5lY3Rpb24uaW52b2tlPFRJbj4oaXRlbS5lbmRwb2ludCwgZHRvKSkucGlwZShcclxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGVidWcpIGNvbnNvbGUubG9nKHRoaXMubG9jKFwiUmVxdWVzdCBpbnZva2VkIHRvIHNlcnZlclwiKSArIFwiIC0gXCIgKyBpdGVtLmVuZHBvaW50ICsgXCI6IFwiICsgdGhpcy5zdWJzdHJpbmdMb2coSlNPTi5zdHJpbmdpZnkoZHRvKSkpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIb29rIHBlciBvc3NlcnZhcmUgaSBkYXRpIHNwZWRpdGkgYWQgdW4gRW5kcG9pbnQgZGFsIEJhY2tlbmRcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtFbmRwb2ludERlZjxUSW4sIGFueT59IGl0ZW0gRW5kcG9pbnQgc3UgY3VpIGFzY29sdGFyZVxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxUSW4+fSBPYnNlcnZhYmxlIHN1IGN1aSBjaSBzaSBwdcOyIHJlZ2lzdHJhcmUgcGVyIHJpY2V2ZXJlIGwnb2dnZXR0byBnZW5lcmF0byBhZCBvZ25pIGNoaWFtYXRhIGRhbCBCYWNrZW5kIGFsIEZyb250ZW5kXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvYnNlcnZlPFRJbj4oaXRlbTogRW5kcG9pbnREZWY8VEluLCBhbnk+KTogT2JzZXJ2YWJsZTxUSW4+IHtcclxuICAgICAgICBpZiAoIXRoaXMuZW5hYmxlZClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nKHRoaXMubG9jKFwiT2JzZXJ2ZSByZXF1ZXN0IGlnbm9yZWQgYmVjYXVzZSBTaWduYWxSIGlzIG5vdCBhY3RpdmUgYnkgY29uZmlndXJhdGlvblwiKSk7XHJcbiAgICAgICAgICAgIHJldHVybiBFTVBUWTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubG9nKHRoaXMubG9jKFwiUmV0dXJuaW5nIG9ic2VydmFibGUgZm9yIHJlcXVpcmVkIGVuZHBvaW50XCIpICsgXCI6IFwiICsgaXRlbS5lbmRwb2ludCk7XHJcbiAgICAgICAgcmV0dXJuIDxPYnNlcnZhYmxlPFRJbj4+dGhpcy5ub3RpZmljYXRpb25zJFtpdGVtLmVuZHBvaW50XTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERpc2Nvbm5lc3Npb25lIGRlbCBzaXN0ZW1hIGRpIFNpZ25hbFJcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge09ic2VydmFibGU8dm9pZD59IE9ic2VydmFibGUgYSBjdWkgcmVnaXN0cmFyc2kgY2hlIHZpZW5lIGNoaWFtYXRvIHF1YW5kbyBsYSBkaXNjb25uZXNzaW9uZSDDqCB0ZXJtaW5hdGFcclxuICAgICAqL1xyXG4gICAgcHVibGljIGRpc2Nvbm5lY3QoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICAgICAgLy9OTy1PUCBzZSBub24gYXR0aXZvXHJcbiAgICAgICAgaWYgKCF0aGlzLmVuYWJsZWQpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLmxvZyh0aGlzLmxvYyhcIkRpc2Nvbm5lY3Rpb24gcmVxdWVzdCBpZ25vcmVkIGJlY2F1c2UgU2lnbmFsUiBpcyBub3QgYWN0aXZlIGJ5IGNvbmZpZ3VyYXRpb25cIikpO1xyXG4gICAgICAgICAgICByZXR1cm4gRU1QVFk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZnJvbSh0aGlzLmNvbm5lY3Rpb24uc3RvcCgpKS5waXBlKFxyXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnIsIGNhdWdodCkgPT4geyBjb25zb2xlLmxvZyhlcnIpOyByZXR1cm4gb2YobnVsbCk7IH0pLFxyXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2codGhpcy5sb2MoXCJEaXNjb25uZWN0aW9uIHJlcXVlc3QgaG9ub3JlZFwiKSk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRhZ2xpYSB1biBsb2cgdHJvcHBvIGx1bmdvXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IExvZyBkYSB0YWdsaWFyZVxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG1heGNoYXJzIE51bWVybyBtYXNzaW1vIGRpIGNhcmF0dGVyaSBkYSB0ZW5lcmVcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge3N0cmluZ30gTG9nIHRhZ2xpYXRvXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc3Vic3RyaW5nTG9nKHRleHQ6IHN0cmluZywgbWF4Y2hhcnM6IG51bWJlciA9IDEyMCkgOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0ZXh0Lmxlbmd0aCA+IG1heGNoYXJzID8gdGV4dC5zdWJzdHIoMCwgbWF4Y2hhcnMpICsgXCJbLi4uXVwiICA6IHRleHQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTdGFtcGEgdW4gbG9nIGEgY29uc29sZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSBNZXNzYWdnaW8gZGEgc3RhbXBhcmVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBsb2cobWVzc2FnZTogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGVidWcpXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQHNpZ25hbHItbm90aWZpY2F0aW9uczogXCIgKyBtZXNzYWdlKVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGVscGVyIGRpIGxvY2FsaXp6YXppb25lXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIE1lc3NhZ2dpbyBkYSB0cmFkdXJyZVxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBNZXNzYWdnaW8gdHJhZG90dG9cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBsb2MobWVzc2FnZTogc3RyaW5nKSA6IHN0cmluZ3tcclxuICAgICAgICBpZighTG9jW21lc3NhZ2VdKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiVW50cmFuc2xhdGVkIG1lc3NhZ2U6IFwiICsgbWVzc2FnZSlcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBMb2NbbWVzc2FnZV1bdGhpcy5sb2NhbGVdO1xyXG4gICAgfVxyXG59Il19
|
|
238
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsci1ub3RpZmljYXRpb25zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zaWduYWxyLW5vdGlmaWNhdGlvbnMvc3JjL2xpYi9zaWduYWxyLW5vdGlmaWNhdGlvbnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsa0NBQWtDO0FBQ2xDLE9BQU8sS0FBSyxPQUFPLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDeEQsT0FBTyxFQUFjLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkUsVUFBVTtBQUNWLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRWpFLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUUzRyxpQkFBaUI7QUFDakIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRTFELHNIQUFzSDtBQUV0SCxNQUFNLE9BQU8sb0JBQW9CO0lBVzdCLDBCQUEwQjtJQUMxQixZQUFvQixVQUE4QixFQUFnQyxZQUFvQixFQUFnQyxPQUFnQixFQUFtQyxPQUFnQixFQUE4QixLQUFjLEVBQTBCLGFBQXNCLEVBQTBCLE1BQWM7UUFBelQsZUFBVSxHQUFWLFVBQVUsQ0FBb0I7UUFBZ0MsaUJBQVksR0FBWixZQUFZLENBQVE7UUFBZ0MsWUFBTyxHQUFQ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QUMsWUFBWTswQ0FBaUMsTUFBTSxTQUFDLFlBQVk7MENBQTZCLE1BQU0sU0FBQyxlQUFlOzBDQUE2QixNQUFNLFNBQUMsVUFBVTswQ0FBMkIsTUFBTSxTQUFDLGNBQWM7eUNBQTJCLE1BQU0sU0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLy8gRGlyZXR0aXZlLCBDb21wb25lbnRpLCBMaWJyZXJpZVxyXG5pbXBvcnQgKiBhcyBzaWduYWxSIGZyb20gJ0BtaWNyb3NvZnQvc2lnbmFscic7XHJcbmltcG9ydCB7IEh1YkNvbm5lY3Rpb25TdGF0ZSB9IGZyb20gXCJAbWljcm9zb2Z0L3NpZ25hbHJcIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgRU1QVFksIGZyb20sIG9mIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgY29uY2F0TWFwLCBkZWxheSwgdGFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcblxyXG4vLyBNb2RlbGxpXHJcbmltcG9ydCB7IEJhc2VNZXNzYWdlU2VydmljZSB9IGZyb20gJy4vbW9kZWxzL0Jhc2VNZXNzYWdlU2VydmljZSc7XHJcbmltcG9ydCB7IEVuZHBvaW50RGVmIH0gZnJvbSAnLi9tb2RlbHMvRW5kcG9pbnREZWYnO1xyXG5pbXBvcnQgeyBERUJVR19NT0RFLCBFTkRQT0lOVF9VUkwsIExPQ0FMRSwgTUVTU0FHRV9QQUNLLCBTSUdOQUxSX0VOQUJMRUQsIEFVVE9fUkVDT05ORUNUIH0gZnJvbSBcIi4vdG9rZW5zXCI7XHJcblxyXG4vLyBMb2NhbGl6emF6aW9uZVxyXG5pbXBvcnQgeyBMb2MgfSBmcm9tICcuL3NpZ25hbHItbm90aWZpY2F0aW9ucy5zZXJ2aWNlLmxvYyc7XHJcblxyXG4vKiogU2Vydml6aW8gY2hlIGdlc3Rpc2NlIGxhIGNvbXVuaWNhemlvbmUgY29uIHVuIEh1YiBTaWduYWxSIGluIGJhc2UgYWxsZSBjb25maWd1cmF6aW9uaSBmb3JuaXRlIGRhbGwnYXBwbGljYXppb25lICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbnNTZXJ2aWNlIHtcclxuXHJcbiAgICAvKiogQ2FjaGUgZGVnbGkgT2JzZXJ2YWJsZSBnZW5lcmF0aSBpbiBiYXNlIGFnbGkgRW5kcG9pbnQgZGlzcG9uaWJpbGkgKi9cclxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9ucyQ6IHsgW2luZGV4OiBzdHJpbmddOiBTdWJqZWN0PGFueT4gfSA9IHt9O1xyXG5cclxuICAgIC8qKiBDb25uZXNzaW9uZSBTaWduYWxyICovXHJcbiAgICBwcml2YXRlIGNvbm5lY3Rpb246IHNpZ25hbFIuSHViQ29ubmVjdGlvbjtcclxuXHJcbiAgICAvKiogQ29kYSBkaSBjaGlhbWF0ZSBkYSByZWN1cGVyYXJlIHF1YW5kbyBsYSBjb25uZXNzaW9uZSB2aWVuZSBmaW5hbG1lbnRlIGFwZXJ0YSAqL1xyXG4gICAgcHJpdmF0ZSBSZXF1ZXN0c1RvUmVjb3ZlcjogeyBpdGVtOiBFbmRwb2ludERlZjxhbnksIGFueT4sIGR0bzogYW55IH1bXSA9IFtdO1xyXG5cclxuICAgIC8qKiBAaWdub3JlIENvc3RydXR0b3JlICovXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIE1lc3NhZ2VEZWY6IEJhc2VNZXNzYWdlU2VydmljZSwgQEluamVjdChFTkRQT0lOVF9VUkwpIHByaXZhdGUgZW5kcG9pbnRfdXJsOiBzdHJpbmcsIEBJbmplY3QoTUVTU0FHRV9QQUNLKSBwcml2YXRlIG1zZ3BhY2s6IGJvb2xlYW4sIEBJbmplY3QoU0lHTkFMUl9FTkFCTEVEKSBwcml2YXRlIGVuYWJsZWQ6IGJvb2xlYW4sIEBJbmplY3QoREVCVUdfTU9ERSkgcHJpdmF0ZSBkZWJ1ZzogYm9vbGVhbiwgQEluamVjdChBVVRPX1JFQ09OTkVDVCkgYXV0b3JlY29ubmVjdDogYm9vbGVhbiwgQEluamVjdChMT0NBTEUpIHByaXZhdGUgbG9jYWxlOiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZW5hYmxlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmxvZyh0aGlzLmxvYyhcIlNpZ25hbFIgd29uJ3QgYmUgZW5hYmxlZCBhcyBwZXIgY29uZmlndXJhdGlvblwiKSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuTWVzc2FnZURlZi5BbGxEZWZpbml0aW9ucy5mb3JFYWNoKGRlZiA9PiB7IHRoaXMubm90aWZpY2F0aW9ucyRbZGVmLmVuZHBvaW50XSA9IG5ldyBTdWJqZWN0PHR5cGVvZiBkZWYuaW5UeXBlRGVmYXVsdD4oKTsgfSk7XHJcblxyXG4gICAgICAgIGxldCBwYXJzOiBzaWduYWxSLklIdHRwQ29ubmVjdGlvbk9wdGlvbnMgPSB7IHNraXBOZWdvdGlhdGlvbjogdHJ1ZSwgdHJhbnNwb3J0OiBzaWduYWxSLkh0dHBUcmFuc3BvcnRUeXBlLldlYlNvY2tldHMsIGxvZ2dlcjogZGVidWcgPyBzaWduYWxSLkxvZ0xldmVsLkRlYnVnIDogc2lnbmFsUi5Mb2dMZXZlbC5Ob25lIH07XHJcbiAgICAgICAgdmFyIGJ1aWxkZXIgPSBuZXcgc2lnbmFsUi5IdWJDb25uZWN0aW9uQnVpbGRlcigpLndpdGhVcmwoXCIvXCIgKyB0aGlzLmVuZHBvaW50X3VybCwgcGFycyk7XHJcblxyXG4gICAgICAgIGlmIChhdXRvcmVjb25uZWN0KSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nKHRoaXMubG9jKFwiQnVpbGRpbmcgU2lnbmFsUiBIdWIgd2l0aCBBdXRvbWF0aWMgUmVjb25uZWN0aW9uXCIpKTtcclxuICAgICAgICAgICAgLy8gMTAwIHRlbnRhdGl2aSBkaSByaWNvbm5lc3Npb25lLCAxIG9nbmkgNSBzZWNvbmRpXHJcbiAgICAgICAgICAgIGJ1aWxkZXIgPSBidWlsZGVyLndpdGhBdXRvbWF0aWNSZWNvbm5lY3QobmV3IEFycmF5KDEwMCkuZmlsbCg1ICogMTAwMCkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMubXNncGFjaykge1xyXG4gICAgICAgICAgICB0aGlzLmxvZyh0aGlzLmxvYyhcIkJ1aWxkaW5nIFNpZ25hbFIgSHViIHdpdGggTWVzc2FnZVBhY2sgcHJvdG9jb2xcIikpO1xyXG4gICAgICAgICAgICB2YXIgbXBocE1vZHVsZSA9IHJlcXVpcmUoXCJAbWljcm9zb2Z0L3NpZ25hbHItcHJvdG9jb2wtbXNncGFja1wiKTtcclxuICAgICAgICAgICAgYnVpbGRlciA9IGJ1aWxkZXIud2l0aEh1YlByb3RvY29sKG5ldyBtcGhwTW9kdWxlLk1lc3NhZ2VQYWNrSHViUHJvdG9jb2woKSlcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuY29ubmVjdGlvbiA9IGJ1aWxkZXIuYnVpbGQoKTtcclxuICAgICAgICB0aGlzLmNvbm5lY3QoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5SZXF1ZXN0c1RvUmVjb3Zlci5sZW5ndGggPT0gMClcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5SZXF1ZXN0c1RvUmVjb3Zlci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2codGhpcy5sb2MoXCJSZWNvdmVyaW5nIHJlcXVlc3QgdG8gRW5kcG9pbnRcIikgKyBcIiBcIiArIHRoaXMuUmVxdWVzdHNUb1JlY292ZXJbaV0uaXRlbS5lbmRwb2ludClcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VuZCh0aGlzLlJlcXVlc3RzVG9SZWNvdmVyW2ldLml0ZW0sIHRoaXMuUmVxdWVzdHNUb1JlY292ZXJbaV0uZHRvKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5SZXF1ZXN0c1RvUmVjb3ZlciA9IFtdO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRWZmZXR0dWEgbGEgY29ubmVzc2lvbmUgYWxsJ0h1YiBTaWduYWxyIGUgcmVnaXN0cmEgdHV0dGkgZ2xpIEVuZHBvaW50IHBlciBjdWkgaWwgQmFja2VuZCBjb211bmljYSBjb24gaWwgRnJvbnRlbmQgc3VsbGEgKipjb25uZWN0aW9uKipcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBjb25uZWN0KG9uQ29ubmVjdGVkPzogKCkgPT4gdm9pZCkge1xyXG4gICAgICAgIHRoaXMuY29ubmVjdGlvbi5zdGFydCgpLmNhdGNoKGVyciA9PiBjb25zb2xlLmxvZyhlcnIpKS50aGVuKF8gPT4gb25Db25uZWN0ZWQ/LigpKTtcclxuICAgICAgICB0aGlzLk1lc3NhZ2VEZWYuQWxsRGVmaW5pdGlvbnMuZm9yRWFjaChkID0+IHtcclxuICAgICAgICAgICAgLy9SZWdpc3RybyBzb2xvIGxlIGNvc2UgZGkgSU4sIHF1ZWxsZSBkaSBvdXQgc29ubyBjaGlhbWF0ZSBjaGUgZmFjY2lvIGlvIGFsIEJFIHF1aW5kaSBub24gc2Vydm9ub1xyXG4gICAgICAgICAgICBpZiAoZC5pblR5cGVEZWZhdWx0ICE9PSBudWxsICYmIGQub3V0VHlwZURlZmF1bHQgPT09IG51bGwpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb24ub24oZC5lbmRwb2ludCwgKG1lc3NhZ2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZyh0aGlzLmxvYyhcIlJlcXVlc3QgcmVjZWl2ZWQgZnJvbSB0aGUgc2VydmVyIGZvciBlbmRwb2ludFwiKSArIFwiICdcIiArIGQuZW5kcG9pbnQgKyBcIic6IFwiICsgdGhpcy5zdWJzdHJpbmdMb2coSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMkW2QuZW5kcG9pbnRdLm5leHQobWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2codGhpcy5sb2MoXCJSZWZ1c2luZyB0byByZWdpc3RlciBlbmRwb2ludFwiKSArIFwiIFwiICsgZC5lbmRwb2ludCArIFwiIFwiICsgdGhpcy5sb2MoXCJiZWNhdXNlIGl0IGlzIG5vdCBkZWNsYXJlZCBhcyBJTiAtIE9OTFlcIikpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRWZmZXR0dWEgdmVyaWZpY2hlIHN1bGxhIGNvbm5lc3Npb25lIGUsIGluIGNhc28gbm9uIGZvc3NlIGNvbGxlZ2F0YSwgdGVudGEgZGkgcmljb25uZXR0ZXJsYVxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTwnT0snIHwgJ0tPJyB8ICdOTy1PUCc+fSAnT0snIFNlIGxhIGNvbm5lc3Npb25lIMOoIGdpw6AgY29ubmVzc2EgbyDDqCBzdGF0YSByaWNvbm5lc3NhIGNvbiBzdWNjZXNzbywgJ0tPJyBTZSBub24gw6ggc3RhdG8gcG9zc2liaWxlIHJpY29ubmV0dGVyZSBcclxuICAgICAqIHVuYSBjb25uZXNzaW9uZSBkaXNjb25uZXNzYSwgJ05PLU9QJyBzZSBsYSBjb25uZXNpc29uZSDDqCBpbiB1bm8gc3RhdG8gaW50ZXJtZWRpbyBjaGUgbm9uIHB1w7IgZXNzZXJlIG1vZGlmaWNhdG9cclxuICAgICAqL1xyXG4gICAgcHVibGljIGVuc3VyZUNvbm5lY3RlZCgpOiBQcm9taXNlPCdPSycgfCAnS08nIHwgJ05PLU9QJz4ge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbm5lY3Rpb24uc3RhdGUgPT0gSHViQ29ubmVjdGlvblN0YXRlLkRpc2Nvbm5lY3RlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmxvZyh0aGlzLmxvYyhcIkNvbm5lY3Rpb24gbG9zdCBvciBtaXNzaW5nLCByZWNvbm5lY3RpbmcuLi5cIikpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbi5zdGFydCgpXHJcbiAgICAgICAgICAgICAgICAudGhlbihfID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFwiT0tcIik7XHJcbiAgICAgICAgICAgICAgICB9LCBfID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZyh0aGlzLmxvYyhcIkNhbm5vdCByZWNvbm5lY3QgU2lnbmFsUiwgZnJvbnRlbmQgSFVCIG9mZmxpbmVcIikpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoXCJLT1wiKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLmNvbm5lY3Rpb24uc3RhdGUgPT0gSHViQ29ubmVjdGlvblN0YXRlLkNvbm5lY3RlZClcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShcIk9LXCIpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShcIk5PLU9QXCIpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIEludmlhIHVuIG1lc3NhZ2dpbyBhbGwnSHViIGRlbCBCYWNrZW5kXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7RW5kcG9pbnREZWY8VE91dCwgYW55Pn0gaXRlbSBFbmRwb2ludCBkYSBjb250YXR0YXJlXHJcbiAgICAgKiBAcGFyYW0ge1RPdXR9IGR0byBEdG8gZGEgaW52aWFyZSBhbGwnRW5kcG9pbnRcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNlbmQ8VE91dD4oaXRlbTogRW5kcG9pbnREZWY8VE91dCwgYW55PiwgZHRvOiBUT3V0KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbm5lY3Rpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5SZXF1ZXN0c1RvUmVjb3Zlci5wdXNoKHsgaXRlbSwgZHRvIH0pO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuZW5hYmxlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmxvZyh0aGlzLmxvYyhcIlNlbmQgcmVxdWVzdCBpZ25vcmVkIGJlY2F1c2UgU2lnbmFsUiBpcyBub3QgYWN0aXZlIGJ5IGNvbmZpZ3VyYXRpb25cIikpO1xyXG4gICAgICAgICAgICByZXR1cm4gRU1QVFk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5jb25uZWN0aW9uLnN0YXRlID09IEh1YkNvbm5lY3Rpb25TdGF0ZS5Db25uZWN0aW5nIHx8IHRoaXMuY29ubmVjdGlvbi5zdGF0ZSA9PSBIdWJDb25uZWN0aW9uU3RhdGUuUmVjb25uZWN0aW5nIHx8IHRoaXMuY29ubmVjdGlvbi5zdGF0ZSA9PSBIdWJDb25uZWN0aW9uU3RhdGUuRGlzY29ubmVjdGluZykge1xyXG4gICAgICAgICAgICB0aGlzLmxvZyh0aGlzLmxvYyhcIlNlbmQgcmVxdWVzdCBzZW50IGJlZm9yZSBhIGNvbm5lY3Rpb24gd2FzIGluIHN0YWJsZSBTdGF0ZSwgd2FpdGluZyAxIHNlY29uZCBhbmQgcmV0cnlpbmdcIikpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgdGhpcy5zZW5kKGl0ZW0sIGR0byk7IH0sIDEwMDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLmNvbm5lY3Rpb24uc3RhdGUgPT0gSHViQ29ubmVjdGlvblN0YXRlLkRpc2Nvbm5lY3RlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmVuc3VyZUNvbm5lY3RlZCgpLnRoZW4odCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodCA9PSBcIktPXCIpIHRoaXMubG9nKHRoaXMubG9jKFwiRVJST1JTIG9uIHJlY29ubmVjdGluZyBiZWZvcmUgcmV0cnlpbmcgYSBzZW5kIGNvbW1hbmQuIFNlbnQgbWVzc2FnZSBXSUxMIEJFIExPU1RcIikpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSB0aGlzLnNlbmQoaXRlbSwgZHRvKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbi5zZW5kKGl0ZW0uZW5kcG9pbnQsIGR0bykudGhlbihfID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRlYnVnKVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuaW5mbyh0aGlzLmxvYyhcIlJlcXVlc3Qgc2VudCB0byBzZXJ2ZXJcIikgKyBcIiAtIFwiICsgaXRlbS5lbmRwb2ludCArIFwiOiBcIiArIHRoaXMuc3Vic3RyaW5nTG9nKEpTT04uc3RyaW5naWZ5KGR0bykpKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW52aWEgdW4gbWVzc2FnZ2lvIGFsbCdIdWIgZGVsIEJhY2tlbmQsIGFzcGV0dGFuZG9zaSB1bmEgcmlzcG9zdGFcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtFbmRwb2ludERlZjxUT3V0LCBUSW4+fSBpdGVtIEVuZHBvaW50IGRhIGNvbnRhdHRhcmVcclxuICAgICAqIEBwYXJhbSB7VE91dH0gZHRvIER0byBkYSBpbnZpYXJlIGFsbCdFbmRwb2ludFxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxUSW4+fSBPYnNlcnZhYmxlIHN1IGN1aSBjaSBzaSBwdcOyIHJlZ2lzdHJhcmUgcGVyIHJpY2V2ZXJlIGlsIHJpc3VsdGF0byBkZWxsYSBjaGlhbWF0YVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaW52b2tlPFRPdXQsIFRJbj4oaXRlbTogRW5kcG9pbnREZWY8VE91dCwgVEluPiwgZHRvOiBUT3V0KTogT2JzZXJ2YWJsZTxUSW4+IHtcclxuICAgICAgICBpZiAoIXRoaXMuZW5hYmxlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmxvZyh0aGlzLmxvYyhcIkludm9rZSByZXF1ZXN0IGlnbm9yZWQgYmVjYXVzZSBTaWduYWxSIGlzIG5vdCBhY3RpdmUgYnkgY29uZmlndXJhdGlvblwiKSk7XHJcbiAgICAgICAgICAgIHJldHVybiBFTVBUWTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNvbm5lY3Rpb24uc3RhdGUgPT0gSHViQ29ubmVjdGlvblN0YXRlLkNvbm5lY3RpbmcgfHwgdGhpcy5jb25uZWN0aW9uLnN0YXRlID09IEh1YkNvbm5lY3Rpb25TdGF0ZS5SZWNvbm5lY3RpbmcgfHwgdGhpcy5jb25uZWN0aW9uLnN0YXRlID09IEh1YkNvbm5lY3Rpb25TdGF0ZS5EaXNjb25uZWN0aW5nKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nKHRoaXMubG9jKFwiSW52b2tlIHJlcXVlc3Qgc2VudCBiZWZvcmUgYSBjb25uZWN0aW9uIHdhcyBpbiBzdGFibGUgU3RhdGUsIHdhaXRpbmcgMSBzZWNvbmQgYW5kIHJldHJ5aW5nXCIpKTtcclxuICAgICAgICAgICAgcmV0dXJuIG9mKCkucGlwZShkZWxheSgxMDAwKSwgY29uY2F0TWFwKCgpID0+IHRoaXMuaW52b2tlKGl0ZW0sIGR0bykpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5jb25uZWN0aW9uLnN0YXRlID09IEh1YkNvbm5lY3Rpb25TdGF0ZS5EaXNjb25uZWN0ZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZyb20odGhpcy5lbnN1cmVDb25uZWN0ZWQoKSkucGlwZShjb25jYXRNYXAoKHJlcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlcyA9PSBcIktPXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZyh0aGlzLmxvYyhcIkVSUk9SUyBvbiByZWNvbm5lY3RpbmcgYmVmb3JlIHJldHJ5aW5nIGEgc2VuZCBjb21tYW5kLiBTZW50IG1lc3NhZ2UgV0lMTCBCRSBMT1NUXCIpKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHJldHVybiB0aGlzLmludm9rZShpdGVtLCBkdG8pO1xyXG4gICAgICAgICAgICB9KSlcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmcm9tKHRoaXMuY29ubmVjdGlvbi5pbnZva2U8VEluPihpdGVtLmVuZHBvaW50LCBkdG8pKS5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kZWJ1ZykgY29uc29sZS5sb2codGhpcy5sb2MoXCJSZXF1ZXN0IGludm9rZWQgdG8gc2VydmVyXCIpICsgXCIgLSBcIiArIGl0ZW0uZW5kcG9pbnQgKyBcIjogXCIgKyB0aGlzLnN1YnN0cmluZ0xvZyhKU09OLnN0cmluZ2lmeShkdG8pKSk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhvb2sgcGVyIG9zc2VydmFyZSBpIGRhdGkgc3BlZGl0aSBhZCB1biBFbmRwb2ludCBkYWwgQmFja2VuZFxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge0VuZHBvaW50RGVmPFRJbiwgYW55Pn0gaXRlbSBFbmRwb2ludCBzdSBjdWkgYXNjb2x0YXJlXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPFRJbj59IE9ic2VydmFibGUgc3UgY3VpIGNpIHNpIHB1w7IgcmVnaXN0cmFyZSBwZXIgcmljZXZlcmUgbCdvZ2dldHRvIGdlbmVyYXRvIGFkIG9nbmkgY2hpYW1hdGEgZGFsIEJhY2tlbmQgYWwgRnJvbnRlbmRcclxuICAgICAqL1xyXG4gICAgcHVibGljIG9ic2VydmU8VEluPihpdGVtOiBFbmRwb2ludERlZjxUSW4sIGFueT4pOiBPYnNlcnZhYmxlPFRJbj4ge1xyXG4gICAgICAgIGlmICghdGhpcy5lbmFibGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nKHRoaXMubG9jKFwiT2JzZXJ2ZSByZXF1ZXN0IGlnbm9yZWQgYmVjYXVzZSBTaWduYWxSIGlzIG5vdCBhY3RpdmUgYnkgY29uZmlndXJhdGlvblwiKSk7XHJcbiAgICAgICAgICAgIHJldHVybiBFTVBUWTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubG9nKHRoaXMubG9jKFwiUmV0dXJuaW5nIG9ic2VydmFibGUgZm9yIHJlcXVpcmVkIGVuZHBvaW50XCIpICsgXCI6IFwiICsgaXRlbS5lbmRwb2ludCk7XHJcbiAgICAgICAgcmV0dXJuIDxPYnNlcnZhYmxlPFRJbj4+dGhpcy5ub3RpZmljYXRpb25zJFtpdGVtLmVuZHBvaW50XTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERpc2Nvbm5lc3Npb25lIGRlbCBzaXN0ZW1hIGRpIFNpZ25hbFJcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge09ic2VydmFibGU8dm9pZD59IE9ic2VydmFibGUgYSBjdWkgcmVnaXN0cmFyc2kgY2hlIHZpZW5lIGNoaWFtYXRvIHF1YW5kbyBsYSBkaXNjb25uZXNzaW9uZSDDqCB0ZXJtaW5hdGFcclxuICAgICAqL1xyXG4gICAgcHVibGljIGRpc2Nvbm5lY3QoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICAgICAgLy9OTy1PUCBzZSBub24gYXR0aXZvXHJcbiAgICAgICAgaWYgKCF0aGlzLmVuYWJsZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2codGhpcy5sb2MoXCJEaXNjb25uZWN0aW9uIHJlcXVlc3QgaWdub3JlZCBiZWNhdXNlIFNpZ25hbFIgaXMgbm90IGFjdGl2ZSBieSBjb25maWd1cmF0aW9uXCIpKTtcclxuICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGZyb20odGhpcy5jb25uZWN0aW9uLnN0b3AoKSkucGlwZShcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyLCBjYXVnaHQpID0+IHsgY29uc29sZS5sb2coZXJyKTsgcmV0dXJuIG9mKG51bGwpOyB9KSxcclxuICAgICAgICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9nKHRoaXMubG9jKFwiRGlzY29ubmVjdGlvbiByZXF1ZXN0IGhvbm9yZWRcIikpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUYWdsaWEgdW4gbG9nIHRyb3BwbyBsdW5nb1xyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBMb2cgZGEgdGFnbGlhcmVcclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtYXhjaGFycyBOdW1lcm8gbWFzc2ltbyBkaSBjYXJhdHRlcmkgZGEgdGVuZXJlXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IExvZyB0YWdsaWF0b1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHN1YnN0cmluZ0xvZyh0ZXh0OiBzdHJpbmcsIG1heGNoYXJzOiBudW1iZXIgPSAxMjApOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0ZXh0Lmxlbmd0aCA+IG1heGNoYXJzID8gdGV4dC5zdWJzdHIoMCwgbWF4Y2hhcnMpICsgXCJbLi4uXVwiIDogdGV4dDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFN0YW1wYSB1biBsb2cgYSBjb25zb2xlXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIE1lc3NhZ2dpbyBkYSBzdGFtcGFyZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGxvZyhtZXNzYWdlOiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAodGhpcy5kZWJ1ZylcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJAc2lnbmFsci1ub3RpZmljYXRpb25zOiBcIiArIG1lc3NhZ2UpXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIZWxwZXIgZGkgbG9jYWxpenphemlvbmVcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgTWVzc2FnZ2lvIGRhIHRyYWR1cnJlXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IE1lc3NhZ2dpbyB0cmFkb3R0b1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGxvYyhtZXNzYWdlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICghTG9jW21lc3NhZ2VdKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIlVudHJhbnNsYXRlZCBtZXNzYWdlOiBcIiArIG1lc3NhZ2UpXHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gTG9jW21lc3NhZ2VdW3RoaXMubG9jYWxlXTtcclxuICAgIH1cclxufSJdfQ==
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Oggetto statico di localizzazione per i messaggi scritti dal servizio
|
|
3
3
|
*/
|
|
4
4
|
export const Loc = {
|
|
5
|
+
"Recovering request to Endpoint": { "en-US": "Recovering request to Endpoint", "it-IT": "Recupero richiesta verso l'Endpoint" },
|
|
5
6
|
"Building SignalR Hub with Automatic Reconnection": { "en-US": "Building SignalR Hub with Automatic Reconnection", "it-IT": "Compilo l'Hub di SignalR con riconnessione automatica", },
|
|
6
7
|
"Cannot reconnect SignalR, frontend HUB offline": { "en-US": "Cannot reconnect SignalR, frontend HUB offline", "it-IT": "Impossibile riconnettere SignalR, l'Hub del Frontend e' Offline", },
|
|
7
8
|
"Send request sent before a connection was in stable State, waiting 1 second and retrying": { "en-US": "Send request sent before a connection was in stable State, waiting 1 second and retrying", "it-IT": "Richiesta 'Send' ricevuta prima che la connessione fosse in uno stato stabile, attendo 1 secondo e riprovo", },
|
|
@@ -22,4 +23,4 @@ export const Loc = {
|
|
|
22
23
|
"Disconnection request honored": { "en-US": "Returning observable for required endpoint", "it-IT": "Restituito observable per l'endpoint richiesto", },
|
|
23
24
|
"ERRORS on reconnecting before retrying a send command. Sent message WILL BE LOST": { "en-US": "ERRORS on reconnecting before retrying a send command. Sent message WILL BE LOST", "it-IT": "ERRORE nella riconnessione precedente a un nuovo tentativo di 'Send'. Il messaggio in questione SARA' PERSO" }
|
|
24
25
|
};
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsci1ub3RpZmljYXRpb25zLnNlcnZpY2UubG9jLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2lnbmFsci1ub3RpZmljYXRpb25zL3NyYy9saWIvc2lnbmFsci1ub3RpZmljYXRpb25zLnNlcnZpY2UubG9jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFFO0lBQ2QsZ0NBQWdDLEVBQUUsRUFBQyxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsT0FBTyxFQUFFLHFDQUFxQyxFQUFDO0lBQzdILGtEQUFrRCxFQUFFLEVBQUUsT0FBTyxFQUFFLGtEQUFrRCxFQUFFLE9BQU8sRUFBRSx1REFBdUQsR0FBRztJQUN0TCxnREFBZ0QsRUFBRSxFQUFFLE9BQU8sRUFBRSxnREFBZ0QsRUFBRSxPQUFPLEVBQUUsaUVBQWlFLEdBQUc7SUFDNUwsMEZBQTBGLEVBQUUsRUFBRSxPQUFPLEVBQUUsMEZBQTBGLEVBQUUsT0FBTyxFQUFFLDRHQUE0RyxHQUFHO0lBQzNULDRGQUE0RixFQUFFLEVBQUUsT0FBTyxFQUFFLDRGQUE0RixFQUFFLE9BQU8sRUFBRSw4R0FBOEcsR0FBRztJQUNqVSw2Q0FBNkMsRUFBRyxFQUFFLE9BQU8sRUFBRSw2Q0FBNkMsRUFBRSxPQUFPLEVBQUUsZ0RBQWdELEdBQUc7SUFDdEssK0NBQStDLEVBQUUsRUFBRSxPQUFPLEVBQUUsK0NBQStDLEVBQUUsT0FBTyxFQUFFLG1EQUFtRCxHQUFHO0lBQzVLLGdEQUFnRCxFQUFFLEVBQUUsT0FBTyxFQUFFLGdEQUFnRCxFQUFFLE9BQU8sRUFBRSxxREFBcUQsR0FBRztJQUNoTCwrQ0FBK0MsRUFBRSxFQUFFLE9BQU8sRUFBRSwrQ0FBK0MsRUFBRSxPQUFPLEVBQUUsNENBQTRDLEdBQUc7SUFDckssK0JBQStCLEVBQUUsRUFBRSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsT0FBTyxFQUFFLGtDQUFrQyxHQUFHO0lBQzNILHlDQUF5QyxFQUFFLEVBQUUsT0FBTyxFQUFFLHlDQUF5QyxFQUFFLE9BQU8sRUFBRSx5Q0FBeUMsR0FBRztJQUN0SixxRUFBcUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxxRUFBcUUsRUFBRSxPQUFPLEVBQUUsMEVBQTBFLEdBQUc7SUFDL08sd0JBQXdCLEVBQUUsRUFBRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsT0FBTyxFQUFFLDZCQUE2QixHQUFHO0lBQ3hHLHVFQUF1RSxFQUFFLEVBQUUsT0FBTyxFQUFFLHVFQUF1RSxFQUFFLE9BQU8sRUFBRSw0RUFBNEUsR0FBRztJQUNyUCwyQkFBMkIsRUFBRSxFQUFFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxPQUFPLEVBQUUsb0NBQW9DLEdBQUc7SUFDckgsd0VBQXdFLEVBQUUsRUFBRSxPQUFPLEVBQUUsd0VBQXdFLEVBQUUsT0FBTyxFQUFFLHdFQUF3RSxHQUFHO0lBQ25QLDRDQUE0QyxFQUFFLEVBQUUsT0FBTyxFQUFFLDRDQUE0QyxFQUFFLE9BQU8sRUFBRSxtREFBbUQsR0FBRztJQUN0Syw4RUFBOEUsRUFBRSxFQUFFLE9BQU8sRUFBRSw4RUFBOEUsRUFBRSxPQUFPLEVBQUUsc0ZBQXNGLEdBQUc7SUFDN1EsK0JBQStCLEVBQUUsRUFBRSxPQUFPLEVBQUUsNENBQTRDLEVBQUUsT0FBTyxFQUFFLGdEQUFnRCxHQUFHO0lBQ3RKLGtGQUFrRixFQUFFLEVBQUUsT0FBTyxFQUFFLGtGQUFrRixFQUFFLE9BQU8sRUFBRSw2R0FBNkcsRUFBQztDQUM3UyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIE9nZ2V0dG8gc3RhdGljbyBkaSBsb2NhbGl6emF6aW9uZSBwZXIgaSBtZXNzYWdnaSBzY3JpdHRpIGRhbCBzZXJ2aXppb1xyXG4gKi9cclxuZXhwb3J0IGNvbnN0IExvYyA9e1xyXG4gICAgXCJSZWNvdmVyaW5nIHJlcXVlc3QgdG8gRW5kcG9pbnRcIjoge1wiZW4tVVNcIjogXCJSZWNvdmVyaW5nIHJlcXVlc3QgdG8gRW5kcG9pbnRcIiwgXCJpdC1JVFwiOiBcIlJlY3VwZXJvIHJpY2hpZXN0YSB2ZXJzbyBsJ0VuZHBvaW50XCJ9LFxyXG4gICAgXCJCdWlsZGluZyBTaWduYWxSIEh1YiB3aXRoIEF1dG9tYXRpYyBSZWNvbm5lY3Rpb25cIjogeyBcImVuLVVTXCI6IFwiQnVpbGRpbmcgU2lnbmFsUiBIdWIgd2l0aCBBdXRvbWF0aWMgUmVjb25uZWN0aW9uXCIsIFwiaXQtSVRcIjogXCJDb21waWxvIGwnSHViIGRpIFNpZ25hbFIgY29uIHJpY29ubmVzc2lvbmUgYXV0b21hdGljYVwiLCB9LFxyXG4gICAgXCJDYW5ub3QgcmVjb25uZWN0IFNpZ25hbFIsIGZyb250ZW5kIEhVQiBvZmZsaW5lXCI6IHsgXCJlbi1VU1wiOiBcIkNhbm5vdCByZWNvbm5lY3QgU2lnbmFsUiwgZnJvbnRlbmQgSFVCIG9mZmxpbmVcIiwgXCJpdC1JVFwiOiBcIkltcG9zc2liaWxlIHJpY29ubmV0dGVyZSBTaWduYWxSLCBsJ0h1YiBkZWwgRnJvbnRlbmQgZScgT2ZmbGluZVwiLCB9LFxyXG4gICAgXCJTZW5kIHJlcXVlc3Qgc2VudCBiZWZvcmUgYSBjb25uZWN0aW9uIHdhcyBpbiBzdGFibGUgU3RhdGUsIHdhaXRpbmcgMSBzZWNvbmQgYW5kIHJldHJ5aW5nXCI6IHsgXCJlbi1VU1wiOiBcIlNlbmQgcmVxdWVzdCBzZW50IGJlZm9yZSBhIGNvbm5lY3Rpb24gd2FzIGluIHN0YWJsZSBTdGF0ZSwgd2FpdGluZyAxIHNlY29uZCBhbmQgcmV0cnlpbmdcIiwgXCJpdC1JVFwiOiBcIlJpY2hpZXN0YSAnU2VuZCcgcmljZXZ1dGEgcHJpbWEgY2hlIGxhIGNvbm5lc3Npb25lIGZvc3NlIGluIHVubyBzdGF0byBzdGFiaWxlLCBhdHRlbmRvIDEgc2Vjb25kbyBlIHJpcHJvdm9cIiwgfSxcclxuICAgIFwiSW52b2tlIHJlcXVlc3Qgc2VudCBiZWZvcmUgYSBjb25uZWN0aW9uIHdhcyBpbiBzdGFibGUgU3RhdGUsIHdhaXRpbmcgMSBzZWNvbmQgYW5kIHJldHJ5aW5nXCI6IHsgXCJlbi1VU1wiOiBcIkludm9rZSByZXF1ZXN0IHNlbnQgYmVmb3JlIGEgY29ubmVjdGlvbiB3YXMgaW4gc3RhYmxlIFN0YXRlLCB3YWl0aW5nIDEgc2Vjb25kIGFuZCByZXRyeWluZ1wiLCBcIml0LUlUXCI6IFwiUmljaGllc3RhICdJbnZva2UnIHJpY2V2dXRhIHByaW1hIGNoZSBsYSBjb25uZXNzaW9uZSBmb3NzZSBpbiB1bm8gc3RhdG8gc3RhYmlsZSwgYXR0ZW5kbyAxIHNlY29uZG8gZSByaXByb3ZvXCIsIH0sXHJcbiAgICBcIkNvbm5lY3Rpb24gbG9zdCBvciBtaXNzaW5nLCByZWNvbm5lY3RpbmcuLi5cIiA6IHsgXCJlbi1VU1wiOiBcIkNvbm5lY3Rpb24gbG9zdCBvciBtaXNzaW5nLCByZWNvbm5lY3RpbmcuLi5cIiwgXCJpdC1JVFwiOiBcIkNvbm5lc3Npb25lIHBlcnNhIG8gbWFuY2FudGUsIG1pIHJpY29ubmV0dG8uLi5cIiwgfSxcclxuICAgIFwiU2lnbmFsUiB3b24ndCBiZSBlbmFibGVkIGFzIHBlciBjb25maWd1cmF0aW9uXCI6IHsgXCJlbi1VU1wiOiBcIlNpZ25hbFIgd29uJ3QgYmUgZW5hYmxlZCBhcyBwZXIgY29uZmlndXJhdGlvblwiLCBcIml0LUlUXCI6IFwiU2lnbmFsUiBub24gdmVycsOgIGF0dGl2YXRvIGNvbWUgZGEgY29uZmlndXJhemlvbmVcIiwgfSxcclxuICAgIFwiQnVpbGRpbmcgU2lnbmFsUiBIdWIgd2l0aCBNZXNzYWdlUGFjayBwcm90b2NvbFwiOiB7IFwiZW4tVVNcIjogXCJCdWlsZGluZyBTaWduYWxSIEh1YiB3aXRoIE1lc3NhZ2VQYWNrIHByb3RvY29sXCIsIFwiaXQtSVRcIjogXCJDb21waWxvIGwnSHViIGRpIFNpZ25hbFIgY29uIHByb3RvY29sbG8gTWVzc2FnZVBhY2tcIiwgfSxcclxuICAgIFwiUmVxdWVzdCByZWNlaXZlZCBmcm9tIHRoZSBzZXJ2ZXIgZm9yIGVuZHBvaW50XCI6IHsgXCJlbi1VU1wiOiBcIlJlcXVlc3QgcmVjZWl2ZWQgZnJvbSB0aGUgc2VydmVyIGZvciBlbmRwb2ludFwiLCBcIml0LUlUXCI6IFwiUmljaGllc3RhIHJpY2V2dXRhIGRhbCBzZXJ2ZXIgcGVyIGVuZHBvaW50XCIsIH0sXHJcbiAgICBcIlJlZnVzaW5nIHRvIHJlZ2lzdGVyIGVuZHBvaW50XCI6IHsgXCJlbi1VU1wiOiBcIlJlZnVzaW5nIHRvIHJlZ2lzdGVyIGVuZHBvaW50XCIsIFwiaXQtSVRcIjogXCJSaWZpdXRvIGRpIHJlZ2lzdHJhcmUgbCdlbmRwb2ludFwiLCB9LFxyXG4gICAgXCJiZWNhdXNlIGl0IGlzIG5vdCBkZWNsYXJlZCBhcyBJTiAtIE9OTFlcIjogeyBcImVuLVVTXCI6IFwiYmVjYXVzZSBpdCBpcyBub3QgZGVjbGFyZWQgYXMgSU4gLSBPTkxZXCIsIFwiaXQtSVRcIjogXCJpbiBxdWFudG8gbm9uIMOoIHJlZ2lzdHJhdG8gc29sbyBjb21lIElOXCIsIH0sXHJcbiAgICBcIlNlbmQgcmVxdWVzdCBpZ25vcmVkIGJlY2F1c2UgU2lnbmFsUiBpcyBub3QgYWN0aXZlIGJ5IGNvbmZpZ3VyYXRpb25cIjogeyBcImVuLVVTXCI6IFwiU2VuZCByZXF1ZXN0IGlnbm9yZWQgYmVjYXVzZSBTaWduYWxSIGlzIG5vdCBhY3RpdmUgYnkgY29uZmlndXJhdGlvblwiLCBcIml0LUlUXCI6IFwiUmljaGllc3RhIHNlbmQgaWdub3JhdGEgaW4gcXVhbnRvIFNpZ25hbFIgbm9uIMOoIGF0dGl2byBkYSBjb25maWd1cmF6aW9uZVwiLCB9LFxyXG4gICAgXCJSZXF1ZXN0IHNlbnQgdG8gc2VydmVyXCI6IHsgXCJlbi1VU1wiOiBcIlJlcXVlc3Qgc2VudCB0byBzZXJ2ZXJcIiwgXCJpdC1JVFwiOiBcIlJpY2hpZXN0YSBpbnZpYXRhIGFsIHNlcnZlclwiLCB9LFxyXG4gICAgXCJJbnZva2UgcmVxdWVzdCBpZ25vcmVkIGJlY2F1c2UgU2lnbmFsUiBpcyBub3QgYWN0aXZlIGJ5IGNvbmZpZ3VyYXRpb25cIjogeyBcImVuLVVTXCI6IFwiSW52b2tlIHJlcXVlc3QgaWdub3JlZCBiZWNhdXNlIFNpZ25hbFIgaXMgbm90IGFjdGl2ZSBieSBjb25maWd1cmF0aW9uXCIsIFwiaXQtSVRcIjogXCJSaWNoaWVzdGEgaW52b2tlIGlnbm9yYXRhIGluIHF1YW50byBTaWduYWxSIG5vbiDDqCBhdHRpdm8gZGEgY29uZmlndXJhemlvbmVcIiwgfSxcclxuICAgIFwiUmVxdWVzdCBpbnZva2VkIHRvIHNlcnZlclwiOiB7IFwiZW4tVVNcIjogXCJSZXF1ZXN0IGludm9rZWQgdG8gc2VydmVyXCIsIFwiaXQtSVRcIjogXCJSaWNoaWVzdGEgaW52b2tlIGludmlhdGEgYWwgc2VydmVyXCIsIH0sXHJcbiAgICBcIk9ic2VydmUgcmVxdWVzdCBpZ25vcmVkIGJlY2F1c2UgU2lnbmFsUiBpcyBub3QgYWN0aXZlIGJ5IGNvbmZpZ3VyYXRpb25cIjogeyBcImVuLVVTXCI6IFwiT2JzZXJ2ZSByZXF1ZXN0IGlnbm9yZWQgYmVjYXVzZSBTaWduYWxSIGlzIG5vdCBhY3RpdmUgYnkgY29uZmlndXJhdGlvblwiLCBcIml0LUlUXCI6IFwiT3NzZXJ2YXppb25lIGlnbm9yYXRhIGluIHF1YW50byBTaWduYWxSIG5vbiDDqCBhdHRpdm8gZGEgY29uZmlndXJhemlvbmVcIiwgfSxcclxuICAgIFwiUmV0dXJuaW5nIG9ic2VydmFibGUgZm9yIHJlcXVpcmVkIGVuZHBvaW50XCI6IHsgXCJlbi1VU1wiOiBcIlJldHVybmluZyBvYnNlcnZhYmxlIGZvciByZXF1aXJlZCBlbmRwb2ludFwiLCBcIml0LUlUXCI6IFwiUmVzdGl0dWlzY28gbCdvYnNlcnZhYmxlIHBlciBsJ2VuZHBvaW50IHJpY2hpZXN0b1wiLCB9LFxyXG4gICAgXCJEaXNjb25uZWN0aW9uIHJlcXVlc3QgaWdub3JlZCBiZWNhdXNlIFNpZ25hbFIgaXMgbm90IGFjdGl2ZSBieSBjb25maWd1cmF0aW9uXCI6IHsgXCJlbi1VU1wiOiBcIkRpc2Nvbm5lY3Rpb24gcmVxdWVzdCBpZ25vcmVkIGJlY2F1c2UgU2lnbmFsUiBpcyBub3QgYWN0aXZlIGJ5IGNvbmZpZ3VyYXRpb25cIiwgXCJpdC1JVFwiOiBcIlJpY2hpZXN0YSBkaSBkaXNjb25uZXNpb25lIGlnbm9yYXRhIGluIHF1YW50byBTaWduYWxSIG5vbiDDqCBhdHRpdm8gZGEgY29uZmlndXJhemlvbmVcIiwgfSxcclxuICAgIFwiRGlzY29ubmVjdGlvbiByZXF1ZXN0IGhvbm9yZWRcIjogeyBcImVuLVVTXCI6IFwiUmV0dXJuaW5nIG9ic2VydmFibGUgZm9yIHJlcXVpcmVkIGVuZHBvaW50XCIsIFwiaXQtSVRcIjogXCJSZXN0aXR1aXRvIG9ic2VydmFibGUgcGVyIGwnZW5kcG9pbnQgcmljaGllc3RvXCIsIH0sXHJcbiAgICBcIkVSUk9SUyBvbiByZWNvbm5lY3RpbmcgYmVmb3JlIHJldHJ5aW5nIGEgc2VuZCBjb21tYW5kLiBTZW50IG1lc3NhZ2UgV0lMTCBCRSBMT1NUXCI6IHsgXCJlbi1VU1wiOiBcIkVSUk9SUyBvbiByZWNvbm5lY3RpbmcgYmVmb3JlIHJldHJ5aW5nIGEgc2VuZCBjb21tYW5kLiBTZW50IG1lc3NhZ2UgV0lMTCBCRSBMT1NUXCIsIFwiaXQtSVRcIjogXCJFUlJPUkUgbmVsbGEgcmljb25uZXNzaW9uZSBwcmVjZWRlbnRlIGEgdW4gbnVvdm8gdGVudGF0aXZvIGRpICdTZW5kJy4gSWwgbWVzc2FnZ2lvIGluIHF1ZXN0aW9uZSBTQVJBJyBQRVJTT1wifVxyXG59Il19
|
package/esm2015/lib/tokens.js
CHANGED
|
@@ -2,7 +2,7 @@ import { InjectionToken } from '@angular/core';
|
|
|
2
2
|
/**
|
|
3
3
|
* Hub a cui collegarsi
|
|
4
4
|
*/
|
|
5
|
-
export const
|
|
5
|
+
export const ENDPOINT_URL = new InjectionToken('ENDPOINT_URL');
|
|
6
6
|
/**
|
|
7
7
|
* Indica se la libreria dev'essere attiva o no
|
|
8
8
|
*/
|
|
@@ -23,4 +23,4 @@ export const MESSAGE_PACK = new InjectionToken('MESSAGE_PACK');
|
|
|
23
23
|
* Indica se tentare in automatico la riconnessione
|
|
24
24
|
*/
|
|
25
25
|
export const AUTO_RECONNECT = new InjectionToken('AUTO_RECONNECT');
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2lnbmFsci1ub3RpZmljYXRpb25zL3NyYy9saWIvdG9rZW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0M7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQTJCLElBQUksY0FBYyxDQUFTLGNBQWMsQ0FBQyxDQUFDO0FBRS9GOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUEyQixJQUFJLGNBQWMsQ0FBVSxpQkFBaUIsQ0FBQyxDQUFDO0FBRXRHOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUEyQixJQUFJLGNBQWMsQ0FBVSxZQUFZLENBQUMsQ0FBQztBQUU1Rjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBMkIsSUFBSSxjQUFjLENBQVMsUUFBUSxDQUFDLENBQUM7QUFFbkY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQTRCLElBQUksY0FBYyxDQUFVLGNBQWMsQ0FBQyxDQUFDO0FBRWpHOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUE0QixJQUFJLGNBQWMsQ0FBVSxnQkFBZ0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8qKlxyXG4gKiBIdWIgYSBjdWkgY29sbGVnYXJzaVxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IEVORFBPSU5UX1VSTDogSW5qZWN0aW9uVG9rZW48c3RyaW5nPiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdFTkRQT0lOVF9VUkwnKTtcclxuXHJcbi8qKlxyXG4gKiBJbmRpY2Egc2UgbGEgbGlicmVyaWEgZGV2J2Vzc2VyZSBhdHRpdmEgbyBub1xyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFNJR05BTFJfRU5BQkxFRDogSW5qZWN0aW9uVG9rZW48c3RyaW5nPiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxib29sZWFuPignU0lHTkFMUl9FTkFCTEVEJyk7XHJcblxyXG4vKipcclxuICogSW5kaWNhIHNlIHN0YW1wYXJlIG1lc3NhZ2dpIGRpIGRlYnVnIGluIGNvbnNvbGVcclxuICovXHJcbmV4cG9ydCBjb25zdCBERUJVR19NT0RFOiBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+ID0gbmV3IEluamVjdGlvblRva2VuPGJvb2xlYW4+KCdERUJVR19NT0RFJyk7XHJcblxyXG4vKipcclxuICogSW5kaWNhIGlsIGxvY2FsZSB1dGlsaXp6YXRvIGRhbGxhIGxpYnJlcmlhIHBlciBpIG1lc3NhZ2dpLiBTb25vIHN1cHBvcnRhdGkgXCJpdC1JVFwiIGVkIFwiZW4tVVNcIlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IExPQ0FMRTogSW5qZWN0aW9uVG9rZW48c3RyaW5nPiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdMT0NBTEUnKTtcclxuXHJcbi8qKlxyXG4gKiBJbmRpY2Egc2UgdXRpbGl6emFyZSBpbCBwcm90b2NvbGxvIGRpIHRyYXNmZXJpbWVudG8gXCJNZXNzYWdlUGFja1wiXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgTUVTU0FHRV9QQUNLOiBJbmplY3Rpb25Ub2tlbjxib29sZWFuPiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxib29sZWFuPignTUVTU0FHRV9QQUNLJyk7XHJcblxyXG4vKipcclxuICogSW5kaWNhIHNlIHRlbnRhcmUgaW4gYXV0b21hdGljbyBsYSByaWNvbm5lc3Npb25lXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgQVVUT19SRUNPTk5FQ1Q6IEluamVjdGlvblRva2VuPGJvb2xlYW4+ID0gbmV3IEluamVjdGlvblRva2VuPGJvb2xlYW4+KCdBVVRPX1JFQ09OTkVDVCcpOyJdfQ==
|
|
@@ -25,7 +25,7 @@ BaseMessageService.decorators = [
|
|
|
25
25
|
/**
|
|
26
26
|
* Hub a cui collegarsi
|
|
27
27
|
*/
|
|
28
|
-
const
|
|
28
|
+
const ENDPOINT_URL = new InjectionToken('ENDPOINT_URL');
|
|
29
29
|
/**
|
|
30
30
|
* Indica se la libreria dev'essere attiva o no
|
|
31
31
|
*/
|
|
@@ -51,6 +51,7 @@ const AUTO_RECONNECT = new InjectionToken('AUTO_RECONNECT');
|
|
|
51
51
|
* Oggetto statico di localizzazione per i messaggi scritti dal servizio
|
|
52
52
|
*/
|
|
53
53
|
const Loc = {
|
|
54
|
+
"Recovering request to Endpoint": { "en-US": "Recovering request to Endpoint", "it-IT": "Recupero richiesta verso l'Endpoint" },
|
|
54
55
|
"Building SignalR Hub with Automatic Reconnection": { "en-US": "Building SignalR Hub with Automatic Reconnection", "it-IT": "Compilo l'Hub di SignalR con riconnessione automatica", },
|
|
55
56
|
"Cannot reconnect SignalR, frontend HUB offline": { "en-US": "Cannot reconnect SignalR, frontend HUB offline", "it-IT": "Impossibile riconnettere SignalR, l'Hub del Frontend e' Offline", },
|
|
56
57
|
"Send request sent before a connection was in stable State, waiting 1 second and retrying": { "en-US": "Send request sent before a connection was in stable State, waiting 1 second and retrying", "it-IT": "Richiesta 'Send' ricevuta prima che la connessione fosse in uno stato stabile, attendo 1 secondo e riprovo", },
|
|
@@ -73,33 +74,27 @@ const Loc = {
|
|
|
73
74
|
};
|
|
74
75
|
|
|
75
76
|
// Angular
|
|
76
|
-
/**
|
|
77
|
-
* Servizio che gestisce la comunicazione con un Hub SignalR in base alle configurazioni fornite dall'applicazione
|
|
78
|
-
*/
|
|
77
|
+
/** Servizio che gestisce la comunicazione con un Hub SignalR in base alle configurazioni fornite dall'applicazione */
|
|
79
78
|
class NotificationsService {
|
|
80
|
-
/**
|
|
81
|
-
|
|
82
|
-
*
|
|
83
|
-
* @ignore
|
|
84
|
-
*/
|
|
85
|
-
constructor(MessageDef, hub_url, msgpack, enabled, debug, autoreconnect, locale) {
|
|
79
|
+
/** @ignore Costruttore */
|
|
80
|
+
constructor(MessageDef, endpoint_url, msgpack, enabled, debug, autoreconnect, locale) {
|
|
86
81
|
this.MessageDef = MessageDef;
|
|
87
|
-
this.
|
|
82
|
+
this.endpoint_url = endpoint_url;
|
|
88
83
|
this.msgpack = msgpack;
|
|
89
84
|
this.enabled = enabled;
|
|
90
85
|
this.debug = debug;
|
|
91
86
|
this.locale = locale;
|
|
92
|
-
/**
|
|
93
|
-
* Cache degli Observable generati in base agli Endpoint disponibili
|
|
94
|
-
*/
|
|
87
|
+
/** Cache degli Observable generati in base agli Endpoint disponibili */
|
|
95
88
|
this.notifications$ = {};
|
|
89
|
+
/** Coda di chiamate da recuperare quando la connessione viene finalmente aperta */
|
|
90
|
+
this.RequestsToRecover = [];
|
|
96
91
|
if (!this.enabled) {
|
|
97
92
|
this.log(this.loc("SignalR won't be enabled as per configuration"));
|
|
98
93
|
return;
|
|
99
94
|
}
|
|
100
95
|
this.MessageDef.AllDefinitions.forEach(def => { this.notifications$[def.endpoint] = new Subject(); });
|
|
101
96
|
let pars = { skipNegotiation: true, transport: signalR.HttpTransportType.WebSockets, logger: debug ? signalR.LogLevel.Debug : signalR.LogLevel.None };
|
|
102
|
-
var builder = new signalR.HubConnectionBuilder().withUrl(this.
|
|
97
|
+
var builder = new signalR.HubConnectionBuilder().withUrl("/" + this.endpoint_url, pars);
|
|
103
98
|
if (autoreconnect) {
|
|
104
99
|
this.log(this.loc("Building SignalR Hub with Automatic Reconnection"));
|
|
105
100
|
// 100 tentativi di riconnessione, 1 ogni 5 secondi
|
|
@@ -111,13 +106,21 @@ class NotificationsService {
|
|
|
111
106
|
builder = builder.withHubProtocol(new mphpModule.MessagePackHubProtocol());
|
|
112
107
|
}
|
|
113
108
|
this.connection = builder.build();
|
|
114
|
-
this.connect()
|
|
109
|
+
this.connect(() => {
|
|
110
|
+
if (this.RequestsToRecover.length == 0)
|
|
111
|
+
return;
|
|
112
|
+
for (let i = 0; i < this.RequestsToRecover.length; i++) {
|
|
113
|
+
this.log(this.loc("Recovering request to Endpoint") + " " + this.RequestsToRecover[i].item.endpoint);
|
|
114
|
+
this.send(this.RequestsToRecover[i].item, this.RequestsToRecover[i].dto);
|
|
115
|
+
}
|
|
116
|
+
this.RequestsToRecover = [];
|
|
117
|
+
});
|
|
115
118
|
}
|
|
116
119
|
/**
|
|
117
120
|
* Effettua la connessione all'Hub Signalr e registra tutti gli Endpoint per cui il Backend comunica con il Frontend sulla **connection**
|
|
118
121
|
*/
|
|
119
|
-
connect() {
|
|
120
|
-
this.connection.start().catch(err => console.log(err));
|
|
122
|
+
connect(onConnected) {
|
|
123
|
+
this.connection.start().catch(err => console.log(err)).then(_ => onConnected === null || onConnected === void 0 ? void 0 : onConnected());
|
|
121
124
|
this.MessageDef.AllDefinitions.forEach(d => {
|
|
122
125
|
//Registro solo le cose di IN, quelle di out sono chiamate che faccio io al BE quindi non servono
|
|
123
126
|
if (d.inTypeDefault !== null && d.outTypeDefault === null)
|
|
@@ -158,6 +161,10 @@ class NotificationsService {
|
|
|
158
161
|
* @param {TOut} dto Dto da inviare all'Endpoint
|
|
159
162
|
*/
|
|
160
163
|
send(item, dto) {
|
|
164
|
+
if (!this.connection) {
|
|
165
|
+
this.RequestsToRecover.push({ item, dto });
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
161
168
|
if (!this.enabled) {
|
|
162
169
|
this.log(this.loc("Send request ignored because SignalR is not active by configuration"));
|
|
163
170
|
return EMPTY;
|
|
@@ -285,7 +292,7 @@ NotificationsService.decorators = [
|
|
|
285
292
|
];
|
|
286
293
|
NotificationsService.ctorParameters = () => [
|
|
287
294
|
{ type: BaseMessageService },
|
|
288
|
-
{ type: String, decorators: [{ type: Inject, args: [
|
|
295
|
+
{ type: String, decorators: [{ type: Inject, args: [ENDPOINT_URL,] }] },
|
|
289
296
|
{ type: Boolean, decorators: [{ type: Inject, args: [MESSAGE_PACK,] }] },
|
|
290
297
|
{ type: Boolean, decorators: [{ type: Inject, args: [SIGNALR_ENABLED,] }] },
|
|
291
298
|
{ type: Boolean, decorators: [{ type: Inject, args: [DEBUG_MODE,] }] },
|
|
@@ -300,7 +307,7 @@ class SignalrNotificationsModule {
|
|
|
300
307
|
providers: [
|
|
301
308
|
NotificationsService,
|
|
302
309
|
{ provide: BaseMessageService, useClass: (config === null || config === void 0 ? void 0 : config.messageService) || BaseMessageService },
|
|
303
|
-
{ provide:
|
|
310
|
+
{ provide: ENDPOINT_URL, useValue: config === null || config === void 0 ? void 0 : config.endpointUrl },
|
|
304
311
|
{ provide: LOCALE, useValue: (config === null || config === void 0 ? void 0 : config.locale) || 'it-IT' },
|
|
305
312
|
{ provide: SIGNALR_ENABLED, useValue: (config === null || config === void 0 ? void 0 : config.enabled) != null ? config === null || config === void 0 ? void 0 : config.enabled : true },
|
|
306
313
|
{ provide: DEBUG_MODE, useValue: (config === null || config === void 0 ? void 0 : config.debugMode) != null ? config === null || config === void 0 ? void 0 : config.debugMode : false },
|
|
@@ -358,5 +365,5 @@ class SignalrNotificationsModuleConfig {
|
|
|
358
365
|
* Generated bundle index. Do not edit.
|
|
359
366
|
*/
|
|
360
367
|
|
|
361
|
-
export { BaseMessageService, EndpointDef, NotificationsService, SignalrNotificationsModule, SignalrNotificationsModuleConfig,
|
|
368
|
+
export { BaseMessageService, EndpointDef, NotificationsService, SignalrNotificationsModule, SignalrNotificationsModuleConfig, ENDPOINT_URL as ɵa, SIGNALR_ENABLED as ɵb, DEBUG_MODE as ɵc, LOCALE as ɵd, MESSAGE_PACK as ɵe, AUTO_RECONNECT as ɵf };
|
|
362
369
|
//# sourceMappingURL=esfaenza-signalr-notifications.js.map
|