http-request-manager 18.1.1 → 18.3.0

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.
Files changed (82) hide show
  1. package/esm2022/lib/http-request-manager.module.mjs +8 -5
  2. package/esm2022/lib/http-request-services-demo/database-data-demo/database-data-demo.component.mjs +3 -3
  3. package/esm2022/lib/http-request-services-demo/http-request-services-demo.component.mjs +12 -11
  4. package/esm2022/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.mjs +3 -3
  5. package/esm2022/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.mjs +5 -5
  6. package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.mjs +3 -3
  7. package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/file-download.module.mjs +4 -4
  8. package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.mjs +3 -3
  9. package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.mjs +3 -3
  10. package/esm2022/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.mjs +3 -3
  11. package/esm2022/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.mjs +4 -4
  12. package/esm2022/lib/http-request-services-demo/request-manager-state-demo/services/state-manager-demo.service.mjs +3 -3
  13. package/esm2022/lib/http-request-services-demo/request-signals-manager-demo/models/sample-ai-prompt.mjs +9 -0
  14. package/esm2022/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-info.mjs +12 -0
  15. package/esm2022/lib/http-request-services-demo/request-signals-manager-demo/models/sample-mapper-client-info.mjs +14 -0
  16. package/esm2022/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.mjs +336 -0
  17. package/esm2022/lib/interceptors/credentials.interceptor.mjs +3 -3
  18. package/esm2022/lib/interceptors/proxy-debugger.interceptor.mjs +3 -3
  19. package/esm2022/lib/interceptors/request-error.interceptor.mjs +3 -3
  20. package/esm2022/lib/interceptors/request-header.interceptor.mjs +3 -3
  21. package/esm2022/lib/services/database-manager-services/database.manager.service.mjs +6 -6
  22. package/esm2022/lib/services/database-manager-services/db.storage.service.mjs +8 -8
  23. package/esm2022/lib/services/index.mjs +2 -1
  24. package/esm2022/lib/services/local-storage-manager-service/local-storage-manager.service.mjs +3 -3
  25. package/esm2022/lib/services/local-storage-manager-service/local-storage-signals-manager.service.mjs +3 -3
  26. package/esm2022/lib/services/request-manager-services/http-manager-signals.service.mjs +199 -0
  27. package/esm2022/lib/services/request-manager-services/http-manager.service.mjs +5 -5
  28. package/esm2022/lib/services/request-manager-services/index.mjs +2 -1
  29. package/esm2022/lib/services/request-manager-services/request-signals.service.mjs +170 -0
  30. package/esm2022/lib/services/request-manager-services/request.service.mjs +7 -5
  31. package/esm2022/lib/services/request-manager-state-service/http-manager-state.store.mjs +143 -7
  32. package/esm2022/lib/services/request-manager-state-service/models/api-request.model.mjs +4 -3
  33. package/esm2022/lib/services/request-manager-state-service/models/index.mjs +2 -1
  34. package/esm2022/lib/services/request-manager-state-service/models/ws-options.model.mjs +12 -0
  35. package/esm2022/lib/services/utils/app.service.mjs +3 -3
  36. package/esm2022/lib/services/utils/encryption/asymmetrical-encryption.service.mjs +3 -3
  37. package/esm2022/lib/services/utils/encryption/encryption-test.service.mjs +3 -3
  38. package/esm2022/lib/services/utils/encryption/symmetrical-encryption.service.mjs +3 -3
  39. package/esm2022/lib/services/utils/headers.service.mjs +3 -3
  40. package/esm2022/lib/services/utils/object-merger.service.mjs +5 -5
  41. package/esm2022/lib/services/utils/path-query.service.mjs +3 -3
  42. package/esm2022/lib/services/utils/utils.service.mjs +3 -3
  43. package/esm2022/lib/services/ws-manager-service/index.mjs +3 -0
  44. package/esm2022/lib/services/ws-manager-service/models/channel-info.model.mjs +10 -0
  45. package/esm2022/lib/services/ws-manager-service/models/channel-notification.model.mjs +12 -0
  46. package/esm2022/lib/services/ws-manager-service/models/index.mjs +6 -0
  47. package/esm2022/lib/services/ws-manager-service/models/user-info.model.mjs +11 -0
  48. package/esm2022/lib/services/ws-manager-service/models/user-message.model.mjs +12 -0
  49. package/esm2022/lib/services/ws-manager-service/models/user-name-info.model.mjs +12 -0
  50. package/esm2022/lib/services/ws-manager-service/websocket.service.mjs +133 -0
  51. package/fesm2022/http-request-manager.mjs +2473 -1437
  52. package/fesm2022/http-request-manager.mjs.map +1 -1
  53. package/http-request-manager-18.3.0.tgz +0 -0
  54. package/lib/http-request-manager.module.d.ts +24 -23
  55. package/lib/http-request-services-demo/http-request-services-demo.component.d.ts +8 -0
  56. package/lib/http-request-services-demo/request-signals-manager-demo/models/sample-ai-prompt.d.ts +8 -0
  57. package/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-info.d.ts +14 -0
  58. package/lib/http-request-services-demo/request-signals-manager-demo/models/sample-mapper-client-info.d.ts +14 -0
  59. package/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.d.ts +106 -0
  60. package/lib/services/database-manager-services/database.manager.service.d.ts +1 -1
  61. package/lib/services/database-manager-services/db.storage.service.d.ts +2 -2
  62. package/lib/services/index.d.ts +1 -0
  63. package/lib/services/request-manager-services/http-manager-signals.service.d.ts +38 -0
  64. package/lib/services/request-manager-services/http-manager.service.d.ts +1 -1
  65. package/lib/services/request-manager-services/index.d.ts +1 -0
  66. package/lib/services/request-manager-services/request-signals.service.d.ts +26 -0
  67. package/lib/services/request-manager-services/request.service.d.ts +2 -1
  68. package/lib/services/request-manager-state-service/http-manager-state.store.d.ts +32 -8
  69. package/lib/services/request-manager-state-service/models/api-request.model.d.ts +4 -1
  70. package/lib/services/request-manager-state-service/models/index.d.ts +1 -0
  71. package/lib/services/request-manager-state-service/models/ws-options.model.d.ts +14 -0
  72. package/lib/services/utils/object-merger.service.d.ts +1 -1
  73. package/lib/services/ws-manager-service/index.d.ts +2 -0
  74. package/lib/services/ws-manager-service/models/channel-info.model.d.ts +10 -0
  75. package/lib/services/ws-manager-service/models/channel-notification.model.d.ts +14 -0
  76. package/lib/services/ws-manager-service/models/index.d.ts +5 -0
  77. package/lib/services/ws-manager-service/models/user-info.model.d.ts +11 -0
  78. package/lib/services/ws-manager-service/models/user-message.model.d.ts +15 -0
  79. package/lib/services/ws-manager-service/models/user-name-info.model.d.ts +14 -0
  80. package/lib/services/ws-manager-service/websocket.service.d.ts +21 -0
  81. package/package.json +1 -1
  82. package/http-request-manager-18.1.1.tgz +0 -0
@@ -1,7 +1,7 @@
1
1
  import { Inject, Injectable, Optional, inject } from '@angular/core';
2
2
  import { ApiRequest } from '../request-manager-state-service/models';
3
3
  import { SettingOptions } from '../local-storage-manager-service';
4
- import { UtilsService } from '../utils/utils.service';
4
+ import { UtilsService } from './utils.service';
5
5
  import { CONFIG_SETTINGS_TOKEN } from '../../models/config-token.model';
6
6
  import { ConfigHTTPOptions, ConfigOptions, LocalStorageOptions } from '../request-manager-services';
7
7
  import * as i0 from "@angular/core";
@@ -53,10 +53,10 @@ export class ObjectMergerService {
53
53
  mergedOptions.encrypted = (options && (typeof options.encrypted !== 'undefined')) ? options.encrypted : (configForRootOptions?.encrypted || false);
54
54
  return mergedOptions;
55
55
  }
56
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ObjectMergerService, deps: [{ token: CONFIG_SETTINGS_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
57
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ObjectMergerService, providedIn: 'root' }); }
56
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ObjectMergerService, deps: [{ token: CONFIG_SETTINGS_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
57
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ObjectMergerService, providedIn: 'root' }); }
58
58
  }
59
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ObjectMergerService, decorators: [{
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ObjectMergerService, decorators: [{
60
60
  type: Injectable,
61
61
  args: [{
62
62
  providedIn: 'root'
@@ -67,4 +67,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
67
67
  }, {
68
68
  type: Optional
69
69
  }] }] });
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LW1lcmdlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9zZXJ2aWNlcy91dGlscy9vYmplY3QtbWVyZ2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7OztBQUtwRyxNQUFNLE9BQU8sbUJBQW1CO0lBSTlCLFlBQStELGFBQTZCO1FBQTdCLGtCQUFhLEdBQWIsYUFBYSxDQUFnQjtRQUY1RixVQUFLLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBR3pCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYTtZQUFFLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ3RFLENBQUM7SUFFRixZQUFZLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUU7UUFFdkMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFBO1FBQ2xJLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7UUFFL0MsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQTtRQUV4RyxhQUFhLENBQUMsSUFBSSxHQUFHLENBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLGFBQWEsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFFLENBQUE7UUFFNUUsYUFBYSxDQUFDLE9BQU8sR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxFQUFFLEVBQUUsR0FBRyxhQUFhLEVBQUUsT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFBO1FBRXJGLGFBQWEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssS0FBSyxDQUFDLElBQUksT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLEtBQUssSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBRWpLLGFBQWEsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxPQUFPLElBQUksT0FBTyxFQUFFLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLE9BQU8sSUFBSSxDQUFDLENBQUM7UUFFNUcsYUFBYSxDQUFDLFlBQVksR0FBRyxDQUFDLE9BQU8sSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMs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b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFLYyxNQUFNOzJCQUFDLHFCQUFxQjs7MEJBQUcsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBcGlSZXF1ZXN0IH0gZnJvbSAnLi4vcmVxdWVzdC1tYW5hZ2VyLXN0YXRlLXNlcnZpY2UvbW9kZWxzJztcbmltcG9ydCB7IFNldHRpbmdPcHRpb25zIH0gZnJvbSAnLi4vbG9jYWwtc3RvcmFnZS1tYW5hZ2VyLXNlcnZpY2UnO1xuaW1wb3J0IHsgVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbHMvdXRpbHMuc2VydmljZSc7XG5cbmltcG9ydCB7IENPTkZJR19TRVRUSU5HU19UT0tFTiB9IGZyb20gJy4uLy4uL21vZGVscy9jb25maWctdG9rZW4ubW9kZWwnO1xuaW1wb3J0IHsgQ29uZmlnSFRUUE9wdGlvbnMsIENvbmZpZ09wdGlvbnMsIExvY2FsU3RvcmFnZU9wdGlvbnMgfSBmcm9tICcuLi9yZXF1ZXN0LW1hbmFnZXItc2VydmljZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBPYmplY3RNZXJnZXJTZXJ2aWNlIHtcblxuICB1dGlscyA9IGluamVjdChVdGlsc1NlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoQ09ORklHX1NFVFRJTkdTX1RPS0VOKSBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbmZpZ09wdGlvbnM/OiBDb25maWdPcHRpb25zKSB7XG4gICAgICBpZiAoIXRoaXMuY29uZmlnT3B0aW9ucykgdGhpcy5jb25maWdPcHRpb25zID0gQ29uZmlnT3B0aW9ucy5hZGFwdCgpXG4gICB9XG5cbiAgbWVyZ2VPcHRpb25zKG9wdGlvbnMgPSBBcGlSZXF1ZXN0LmFkYXB0KCkpIHtcblxuICAgIGNvbnN0IGNvbmZpZ0ZvclJvb3QgPSAodGhpcy5jb25maWdPcHRpb25zPy5odHRwUmVxdWVzdE9wdGlvbnMpID8gdGhpcy5jb25maWdPcHRpb25zLmh0dHBSZXF1ZXN0T3B0aW9ucyA6IENvbmZpZ0hUVFBPcHRpb25zLmFkYXB0KClcbiAgICBjb25zdCBtZXJnZWRPcHRpb25zID0gQXBpUmVxdWVzdC5hZGFwdChvcHRpb25zKVxuXG4gICAgbWVyZ2VkT3B0aW9ucy5zZXJ2ZXIgPSAob3B0aW9ucyAmJiBvcHRpb25zLnNlcnZlciA9PT0gJycpID8gY29uZmlnRm9yUm9vdD8uc2VydmVyIHx8ICcnIDogb3B0aW9ucy5zZXJ2ZXJcblxuICAgIG1lcmdlZE9wdGlvbnMucGF0aCA9IFsgLi4ub3B0aW9ucy5wYXRoIHx8IFtdLCAuLi5jb25maWdGb3JSb290Py5wYXRoIHx8IFtdIF1cblxuICAgIG1lcmdlZE9wdGlvbnMuaGVhZGVycyA9IHsgLi4ub3B0aW9ucy5oZWFkZXJzIHx8IHt9LCAuLi5jb25maWdGb3JSb290Py5oZWFkZXJzIHx8IHt9IH1cblxuICAgIG1lcmdlZE9wdGlvbnMucmV0cnkgPSAob3B0aW9ucyAmJiAob3B0aW9ucz8ucmV0cnk/LnRpbWVzICE9PSAwIHx8IG9wdGlvbnM/LnJldHJ5Py5kZWxheSAhPT0gMykpID8gb3B0aW9ucy5yZXRyeSA6IGNvbmZpZ0ZvclJvb3Q/LnJldHJ5IHx8IHsgdGltZXM6IDAsIGRlbGF5OiAzIH07XG5cbiAgICBtZXJnZWRPcHRpb25zLnBvbGxpbmcgPSAob3B0aW9ucyAmJiBvcHRpb25zPy5wb2xsaW5nICE9PSAwKSA/IG9wdGlvbnMucG9sbGluZyA6IGNvbmZpZ0ZvclJvb3Q/LnBvbGxpbmcgfHwgMDtcblxuICAgIG1lcmdlZE9wdGlvbnMuZGlzcGxheUVycm9yID0gKG9wdGlvbnMgJiYgb3B0aW9ucz8uZGlzcGxheUVycm9yKSA/IG9wdGlvbnMuZGlzcGxheUVycm9yIDogY29uZmlnRm9yUm9vdD8uZGlzcGxheUVycm9yIHx8IGZhbHNlO1xuXG4gICAgbWVyZ2VkT3B0aW9ucy5zdHJlYW0gPSAob3B0aW9ucyAmJiBvcHRpb25zPy5zdHJlYW0pID8gb3B0aW9ucy5zdHJlYW0gOiBjb25maWdGb3JSb290Py5zdHJlYW0gfHwgZmFsc2U7XG5cbiAgICByZXR1cm4gbWVyZ2VkT3B0aW9ucztcblxuICB9XG5cbiAgbWVyZ2VTdG9yYWdlT3B0aW9ucyhvcHRpb25zID0gU2V0dGluZ09wdGlvbnMuYWRhcHQoKSkge1xuXG4gICAgY29uc3QgY29uZmlnRm9yUm9vdCA9ICh0aGlzLmNvbmZpZ09wdGlvbnM/LkxvY2FsU3RvcmFnZU9wdGlvbnMpID8gdGhpcy5jb25maWdPcHRpb25zLkxvY2FsU3RvcmFnZU9wdGlvbnMgOiBMb2NhbFN0b3JhZ2VPcHRpb25zLmFkYXB0KClcbiAgICBjb25zdCBjb25maWdGb3JSb290T3B0aW9ucyA9IGNvbmZpZ0ZvclJvb3Qub3B0aW9ucyB8fCBMb2NhbFN0b3JhZ2VPcHRpb25zLmFkYXB0KCkub3B0aW9uc1xuXG4gICAgY29uc3QgbWVyZ2VkT3B0aW9ucyA9IFNldHRpbmdPcHRpb25zLmFkYXB0KG9wdGlvbnMpXG5cbiAgICAvLyBzdG9yYWdlIHR5cGVcbiAgICBtZXJnZWRPcHRpb25zLnN0b3JhZ2UgPSAob3B0aW9ucyAmJiAodHlwZW9mIG9wdGlvbnMuc3RvcmFnZSAhPT0gJ3VuZGVmaW5lZCcpKSA/IG9wdGlvbnMuc3RvcmFnZSA6IChjb25maWdGb3JSb290T3B0aW9ucz8uc3RvcmFnZSA/PyAwKVxuXG4gICAgLy8gZXhwaXJlczogcHJlZmVyIGV4cGxpY2l0IG51bWVyaWMgZXhwaXJlczsgaWYgbm90IHByb3ZpZGVkLCBjb21wdXRlIGZyb20gZXhwaXJlc0luIHN0cmluZzsgb3RoZXJ3aXNlIHVzZSBjb25maWcgZGVmYXVsdFxuICAgIC8vIGlmIGFuIGV4cGxpY2l0LCBub24temVybyBudW1lcmljIGV4cGlyZXMgaXMgcHJvdmlkZWQsIHVzZSBpdFxuICAgIGlmIChvcHRpb25zICYmICh0eXBlb2Ygb3B0aW9ucy5leHBpcmVzICE9PSAndW5kZWZpbmVkJykgJiYgb3B0aW9ucy5leHBpcmVzICE9PSBudWxsICYmIE51bWJlcihvcHRpb25zLmV4cGlyZXMpID4gMCkge1xuICAgICAgbWVyZ2VkT3B0aW9ucy5leHBpcmVzID0gTnVtYmVyKG9wdGlvbnMuZXhwaXJlcyk7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zICYmIG9wdGlvbnMuZXhwaXJlc0luKSB7XG4gICAgICAvLyBjb21wdXRlIG51bWVyaWMgZXBvY2ggZnJvbSBleHBpcmVzSW4gc3RyaW5nIHVzaW5nIFV0aWxzU2VydmljZSBpZiBhdmFpbGFibGVcbiAgICAgIHRyeSB7XG4gICAgICAgIG1lcmdlZE9wdGlvbnMuZXhwaXJlcyA9IHRoaXMudXRpbHMgPyB0aGlzLnV0aWxzLmV4cGlyZXMob3B0aW9ucy5leHBpcmVzSW4pIDogMDtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICBtZXJnZWRPcHRpb25zLmV4cGlyZXMgPSAwO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBtZXJnZWRPcHRpb25zLmV4cGlyZXMgPSBjb25maWdGb3JSb290T3B0aW9ucz8uZXhwaXJlcyA/PyAwO1xuICAgIH1cblxuICAgIC8vIGtlZXAgZXhwaXJlc0luIHN0cmluZyBpZiBleHBsaWNpdGx5IHByb3ZpZGVkLCBvdGhlcndpc2UgdXNlIGNvbmZpZyBkZWZhdWx0XG4gICAgbWVyZ2VkT3B0aW9ucy5leHBpcmVzSW4gPSAob3B0aW9ucyAmJiAodHlwZW9mIG9wdGlvbnMuZXhwaXJlc0luICE9PSAndW5kZWZpbmVkJykpID8gb3B0aW9ucy5leHBpcmVzSW4gOiAoY29uZmlnRm9yUm9vdE9wdGlvbnM/LmV4cGlyZXNJbiB8fCAnJylcblxuICAgIG1lcmdlZE9wdGlvbnMuZW5jcnlwdGVkID0gKG9wdGlvbnMgJiYgKHR5cGVvZiBvcHRpb25zLmVuY3J5cHRlZCAhPT0gJ3VuZGVmaW5lZCcpKSA/IG9wdGlvbnMuZW5jcnlwdGVkIDogKGNvbmZpZ0ZvclJvb3RPcHRpb25zPy5lbmNyeXB0ZWQgfHwgZmFsc2UpXG5cbiAgICByZXR1cm4gbWVyZ2VkT3B0aW9ucztcblxuICB9XG5cbn1cbiJdfQ==
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LW1lcmdlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9zZXJ2aWNlcy91dGlscy9vYmplY3QtbWVyZ2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7OztBQUtwRyxNQUFNLE9BQU8sbUJBQW1CO0lBSTlCLFlBQStELGFBQTZCO1FBQTdCLGtCQUFhLEdBQWIsYUFBYSxDQUFnQjtRQUY1RixVQUFLLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBR3pCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYTtZQUFFLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ3RFLENBQUM7SUFFRixZQUFZLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUU7UUFFdkMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFBO1FBQ2xJLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7UUFFL0MsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQTtRQUV4RyxhQUFhLENBQUMsSUFBSSxHQUFHLENBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLGFBQWEsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFFLENBQUE7UUFFNUUsYUFBYSxDQUFDLE9BQU8sR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxFQUFFLEVBQUUsR0FBRyxhQUFhLEVBQUUsT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFBO1FBRXJGLGFBQWEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssS0FBSyxDQUFDLElBQUksT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLEtBQUssSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBRWpLLGFBQWEsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxPQUFPLElBQUksT0FBTyxFQUFFLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLE9BQU8sSUFBSSxDQUFDLENBQUM7UUFFNUcsYUFBYSxDQUFDLFlBQVksR0FBRyxDQUFDLE9BQU8sSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxZQUFZLElBQUksS0FBSyxDQUFDO1FBRTlILGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxPQUFPLElBQUksT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQztRQUV0RyxPQUFPLGFBQWEsQ0FBQztJQUV2QixDQUFDO0lBRUQsbUJBQW1CLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQyxLQUFLLEVBQUU7UUFFbEQsTUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxDQUFBO1FBQ3RJLE1BQU0sb0JBQW9CLEdBQUcsYUFBYSxDQUFDLE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUE7UUFFekYsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUVuRCxlQUFlO1FBQ2YsYUFBYSxDQUFDLE9BQU8sR0FBRyxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sT0FBTyxDQUFDLE9BQU8sS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixFQUFFLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUV0SSx5SEFBeUg7UUFDekgsK0RBQStEO1FBQy9ELElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxPQUFPLENBQUMsT0FBTyxLQUFLLFdBQVcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbkgsYUFBYSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xELENBQUM7YUFBTSxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDeEMsOEVBQThFO1lBQzlFLElBQUksQ0FBQztnQkFDSCxhQUFhLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pGLENBQUM7WUFBQyxNQUFNLENBQUM7Z0JBQ1AsYUFBYSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7WUFDNUIsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sYUFBYSxDQUFDLE9BQU8sR0FBRyxvQkFBb0IsRUFBRSxPQUFPLElBQUksQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFFRCw2RUFBNkU7UUFDN0UsYUFBYSxDQUFDLFNBQVMsR0FBRyxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sT0FBTyxDQUFDLFNBQVMsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixFQUFFLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUUvSSxhQUFhLENBQUMsU0FBUyxHQUFHLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxPQUFPLENBQUMsU0FBUyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLEVBQUUsU0FBUyxJQUFJLEtBQUssQ0FBQyxDQUFBO1FBRWxKLE9BQU8sYUFBYSxDQUFDO0lBRXZCLENBQUM7K0dBL0RVLG1CQUFtQixrQkFJVixxQkFBcUI7bUhBSjlCLG1CQUFtQixjQUZsQixNQUFNOzs0RkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFLYyxNQUFNOzJCQUFDLHFCQUFxQjs7MEJBQUcsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBcGlSZXF1ZXN0IH0gZnJvbSAnLi4vcmVxdWVzdC1tYW5hZ2VyLXN0YXRlLXNlcnZpY2UvbW9kZWxzJztcbmltcG9ydCB7IFNldHRpbmdPcHRpb25zIH0gZnJvbSAnLi4vbG9jYWwtc3RvcmFnZS1tYW5hZ2VyLXNlcnZpY2UnO1xuaW1wb3J0IHsgVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi91dGlscy5zZXJ2aWNlJztcblxuaW1wb3J0IHsgQ09ORklHX1NFVFRJTkdTX1RPS0VOIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NvbmZpZy10b2tlbi5tb2RlbCc7XG5pbXBvcnQgeyBDb25maWdIVFRQT3B0aW9ucywgQ29uZmlnT3B0aW9ucywgTG9jYWxTdG9yYWdlT3B0aW9ucyB9IGZyb20gJy4uL3JlcXVlc3QtbWFuYWdlci1zZXJ2aWNlcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE9iamVjdE1lcmdlclNlcnZpY2Uge1xuXG4gIHV0aWxzID0gaW5qZWN0KFV0aWxzU2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChDT05GSUdfU0VUVElOR1NfVE9LRU4pIEBPcHRpb25hbCgpIHByaXZhdGUgY29uZmlnT3B0aW9ucz86IENvbmZpZ09wdGlvbnMpIHtcbiAgICAgIGlmICghdGhpcy5jb25maWdPcHRpb25zKSB0aGlzLmNvbmZpZ09wdGlvbnMgPSBDb25maWdPcHRpb25zLmFkYXB0KClcbiAgIH1cblxuICBtZXJnZU9wdGlvbnMob3B0aW9ucyA9IEFwaVJlcXVlc3QuYWRhcHQoKSkge1xuXG4gICAgY29uc3QgY29uZmlnRm9yUm9vdCA9ICh0aGlzLmNvbmZpZ09wdGlvbnM/Lmh0dHBSZXF1ZXN0T3B0aW9ucykgPyB0aGlzLmNvbmZpZ09wdGlvbnMuaHR0cFJlcXVlc3RPcHRpb25zIDogQ29uZmlnSFRUUE9wdGlvbnMuYWRhcHQoKVxuICAgIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSBBcGlSZXF1ZXN0LmFkYXB0KG9wdGlvbnMpXG5cbiAgICBtZXJnZWRPcHRpb25zLnNlcnZlciA9IChvcHRpb25zICYmIG9wdGlvbnMuc2VydmVyID09PSAnJykgPyBjb25maWdGb3JSb290Py5zZXJ2ZXIgfHwgJycgOiBvcHRpb25zLnNlcnZlclxuXG4gICAgbWVyZ2VkT3B0aW9ucy5wYXRoID0gWyAuLi5vcHRpb25zLnBhdGggfHwgW10sIC4uLmNvbmZpZ0ZvclJvb3Q/LnBhdGggfHwgW10gXVxuXG4gICAgbWVyZ2VkT3B0aW9ucy5oZWFkZXJzID0geyAuLi5vcHRpb25zLmhlYWRlcnMgfHwge30sIC4uLmNvbmZpZ0ZvclJvb3Q/LmhlYWRlcnMgfHwge30gfVxuXG4gICAgbWVyZ2VkT3B0aW9ucy5yZXRyeSA9IChvcHRpb25zICYmIChvcHRpb25zPy5yZXRyeT8udGltZXMgIT09IDAgfHwgb3B0aW9ucz8ucmV0cnk/LmRlbGF5ICE9PSAzKSkgPyBvcHRpb25zLnJldHJ5IDogY29uZmlnRm9yUm9vdD8ucmV0cnkgfHwgeyB0aW1lczogMCwgZGVsYXk6IDMgfTtcblxuICAgIG1lcmdlZE9wdGlvbnMucG9sbGluZyA9IChvcHRpb25zICYmIG9wdGlvbnM/LnBvbGxpbmcgIT09IDApID8gb3B0aW9ucy5wb2xsaW5nIDogY29uZmlnRm9yUm9vdD8ucG9sbGluZyB8fCAwO1xuXG4gICAgbWVyZ2VkT3B0aW9ucy5kaXNwbGF5RXJyb3IgPSAob3B0aW9ucyAmJiBvcHRpb25zPy5kaXNwbGF5RXJyb3IpID8gb3B0aW9ucy5kaXNwbGF5RXJyb3IgOiBjb25maWdGb3JSb290Py5kaXNwbGF5RXJyb3IgfHwgZmFsc2U7XG5cbiAgICBtZXJnZWRPcHRpb25zLnN0cmVhbSA9IChvcHRpb25zICYmIG9wdGlvbnM/LnN0cmVhbSkgPyBvcHRpb25zLnN0cmVhbSA6IGNvbmZpZ0ZvclJvb3Q/LnN0cmVhbSB8fCBmYWxzZTtcblxuICAgIHJldHVybiBtZXJnZWRPcHRpb25zO1xuXG4gIH1cblxuICBtZXJnZVN0b3JhZ2VPcHRpb25zKG9wdGlvbnMgPSBTZXR0aW5nT3B0aW9ucy5hZGFwdCgpKSB7XG5cbiAgICBjb25zdCBjb25maWdGb3JSb290ID0gKHRoaXMuY29uZmlnT3B0aW9ucz8uTG9jYWxTdG9yYWdlT3B0aW9ucykgPyB0aGlzLmNvbmZpZ09wdGlvbnMuTG9jYWxTdG9yYWdlT3B0aW9ucyA6IExvY2FsU3RvcmFnZU9wdGlvbnMuYWRhcHQoKVxuICAgIGNvbnN0IGNvbmZpZ0ZvclJvb3RPcHRpb25zID0gY29uZmlnRm9yUm9vdC5vcHRpb25zIHx8IExvY2FsU3RvcmFnZU9wdGlvbnMuYWRhcHQoKS5vcHRpb25zXG5cbiAgICBjb25zdCBtZXJnZWRPcHRpb25zID0gU2V0dGluZ09wdGlvbnMuYWRhcHQob3B0aW9ucylcblxuICAgIC8vIHN0b3JhZ2UgdHlwZVxuICAgIG1lcmdlZE9wdGlvbnMuc3RvcmFnZSA9IChvcHRpb25zICYmICh0eXBlb2Ygb3B0aW9ucy5zdG9yYWdlICE9PSAndW5kZWZpbmVkJykpID8gb3B0aW9ucy5zdG9yYWdlIDogKGNvbmZpZ0ZvclJvb3RPcHRpb25zPy5zdG9yYWdlID8/IDApXG5cbiAgICAvLyBleHBpcmVzOiBwcmVmZXIgZXhwbGljaXQgbnVtZXJpYyBleHBpcmVzOyBpZiBub3QgcHJvdmlkZWQsIGNvbXB1dGUgZnJvbSBleHBpcmVzSW4gc3RyaW5nOyBvdGhlcndpc2UgdXNlIGNvbmZpZyBkZWZhdWx0XG4gICAgLy8gaWYgYW4gZXhwbGljaXQsIG5vbi16ZXJvIG51bWVyaWMgZXhwaXJlcyBpcyBwcm92aWRlZCwgdXNlIGl0XG4gICAgaWYgKG9wdGlvbnMgJiYgKHR5cGVvZiBvcHRpb25zLmV4cGlyZXMgIT09ICd1bmRlZmluZWQnKSAmJiBvcHRpb25zLmV4cGlyZXMgIT09IG51bGwgJiYgTnVtYmVyKG9wdGlvbnMuZXhwaXJlcykgPiAwKSB7XG4gICAgICBtZXJnZWRPcHRpb25zLmV4cGlyZXMgPSBOdW1iZXIob3B0aW9ucy5leHBpcmVzKTtcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5leHBpcmVzSW4pIHtcbiAgICAgIC8vIGNvbXB1dGUgbnVtZXJpYyBlcG9jaCBmcm9tIGV4cGlyZXNJbiBzdHJpbmcgdXNpbmcgVXRpbHNTZXJ2aWNlIGlmIGF2YWlsYWJsZVxuICAgICAgdHJ5IHtcbiAgICAgICAgbWVyZ2VkT3B0aW9ucy5leHBpcmVzID0gdGhpcy51dGlscyA/IHRoaXMudXRpbHMuZXhwaXJlcyhvcHRpb25zLmV4cGlyZXNJbikgOiAwO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIG1lcmdlZE9wdGlvbnMuZXhwaXJlcyA9IDA7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lcmdlZE9wdGlvbnMuZXhwaXJlcyA9IGNvbmZpZ0ZvclJvb3RPcHRpb25zPy5leHBpcmVzID8/IDA7XG4gICAgfVxuXG4gICAgLy8ga2VlcCBleHBpcmVzSW4gc3RyaW5nIGlmIGV4cGxpY2l0bHkgcHJvdmlkZWQsIG90aGVyd2lzZSB1c2UgY29uZmlnIGRlZmF1bHRcbiAgICBtZXJnZWRPcHRpb25zLmV4cGlyZXNJbiA9IChvcHRpb25zICYmICh0eXBlb2Ygb3B0aW9ucy5leHBpcmVzSW4gIT09ICd1bmRlZmluZWQnKSkgPyBvcHRpb25zLmV4cGlyZXNJbiA6IChjb25maWdGb3JSb290T3B0aW9ucz8uZXhwaXJlc0luIHx8ICcnKVxuXG4gICAgbWVyZ2VkT3B0aW9ucy5lbmNyeXB0ZWQgPSAob3B0aW9ucyAmJiAodHlwZW9mIG9wdGlvbnMuZW5jcnlwdGVkICE9PSAndW5kZWZpbmVkJykpID8gb3B0aW9ucy5lbmNyeXB0ZWQgOiAoY29uZmlnRm9yUm9vdE9wdGlvbnM/LmVuY3J5cHRlZCB8fCBmYWxzZSlcblxuICAgIHJldHVybiBtZXJnZWRPcHRpb25zO1xuXG4gIH1cblxufVxuIl19
@@ -42,10 +42,10 @@ export class PathQueryService {
42
42
  isObject(val) {
43
43
  return (val === null) ? false : ((typeof val === 'function') || (typeof val === 'object'));
44
44
  }
45
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PathQueryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
46
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PathQueryService, providedIn: 'root' }); }
45
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PathQueryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
46
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PathQueryService, providedIn: 'root' }); }
47
47
  }
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PathQueryService, decorators: [{
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PathQueryService, decorators: [{
49
49
  type: Injectable,
50
50
  args: [{
51
51
  providedIn: 'root'
@@ -143,10 +143,10 @@ export class UtilsService {
143
143
  }
144
144
  return result.join(', ');
145
145
  }
146
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UtilsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
147
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UtilsService, providedIn: 'root' }); }
146
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UtilsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
147
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UtilsService, providedIn: 'root' }); }
148
148
  }
149
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UtilsService, decorators: [{
149
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UtilsService, decorators: [{
150
150
  type: Injectable,
151
151
  args: [{
152
152
  providedIn: 'root'
@@ -0,0 +1,3 @@
1
+ export * from "./models/index";
2
+ export * from "./websocket.service";
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3dzLW1hbmFnZXItc2VydmljZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmV4cG9ydCAqIGZyb20gXCIuL21vZGVscy9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vd2Vic29ja2V0LnNlcnZpY2VcIjtcblxuIl19
@@ -0,0 +1,10 @@
1
+ export class ChannelInfo {
2
+ constructor(name = '', canSubscribe = false) {
3
+ this.name = name;
4
+ this.canSubscribe = canSubscribe;
5
+ }
6
+ static adapt(item) {
7
+ return new ChannelInfo(item?.name, item?.canSubscribe);
8
+ }
9
+ }
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbC1pbmZvLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9zZXJ2aWNlcy93cy1tYW5hZ2VyLXNlcnZpY2UvbW9kZWxzL2NoYW5uZWwtaW5mby5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxNQUFNLE9BQU8sV0FBVztJQUV0QixZQUNTLE9BQU8sRUFBRSxFQUNULGVBQWUsS0FBSztRQURwQixTQUFJLEdBQUosSUFBSSxDQUFLO1FBQ1QsaUJBQVksR0FBWixZQUFZLENBQVE7SUFDMUIsQ0FBQztJQUVKLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBVTtRQUVyQixPQUFPLElBQUksV0FBVyxDQUNwQixJQUFJLEVBQUUsSUFBSSxFQUNWLElBQUksRUFBRSxZQUFZLENBQ25CLENBQUE7SUFFSCxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIENoYW5uZWxJbmZvSW50ZXJmYWNlIHtcbiAgbmFtZTogc3RyaW5nXG4gIGNhblN1YnNjcmliZTogYm9vbGVhblxufVxuXG5leHBvcnQgY2xhc3MgQ2hhbm5lbEluZm8gaW1wbGVtZW50cyBDaGFubmVsSW5mb0ludGVyZmFjZSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG5hbWUgPSAnJyxcbiAgICBwdWJsaWMgY2FuU3Vic2NyaWJlID0gZmFsc2UsXG4gICkge31cblxuICBzdGF0aWMgYWRhcHQoaXRlbT86IGFueSk6IENoYW5uZWxJbmZvIHtcblxuICAgIHJldHVybiBuZXcgQ2hhbm5lbEluZm8oXG4gICAgICBpdGVtPy5uYW1lLFxuICAgICAgaXRlbT8uY2FuU3Vic2NyaWJlLFxuICAgIClcblxuICB9XG5cbn1cblxuXG4iXX0=
@@ -0,0 +1,12 @@
1
+ export class ChannelMessage {
2
+ constructor(fromUser = null, toUser = null, content = null, issued = new Date()) {
3
+ this.fromUser = fromUser;
4
+ this.toUser = toUser;
5
+ this.content = content;
6
+ this.issued = issued;
7
+ }
8
+ static adapt(item) {
9
+ return new ChannelMessage(item?.fromUser, item?.toUser, item?.content, item?.issued);
10
+ }
11
+ }
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbC1ub3RpZmljYXRpb24ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3dzLW1hbmFnZXItc2VydmljZS9tb2RlbHMvY2hhbm5lbC1ub3RpZmljYXRpb24ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsTUFBTSxPQUFPLGNBQWM7SUFFekIsWUFDUyxXQUF3QixJQUFJLEVBQzVCLFNBQXNCLElBQUksRUFDMUIsVUFBdUIsSUFBSSxFQUMzQixTQUFTLElBQUksSUFBSSxFQUFFO1FBSG5CLGFBQVEsR0FBUixRQUFRLENBQW9CO1FBQzVCLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBQzFCLFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBQzNCLFdBQU0sR0FBTixNQUFNLENBQWE7SUFDekIsQ0FBQztJQUVKLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBVTtRQUVyQixPQUFPLElBQUksY0FBYyxDQUN2QixJQUFJLEVBQUUsUUFBUSxFQUNkLElBQUksRUFBRSxNQUFNLEVBQ1osSUFBSSxFQUFFLE9BQU8sRUFDYixJQUFJLEVBQUUsTUFBTSxDQUNiLENBQUE7SUFFSCxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIENoYW5uZWxNZXNzYWdlSW50ZXJmYWNlIHtcbiAgZnJvbVVzZXI6IHN0cmluZ3xudWxsXG4gIHRvVXNlcjogc3RyaW5nfG51bGxcbiAgY29udGVudDogc3RyaW5nfG51bGxcbiAgaXNzdWVkOiBEYXRlXG59XG5cbmV4cG9ydCBjbGFzcyBDaGFubmVsTWVzc2FnZSBpbXBsZW1lbnRzIENoYW5uZWxNZXNzYWdlSW50ZXJmYWNlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZnJvbVVzZXI6IHN0cmluZ3xudWxsID0gbnVsbCxcbiAgICBwdWJsaWMgdG9Vc2VyOiBzdHJpbmd8bnVsbCA9IG51bGwsXG4gICAgcHVibGljIGNvbnRlbnQ6IHN0cmluZ3xudWxsID0gbnVsbCxcbiAgICBwdWJsaWMgaXNzdWVkID0gbmV3IERhdGUoKSxcbiAgKSB7fVxuXG4gIHN0YXRpYyBhZGFwdChpdGVtPzogYW55KTogQ2hhbm5lbE1lc3NhZ2Uge1xuXG4gICAgcmV0dXJuIG5ldyBDaGFubmVsTWVzc2FnZShcbiAgICAgIGl0ZW0/LmZyb21Vc2VyLFxuICAgICAgaXRlbT8udG9Vc2VyLFxuICAgICAgaXRlbT8uY29udGVudCxcbiAgICAgIGl0ZW0/Lmlzc3VlZCxcbiAgICApXG5cbiAgfVxuXG59XG5cblxuIl19
@@ -0,0 +1,6 @@
1
+ export * from "./channel-info.model";
2
+ export * from "./channel-notification.model";
3
+ export * from "./user-info.model";
4
+ export * from "./user-name-info.model";
5
+ export * from "./user-message.model";
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3dzLW1hbmFnZXItc2VydmljZS9tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vY2hhbm5lbC1pbmZvLm1vZGVsXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jaGFubmVsLW5vdGlmaWNhdGlvbi5tb2RlbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXNlci1pbmZvLm1vZGVsXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91c2VyLW5hbWUtaW5mby5tb2RlbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXNlci1tZXNzYWdlLm1vZGVsXCI7XG5cbiJdfQ==
@@ -0,0 +1,11 @@
1
+ import { UserNameInfo } from "./user-name-info.model";
2
+ export class UserInfo {
3
+ constructor(username = '', name = UserNameInfo.adapt()) {
4
+ this.username = username;
5
+ this.name = name;
6
+ }
7
+ static adapt(item) {
8
+ return new UserInfo(item?.username, (item?.name) ? UserNameInfo.adapt(item.name) : UserNameInfo.adapt());
9
+ }
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1pbmZvLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9zZXJ2aWNlcy93cy1tYW5hZ2VyLXNlcnZpY2UvbW9kZWxzL3VzZXItaW5mby5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFPckQsTUFBTSxPQUFPLFFBQVE7SUFFbkIsWUFDUyxXQUFXLEVBQUUsRUFDYixPQUFPLFlBQVksQ0FBQyxLQUFLLEVBQUU7UUFEM0IsYUFBUSxHQUFSLFFBQVEsQ0FBSztRQUNiLFNBQUksR0FBSixJQUFJLENBQXVCO0lBQ2pDLENBQUM7SUFFSixNQUFNLENBQUMsS0FBSyxDQUFDLElBQVU7UUFFckIsT0FBTyxJQUFJLFFBQVEsQ0FDakIsSUFBSSxFQUFFLFFBQVEsRUFDZCxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FDcEUsQ0FBQTtJQUVILENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVzZXJOYW1lSW5mbyB9IGZyb20gXCIuL3VzZXItbmFtZS1pbmZvLm1vZGVsXCJcblxuZXhwb3J0IGludGVyZmFjZSBVc2VySW5mb0ludGVyZmFjZSB7XG4gIHVzZXJuYW1lOiBzdHJpbmdcbiAgbmFtZTogVXNlck5hbWVJbmZvXG59XG5cbmV4cG9ydCBjbGFzcyBVc2VySW5mbyBpbXBsZW1lbnRzIFVzZXJJbmZvSW50ZXJmYWNlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdXNlcm5hbWUgPSAnJyxcbiAgICBwdWJsaWMgbmFtZSA9IFVzZXJOYW1lSW5mby5hZGFwdCgpLFxuICApIHt9XG5cbiAgc3RhdGljIGFkYXB0KGl0ZW0/OiBhbnkpOiBVc2VySW5mbyB7XG5cbiAgICByZXR1cm4gbmV3IFVzZXJJbmZvKFxuICAgICAgaXRlbT8udXNlcm5hbWUsXG4gICAgICAoaXRlbT8ubmFtZSkgPyBVc2VyTmFtZUluZm8uYWRhcHQoaXRlbS5uYW1lKSA6IFVzZXJOYW1lSW5mby5hZGFwdCgpLFxuICAgIClcblxuICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,12 @@
1
+ export class UserMessage {
2
+ constructor(fromUser, toUser, content, issued) {
3
+ this.fromUser = fromUser;
4
+ this.toUser = toUser;
5
+ this.content = content;
6
+ this.issued = issued;
7
+ }
8
+ static adapt(item) {
9
+ return new UserMessage(item?.fromUser, item?.name?.toUser, item?.content, item?.name?.issued);
10
+ }
11
+ }
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1tZXNzYWdlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9zZXJ2aWNlcy93cy1tYW5hZ2VyLXNlcnZpY2UvbW9kZWxzL3VzZXItbWVzc2FnZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSxNQUFNLE9BQU8sV0FBVztJQUV0QixZQUNTLFFBQWtCLEVBQ2xCLE1BQWlCLEVBQ2pCLE9BQWdCLEVBQ2hCLE1BQWE7UUFIYixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixXQUFNLEdBQU4sTUFBTSxDQUFPO0lBQ25CLENBQUM7SUFFSixNQUFNLENBQUMsS0FBSyxDQUFDLElBQVU7UUFFckIsT0FBTyxJQUFJLFdBQVcsQ0FDcEIsSUFBSSxFQUFFLFFBQVEsRUFDZCxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFDbEIsSUFBSSxFQUFFLE9BQU8sRUFDYixJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FDbkIsQ0FBQTtJQUVILENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVzZXJJbmZvIH0gZnJvbSBcIi4uXCJcblxuZXhwb3J0IGludGVyZmFjZSBVc2VyTWVzc2FnZUludGVyZmFjZSB7XG4gICAgZnJvbVVzZXI6IFVzZXJJbmZvLFxuICAgIHRvVXNlcj86IFVzZXJJbmZvLFxuICAgIGNvbnRlbnQ/OiBzdHJpbmcsXG4gICAgaXNzdWVkPzogRGF0ZSxcbn1cblxuZXhwb3J0IGNsYXNzIFVzZXJNZXNzYWdlIGltcGxlbWVudHMgVXNlck1lc3NhZ2VJbnRlcmZhY2Uge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBmcm9tVXNlcjogVXNlckluZm8sXG4gICAgcHVibGljIHRvVXNlcj86IFVzZXJJbmZvLFxuICAgIHB1YmxpYyBjb250ZW50Pzogc3RyaW5nLFxuICAgIHB1YmxpYyBpc3N1ZWQ/OiBEYXRlLFxuICApIHt9XG5cbiAgc3RhdGljIGFkYXB0KGl0ZW0/OiBhbnkpOiBVc2VyTWVzc2FnZSB7XG5cbiAgICByZXR1cm4gbmV3IFVzZXJNZXNzYWdlKFxuICAgICAgaXRlbT8uZnJvbVVzZXIsXG4gICAgICBpdGVtPy5uYW1lPy50b1VzZXIsXG4gICAgICBpdGVtPy5jb250ZW50LFxuICAgICAgaXRlbT8ubmFtZT8uaXNzdWVkLFxuICAgIClcblxuICB9XG5cbn1cblxuXG4iXX0=
@@ -0,0 +1,12 @@
1
+ export class UserNameInfo {
2
+ constructor(first = '', last = '', email = '', connected = new Date()) {
3
+ this.first = first;
4
+ this.last = last;
5
+ this.email = email;
6
+ this.connected = connected;
7
+ }
8
+ static adapt(item) {
9
+ return new UserNameInfo(item?.first, item?.last, item?.email, item?.connected);
10
+ }
11
+ }
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1uYW1lLWluZm8ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3dzLW1hbmFnZXItc2VydmljZS9tb2RlbHMvdXNlci1uYW1lLWluZm8ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsTUFBTSxPQUFPLFlBQVk7SUFFdkIsWUFDUyxRQUFnQixFQUFFLEVBQ2xCLE9BQWUsRUFBRSxFQUNqQixRQUFnQixFQUFFLEVBQ2xCLFlBQWtCLElBQUksSUFBSSxFQUFFO1FBSDVCLFVBQUssR0FBTCxLQUFLLENBQWE7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNqQixVQUFLLEdBQUwsS0FBSyxDQUFhO1FBQ2xCLGNBQVMsR0FBVCxTQUFTLENBQW1CO0lBQ2xDLENBQUM7SUFFSixNQUFNLENBQUMsS0FBSyxDQUFDLElBQVU7UUFFckIsT0FBTyxJQUFJLFlBQVksQ0FDckIsSUFBSSxFQUFFLEtBQUssRUFDWCxJQUFJLEVBQUUsSUFBSSxFQUNWLElBQUksRUFBRSxLQUFLLEVBQ1gsSUFBSSxFQUFFLFNBQVMsQ0FDaEIsQ0FBQTtJQUVILENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgVXNlck5hbWVJbmZvSW50ZXJmYWNlIHtcbiAgZmlyc3Q6IHN0cmluZ1xuICBsYXN0OiBzdHJpbmdcbiAgZW1haWw6IHN0cmluZ1xuICBjb25uZWN0ZWQ6IERhdGVcbn1cblxuZXhwb3J0IGNsYXNzIFVzZXJOYW1lSW5mbyBpbXBsZW1lbnRzIFVzZXJOYW1lSW5mb0ludGVyZmFjZSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGZpcnN0OiBzdHJpbmcgPSAnJyxcbiAgICBwdWJsaWMgbGFzdDogc3RyaW5nID0gJycsXG4gICAgcHVibGljIGVtYWlsOiBzdHJpbmcgPSAnJyxcbiAgICBwdWJsaWMgY29ubmVjdGVkOiBEYXRlID0gbmV3IERhdGUoKSxcbiAgKSB7fVxuXG4gIHN0YXRpYyBhZGFwdChpdGVtPzogYW55KTogVXNlck5hbWVJbmZvIHtcblxuICAgIHJldHVybiBuZXcgVXNlck5hbWVJbmZvKFxuICAgICAgaXRlbT8uZmlyc3QsXG4gICAgICBpdGVtPy5sYXN0LFxuICAgICAgaXRlbT8uZW1haWwsXG4gICAgICBpdGVtPy5jb25uZWN0ZWQsXG4gICAgKVxuXG4gIH1cblxufVxuXG5cbiJdfQ==
@@ -0,0 +1,133 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class WebsocketService {
5
+ constructor() {
6
+ this.socket = null;
7
+ this.messages = new BehaviorSubject(null);
8
+ this.messages$ = this.messages.asObservable();
9
+ this.connectionStatus = new BehaviorSubject(false);
10
+ this.connectionStatus$ = this.connectionStatus.asObservable();
11
+ }
12
+ connect(url, jwtToken) {
13
+ if (this.socket)
14
+ return;
15
+ const URL = (jwtToken) ? `${url}?token=${jwtToken}` : url;
16
+ this.socket = new WebSocket(URL);
17
+ this.socket.onopen = (data) => {
18
+ console.log(`📡 Connected to WebSocket`);
19
+ this.connectionStatus.next(true);
20
+ };
21
+ this.socket.onmessage = (event) => {
22
+ try {
23
+ const data = JSON.parse(event.data);
24
+ if (data.error && data.error === 'JWT_INVALID') {
25
+ console.error('JWT validation failed. Authentication error!');
26
+ this.connectionStatus.next(false);
27
+ this.socket?.close();
28
+ return;
29
+ }
30
+ this.messages.next(data);
31
+ }
32
+ catch (error) {
33
+ console.error('Error parsing WebSocket message:', event.data);
34
+ }
35
+ };
36
+ this.socket.onclose = () => {
37
+ console.log('WebSocket connection closed');
38
+ this.connectionStatus.next(false);
39
+ this.socket = null;
40
+ };
41
+ this.socket.onerror = (error) => {
42
+ console.error('WebSocket error:', error);
43
+ this.connectionStatus.next(false);
44
+ };
45
+ }
46
+ disconnect() {
47
+ if (this.socket) {
48
+ this.socket.close();
49
+ this.socket = null;
50
+ }
51
+ }
52
+ subscribeToChannel(channel) {
53
+ if (this.socket?.readyState === WebSocket.OPEN) {
54
+ this.socket.send(JSON.stringify({ type: 'subscribe', subscribedChannel: channel }));
55
+ console.log(`💬 Subscribed to channel: ${channel}`);
56
+ }
57
+ else {
58
+ console.error('WebSocket is not open. Cannot subscribe to channel.');
59
+ }
60
+ }
61
+ unsubscribeToChannel(channel) {
62
+ if (this.socket?.readyState === WebSocket.OPEN) {
63
+ this.socket.send(JSON.stringify({ type: 'unsubscribe', subscribedChannel: channel }));
64
+ console.log(`💬 Unsubscribed to channel: ${channel}`);
65
+ }
66
+ else {
67
+ console.error('WebSocket is not open. Cannot unsubscribed to channel.');
68
+ }
69
+ }
70
+ sendMessage(channel, content) {
71
+ if (this.socket?.readyState === WebSocket.OPEN) {
72
+ this.socket.send(JSON.stringify({ type: 'message', subscribedChannel: channel, content }));
73
+ console.log(`💬 Send message: ${content}`);
74
+ }
75
+ else {
76
+ console.error('WebSocket is not open. Cannot send message.');
77
+ }
78
+ }
79
+ sendBroadcast(content) {
80
+ if (this.socket?.readyState === WebSocket.OPEN) {
81
+ this.socket.send(JSON.stringify({ type: 'broadcast', content }));
82
+ console.log(`📢 Send broadcast: ${content}`);
83
+ }
84
+ else {
85
+ console.error('WebSocket is not open. Cannot send broadcast.');
86
+ }
87
+ }
88
+ getAllChannels() {
89
+ if (this.socket?.readyState === WebSocket.OPEN) {
90
+ this.socket.send(JSON.stringify({ type: 'getChannels' }));
91
+ console.log('🗂️ List of all channels');
92
+ }
93
+ else {
94
+ console.error('WebSocket is not open. Cannot request channels.');
95
+ }
96
+ }
97
+ createChannel(channel) {
98
+ if (this.socket?.readyState === WebSocket.OPEN) {
99
+ this.socket.send(JSON.stringify({ type: 'createChannel', content: channel }));
100
+ console.log('🗂️ Created channel:', channel);
101
+ }
102
+ else {
103
+ console.error('WebSocket is not open. Cannot request channels.');
104
+ }
105
+ }
106
+ deleteChannel(channel) {
107
+ if (this.socket?.readyState === WebSocket.OPEN) {
108
+ this.socket.send(JSON.stringify({ type: 'deleteChannel', content: channel }));
109
+ console.log('🗂️ Delete channel:', channel);
110
+ }
111
+ else {
112
+ console.error('WebSocket is not open. Cannot request channels.');
113
+ }
114
+ }
115
+ getUsersInChannel(channel) {
116
+ if (this.socket?.readyState === WebSocket.OPEN) {
117
+ this.socket.send(JSON.stringify({ type: 'getUsers', subscribedChannel: channel }));
118
+ console.log(`👥 List all users in channel: ${channel}`);
119
+ }
120
+ else {
121
+ console.error('WebSocket is not open. Cannot request users.');
122
+ }
123
+ }
124
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WebsocketService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
125
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WebsocketService, providedIn: 'root' }); }
126
+ }
127
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WebsocketService, decorators: [{
128
+ type: Injectable,
129
+ args: [{
130
+ providedIn: 'root',
131
+ }]
132
+ }] });
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3dzLW1hbmFnZXItc2VydmljZS93ZWJzb2NrZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7O0FBS25ELE1BQU0sT0FBTyxnQkFBZ0I7SUFIN0I7UUFLVSxXQUFNLEdBQXFCLElBQUksQ0FBQztRQUVoQyxhQUFRLEdBQUcsSUFBSSxlQUFlLENBQU0sSUFBSSxDQUFDLENBQUM7UUFDM0MsY0FBUyxHQUFvQixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXpELHFCQUFnQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3hELHNCQUFpQixHQUF3QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7S0E4SHRGO0lBNUhDLE9BQU8sQ0FBQyxHQUFXLEVBQUUsUUFBaUI7UUFFcEMsSUFBSSxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU87UUFFeEIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLFVBQVUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUUxRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWpDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDNUIsT0FBTyxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJ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QyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ25GLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUNBQWlDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDMUQsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLENBQUMsS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7UUFDaEUsQ0FBQztJQUNILENBQUM7K0dBcElVLGdCQUFnQjttSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7NEZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgV2Vic29ja2V0U2VydmljZSB7XG5cbiAgcHJpdmF0ZSBzb2NrZXQ6IFdlYlNvY2tldCB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgbWVzc2FnZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG4gIHB1YmxpYyBtZXNzYWdlcyQ6IE9ic2VydmFibGU8YW55PiA9IHRoaXMubWVzc2FnZXMuYXNPYnNlcnZhYmxlKCk7XG5cbiAgcHJpdmF0ZSBjb25uZWN0aW9uU3RhdHVzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyBjb25uZWN0aW9uU3RhdHVzJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuY29ubmVjdGlvblN0YXR1cy5hc09ic2VydmFibGUoKTtcblxuICBjb25uZWN0KHVybDogc3RyaW5nLCBqd3RUb2tlbj86IHN0cmluZykge1xuXG4gICAgaWYgKHRoaXMuc29ja2V0KSByZXR1cm47XG5cbiAgICBjb25zdCBVUkwgPSAoand0VG9rZW4pID8gYCR7dXJsfT90b2tlbj0ke2p3dFRva2VufWAgOiB1cmw7XG5cbiAgICB0aGlzLnNvY2tldCA9IG5ldyBXZWJTb2NrZXQoVVJMKTtcblxuICAgIHRoaXMuc29ja2V0Lm9ub3BlbiA9IChkYXRhKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhg8J+ToSBDb25uZWN0ZWQgdG8gV2ViU29ja2V0YCk7XG4gICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMubmV4dCh0cnVlKTtcbiAgICB9O1xuXG4gICAgdGhpcy5zb2NrZXQub25tZXNzYWdlID0gKGV2ZW50KSA9PiB7XG4gICAgICB0cnkge1xuXG4gICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGV2ZW50LmRhdGEpO1xuXG4gICAgICAgIGlmIChkYXRhLmVycm9yICYmIGRhdGEuZXJyb3IgPT09ICdKV1RfSU5WQUxJRCcpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdKV1QgdmFsaWRhdGlvbiBmYWlsZWQuIEF1dGhlbnRpY2F0aW9uIGVycm9yIScpO1xuICAgICAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cy5uZXh0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLnNvY2tldD8uY2xvc2UoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm1lc3NhZ2VzLm5leHQoZGF0YSk7XG5cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgV2ViU29ja2V0IG1lc3NhZ2U6JywgZXZlbnQuZGF0YSk7XG4gICAgICB9XG5cbiAgICB9O1xuXG4gICAgdGhpcy5zb2NrZXQub25jbG9zZSA9ICgpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdXZWJTb2NrZXQgY29ubmVjdGlvbiBjbG9zZWQnKTtcbiAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cy5uZXh0KGZhbHNlKTtcbiAgICAgIHRoaXMuc29ja2V0ID0gbnVsbDtcbiAgICB9O1xuXG4gICAgdGhpcy5zb2NrZXQub25lcnJvciA9IChlcnJvcikgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcignV2ViU29ja2V0IGVycm9yOicsIGVycm9yKTtcbiAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cy5uZXh0KGZhbHNlKTtcbiAgICB9O1xuICB9XG5cbiAgZGlzY29ubmVjdCgpIHtcbiAgICBpZiAodGhpcy5zb2NrZXQpIHtcbiAgICAgIHRoaXMuc29ja2V0LmNsb3NlKCk7XG4gICAgICB0aGlzLnNvY2tldCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgc3Vic2NyaWJlVG9DaGFubmVsKGNoYW5uZWw6IHN0cmluZykge1xuICAgIGlmICh0aGlzLnNvY2tldD8ucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU4pIHtcbiAgICAgIHRoaXMuc29ja2V0LnNlbmQoSlNPTi5zdHJpbmdpZnkoeyB0eXBlOiAnc3Vic2NyaWJlJywgc3Vic2NyaWJlZENoYW5uZWw6IGNoYW5uZWwgfSkpO1xuICAgICAgY29uc29sZS5sb2coYPCfkqwgU3Vic2NyaWJlZCB0byBjaGFubmVsOiAke2NoYW5uZWx9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1dlYlNvY2tldCBpcyBub3Qgb3Blbi4gQ2Fubm90IHN1YnNjcmliZSB0byBjaGFubmVsLicpO1xuICAgIH1cbiAgfVxuXG4gIHVuc3Vic2NyaWJlVG9DaGFubmVsKGNoYW5uZWw6IHN0cmluZykge1xuICAgIGlmICh0aGlzLnNvY2tldD8ucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU4pIHtcbiAgICAgIHRoaXMuc29ja2V0LnNlbmQoSlNPTi5zdHJpbmdpZnkoeyB0eXBlOiAndW5zdWJzY3JpYmUnLCBzdWJzY3JpYmVkQ2hhbm5lbDogY2hhbm5lbCB9KSk7XG4gICAgICBjb25zb2xlLmxvZyhg8J+SrCBVbnN1YnNjcmliZWQgdG8gY2hhbm5lbDogJHtjaGFubmVsfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdXZWJTb2NrZXQgaXMgbm90IG9wZW4uIENhbm5vdCB1bnN1YnNjcmliZWQgdG8gY2hhbm5lbC4nKTtcbiAgICB9XG4gIH1cblxuICBzZW5kTWVzc2FnZShjaGFubmVsOiBzdHJpbmcsIGNvbnRlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLnNvY2tldD8ucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU4pIHtcbiAgICAgIHRoaXMuc29ja2V0LnNlbmQoSlNPTi5zdHJpbmdpZnkoeyB0eXBlOiAnbWVzc2FnZScsIHN1YnNjcmliZWRDaGFubmVsOiBjaGFubmVsLCBjb250ZW50IH0pKTtcbiAgICAgICAgY29uc29sZS5sb2coYPCfkqwgU2VuZCBtZXNzYWdlOiAke2NvbnRlbnR9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1dlYlNvY2tldCBpcyBub3Qgb3Blbi4gQ2Fubm90IHNlbmQgbWVzc2FnZS4nKTtcbiAgICB9XG4gIH1cblxuICBzZW5kQnJvYWRjYXN0KGNvbnRlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLnNvY2tldD8ucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU4pIHtcbiAgICAgIHRoaXMuc29ja2V0LnNlbmQoSlNPTi5zdHJpbmdpZnkoeyB0eXBlOiAnYnJvYWRjYXN0JywgY29udGVudCB9KSk7XG4gICAgICBjb25zb2xlLmxvZyhg8J+ToiBTZW5kIGJyb2FkY2FzdDogJHtjb250ZW50fWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdXZWJTb2NrZXQgaXMgbm90IG9wZW4uIENhbm5vdCBzZW5kIGJyb2FkY2FzdC4nKTtcbiAgICB9XG4gIH1cblxuICBnZXRBbGxDaGFubmVscygpIHtcbiAgICBpZiAodGhpcy5zb2NrZXQ/LnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5PUEVOKSB7XG4gICAgICB0aGlzLnNvY2tldC5zZW5kKEpTT04uc3RyaW5naWZ5KHsgdHlwZTogJ2dldENoYW5uZWxzJyB9KSk7XG4gICAgICBjb25zb2xlLmxvZygn8J+Xgu+4jyBMaXN0IG9mIGFsbCBjaGFubmVscycpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdXZWJTb2NrZXQgaXMgbm90IG9wZW4uIENhbm5vdCByZXF1ZXN0IGNoYW5uZWxzLicpO1xuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZUNoYW5uZWwoY2hhbm5lbDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuc29ja2V0Py5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xuICAgICAgdGhpcy5zb2NrZXQuc2VuZChKU09OLnN0cmluZ2lmeSh7IHR5cGU6ICdjcmVhdGVDaGFubmVsJywgY29udGVudDogY2hhbm5lbCB9KSk7XG4gICAgICBjb25zb2xlLmxvZygn8J+Xgu+4jyBDcmVhdGVkIGNoYW5uZWw6JywgY2hhbm5lbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1dlYlNvY2tldCBpcyBub3Qgb3Blbi4gQ2Fubm90IHJlcXVlc3QgY2hhbm5lbHMuJyk7XG4gICAgfVxuICB9XG5cbiAgZGVsZXRlQ2hhbm5lbChjaGFubmVsOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5zb2NrZXQ/LnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5PUEVOKSB7XG4gICAgICB0aGlzLnNvY2tldC5zZW5kKEpTT04uc3RyaW5naWZ5KHsgdHlwZTogJ2RlbGV0ZUNoYW5uZWwnLCBjb250ZW50OiBjaGFubmVsIH0pKTtcbiAgICAgIGNvbnNvbGUubG9nKCfwn5eC77iPIERlbGV0ZSBjaGFubmVsOicsIGNoYW5uZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdXZWJTb2NrZXQgaXMgbm90IG9wZW4uIENhbm5vdCByZXF1ZXN0IGNoYW5uZWxzLicpO1xuICAgIH1cbiAgfVxuXG4gIGdldFVzZXJzSW5DaGFubmVsKGNoYW5uZWw6IHN0cmluZykge1xuICAgIGlmICh0aGlzLnNvY2tldD8ucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU4pIHtcbiAgICAgIHRoaXMuc29ja2V0LnNlbmQoSlNPTi5zdHJpbmdpZnkoeyB0eXBlOiAnZ2V0VXNlcnMnLCBzdWJzY3JpYmVkQ2hhbm5lbDogY2hhbm5lbCB9KSk7XG4gICAgICBjb25zb2xlLmxvZyhg8J+RpSBMaXN0IGFsbCB1c2VycyBpbiBjaGFubmVsOiAke2NoYW5uZWx9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1dlYlNvY2tldCBpcyBub3Qgb3Blbi4gQ2Fubm90IHJlcXVlc3QgdXNlcnMuJyk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==