http-request-manager 18.3.3 → 18.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/README.md +478 -255
  2. package/esm2022/lib/http-request-manager.module.mjs +20 -47
  3. package/esm2022/lib/http-request-services-demo/database-data-demo/database-data-demo.component.mjs +113 -32
  4. package/esm2022/lib/http-request-services-demo/http-request-services-demo.component.mjs +11 -8
  5. package/esm2022/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.mjs +3 -6
  6. package/esm2022/lib/http-request-services-demo/request-manager-ws-demo/models/oidc-client.model.mjs +13 -0
  7. package/esm2022/lib/http-request-services-demo/request-manager-ws-demo/models/user-data.model.mjs +13 -0
  8. package/esm2022/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.mjs +128 -0
  9. package/esm2022/lib/http-request-services-demo/request-manager-ws-demo/services/state-request.service.mjs +74 -0
  10. package/esm2022/lib/http-request-services-demo/store-state-manager-demo/services/settings-state.service.mjs +4 -1
  11. package/esm2022/lib/interceptors/index.mjs +2 -2
  12. package/esm2022/lib/interceptors/models/index.mjs +2 -0
  13. package/esm2022/lib/models/database-storage.model.mjs +1 -1
  14. package/esm2022/lib/models/index.mjs +2 -1
  15. package/esm2022/lib/services/database-manager-service/database.manager.service.mjs +171 -0
  16. package/esm2022/lib/services/database-manager-service/db.storage.service.mjs +183 -0
  17. package/esm2022/lib/services/database-manager-service/index.mjs +4 -0
  18. package/esm2022/lib/services/database-manager-service/models/index.mjs +2 -0
  19. package/esm2022/lib/services/database-manager-service/models/table-schema.mjs +19 -0
  20. package/esm2022/lib/services/index.mjs +3 -2
  21. package/esm2022/lib/services/local-storage-manager-service/index.mjs +2 -2
  22. package/esm2022/lib/services/local-storage-manager-service/local-storage-manager.service.mjs +7 -1
  23. package/esm2022/lib/services/local-storage-manager-service/models/storage-option.model.mjs +4 -3
  24. package/esm2022/lib/services/request-manager-services/index.mjs +3 -2
  25. package/esm2022/lib/services/request-manager-services/request.service.mjs +2 -2
  26. package/esm2022/lib/services/request-manager-state-service/http-manager-state.store.mjs +272 -84
  27. package/esm2022/lib/services/request-manager-state-service/models/index.mjs +2 -1
  28. package/esm2022/lib/services/request-manager-state-service/models/ws-options.model.mjs +6 -3
  29. package/esm2022/lib/services/request-manager-state-service/models/ws-user.model.mjs +10 -0
  30. package/esm2022/lib/services/store-state-manager-service/store-state-manager.service.mjs +4 -4
  31. package/esm2022/lib/services/utils/utils.service.mjs +14 -14
  32. package/esm2022/lib/services/ws-manager-service/index.mjs +2 -2
  33. package/esm2022/lib/services/ws-manager-service/models/channel-notification.model.mjs +5 -3
  34. package/esm2022/lib/services/ws-manager-service/models/communication-type.enum.mjs +7 -0
  35. package/esm2022/lib/services/ws-manager-service/models/index.mjs +2 -3
  36. package/esm2022/lib/services/ws-manager-service/models/user-message.model.mjs +1 -1
  37. package/esm2022/lib/services/ws-manager-service/services/websocket.service.mjs +178 -0
  38. package/fesm2022/http-request-manager.mjs +2344 -1758
  39. package/fesm2022/http-request-manager.mjs.map +1 -1
  40. package/http-request-manager-18.4.1.tgz +0 -0
  41. package/lib/http-request-manager.module.d.ts +25 -22
  42. package/lib/http-request-services-demo/database-data-demo/database-data-demo.component.d.ts +39 -12
  43. package/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.d.ts +0 -1
  44. package/lib/http-request-services-demo/request-manager-ws-demo/models/oidc-client.model.d.ts +16 -0
  45. package/lib/http-request-services-demo/request-manager-ws-demo/models/user-data.model.d.ts +14 -0
  46. package/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.d.ts +39 -0
  47. package/lib/http-request-services-demo/request-manager-ws-demo/services/state-request.service.d.ts +14 -0
  48. package/lib/http-request-services-demo/store-state-manager-demo/services/settings-state.service.d.ts +1 -0
  49. package/lib/interceptors/index.d.ts +1 -1
  50. package/lib/interceptors/models/index.d.ts +1 -0
  51. package/lib/models/index.d.ts +1 -0
  52. package/lib/services/{database-manager-services → database-manager-service}/database.manager.service.d.ts +9 -7
  53. package/lib/services/{database-manager-services → database-manager-service}/db.storage.service.d.ts +14 -14
  54. package/lib/services/{database-manager-services → database-manager-service}/index.d.ts +1 -1
  55. package/lib/services/database-manager-service/models/index.d.ts +1 -0
  56. package/lib/services/index.d.ts +2 -1
  57. package/lib/services/local-storage-manager-service/index.d.ts +1 -1
  58. package/lib/services/local-storage-manager-service/models/storage-option.model.d.ts +3 -1
  59. package/lib/services/request-manager-services/index.d.ts +2 -0
  60. package/lib/services/request-manager-services/request.service.d.ts +1 -1
  61. package/lib/services/request-manager-state-service/http-manager-state.store.d.ts +34 -19
  62. package/lib/services/request-manager-state-service/models/index.d.ts +1 -0
  63. package/lib/services/request-manager-state-service/models/ws-options.model.d.ts +9 -1
  64. package/lib/services/request-manager-state-service/models/ws-user.model.d.ts +10 -0
  65. package/lib/services/store-state-manager-service/store-state-manager.service.d.ts +3 -2
  66. package/lib/services/ws-manager-service/index.d.ts +1 -1
  67. package/lib/services/ws-manager-service/models/channel-notification.model.d.ts +4 -1
  68. package/lib/services/ws-manager-service/models/communication-type.enum.d.ts +5 -0
  69. package/lib/services/ws-manager-service/models/index.d.ts +1 -2
  70. package/lib/services/ws-manager-service/models/user-message.model.d.ts +5 -6
  71. package/lib/services/ws-manager-service/{websocket.service.d.ts → services/websocket.service.d.ts} +5 -2
  72. package/package.json +1 -1
  73. package/esm2022/lib/services/database-manager-services/database.manager.service.mjs +0 -119
  74. package/esm2022/lib/services/database-manager-services/db.storage.service.mjs +0 -143
  75. package/esm2022/lib/services/database-manager-services/index.mjs +0 -4
  76. package/esm2022/lib/services/database-manager-services/models/table-schema.mjs +0 -20
  77. package/esm2022/lib/services/ws-manager-service/models/user-info.model.mjs +0 -11
  78. package/esm2022/lib/services/ws-manager-service/models/user-name-info.model.mjs +0 -12
  79. package/esm2022/lib/services/ws-manager-service/websocket.service.mjs +0 -133
  80. package/http-request-manager-18.3.3.tgz +0 -0
  81. package/lib/services/ws-manager-service/models/user-info.model.d.ts +0 -11
  82. package/lib/services/ws-manager-service/models/user-name-info.model.d.ts +0 -14
  83. /package/lib/services/{database-manager-services → database-manager-service}/models/table-schema.d.ts +0 -0
@@ -1,4 +1,5 @@
1
1
  export * from "./api-request.model";
2
2
  export * from "./request-options.model";
3
3
  export * from "./ws-options.model";
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3JlcXVlc3QtbWFuYWdlci1zdGF0ZS1zZXJ2aWNlL21vZGVscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2FwaS1yZXF1ZXN0Lm1vZGVsXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yZXF1ZXN0LW9wdGlvbnMubW9kZWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3dzLW9wdGlvbnMubW9kZWxcIjtcblxuIl19
4
+ export * from "./ws-user.model";
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3JlcXVlc3QtbWFuYWdlci1zdGF0ZS1zZXJ2aWNlL21vZGVscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMseUJBQXlCLENBQUM7QUFFeEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vYXBpLXJlcXVlc3QubW9kZWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JlcXVlc3Qtb3B0aW9ucy5tb2RlbFwiO1xuXG5leHBvcnQgKiBmcm9tIFwiLi93cy1vcHRpb25zLm1vZGVsXCI7XG5leHBvcnQgKiBmcm9tIFwiLi93cy11c2VyLm1vZGVsXCI7XG5cbiJdfQ==
@@ -1,12 +1,15 @@
1
1
  export class WSOptions {
2
- constructor(id = '', wsServer = '', jwtToken = '', permissions) {
2
+ constructor(id = '', wsServer = '', jwtToken = '', permissions, channels, userAdapter, retry) {
3
3
  this.id = id;
4
4
  this.wsServer = wsServer;
5
5
  this.jwtToken = jwtToken;
6
6
  this.permissions = permissions;
7
+ this.channels = channels;
8
+ this.userAdapter = userAdapter;
9
+ this.retry = retry;
7
10
  }
8
11
  static adapt(item) {
9
- return new WSOptions(item?.id, item?.wsServer, item?.jwtToken, (item?.permissions) ? item.permissions.split(',').map((p) => p.trim()) : []);
12
+ return new WSOptions(item?.id, item?.wsServer, item?.jwtToken, (item?.permissions) ? item.permissions.split(',').map((p) => p.trim()) : [], item?.channels, item?.userAdapter, item?.retry);
10
13
  }
11
14
  }
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3Mtb3B0aW9ucy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2h0dHAtcmVxdWVzdC1tYW5hZ2VyL3NyYy9saWIvc2VydmljZXMvcmVxdWVzdC1tYW5hZ2VyLXN0YXRlLXNlcnZpY2UvbW9kZWxzL3dzLW9wdGlvbnMubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsTUFBTSxPQUFPLFNBQVM7SUFFcEIsWUFDUyxLQUFhLEVBQUUsRUFDZixXQUFtQixFQUFFLEVBQ3JCLFdBQW1CLEVBQUUsRUFDckIsV0FBc0I7UUFIdEIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDckIsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNyQixnQkFBVyxHQUFYLFdBQVcsQ0FBVztJQUM1QixDQUFDO0lBRUosTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFVO1FBRXJCLE9BQU8sSUFBSSxTQUFTLENBQ2xCLElBQUksRUFBRSxFQUFFLEVBQ1IsSUFBSSxFQUFFLFFBQVEsRUFDZCxJQUFJLEVBQUUsUUFBUSxFQUNkLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3BGLENBQUE7SUFFSCxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFdTT3B0aW9uc0ludGVyZmFjZSB7XG4gICAgaWQ6IHN0cmluZyxcbiAgICB3c1NlcnZlcjogc3RyaW5nLFxuICAgIGp3dFRva2VuOiBzdHJpbmcsXG4gICAgcGVybWlzc2lvbnM/OiBzdHJpbmdbXSxcbn1cblxuZXhwb3J0IGNsYXNzIFdTT3B0aW9ucyBpbXBsZW1lbnRzIFdTT3B0aW9uc0ludGVyZmFjZSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGlkOiBzdHJpbmcgPSAnJyxcbiAgICBwdWJsaWMgd3NTZXJ2ZXI6IHN0cmluZyA9ICcnLFxuICAgIHB1YmxpYyBqd3RUb2tlbjogc3RyaW5nID0gJycsXG4gICAgcHVibGljIHBlcm1pc3Npb25zPzogc3RyaW5nW10sXG4gICkge31cblxuICBzdGF0aWMgYWRhcHQoaXRlbT86IGFueSk6IFdTT3B0aW9ucyB7XG5cbiAgICByZXR1cm4gbmV3IFdTT3B0aW9ucyhcbiAgICAgIGl0ZW0/LmlkLFxuICAgICAgaXRlbT8ud3NTZXJ2ZXIsXG4gICAgICBpdGVtPy5qd3RUb2tlbixcbiAgICAgIChpdGVtPy5wZXJtaXNzaW9ucykgPyBpdGVtLnBlcm1pc3Npb25zLnNwbGl0KCcsJykubWFwKChwOiBzdHJpbmcpID0+IHAudHJpbSgpKSA6IFtdLFxuICAgIClcblxuICB9XG5cbn1cbiJdfQ==
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3Mtb3B0aW9ucy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2h0dHAtcmVxdWVzdC1tYW5hZ2VyL3NyYy9saWIvc2VydmljZXMvcmVxdWVzdC1tYW5hZ2VyLXN0YXRlLXNlcnZpY2UvbW9kZWxzL3dzLW9wdGlvbnMubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBYUEsTUFBTSxPQUFPLFNBQVM7SUFFcEIsWUFDUyxLQUFhLEVBQUUsRUFDZixXQUFtQixFQUFFLEVBQ3JCLFdBQW1CLEVBQUUsRUFDckIsV0FBc0IsRUFDdEIsUUFBbUIsRUFDbkIsV0FBb0IsRUFDcEIsS0FBb0I7UUFOcEIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDckIsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNyQixnQkFBVyxHQUFYLFdBQVcsQ0FBVztRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGdCQUFXLEdBQVgsV0FBVyxDQUFTO1FBQ3BCLFVBQUssR0FBTCxLQUFLLENBQWU7SUFDMUIsQ0FBQztJQUVKLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBVTtRQUVyQixPQUFPLElBQUksU0FBUyxDQUNsQixJQUFJLEVBQUUsRUFBRSxFQUNSLElBQUksRUFBRSxRQUFRLEVBQ2QsSUFBSSxFQUFFLFFBQVEsRUFDZCxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUNuRixJQUFJLEVBQUUsUUFBUSxFQUNkLElBQUksRUFBRSxXQUFXLEVBQ2pCLElBQUksRUFBRSxLQUFLLENBQ1osQ0FBQTtJQUVILENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJldHJ5T3B0aW9ucyB9IGZyb20gXCIuLi8uLi9yZXF1ZXN0LW1hbmFnZXItc2VydmljZXNcIlxuaW1wb3J0IHsgV1NVc2VyIH0gZnJvbSBcIi4vd3MtdXNlci5tb2RlbFwiXG5cbmV4cG9ydCBpbnRlcmZhY2UgV1NPcHRpb25zSW50ZXJmYWNlIHtcbiAgICBpZDogc3RyaW5nLFxuICAgIHdzU2VydmVyOiBzdHJpbmcsXG4gICAgand0VG9rZW46IHN0cmluZyxcbiAgICBwZXJtaXNzaW9ucz86IHN0cmluZ1tdLFxuICAgIGNoYW5uZWxzPzogc3RyaW5nW10sXG4gICAgdXNlckFkYXB0ZXI/OiBXU1VzZXIsXG4gICAgcmV0cnk/OiBSZXRyeU9wdGlvbnNcbn1cblxuZXhwb3J0IGNsYXNzIFdTT3B0aW9ucyBpbXBsZW1lbnRzIFdTT3B0aW9uc0ludGVyZmFjZSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGlkOiBzdHJpbmcgPSAnJyxcbiAgICBwdWJsaWMgd3NTZXJ2ZXI6IHN0cmluZyA9ICcnLFxuICAgIHB1YmxpYyBqd3RUb2tlbjogc3RyaW5nID0gJycsXG4gICAgcHVibGljIHBlcm1pc3Npb25zPzogc3RyaW5nW10sXG4gICAgcHVibGljIGNoYW5uZWxzPzogc3RyaW5nW10sXG4gICAgcHVibGljIHVzZXJBZGFwdGVyPzogV1NVc2VyLFxuICAgIHB1YmxpYyByZXRyeT86IFJldHJ5T3B0aW9uc1xuICApIHt9XG5cbiAgc3RhdGljIGFkYXB0KGl0ZW0/OiBhbnkpOiBXU09wdGlvbnMge1xuXG4gICAgcmV0dXJuIG5ldyBXU09wdGlvbnMoXG4gICAgICBpdGVtPy5pZCxcbiAgICAgIGl0ZW0/LndzU2VydmVyLFxuICAgICAgaXRlbT8uand0VG9rZW4sXG4gICAgICAoaXRlbT8ucGVybWlzc2lvbnMpID8gaXRlbS5wZXJtaXNzaW9ucy5zcGxpdCgnLCcpLm1hcCgocDogc3RyaW5nKSA9PiBwLnRyaW0oKSkgOiBbXSxcbiAgICAgIGl0ZW0/LmNoYW5uZWxzLFxuICAgICAgaXRlbT8udXNlckFkYXB0ZXIsXG4gICAgICBpdGVtPy5yZXRyeVxuICAgIClcblxuICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,10 @@
1
+ export class WSUser {
2
+ constructor(id = '', adapter) {
3
+ this.id = id;
4
+ this.adapter = adapter;
5
+ }
6
+ static adapt(item) {
7
+ return new WSUser(item?.id, item?.adapter);
8
+ }
9
+ }
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtdXNlci5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2h0dHAtcmVxdWVzdC1tYW5hZ2VyL3NyYy9saWIvc2VydmljZXMvcmVxdWVzdC1tYW5hZ2VyLXN0YXRlLXNlcnZpY2UvbW9kZWxzL3dzLXVzZXIubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsTUFBTSxPQUFPLE1BQU07SUFFakIsWUFDUyxLQUFhLEVBQUUsRUFDZixPQUFrQjtRQURsQixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2YsWUFBTyxHQUFQLE9BQU8sQ0FBVztJQUN4QixDQUFDO0lBRUosTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFVO1FBRXJCLE9BQU8sSUFBSSxNQUFNLENBQ2YsSUFBSSxFQUFFLEVBQUUsRUFDUixJQUFJLEVBQUUsT0FBTyxDQUNkLENBQUE7SUFFSCxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXRyeU9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vcmVxdWVzdC1tYW5hZ2VyLXNlcnZpY2VzXCJcblxuZXhwb3J0IGludGVyZmFjZSBXU1VzZXJJbnRlcmZhY2Uge1xuICBpZDogc3RyaW5nLFxuICBhZGFwdGVyPzogRnVuY3Rpb24sXG59XG5cbmV4cG9ydCBjbGFzcyBXU1VzZXIgaW1wbGVtZW50cyBXU1VzZXJJbnRlcmZhY2Uge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBpZDogc3RyaW5nID0gJycsXG4gICAgcHVibGljIGFkYXB0ZXI/OiBGdW5jdGlvbixcbiAgKSB7fVxuXG4gIHN0YXRpYyBhZGFwdChpdGVtPzogYW55KTogV1NVc2VyIHtcblxuICAgIHJldHVybiBuZXcgV1NVc2VyKFxuICAgICAgaXRlbT8uaWQsXG4gICAgICBpdGVtPy5hZGFwdGVyLFxuICAgIClcblxuICB9XG5cbn1cbiJdfQ==
@@ -1,8 +1,8 @@
1
+ import { LocalStorageManagerService } from './../local-storage-manager-service/local-storage-manager.service';
1
2
  import { inject, Injectable } from '@angular/core';
2
3
  import { ComponentStore } from '@ngrx/component-store';
3
- import { take } from 'rxjs';
4
- import { LocalStorageManagerService } from './../local-storage-manager-service/local-storage-manager.service';
5
4
  import { StateStorageOptions } from './models/state-storage-options.model';
5
+ import { Subscription, take } from 'rxjs';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "./models/state-storage-options.model";
8
8
  export class StoreStateManagerService extends ComponentStore {
@@ -10,6 +10,7 @@ export class StoreStateManagerService extends ComponentStore {
10
10
  super(StoreStateManagerService.init(options));
11
11
  this.options = options;
12
12
  this.localStorageManagerService = inject(LocalStorageManagerService);
13
+ this.subscriptions = new Subscription;
13
14
  this.settings = null;
14
15
  this.isRestoring = false;
15
16
  // Selectors
@@ -41,7 +42,6 @@ export class StoreStateManagerService extends ComponentStore {
41
42
  options: this.settings?.options,
42
43
  });
43
44
  this.localStorageManagerService.store$(this.settings?.store)
44
- .pipe(take(1))
45
45
  .subscribe(data => this.setState(data));
46
46
  }
47
47
  restoreState() {
@@ -68,4 +68,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
68
68
  providedIn: 'root'
69
69
  }]
70
70
  }], ctorParameters: () => [{ type: i1.StateStorageOptions }] });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUtc3RhdGUtbWFuYWdlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9zZXJ2aWNlcy9zdG9yZS1zdGF0ZS1tYW5hZ2VyLXNlcnZpY2Uvc3RvcmUtc3RhdGUtbWFuYWdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQWdCLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUM5RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7O0FBTzNFLE1BQU0sT0FBTyx3QkFBd0UsU0FBUSxjQUFpQjtJQVE1RyxZQUNVLFVBQStCLG1CQUFtQixDQUFDLEtBQUssRUFBRTtRQUVsRSxLQUFLLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7UUFGckMsWUFBTyxHQUFQLE9BQU8sQ0FBbUQ7UUFQcEUsK0JBQTBCLEdBQUcsTUFBTSxDQUFDLDBCQUEwQixDQUFDLENBQUE7UUFFL0QsYUFBUSxHQUFRLElBQUksQ0FBQTtRQUVaLGdCQUFXLEdBQUcsS0FBSyxDQUFBO1FBaUQzQixZQUFZO1FBQ0gsVUFBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUMxQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUNqQyxPQUFPLENBQUMsT0FBTyxLQUFLLEtBQUssVUFBVSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQTtRQUNqRixDQUFDLENBQUMsQ0FBQztRQUVILFdBQVc7UUFDRixlQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFTLEVBQUUsRUFBRTtZQUV0RCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ2hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBRS9DLElBQUksQ0FBQyxNQUFNO2dCQUFFLE9BQU8sS0FBSyxDQUFBO1lBQ3pCLE1BQU0sUUFBUSxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQTtZQUMvQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1lBQzFCLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLFFBQVEsRUFBRSxDQUFBO1FBRWxDLENBQUMsQ0FBQyxDQUFBO1FBNURBLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDcEIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBNEI7UUFDOUMsTUFBTSxLQUFLLEdBQUcsT0FBTyxFQUFFLEtBQUssQ0FBQTtRQUM1QixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFFLEtBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQzlDLENBQUM7SUFFRCxJQUFJLENBQUMsT0FBNkI7UUFFaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUE7UUFFdkIsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFdBQVcsQ0FBQztZQUMxQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLO1lBQzFCLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRTtZQUM1QixPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPO1NBQ2hDLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUM7YUFDM0QsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNiLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUV6QyxDQUFDO0lBRUQsWUFBWTtRQUVWLE9BQU8sSUFBSSxDQUFDLDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQzthQUNsRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2IsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDdkIsQ0FBQyxDQUFDLENBQUE7SUFFSixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVU7UUFDcEIsSUFBRyxJQUFJLENBQUMsV0FBVztZQUFFLE9BQU07UUFDM0IsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFdBQVcsQ0FBQztZQUMxQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLO1lBQzFCLElBQUksRUFBRSxLQUFLO1NBQ1osQ0FBQyxDQUFBO0lBRUosQ0FBQzsrR0FyRFUsd0JBQXdCO21IQUF4Qix3QkFBd0IsY0FGdkIsTUFBTTs7NEZBRVAsd0JBQXdCO2tCQUhwQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50U3RvcmUgfSBmcm9tICdAbmdyeC9jb21wb25lbnQtc3RvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCB0YWtlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IExvY2FsU3RvcmFnZU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi8uLi9sb2NhbC1zdG9yYWdlLW1hbmFnZXItc2VydmljZS9sb2NhbC1zdG9yYWdlLW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTdGF0ZVN0b3JhZ2VPcHRpb25zIH0gZnJvbSAnLi9tb2RlbHMvc3RhdGUtc3RvcmFnZS1vcHRpb25zLm1vZGVsJztcblxuZXhwb3J0IGludGVyZmFjZSBTdGF0ZVN0b3JlTWFuYWdlckRhdGE8VD4ge31cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU3RvcmVTdGF0ZU1hbmFnZXJTZXJ2aWNlPFQgZXh0ZW5kcyBvYmplY3QgPSBTdGF0ZVN0b3JlTWFuYWdlckRhdGE8YW55Pj4gZXh0ZW5kcyBDb21wb25lbnRTdG9yZTxUPiB7XG5cbiAgbG9jYWxTdG9yYWdlTWFuYWdlclNlcnZpY2UgPSBpbmplY3QoTG9jYWxTdG9yYWdlTWFuYWdlclNlcnZpY2UpXG5cbiAgc2V0dGluZ3M6IGFueSA9IG51bGxcblxuICBwcml2YXRlIGlzUmVzdG9yaW5nID0gZmFsc2VcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG9wdGlvbnM6IFN0YXRlU3RvcmFnZU9wdGlvbnMgPSBTdGF0ZVN0b3JhZ2VPcHRpb25zLmFkYXB0KClcbiAgKSB7XG4gICAgc3VwZXIoU3RvcmVTdGF0ZU1hbmFnZXJTZXJ2aWNlLmluaXQob3B0aW9ucykpXG4gICAgdGhpcy5pbml0KG9wdGlvbnMpXG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBpbml0KG9wdGlvbnM6IFN0YXRlU3RvcmFnZU9wdGlvbnMpOiBhbnkge1xuICAgIGNvbnN0IG1vZGVsID0gb3B0aW9ucz8ubW9kZWxcbiAgICByZXR1cm4gKG1vZGVsKSA/IChtb2RlbCBhcyAoKSA9PiBhbnkpKCkgOiB7fVxuICB9XG5cbiAgaW5pdChvcHRpb25zPzogU3RhdGVTdG9yYWdlT3B0aW9ucykge1xuXG4gICAgdGhpcy5zZXR0aW5ncyA9IG9wdGlvbnNcblxuICAgIHRoaXMubG9jYWxTdG9yYWdlTWFuYWdlclNlcnZpY2UuY3JlYXRlU3RvcmUoe1xuICAgICAgbmFtZTogdGhpcy5zZXR0aW5ncz8uc3RvcmUsXG4gICAgICBkYXRhOiB0aGlzLnNldHRpbmdzPy5tb2RlbCgpLFxuICAgICAgb3B0aW9uczogdGhpcy5zZXR0aW5ncz8ub3B0aW9ucyxcbiAgICB9KVxuXG4gICAgdGhpcy5sb2NhbFN0b3JhZ2VNYW5hZ2VyU2VydmljZS5zdG9yZSQodGhpcy5zZXR0aW5ncz8uc3RvcmUpXG4gICAgLnBpcGUodGFrZSgxKSlcbiAgICAuc3Vic2NyaWJlKGRhdGEgPT4gdGhpcy5zZXRTdGF0ZShkYXRhKSlcblxuICB9XG5cbiAgcmVzdG9yZVN0YXRlKCk6IFN1YnNjcmlwdGlvbiB7XG5cbiAgICByZXR1cm4gdGhpcy5sb2NhbFN0b3JhZ2VNYW5hZ2VyU2VydmljZS5zdG9yZSQodGhpcy5zZXR0aW5ncz8uc3RvcmUpXG4gICAgLnBpcGUodGFrZSgxKSlcbiAgICAuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgdGhpcy51cGRhdGVEYXRhKGRhdGEpXG4gICAgfSlcblxuICB9XG5cbiAgdXBkYXRlU3RhdGUoc3RhdGU6IGFueSkge1xuICAgIGlmKHRoaXMuaXNSZXN0b3JpbmcpIHJldHVyblxuICAgIHRoaXMubG9jYWxTdG9yYWdlTWFuYWdlclNlcnZpY2UudXBkYXRlU3RvcmUoe1xuICAgICAgbmFtZTogdGhpcy5zZXR0aW5ncz8uc3RvcmUsXG4gICAgICBkYXRhOiBzdGF0ZVxuICAgIH0pXG5cbiAgfVxuXG4gIC8vIFNlbGVjdG9yc1xuICByZWFkb25seSBkYXRhJCA9IHRoaXMuc2VsZWN0KChzdGF0ZTogYW55KSA9PiB7XG4gICAgY29uc3QgbW9kZWwgPSB0aGlzLm9wdGlvbnMubW9kZWw7XG4gICAgcmV0dXJuICh0eXBlb2YgbW9kZWwgPT09ICdmdW5jdGlvbicgJiYgIW1vZGVsLnByb3RvdHlwZSkgPyBtb2RlbChzdGF0ZSkgOiBzdGF0ZVxuICB9KTtcblxuICAvLyBVcGRhdGVyc1xuICByZWFkb25seSB1cGRhdGVEYXRhID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgZGF0YTogYW55KSA9PiB7XG5cbiAgICBjb25zdCBrZXkgPSBPYmplY3Qua2V5cyhkYXRhKVswXVxuICAgIGNvbnN0IGhhc0tleSA9IE9iamVjdC5rZXlzKHN0YXRlKS5pbmNsdWRlcyhrZXkpXG5cbiAgICBpZiAoIWhhc0tleSkgcmV0dXJuIHN0YXRlXG4gICAgY29uc3QgbmV3U3RhdGUgPSB7IC4uLnN0YXRlLCBba2V5XTogZGF0YVtrZXldIH1cbiAgICB0aGlzLnVwZGF0ZVN0YXRlKG5ld1N0YXRlKVxuICAgIHJldHVybiB7IC4uLnN0YXRlLCAuLi5uZXdTdGF0ZSB9XG5cbiAgfSlcblxufVxuIl19
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUtc3RhdGUtbWFuYWdlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9zZXJ2aWNlcy9zdG9yZS1zdGF0ZS1tYW5hZ2VyLXNlcnZpY2Uvc3RvcmUtc3RhdGUtbWFuYWdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBQzlHLE9BQU8sRUFBa0IsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFVLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQU9sRCxNQUFNLE9BQU8sd0JBQXdFLFNBQVEsY0FBaUI7SUFTNUcsWUFDVSxVQUErQixtQkFBbUIsQ0FBQyxLQUFLLEVBQUU7UUFFbEUsS0FBSyxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO1FBRnJDLFlBQU8sR0FBUCxPQUFPLENBQW1EO1FBUnBFLCtCQUEwQixHQUFHLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFBO1FBRS9ELGtCQUFhLEdBQUcsSUFBSSxZQUFZLENBQUE7UUFDaEMsYUFBUSxHQUFRLElBQUksQ0FBQTtRQUVaLGdCQUFXLEdBQUcsS0FBSyxDQUFBO1FBa0QzQixZQUFZO1FBQ0gsVUFBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUMxQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUNqQyxPQUFPLENBQUMsT0FBTyxLQUFLLEtBQUssVUFBVSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQTtRQUNqRixDQUFDLENBQUMsQ0FBQztRQUVILFdBQVc7UUFDRixlQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFTLEVBQUUsRUFBRTtZQUV0RCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ2hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBRS9DLElBQUksQ0FBQyxNQUFNO2dCQUFFLE9BQU8sS0FBSyxDQUFBO1lBQ3pCLE1BQU0sUUFBUSxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQTtZQUMvQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1lBQzFCLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLFFBQVEsRUFBRSxDQUFBO1FBRWxDLENBQUMsQ0FBQyxDQUFBO1FBN0RBLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDcEIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBNEI7UUFFOUMsTUFBTSxLQUFLLEdBQUcsT0FBTyxFQUFFLEtBQUssQ0FBQTtRQUM1QixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFFLEtBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBRTlDLENBQUM7SUFFRCxJQUFJLENBQUMsT0FBNkI7UUFFaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUE7UUFFdkIsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFdBQVcsQ0FBQztZQUMxQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLO1lBQzFCLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRTtZQUM1QixPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPO1NBQ2hDLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUM7YUFDM0QsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBRXpDLENBQUM7SUFFRCxZQUFZO1FBRVYsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDO2FBQ2xFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDYixTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN2QixDQUFDLENBQUMsQ0FBQTtJQUVKLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBVTtRQUNwQixJQUFHLElBQUksQ0FBQyxXQUFXO1lBQUUsT0FBTTtRQUMzQixJQUFJLENBQUMsMEJBQTBCLENBQUMsV0FBVyxDQUFDO1lBQzFDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUs7WUFDMUIsSUFBSSxFQUFFLEtBQUs7U0FDWixDQUFDLENBQUE7SUFFSixDQUFDOytHQXZEVSx3QkFBd0I7bUhBQXhCLHdCQUF3QixjQUZ2QixNQUFNOzs0RkFFUCx3QkFBd0I7a0JBSHBDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYWxTdG9yYWdlTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLy4uL2xvY2FsLXN0b3JhZ2UtbWFuYWdlci1zZXJ2aWNlL2xvY2FsLXN0b3JhZ2UtbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uUmVmLCBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudFN0b3JlIH0gZnJvbSAnQG5ncngvY29tcG9uZW50LXN0b3JlJztcbmltcG9ydCB7IFN0YXRlU3RvcmFnZU9wdGlvbnMgfSBmcm9tICcuL21vZGVscy9zdGF0ZS1zdG9yYWdlLW9wdGlvbnMubW9kZWwnO1xuaW1wb3J0IHsgZmlsdGVyLCBTdWJzY3JpcHRpb24sIHRha2UgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGludGVyZmFjZSBTdGF0ZVN0b3JlTWFuYWdlckRhdGE8VD4ge31cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU3RvcmVTdGF0ZU1hbmFnZXJTZXJ2aWNlPFQgZXh0ZW5kcyBvYmplY3QgPSBTdGF0ZVN0b3JlTWFuYWdlckRhdGE8YW55Pj4gZXh0ZW5kcyBDb21wb25lbnRTdG9yZTxUPiB7XG5cbiAgbG9jYWxTdG9yYWdlTWFuYWdlclNlcnZpY2UgPSBpbmplY3QoTG9jYWxTdG9yYWdlTWFuYWdlclNlcnZpY2UpXG5cbiAgc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb25cbiAgc2V0dGluZ3M6IGFueSA9IG51bGxcblxuICBwcml2YXRlIGlzUmVzdG9yaW5nID0gZmFsc2VcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG9wdGlvbnM6IFN0YXRlU3RvcmFnZU9wdGlvbnMgPSBTdGF0ZVN0b3JhZ2VPcHRpb25zLmFkYXB0KClcbiAgKSB7XG4gICAgc3VwZXIoU3RvcmVTdGF0ZU1hbmFnZXJTZXJ2aWNlLmluaXQob3B0aW9ucykpXG4gICAgdGhpcy5pbml0KG9wdGlvbnMpXG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBpbml0KG9wdGlvbnM6IFN0YXRlU3RvcmFnZU9wdGlvbnMpOiBhbnkge1xuXG4gICAgY29uc3QgbW9kZWwgPSBvcHRpb25zPy5tb2RlbFxuICAgIHJldHVybiAobW9kZWwpID8gKG1vZGVsIGFzICgpID0+IGFueSkoKSA6IHt9XG5cbiAgfVxuXG4gIGluaXQob3B0aW9ucz86IFN0YXRlU3RvcmFnZU9wdGlvbnMpIHtcblxuICAgIHRoaXMuc2V0dGluZ3MgPSBvcHRpb25zXG5cbiAgICB0aGlzLmxvY2FsU3RvcmFnZU1hbmFnZXJTZXJ2aWNlLmNyZWF0ZVN0b3JlKHtcbiAgICAgIG5hbWU6IHRoaXMuc2V0dGluZ3M/LnN0b3JlLFxuICAgICAgZGF0YTogdGhpcy5zZXR0aW5ncz8ubW9kZWwoKSxcbiAgICAgIG9wdGlvbnM6IHRoaXMuc2V0dGluZ3M/Lm9wdGlvbnMsXG4gICAgfSlcblxuICAgIHRoaXMubG9jYWxTdG9yYWdlTWFuYWdlclNlcnZpY2Uuc3RvcmUkKHRoaXMuc2V0dGluZ3M/LnN0b3JlKVxuICAgIC5zdWJzY3JpYmUoZGF0YSA9PiB0aGlzLnNldFN0YXRlKGRhdGEpKVxuXG4gIH1cblxuICByZXN0b3JlU3RhdGUoKTogU3Vic2NyaXB0aW9uIHtcblxuICAgIHJldHVybiB0aGlzLmxvY2FsU3RvcmFnZU1hbmFnZXJTZXJ2aWNlLnN0b3JlJCh0aGlzLnNldHRpbmdzPy5zdG9yZSlcbiAgICAucGlwZSh0YWtlKDEpKVxuICAgIC5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZURhdGEoZGF0YSlcbiAgICB9KVxuXG4gIH1cblxuICB1cGRhdGVTdGF0ZShzdGF0ZTogYW55KSB7XG4gICAgaWYodGhpcy5pc1Jlc3RvcmluZykgcmV0dXJuXG4gICAgdGhpcy5sb2NhbFN0b3JhZ2VNYW5hZ2VyU2VydmljZS51cGRhdGVTdG9yZSh7XG4gICAgICBuYW1lOiB0aGlzLnNldHRpbmdzPy5zdG9yZSxcbiAgICAgIGRhdGE6IHN0YXRlXG4gICAgfSlcblxuICB9XG5cbiAgLy8gU2VsZWN0b3JzXG4gIHJlYWRvbmx5IGRhdGEkID0gdGhpcy5zZWxlY3QoKHN0YXRlOiBhbnkpID0+IHtcbiAgICBjb25zdCBtb2RlbCA9IHRoaXMub3B0aW9ucy5tb2RlbDtcbiAgICByZXR1cm4gKHR5cGVvZiBtb2RlbCA9PT0gJ2Z1bmN0aW9uJyAmJiAhbW9kZWwucHJvdG90eXBlKSA/IG1vZGVsKHN0YXRlKSA6IHN0YXRlXG4gIH0pO1xuXG4gIC8vIFVwZGF0ZXJzXG4gIHJlYWRvbmx5IHVwZGF0ZURhdGEgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBkYXRhOiBhbnkpID0+IHtcblxuICAgIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKGRhdGEpWzBdXG4gICAgY29uc3QgaGFzS2V5ID0gT2JqZWN0LmtleXMoc3RhdGUpLmluY2x1ZGVzKGtleSlcblxuICAgIGlmICghaGFzS2V5KSByZXR1cm4gc3RhdGVcbiAgICBjb25zdCBuZXdTdGF0ZSA9IHsgLi4uc3RhdGUsIFtrZXldOiBkYXRhW2tleV0gfVxuICAgIHRoaXMudXBkYXRlU3RhdGUobmV3U3RhdGUpXG4gICAgcmV0dXJuIHsgLi4uc3RhdGUsIC4uLm5ld1N0YXRlIH1cblxuICB9KVxuXG59XG4iXX0=
@@ -71,7 +71,7 @@ export class UtilsService {
71
71
  // returns epoch time corresponding to the expiry type
72
72
  expires(str) {
73
73
  if (!str)
74
- return;
74
+ return undefined;
75
75
  const match = str.match(/[^0-9]+$/);
76
76
  const type = (match) ? str.slice(-match[0].length) : 0;
77
77
  const now = Math.floor(new Date().getTime() / 1000);
@@ -103,7 +103,7 @@ export class UtilsService {
103
103
  break;
104
104
  default: //seconds
105
105
  const sec = parseInt(str.slice(0, -1));
106
- value = now + (sec);
106
+ value = now + sec;
107
107
  break;
108
108
  }
109
109
  return value;
@@ -125,20 +125,20 @@ export class UtilsService {
125
125
  if (diff <= 0)
126
126
  return "Expired";
127
127
  const units = [
128
- { label: 'y', seconds: 31536000 },
129
- { label: 'm', seconds: 2592000 },
130
- { label: 'w', seconds: 604800 },
131
- { label: 'd', seconds: 86400 },
132
- { label: 'h', seconds: 3600 },
133
- { label: 'min', seconds: 60 },
134
- { label: '', seconds: 1 },
128
+ { label: 'y', s: 31536000 },
129
+ { label: 'm', s: 2592000 },
130
+ { label: 'w', s: 604800 },
131
+ { label: 'd', s: 86400 },
132
+ { label: 'h', s: 3600 },
133
+ { label: 'min', s: 60 },
134
+ { label: 's', s: 1 },
135
135
  ];
136
136
  let result = [];
137
137
  for (const unit of units) {
138
- if (diff >= unit.seconds) {
139
- const value = Math.floor(diff / unit.seconds);
140
- diff %= unit.seconds;
141
- result.push(`${value}${unit.label}${value > 1 ? 's' : ''}`);
138
+ if (diff >= unit.s) {
139
+ const value = Math.floor(diff / unit.s);
140
+ diff %= unit.s;
141
+ result.push(`${value}${unit.label}`);
142
142
  }
143
143
  }
144
144
  return result.join(', ');
@@ -152,4 +152,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
152
152
  providedIn: 'root'
153
153
  }]
154
154
  }], ctorParameters: () => [] });
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2h0dHAtcmVxdWVzdC1tYW5hZ2VyL3NyYy9saWIvc2VydmljZXMvdXRpbHMvdXRpbHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBS25ELE1BQU0sT0FBTyxZQUFZO0lBSXZCO1FBRkEsU0FBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQW9MekIsT0FBRSxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFBO0lBbExwRSxDQUFDO0lBRWpCLFFBQVEsQ0FBQyxDQUFrQjtRQUN6QixPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxpQkFBaUIsQ0FBQTtJQUNoRSxDQUFDO0lBRUQsUUFBUSxDQUFDLEdBQVE7UUFDZixPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxpQkFBaUIsQ0FBQTtJQUNsRSxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVU7UUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFBO0lBQy9ELENBQUM7SUFFRCxZQUFZLENBQUMsS0FBYTtRQUN4QixPQUFPLENBQUMsSUFB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LCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVXRpbHNTZXJ2aWNlIHtcblxuICBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpXG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBpc1N0cmluZyh4OiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHgpID09PSAnW29iamVjdCBTdHJpbmddJ1xuICB9XG5cbiAgaXNPYmplY3Qob2JqOiBhbnkpIHtcbiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0IE9iamVjdF0nXG4gIH1cblxuICBKU09OVG9TdHJpbmcodmFsdWU6IGFueSkge1xuICAgIHJldHVybiAodGhpcy5pc09iamVjdCh2YWx1ZSkpID8gSlNPTi5zdHJpbmdpZnkodmFsdWUpIDogdmFsdWVcbiAgfVxuXG4gIHN0cmluZ1RvSlNPTih2YWx1ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuICh0aGlzLmlzSlNPTih2YWx1ZSkpID8gSlNPTi5wYXJzZSh2YWx1ZSkgOiB2YWx1ZVxuICB9XG5cbiAgaXNKU09OKHN0cjogYW55KSB7XG4gICAgdHJ5IHtcbiAgICAgIEpTT04ucGFyc2Uoc3RyKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgZ2V0VmFsdWVCeVByb3Aob2JqOiBhbnksIHByb3A6IHN0cmluZykge1xuICAgIGlmKHR5cGVvZiBvYmogPT09ICd1bmRlZmluZWQnKSByZXR1cm4gZmFsc2VcbiAgICByZXR1cm4gb2JqW3Byb3BdXG4gIH1cblxuICBvYmplY3RzRXF1YWwoeDogYW55LCB5OiBhbnkpOiBib29sZWFuIHtcblxuICAgIGNvbnN0IG9rID0gT2JqZWN0LmtleXMsIHR4ID0gdHlwZW9mIHgsIHR5ID0gdHlwZW9mIHlcblxuICAgIHJldHVybiB4ICYmIHkgJiYgdHggPT09ICdvYmplY3QnICYmIHR4ID09PSB0eSA/IChcbiAgICAgIG9rKHgpLmxlbmd0aCA9PT0gb2soeSkubGVuZ3RoICYmXG4gICAgICAgIG9rKHgpLmV2ZXJ5KChrZXk6IGFueSkgPT4gdGhpcy5vYmplY3RzRXF1YWwoeFtrZXldLCB5W2tleV0pKVxuICAgICkgOiAoeCA9PT0geSlcblxuICB9XG5cbiAgZ2V0SlNPTihmaWxlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgYXNzZXRzL2RhdGEvJHtmaWxlfWApXG4gIH1cblxuICBnZXQgdG9kYXkoKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKCkuZ2V0TWlsbGlzZWNvbmRzKCkgLyAxMDAwXG4gIH1cblxuICBiYXNlMzJUb0hleChiYXNlMzI6IHN0cmluZyk6IHN0cmluZyB7XG5cbiAgICBjb25zdCBiYXNlMzJjaGFycyA9IFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoyMzQ1NjdcIlxuXG4gICAgY29uc3QgY2hhclRvVmFsdWUgPSAoY2hhcjogc3RyaW5nKSA9PiBiYXNlMzJjaGFycy5pbmRleE9mKGNoYXIudG9VcHBlckNhc2UoKSlcblxuICAgIGxldCBiaXRzID0gJydcbiAgICBsZXQgaGV4ID0gJydcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYmFzZTMyLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCB2YWwgPSBjaGFyVG9WYWx1ZShiYXNlMzIuY2hhckF0KGkpKVxuICAgICAgYml0cyArPSB2YWwudG9TdHJpbmcoMikucGFkU3RhcnQoNSwgJzAnKVxuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpICsgNCA8PSBiaXRzLmxlbmd0aDsgaSArPSA0KSB7XG4gICAgICBjb25zdCBjaHVuayA9IGJpdHMuc3Vic3RyKGksIDQpXG4gICAgICBoZXggKz0gcGFyc2VJbnQoY2h1bmssIDIpLnRvU3RyaW5nKDE2KVxuICAgIH1cblxuICAgIHJldHVybiBoZXgudG9VcHBlckNhc2UoKVxuICB9XG5cbiAgYmluYXJ5VG9IZXgoYmluYXJ5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCBoZXggPSAnJztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJpbmFyeS5sZW5ndGg7IGkgKz0gOCkge1xuICAgICAgY29uc3QgYnl0ZSA9IGJpbmFyeS5zdWJzdHIoaSwgOCk7XG4gICAgICBjb25zdCBkZWNpbWFsID0gcGFyc2VJbnQoYnl0ZSwgMik7XG4gICAgICBoZXggKz0gZGVjaW1hbC50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKTtcbiAgICB9XG4gICAgcmV0dXJuIGhleC5wYWRTdGFydCgzMiwgJzAnKS5zdWJzdHIoMCwgMzIpO1xuICB9XG5cbiAgLy8geSA9IHllYXJzLCBtID0gbW9udGhzLCB3ID0gd2Vla3MsIGQgPSBkYXlzLCBociA9IGhvdXJzLCBtbiA9IG1pbnV0ZXMgZWxzZSBzZWNvbmRzXG4gIC8vIHJldHVybnMgZXBvY2ggdGltZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBleHBpcnkgdHlwZVxuICBleHBpcmVzKHN0cj86IHN0cmluZykge1xuXG4gICAgaWYoIXN0cikgcmV0dXJuXG5cbiAgICBjb25zdCBtYXRjaCA9IHN0ci5tYXRjaCgvW14wLTldKyQvKVxuXG4gICAgY29uc3QgdHlwZSA9IChtYXRjaCkgPyBzdHIuc2xpY2UoLW1hdGNoWzBdLmxlbmd0aCkgOiAwXG5cbiAgICBjb25zdCBub3cgPSBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMClcblxuICAgIGxldCB2YWx1ZSA9IDA7XG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2VcbiAgICAgICd5JzpcbiAgICAgICAgY29uc3QgeWVhcnMgPSBwYXJzZUludChzdHIuc2xpY2UoMCwgLTEpKVxuICAgICAgICB2YWx1ZSA9IG5vdyArICh5ZWFycyAqIDMxNTU2OTI2KVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2VcbiAgICAgICdtJzpcbiAgICAgICAgY29uc3QgbW9udGhzID0gcGFyc2VJbnQoc3RyLnNsaWNlKDAsIC0xKSlcbiAgICAgICAgdmFsdWUgPSBub3cgKyAobW9udGhzICogMjYyOTc0MylcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlXG4gICAgICAndyc6XG4gICAgICAgIGNvbnN0IHdlZWtzID0gcGFyc2VJbnQoc3RyLnNsaWNlKDAsIC0xKSlcbiAgICAgICAgdmFsdWUgPSBub3cgKyAod2Vla3MgKiA2MDQ4MDApXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZVxuICAgICAgJ2QnOlxuICAgICAgICBjb25zdCBkYXlzID0gcGFyc2VJbnQoc3RyLnNsaWNlKDAsIC0xKSlcbiAgICAgICAgdmFsdWUgPSBub3cgKyAoZGF5cyAqIDg2NDAwKVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2VcbiAgICAgICdocic6XG4gICAgICAgIGNvbnN0IGhycyA9IHBhcnNlSW50KHN0ci5zbGljZSgwLCAtMikpXG4gICAgICAgIHZhbHVlID0gbm93ICsgKGhycyAqIDM2MDApXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZVxuICAgICAgJ21uJzpcbiAgICAgICAgY29uc3QgbWluID0gcGFyc2VJbnQoc3RyLnNsaWNlKDAsIC0yKSlcbiAgICAgICAgdmFsdWUgPSBub3cgKyAobWluICogNjApXG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDogLy9zZWNvbmRzXG4gICAgICAgIGNvbnN0IHNlYyA9IHBhcnNlSW50KHN0ci5zbGljZSgwLCAtMSkpXG4gICAgICAgIHZhbHVlID0gbm93ICsgKHNlYylcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIGhhc0V4cGlyZWQoZXhwaXJ5RGF0ZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgaWYgKCFleHBpcnlEYXRlIHx8IGV4cGlyeURhdGUgPT09IDApIHJldHVybiBmYWxzZVxuICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApXG4gICAgcmV0dXJuIGV4cGlyeURhdGUgPCBjdXJyZW50VGltZVxuICB9XG5cbiAgaGFzRXhwaXJ5KHNldHRpbmc6IGFueSkge1xuICAgIHJldHVybiAoc2V0dGluZz8uZXhwaXJlcykgPyB0cnVlIDogZmFsc2VcbiAgfVxuXG4gIGV4cGlyZXNJbihleHBpcnlEYXRlOiBudW1iZXIpIHtcblxuICAgIGlmICghZXhwaXJ5RGF0ZSkgcmV0dXJuO1xuXG4gICAgY29uc3Qgbm93ID0gTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApO1xuICAgIGxldCBkaWZmID0gZXhwaXJ5RGF0ZSAtIG5vdztcblxuICAgIGlmIChkaWZmIDw9IDApIHJldHVybiBcIkV4cGlyZWRcIjtcblxuICAgIGNvbnN0IHVuaXRzID0gW1xuICAgICAgICB7IGxhYmVsOiAneScsIHNlY29uZHM6IDMxNTM2MDAwIH0sXG4gICAgICAgIHsgbGFiZWw6ICdtJywgc2Vjb25kczogMjU5MjAwMCB9LFxuICAgICAgICB7IGxhYmVsOiAndycsIHNlY29uZHM6IDYwNDgwMCB9LFxuICAgICAgICB7IGxhYmVsOiAnZCcsIHNlY29uZHM6IDg2NDAwIH0sXG4gICAgICAgIHsgbGFiZWw6ICdoJywgc2Vjb25kczogMzYwMCB9LFxuICAgICAgICB7IGxhYmVsOiAnbWluJywgc2Vjb25kczogNjAgfSxcbiAgICAgICAgeyBsYWJlbDogJycsIHNlY29uZHM6IDEgfSxcbiAgICBdO1xuXG4gICAgbGV0IHJlc3VsdCA9IFtdO1xuXG4gICAgZm9yIChjb25zdCB1bml0IG9mIHVuaXRzKSB7XG4gICAgICAgIGlmIChkaWZmID49IHVuaXQuc2Vjb25kcykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBNYXRoLmZsb29yKGRpZmYgLyB1bml0LnNlY29uZHMpO1xuICAgICAgICAgICAgZGlmZiAlPSB1bml0LnNlY29uZHM7XG4gICAgICAgICAgICByZXN1bHQucHVzaChgJHt2YWx1ZX0ke3VuaXQubGFiZWx9JHt2YWx1ZSA+IDEgPyAncycgOiAnJ31gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQuam9pbignLCAnKTtcbiAgfVxuXG4gIGxjID0gKHN0cjogc3RyaW5nKSA9PiBzdHIudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bXlxcd1xcc10vZywgJycpLnJlcGxhY2UoL1xccysvZywgJ18nKVxuXG59XG4iXX0=
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2h0dHAtcmVxdWVzdC1tYW5hZ2VyL3NyYy9saWIvc2VydmljZXMvdXRpbHMvdXRpbHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBS25ELE1BQU0sT0FBTyxZQUFZO0lBSXZCO1FBRkEsU0FBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQW9MekIsT0FBRSxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFBO0lBbExwRSxDQUFDO0lBRWpCLFFBQVEsQ0FBQyxDQUFrQjtRQUN6QixPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxpQkFBaUIsQ0FBQTtJQUNoRSxDQUFDO0lBRUQsUUFBUSxDQUFDLEdBQVE7UUFDZixPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxpQkFBaUIsQ0FBQTtJQUNsRSxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVU7UUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFBO0lBQy9ELENBQUM7SUFFRCxZQUFZLENBQUMsS0FBYTtRQUN4QixPQUFPLENBQUMsSUFB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b21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVXRpbHNTZXJ2aWNlIHtcblxuICBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpXG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBpc1N0cmluZyh4OiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHgpID09PSAnW29iamVjdCBTdHJpbmddJ1xuICB9XG5cbiAgaXNPYmplY3Qob2JqOiBhbnkpIHtcbiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0IE9iamVjdF0nXG4gIH1cblxuICBKU09OVG9TdHJpbmcodmFsdWU6IGFueSkge1xuICAgIHJldHVybiAodGhpcy5pc09iamVjdCh2YWx1ZSkpID8gSlNPTi5zdHJpbmdpZnkodmFsdWUpIDogdmFsdWVcbiAgfVxuXG4gIHN0cmluZ1RvSlNPTih2YWx1ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuICh0aGlzLmlzSlNPTih2YWx1ZSkpID8gSlNPTi5wYXJzZSh2YWx1ZSkgOiB2YWx1ZVxuICB9XG5cbiAgaXNKU09OKHN0cjogYW55KSB7XG4gICAgdHJ5IHtcbiAgICAgIEpTT04ucGFyc2Uoc3RyKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgZ2V0VmFsdWVCeVByb3Aob2JqOiBhbnksIHByb3A6IHN0cmluZykge1xuICAgIGlmKHR5cGVvZiBvYmogPT09ICd1bmRlZmluZWQnKSByZXR1cm4gZmFsc2VcbiAgICByZXR1cm4gb2JqW3Byb3BdXG4gIH1cblxuICBvYmplY3RzRXF1YWwoeDogYW55LCB5OiBhbnkpOiBib29sZWFuIHtcblxuICAgIGNvbnN0IG9rID0gT2JqZWN0LmtleXMsIHR4ID0gdHlwZW9mIHgsIHR5ID0gdHlwZW9mIHlcblxuICAgIHJldHVybiB4ICYmIHkgJiYgdHggPT09ICdvYmplY3QnICYmIHR4ID09PSB0eSA/IChcbiAgICAgIG9rKHgpLmxlbmd0aCA9PT0gb2soeSkubGVuZ3RoICYmXG4gICAgICAgIG9rKHgpLmV2ZXJ5KChrZXk6IGFueSkgPT4gdGhpcy5vYmplY3RzRXF1YWwoeFtrZXldLCB5W2tleV0pKVxuICAgICkgOiAoeCA9PT0geSlcblxuICB9XG5cbiAgZ2V0SlNPTihmaWxlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgYXNzZXRzL2RhdGEvJHtmaWxlfWApXG4gIH1cblxuICBnZXQgdG9kYXkoKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKCkuZ2V0TWlsbGlzZWNvbmRzKCkgLyAxMDAwXG4gIH1cblxuICBiYXNlMzJUb0hleChiYXNlMzI6IHN0cmluZyk6IHN0cmluZyB7XG5cbiAgICBjb25zdCBiYXNlMzJjaGFycyA9IFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoyMzQ1NjdcIlxuXG4gICAgY29uc3QgY2hhclRvVmFsdWUgPSAoY2hhcjogc3RyaW5nKSA9PiBiYXNlMzJjaGFycy5pbmRleE9mKGNoYXIudG9VcHBlckNhc2UoKSlcblxuICAgIGxldCBiaXRzID0gJydcbiAgICBsZXQgaGV4ID0gJydcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYmFzZTMyLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCB2YWwgPSBjaGFyVG9WYWx1ZShiYXNlMzIuY2hhckF0KGkpKVxuICAgICAgYml0cyArPSB2YWwudG9TdHJpbmcoMikucGFkU3RhcnQoNSwgJzAnKVxuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpICsgNCA8PSBiaXRzLmxlbmd0aDsgaSArPSA0KSB7XG4gICAgICBjb25zdCBjaHVuayA9IGJpdHMuc3Vic3RyKGksIDQpXG4gICAgICBoZXggKz0gcGFyc2VJbnQoY2h1bmssIDIpLnRvU3RyaW5nKDE2KVxuICAgIH1cblxuICAgIHJldHVybiBoZXgudG9VcHBlckNhc2UoKVxuICB9XG5cbiAgYmluYXJ5VG9IZXgoYmluYXJ5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCBoZXggPSAnJztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJpbmFyeS5sZW5ndGg7IGkgKz0gOCkge1xuICAgICAgY29uc3QgYnl0ZSA9IGJpbmFyeS5zdWJzdHIoaSwgOCk7XG4gICAgICBjb25zdCBkZWNpbWFsID0gcGFyc2VJbnQoYnl0ZSwgMik7XG4gICAgICBoZXggKz0gZGVjaW1hbC50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKTtcbiAgICB9XG4gICAgcmV0dXJuIGhleC5wYWRTdGFydCgzMiwgJzAnKS5zdWJzdHIoMCwgMzIpO1xuICB9XG5cbiAgLy8geSA9IHllYXJzLCBtID0gbW9udGhzLCB3ID0gd2Vla3MsIGQgPSBkYXlzLCBociA9IGhvdXJzLCBtbiA9IG1pbnV0ZXMgZWxzZSBzZWNvbmRzXG4gIC8vIHJldHVybnMgZXBvY2ggdGltZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBleHBpcnkgdHlwZVxuICBleHBpcmVzKHN0cj86IHN0cmluZykge1xuXG4gICAgaWYoIXN0cikgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgY29uc3QgbWF0Y2ggPSBzdHIubWF0Y2goL1teMC05XSskLylcblxuICAgIGNvbnN0IHR5cGUgPSAobWF0Y2gpID8gc3RyLnNsaWNlKC1tYXRjaFswXS5sZW5ndGgpIDogMFxuXG4gICAgY29uc3Qgbm93ID0gTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApXG5cbiAgICBsZXQgdmFsdWUgPSAwO1xuXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlXG4gICAgICAneSc6XG4gICAgICAgIGNvbnN0IHllYXJzID0gcGFyc2VJbnQoc3RyLnNsaWNlKDAsIC0xKSlcbiAgICAgICAgdmFsdWUgPSBub3cgKyAoeWVhcnMgKiAzMTU1NjkyNilcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlXG4gICAgICAnbSc6XG4gICAgICAgIGNvbnN0IG1vbnRocyA9IHBhcnNlSW50KHN0ci5zbGljZSgwLCAtMSkpXG4gICAgICAgIHZhbHVlID0gbm93ICsgKG1vbnRocyAqIDI2Mjk3NDMpXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZVxuICAgICAgJ3cnOlxuICAgICAgICBjb25zdCB3ZWVrcyA9IHBhcnNlSW50KHN0ci5zbGljZSgwLCAtMSkpXG4gICAgICAgIHZhbHVlID0gbm93ICsgKHdlZWtzICogNjA0ODAwKVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2VcbiAgICAgICdkJzpcbiAgICAgICAgY29uc3QgZGF5cyA9IHBhcnNlSW50KHN0ci5zbGljZSgwLCAtMSkpXG4gICAgICAgIHZhbHVlID0gbm93ICsgKGRheXMgKiA4NjQwMClcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlXG4gICAgICAnaHInOlxuICAgICAgICBjb25zdCBocnMgPSBwYXJzZUludChzdHIuc2xpY2UoMCwgLTIpKVxuICAgICAgICB2YWx1ZSA9IG5vdyArIChocnMgKiAzNjAwKVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2VcbiAgICAgICdtbic6XG4gICAgICAgIGNvbnN0IG1pbiA9IHBhcnNlSW50KHN0ci5zbGljZSgwLCAtMikpXG4gICAgICAgIHZhbHVlID0gbm93ICsgKG1pbiAqIDYwKVxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6IC8vc2Vjb25kc1xuICAgICAgICBjb25zdCBzZWMgPSBwYXJzZUludChzdHIuc2xpY2UoMCwgLTEpKVxuICAgICAgICB2YWx1ZSA9IG5vdyArIHNlY1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgaGFzRXhwaXJlZChleHBpcnlEYXRlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAoIWV4cGlyeURhdGUgfHwgZXhwaXJ5RGF0ZSA9PT0gMCkgcmV0dXJuIGZhbHNlXG4gICAgY29uc3QgY3VycmVudFRpbWUgPSBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMClcbiAgICByZXR1cm4gZXhwaXJ5RGF0ZSA8IGN1cnJlbnRUaW1lXG4gIH1cblxuICBoYXNFeHBpcnkoc2V0dGluZzogYW55KSB7XG4gICAgcmV0dXJuIChzZXR0aW5nPy5leHBpcmVzKSA/IHRydWUgOiBmYWxzZVxuICB9XG5cbiAgZXhwaXJlc0luKGV4cGlyeURhdGU6IG51bWJlcikge1xuXG4gICAgaWYgKCFleHBpcnlEYXRlKSByZXR1cm47XG5cbiAgICBjb25zdCBub3cgPSBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCk7XG4gICAgbGV0IGRpZmYgPSBleHBpcnlEYXRlIC0gbm93O1xuXG4gICAgaWYgKGRpZmYgPD0gMCkgcmV0dXJuIFwiRXhwaXJlZFwiO1xuXG4gICAgY29uc3QgdW5pdHMgPSBbXG4gICAgICAgIHsgbGFiZWw6ICd5JywgczogMzE1MzYwMDAgfSxcbiAgICAgICAgeyBsYWJlbDogJ20nLCBzOiAyNTkyMDAwIH0sXG4gICAgICAgIHsgbGFiZWw6ICd3JywgczogNjA0ODAwIH0sXG4gICAgICAgIHsgbGFiZWw6ICdkJywgczogODY0MDAgfSxcbiAgICAgICAgeyBsYWJlbDogJ2gnLCBzOiAzNjAwIH0sXG4gICAgICAgIHsgbGFiZWw6ICdtaW4nLCBzOiA2MCB9LFxuICAgICAgICB7IGxhYmVsOiAncycsIHM6IDEgfSxcbiAgICBdO1xuXG4gICAgbGV0IHJlc3VsdCA9IFtdO1xuXG4gICAgZm9yIChjb25zdCB1bml0IG9mIHVuaXRzKSB7XG4gICAgICAgIGlmIChkaWZmID49IHVuaXQucykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBNYXRoLmZsb29yKGRpZmYgLyB1bml0LnMpO1xuICAgICAgICAgICAgZGlmZiAlPSB1bml0LnM7XG4gICAgICAgICAgICByZXN1bHQucHVzaChgJHt2YWx1ZX0ke3VuaXQubGFiZWx9YCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0LmpvaW4oJywgJyk7XG4gIH1cblxuICBsYyA9IChzdHI6IHN0cmluZykgPT4gc3RyLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvW15cXHdcXHNdL2csICcnKS5yZXBsYWNlKC9cXHMrL2csICdfJylcblxufVxuIl19
@@ -1,3 +1,3 @@
1
1
  export * from "./models/index";
2
- export * from "./websocket.service";
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3dzLW1hbmFnZXItc2VydmljZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmV4cG9ydCAqIGZyb20gXCIuL21vZGVscy9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vd2Vic29ja2V0LnNlcnZpY2VcIjtcblxuIl19
2
+ export * from "./services/websocket.service";
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3dzLW1hbmFnZXItc2VydmljZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsOEJBQThCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmV4cG9ydCAqIGZyb20gXCIuL21vZGVscy9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc2VydmljZXMvd2Vic29ja2V0LnNlcnZpY2VcIjtcblxuIl19
@@ -1,12 +1,14 @@
1
+ import { CommunicationType } from "./communication-type.enum";
1
2
  export class ChannelMessage {
2
- constructor(fromUser = null, toUser = null, content = null, issued = new Date()) {
3
+ constructor(fromUser = null, toUser = null, content = null, issued = new Date(), type = CommunicationType.MESSAGE) {
3
4
  this.fromUser = fromUser;
4
5
  this.toUser = toUser;
5
6
  this.content = content;
6
7
  this.issued = issued;
8
+ this.type = type;
7
9
  }
8
10
  static adapt(item) {
9
- return new ChannelMessage(item?.fromUser, item?.toUser, item?.content, item?.issued);
11
+ return new ChannelMessage(item?.fromUser, item?.toUser, item?.content, item?.issued, item?.type);
10
12
  }
11
13
  }
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbC1ub3RpZmljYXRpb24ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3dzLW1hbmFnZXItc2VydmljZS9tb2RlbHMvY2hhbm5lbC1ub3RpZmljYXRpb24ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsTUFBTSxPQUFPLGNBQWM7SUFFekIsWUFDUyxXQUF3QixJQUFJLEVBQzVCLFNBQXNCLElBQUksRUFDMUIsVUFBdUIsSUFBSSxFQUMzQixTQUFTLElBQUksSUFBSSxFQUFFO1FBSG5CLGFBQVEsR0FBUixRQUFRLENBQW9CO1FBQzVCLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBQzFCLFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBQzNCLFdBQU0sR0FBTixNQUFNLENBQWE7SUFDekIsQ0FBQztJQUVKLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBVTtRQUVyQixPQUFPLElBQUksY0FBYyxDQUN2QixJQUFJLEVBQUUsUUFBUSxFQUNkLElBQUksRUFBRSxNQUFNLEVBQ1osSUFBSSxFQUFFLE9BQU8sRUFDYixJQUFJLEVBQUUsTUFBTSxDQUNiLENBQUE7SUFFSCxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIENoYW5uZWxNZXNzYWdlSW50ZXJmYWNlIHtcbiAgZnJvbVVzZXI6IHN0cmluZ3xudWxsXG4gIHRvVXNlcjogc3RyaW5nfG51bGxcbiAgY29udGVudDogc3RyaW5nfG51bGxcbiAgaXNzdWVkOiBEYXRlXG59XG5cbmV4cG9ydCBjbGFzcyBDaGFubmVsTWVzc2FnZSBpbXBsZW1lbnRzIENoYW5uZWxNZXNzYWdlSW50ZXJmYWNlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZnJvbVVzZXI6IHN0cmluZ3xudWxsID0gbnVsbCxcbiAgICBwdWJsaWMgdG9Vc2VyOiBzdHJpbmd8bnVsbCA9IG51bGwsXG4gICAgcHVibGljIGNvbnRlbnQ6IHN0cmluZ3xudWxsID0gbnVsbCxcbiAgICBwdWJsaWMgaXNzdWVkID0gbmV3IERhdGUoKSxcbiAgKSB7fVxuXG4gIHN0YXRpYyBhZGFwdChpdGVtPzogYW55KTogQ2hhbm5lbE1lc3NhZ2Uge1xuXG4gICAgcmV0dXJuIG5ldyBDaGFubmVsTWVzc2FnZShcbiAgICAgIGl0ZW0/LmZyb21Vc2VyLFxuICAgICAgaXRlbT8udG9Vc2VyLFxuICAgICAgaXRlbT8uY29udGVudCxcbiAgICAgIGl0ZW0/Lmlzc3VlZCxcbiAgICApXG5cbiAgfVxuXG59XG5cblxuIl19
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbC1ub3RpZmljYXRpb24ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3dzLW1hbmFnZXItc2VydmljZS9tb2RlbHMvY2hhbm5lbC1ub3RpZmljYXRpb24ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFVN0QsTUFBTSxPQUFPLGNBQWM7SUFFekIsWUFDUyxXQUF3QixJQUFJLEVBQzVCLFNBQXNCLElBQUksRUFDMUIsVUFBdUIsSUFBSSxFQUMzQixTQUFTLElBQUksSUFBSSxFQUFFLEVBQ25CLE9BQU8saUJBQWlCLENBQUMsT0FBTztRQUpoQyxhQUFRLEdBQVIsUUFBUSxDQUFvQjtRQUM1QixXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQUMxQixZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUMzQixXQUFNLEdBQU4sTUFBTSxDQUFhO1FBQ25CLFNBQUksR0FBSixJQUFJLENBQTRCO0lBQ3RDLENBQUM7SUFFSixNQUFNLENBQUMsS0FBSyxDQUFDLElBQVU7UUFFckIsT0FBTyxJQUFJLGNBQWMsQ0FDdkIsSUFBSSxFQUFFLFFBQVEsRUFDZCxJQUFJLEVBQUUsTUFBTSxFQUNaLElBQUksRUFBRSxPQUFPLEVBQ2IsSUFBSSxFQUFFLE1BQU0sRUFDWixJQUFJLEVBQUUsSUFBSSxDQUNYLENBQUE7SUFFSCxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tdW5pY2F0aW9uVHlwZSB9IGZyb20gXCIuL2NvbW11bmljYXRpb24tdHlwZS5lbnVtXCJcblxuZXhwb3J0IGludGVyZmFjZSBDaGFubmVsTWVzc2FnZUludGVyZmFjZSB7XG4gIGZyb21Vc2VyOiBzdHJpbmd8bnVsbFxuICB0b1VzZXI6IHN0cmluZ3xudWxsXG4gIGNvbnRlbnQ6IHN0cmluZ3xudWxsXG4gIGlzc3VlZDogRGF0ZVxuICB0eXBlOiBDb21tdW5pY2F0aW9uVHlwZVxufVxuXG5leHBvcnQgY2xhc3MgQ2hhbm5lbE1lc3NhZ2UgaW1wbGVtZW50cyBDaGFubmVsTWVzc2FnZUludGVyZmFjZSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGZyb21Vc2VyOiBzdHJpbmd8bnVsbCA9IG51bGwsXG4gICAgcHVibGljIHRvVXNlcjogc3RyaW5nfG51bGwgPSBudWxsLFxuICAgIHB1YmxpYyBjb250ZW50OiBzdHJpbmd8bnVsbCA9IG51bGwsXG4gICAgcHVibGljIGlzc3VlZCA9IG5ldyBEYXRlKCksXG4gICAgcHVibGljIHR5cGUgPSBDb21tdW5pY2F0aW9uVHlwZS5NRVNTQUdFLFxuICApIHt9XG5cbiAgc3RhdGljIGFkYXB0KGl0ZW0/OiBhbnkpOiBDaGFubmVsTWVzc2FnZSB7XG5cbiAgICByZXR1cm4gbmV3IENoYW5uZWxNZXNzYWdlKFxuICAgICAgaXRlbT8uZnJvbVVzZXIsXG4gICAgICBpdGVtPy50b1VzZXIsXG4gICAgICBpdGVtPy5jb250ZW50LFxuICAgICAgaXRlbT8uaXNzdWVkLFxuICAgICAgaXRlbT8udHlwZSxcbiAgICApXG5cbiAgfVxuXG59XG5cblxuIl19
@@ -0,0 +1,7 @@
1
+ export var CommunicationType;
2
+ (function (CommunicationType) {
3
+ CommunicationType[CommunicationType["MESSAGE"] = 0] = "MESSAGE";
4
+ CommunicationType[CommunicationType["ALERT"] = 1] = "ALERT";
5
+ CommunicationType[CommunicationType["OTHER"] = 2] = "OTHER";
6
+ })(CommunicationType || (CommunicationType = {}));
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbXVuaWNhdGlvbi10eXBlLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3dzLW1hbmFnZXItc2VydmljZS9tb2RlbHMvY29tbXVuaWNhdGlvbi10eXBlLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksaUJBSVg7QUFKRCxXQUFZLGlCQUFpQjtJQUMzQiwrREFBTyxDQUFBO0lBQ1AsMkRBQUssQ0FBQTtJQUNMLDJEQUFLLENBQUE7QUFDUCxDQUFDLEVBSlcsaUJBQWlCLEtBQWpCLGlCQUFpQixRQUk1QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIENvbW11bmljYXRpb25UeXBlIHtcbiAgTUVTU0FHRSxcbiAgQUxFUlQsXG4gIE9USEVSXG59XG4iXX0=
@@ -1,6 +1,5 @@
1
1
  export * from "./channel-info.model";
2
2
  export * from "./channel-notification.model";
3
- export * from "./user-info.model";
4
- export * from "./user-name-info.model";
5
3
  export * from "./user-message.model";
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3dzLW1hbmFnZXItc2VydmljZS9tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vY2hhbm5lbC1pbmZvLm1vZGVsXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jaGFubmVsLW5vdGlmaWNhdGlvbi5tb2RlbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXNlci1pbmZvLm1vZGVsXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91c2VyLW5hbWUtaW5mby5tb2RlbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXNlci1tZXNzYWdlLm1vZGVsXCI7XG5cbiJdfQ==
4
+ export * from "./communication-type.enum";
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3dzLW1hbmFnZXItc2VydmljZS9tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsc0JBQXNCLENBQUM7QUFFckMsY0FBYywyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2NoYW5uZWwtaW5mby5tb2RlbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY2hhbm5lbC1ub3RpZmljYXRpb24ubW9kZWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZXItbWVzc2FnZS5tb2RlbFwiO1xuXG5leHBvcnQgKiBmcm9tIFwiLi9jb21tdW5pY2F0aW9uLXR5cGUuZW51bVwiO1xuXG4iXX0=
@@ -9,4 +9,4 @@ export class UserMessage {
9
9
  return new UserMessage(item?.fromUser, item?.name?.toUser, item?.content, item?.name?.issued);
10
10
  }
11
11
  }
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1tZXNzYWdlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9zZXJ2aWNlcy93cy1tYW5hZ2VyLXNlcnZpY2UvbW9kZWxzL3VzZXItbWVzc2FnZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSxNQUFNLE9BQU8sV0FBVztJQUV0QixZQUNTLFFBQWtCLEVBQ2xCLE1BQWlCLEVBQ2pCLE9BQWdCLEVBQ2hCLE1BQWE7UUFIYixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixXQUFNLEdBQU4sTUFBTSxDQUFPO0lBQ25CLENBQUM7SUFFSixNQUFNLENBQUMsS0FBSyxDQUFDLElBQVU7UUFFckIsT0FBTyxJQUFJLFdBQVcsQ0FDcEIsSUFBSSxFQUFFLFFBQVEsRUFDZCxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFDbEIsSUFBSSxFQUFFLE9BQU8sRUFDYixJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FDbkIsQ0FBQTtJQUVILENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVzZXJJbmZvIH0gZnJvbSBcIi4uXCJcblxuZXhwb3J0IGludGVyZmFjZSBVc2VyTWVzc2FnZUludGVyZmFjZSB7XG4gICAgZnJvbVVzZXI6IFVzZXJJbmZvLFxuICAgIHRvVXNlcj86IFVzZXJJbmZvLFxuICAgIGNvbnRlbnQ/OiBzdHJpbmcsXG4gICAgaXNzdWVkPzogRGF0ZSxcbn1cblxuZXhwb3J0IGNsYXNzIFVzZXJNZXNzYWdlIGltcGxlbWVudHMgVXNlck1lc3NhZ2VJbnRlcmZhY2Uge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBmcm9tVXNlcjogVXNlckluZm8sXG4gICAgcHVibGljIHRvVXNlcj86IFVzZXJJbmZvLFxuICAgIHB1YmxpYyBjb250ZW50Pzogc3RyaW5nLFxuICAgIHB1YmxpYyBpc3N1ZWQ/OiBEYXRlLFxuICApIHt9XG5cbiAgc3RhdGljIGFkYXB0KGl0ZW0/OiBhbnkpOiBVc2VyTWVzc2FnZSB7XG5cbiAgICByZXR1cm4gbmV3IFVzZXJNZXNzYWdlKFxuICAgICAgaXRlbT8uZnJvbVVzZXIsXG4gICAgICBpdGVtPy5uYW1lPy50b1VzZXIsXG4gICAgICBpdGVtPy5jb250ZW50LFxuICAgICAgaXRlbT8ubmFtZT8uaXNzdWVkLFxuICAgIClcblxuICB9XG5cbn1cblxuXG4iXX0=
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1tZXNzYWdlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9zZXJ2aWNlcy93cy1tYW5hZ2VyLXNlcnZpY2UvbW9kZWxzL3VzZXItbWVzc2FnZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxNQUFNLE9BQU8sV0FBVztJQUV0QixZQUNTLFFBQWEsRUFDYixNQUFZLEVBQ1osT0FBZ0IsRUFDaEIsTUFBYTtRQUhiLGFBQVEsR0FBUixRQUFRLENBQUs7UUFDYixXQUFNLEdBQU4sTUFBTSxDQUFNO1FBQ1osWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixXQUFNLEdBQU4sTUFBTSxDQUFPO0lBQ25CLENBQUM7SUFFSixNQUFNLENBQUMsS0FBSyxDQUFDLElBQVU7UUFFckIsT0FBTyxJQUFJLFdBQVcsQ0FDcEIsSUFBSSxFQUFFLFFBQVEsRUFDZCxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFDbEIsSUFBSSxFQUFFLE9BQU8sRUFDYixJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FDbkIsQ0FBQTtJQUVILENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgVXNlck1lc3NhZ2VJbnRlcmZhY2Uge1xuICAgIGZyb21Vc2VyOiBhbnksXG4gICAgdG9Vc2VyPzogYW55LFxuICAgIGNvbnRlbnQ/OiBzdHJpbmcsXG4gICAgaXNzdWVkPzogRGF0ZSxcbn1cblxuZXhwb3J0IGNsYXNzIFVzZXJNZXNzYWdlIGltcGxlbWVudHMgVXNlck1lc3NhZ2VJbnRlcmZhY2Uge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBmcm9tVXNlcjogYW55LFxuICAgIHB1YmxpYyB0b1VzZXI/OiBhbnksXG4gICAgcHVibGljIGNvbnRlbnQ/OiBzdHJpbmcsXG4gICAgcHVibGljIGlzc3VlZD86IERhdGUsXG4gICkge31cblxuICBzdGF0aWMgYWRhcHQoaXRlbT86IGFueSk6IFVzZXJNZXNzYWdlIHtcblxuICAgIHJldHVybiBuZXcgVXNlck1lc3NhZ2UoXG4gICAgICBpdGVtPy5mcm9tVXNlcixcbiAgICAgIGl0ZW0/Lm5hbWU/LnRvVXNlcixcbiAgICAgIGl0ZW0/LmNvbnRlbnQsXG4gICAgICBpdGVtPy5uYW1lPy5pc3N1ZWQsXG4gICAgKVxuXG4gIH1cblxufVxuXG5cbiJdfQ==
@@ -0,0 +1,178 @@
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
+ this.isSubscribed = false;
12
+ }
13
+ sendSubscribe(channelName) {
14
+ if (this.socket?.readyState === WebSocket.OPEN && !this.isSubscribed) {
15
+ const message = {
16
+ type: 'subscribe',
17
+ subscribedChannel: channelName,
18
+ content: {}
19
+ };
20
+ this.socket.send(JSON.stringify(message));
21
+ this.isSubscribed = true; // Set the flag immediately after sending
22
+ console.log(`[CLIENT] Sent initial subscription to: ${channelName}`);
23
+ }
24
+ else {
25
+ console.warn(`[CLIENT] Subscription prevented. Open: ${this.socket?.readyState === WebSocket.OPEN}, Subscribed: ${this.isSubscribed}`);
26
+ }
27
+ }
28
+ connect(url, jwtToken) {
29
+ if (this.socket) {
30
+ if (this.socket.readyState === WebSocket.OPEN) {
31
+ console.log('WebSocket connection is already OPEN.');
32
+ return;
33
+ }
34
+ if (this.socket.readyState === WebSocket.CONNECTING) {
35
+ console.log('WebSocket is already CONNECTING. Waiting for handshake.');
36
+ return;
37
+ }
38
+ if (this.socket.readyState === WebSocket.CLOSING || this.socket.readyState === WebSocket.CLOSED) {
39
+ console.log(`Cleaning up stale socket (State: ${this.socket.readyState}).`);
40
+ this.socket.close();
41
+ this.socket = null;
42
+ }
43
+ }
44
+ this.isSubscribed = false;
45
+ const URL = (jwtToken) ? `${url}?token=${jwtToken}` : url;
46
+ this.socket = new WebSocket(URL);
47
+ this.socket.onopen = (data) => {
48
+ console.log(`📡 Connected to WebSocket`);
49
+ this.connectionStatus.next(true);
50
+ this.sendSubscribe('WS-MY_DATA');
51
+ };
52
+ this.socket.onmessage = (event) => {
53
+ try {
54
+ const data = JSON.parse(event.data);
55
+ if (data.error && data.error === 'JWT_INVALID') {
56
+ console.error('JWT validation failed. Authentication error!');
57
+ this.messages.next(data);
58
+ this.connectionStatus.next(false);
59
+ this.socket?.close();
60
+ return;
61
+ }
62
+ this.messages.next(data);
63
+ }
64
+ catch (error) {
65
+ console.error('Error parsing WebSocket message:', event.data);
66
+ }
67
+ };
68
+ this.socket.onclose = () => {
69
+ console.log('WebSocket connection closed');
70
+ this.connectionStatus.next(false);
71
+ this.socket = null;
72
+ };
73
+ this.socket.onerror = (error) => {
74
+ console.error('WebSocket error:', error);
75
+ this.connectionStatus.next(false);
76
+ };
77
+ }
78
+ disconnect() {
79
+ if (this.socket) {
80
+ this.socket.close();
81
+ this.socket = null;
82
+ }
83
+ }
84
+ subscribeToChannel(channelName) {
85
+ if (this.socket?.readyState === WebSocket.OPEN) {
86
+ const message = {
87
+ type: 'subscribe',
88
+ subscribedChannel: channelName,
89
+ content: {}
90
+ };
91
+ this.socket.send(JSON.stringify(message));
92
+ }
93
+ else {
94
+ console.warn('Cannot subscribe: WebSocket not yet open.');
95
+ }
96
+ }
97
+ unsubscribeToChannel(channel) {
98
+ if (this.socket?.readyState === WebSocket.OPEN) {
99
+ this.socket.send(JSON.stringify({ type: 'unsubscribe', subscribedChannel: channel }));
100
+ console.log(`💬 Unsubscribed to channel: ${channel}`);
101
+ }
102
+ else {
103
+ console.error('WebSocket is not open. Cannot unsubscribed to channel.');
104
+ }
105
+ }
106
+ sendBroadcast(content) {
107
+ if (this.socket?.readyState === WebSocket.OPEN) {
108
+ this.socket.send(JSON.stringify({ type: 'broadcast', content }));
109
+ console.log(`📢 Send broadcast: ${content}`);
110
+ }
111
+ else {
112
+ console.error('WebSocket is not open. Cannot send broadcast.');
113
+ }
114
+ }
115
+ sendMessageInChannel(channel, content) {
116
+ if (this.socket?.readyState === WebSocket.OPEN) {
117
+ this.socket.send(JSON.stringify({ type: 'stateMangerMessage', subscribedChannel: channel, content }));
118
+ console.log(`💬 Send message: ${content}`);
119
+ }
120
+ else {
121
+ console.error('WebSocket is not open. Cannot send message.');
122
+ }
123
+ }
124
+ sendMessageToUser(user, content) {
125
+ if (this.socket?.readyState === WebSocket.OPEN) {
126
+ this.socket.send(JSON.stringify({ type: 'userMessage', subscribedChannel: user, content }));
127
+ console.log(`💬 Send message: ${content}`);
128
+ }
129
+ else {
130
+ console.error('WebSocket is not open. Cannot send message.');
131
+ }
132
+ }
133
+ getAllChannels() {
134
+ if (this.socket?.readyState === WebSocket.OPEN) {
135
+ this.socket.send(JSON.stringify({ type: 'getChannels' }));
136
+ console.log('🗂️ List of all channels');
137
+ }
138
+ else {
139
+ console.error('WebSocket is not open. Cannot request channels.');
140
+ }
141
+ }
142
+ createChannel(channel) {
143
+ if (this.socket?.readyState === WebSocket.OPEN) {
144
+ this.socket.send(JSON.stringify({ type: 'createChannel', content: channel }));
145
+ console.log('🗂️ Created channel:', channel);
146
+ }
147
+ else {
148
+ console.error('WebSocket is not open. Cannot request channels.');
149
+ }
150
+ }
151
+ deleteChannel(channel) {
152
+ if (this.socket?.readyState === WebSocket.OPEN) {
153
+ this.socket.send(JSON.stringify({ type: 'deleteChannel', content: channel }));
154
+ console.log('🗂️ Delete channel:', channel);
155
+ }
156
+ else {
157
+ console.error('WebSocket is not open. Cannot request channels.');
158
+ }
159
+ }
160
+ getUsersInChannel(channel) {
161
+ if (this.socket?.readyState === WebSocket.OPEN) {
162
+ this.socket.send(JSON.stringify({ type: 'getUsers', subscribedChannel: channel }));
163
+ console.log(`👥 List all users in channel: ${channel}`);
164
+ }
165
+ else {
166
+ console.error('WebSocket is not open. Cannot request users.');
167
+ }
168
+ }
169
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WebsocketService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
170
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WebsocketService, providedIn: 'root' }); }
171
+ }
172
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WebsocketService, decorators: [{
173
+ type: Injectable,
174
+ args: [{
175
+ providedIn: 'root',
176
+ }]
177
+ }] });
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3dzLW1hbmFnZXItc2VydmljZS9zZXJ2aWNlcy93ZWJzb2NrZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7O0FBS25ELE1BQU0sT0FBTyxnQkFBZ0I7SUFIN0I7UUFLVSxXQUFNLEdBQXFCLElBQUksQ0FBQztRQUVoQyxhQUFRLEdBQUcsSUFBSSxlQUFlLENBQU0sSUFBSSxDQUFDLENBQUM7UUFDM0MsY0FBUyxHQUFvQixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXpELHFCQUFnQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3hELHNCQUFpQixHQUF3QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFN0UsaUJBQVksR0FBWSxLQUFLLENBQUM7S0E2THZDO0lBM0xTLGFBQWEsQ0FBQyxXQUFtQjtRQUVyQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxLQUFLLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbkUsTUFBTSxPQUFPLEdBQUc7Z0JBQ1osSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLGlCQUFpQixFQUFFLFdBQVc7Z0JBQzlCLE9BQU8sRUFBRSxFQUFFO2FBQ2QsQ0FBQztZQUNGLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxDQUFDLHlDQUF5QztZQUNuRSxPQUFPLENBQUMsR0FBRyxDQUFDLDBDQUEwQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxDQUFDLElBQUksQ0FBQywwQ0FBMEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLEtBQUssU0FBUyxDQUFDLElBQUksaUJBQWlCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQzNJLENBQUM7SUFDTCxDQUFDO0lBRUgsT0FBTyxDQUFDLEdBQVcsRUFBRSxRQUFpQjtRQUVsQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUVoQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxLQUFLLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDOUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO2dCQUNyRCxPQUFPO1lBQ1QsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEtBQUssU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNwRCxPQUFPLENBQUMsR0FBRyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7Z0JBQ3ZFLE9BQU87WUFDVCxDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsS0FBSyxTQUFTLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxLQUFLLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDaEcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQ0FBb0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDO2dCQUM1RSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNyQixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBRTFCLE1BQU0sR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxVQUFVLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFFMUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVqQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDckMsQ0FBQyxDQUFDO1FBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUVoQyxJQUFJLENBQUM7Z0JBRUgsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRXBDLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLGFBQWEsRUFBRSxDQUFDO29CQUUvQyxPQUFPLENBQUMsS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7b0JBRTlELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN6QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNsQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO29CQUVyQixPQUFPO2dCQUVULENBQUM7Z0JBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFM0IsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxrQ0FBa0MsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEUsQ0FBQztRQUVILENBQUMsQ0FBQztRQUVGLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRTtZQUV6QixPQUFPLENBQUMsR0FBRyxDQUFDLDZCQUE2QixDQUFDLENBQUM7WUFFM0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNyQixDQUFDLENBQUM7UUFFRixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzlCLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUM7SUFFSixDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7SUFFSCxrQkFBa0IsQ0FBQyxXQUFtQjtRQUVsQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxLQUFLLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUU3QyxNQUFNLE9BQU8sR0FBRztnQkFDWixJQUFJLEVBQUUsV0FBVztnQkFDakIsaUJBQWlCLEVBQUUsV0FBVztnQkFDOUIsT0FBTyxFQUFFLEVBQUU7YUFDZCxDQUFDO1lBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBRTlDLENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxDQUFDLElBQUksQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1FBQzlELENBQUM7SUFFTCxDQUFDO0lBRUMsb0JBQW9CLENBQUMsT0FBZTtRQUNsQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxLQUFLLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDdEYsT0FBTyxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUN4RCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQztRQUMxRSxDQUFDO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUFZO1FBQ3hCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLEtBQUssU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNqRSxPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7SUFDSCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsT0FBZSxFQUFFLE9BQVk7UUFDaEQsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsS0FBSyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3BHLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDL0MsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLENBQUMsS0FBSyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7UUFDL0QsQ0FBQztJQUNILENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxJQUFZLEVBQUUsT0FBWTtRQUMxQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxLQUFLLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzFGLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDL0MsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLENBQUMsS0FBSyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7UUFDL0QsQ0FBQztJQUNILENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsS0FBSyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDMUQsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQzFDLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO1FBQ25FLENBQUM7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLE9BQWU7UUFDM0IsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsS0FBSyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM5RSxPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQy9DLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO1FBQ25FLENBQUM7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLE9BQWU7UUFDM0IsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsS0FBSyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM5RSxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO1FBQ25FLENBQUM7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsT0FBZTtRQUMvQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxLQUFLLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbkYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMxRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztRQUNoRSxDQUFDO0lBQ0gsQ0FBQzsrR0FyTVUsZ0JBQWdCO21IQUFoQixnQkFBZ0IsY0FGZixNQUFNOzs0RkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBXZWJzb2NrZXRTZXJ2aWNlIHtcblxuICBwcml2YXRlIHNvY2tldDogV2ViU29ja2V0IHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBtZXNzYWdlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgcHVibGljIG1lc3NhZ2VzJDogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy5tZXNzYWdlcy5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIGNvbm5lY3Rpb25TdGF0dXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIGNvbm5lY3Rpb25TdGF0dXMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5jb25uZWN0aW9uU3RhdHVzLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgaXNTdWJzY3JpYmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBzZW5kU3Vic2NyaWJlKGNoYW5uZWxOYW1lOiBzdHJpbmcpIHtcblxuICAgICAgaWYgKHRoaXMuc29ja2V0Py5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTiAmJiAhdGhpcy5pc1N1YnNjcmliZWQpIHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0ge1xuICAgICAgICAgICAgICB0eXBlOiAnc3Vic2NyaWJlJyxcbiAgICAgICAgICAgICAgc3Vic2NyaWJlZENoYW5uZWw6IGNoYW5uZWxOYW1lLFxuICAgICAgICAgICAgICBjb250ZW50OiB7fVxuICAgICAgICAgIH07XG4gICAgICAgICAgdGhpcy5zb2NrZXQuc2VuZChKU09OLnN0cmluZ2lmeShtZXNzYWdlKSk7XG4gICAgICAgICAgdGhpcy5pc1N1YnNjcmliZWQgPSB0cnVlOyAvLyBTZXQgdGhlIGZsYWcgaW1tZWRpYXRlbHkgYWZ0ZXIgc2VuZGluZ1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBbQ0xJRU5UXSBTZW50IGluaXRpYWwgc3Vic2NyaXB0aW9uIHRvOiAke2NoYW5uZWxOYW1lfWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oYFtDTElFTlRdIFN1YnNjcmlwdGlvbiBwcmV2ZW50ZWQuIE9wZW46ICR7dGhpcy5zb2NrZXQ/LnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5PUEVOfSwgU3Vic2NyaWJlZDogJHt0aGlzLmlzU3Vic2NyaWJlZH1gKTtcbiAgICAgIH1cbiAgfVxuXG5jb25uZWN0KHVybDogc3RyaW5nLCBqd3RUb2tlbj86IHN0cmluZykge1xuXG4gICAgaWYgKHRoaXMuc29ja2V0KSB7XG5cbiAgICAgIGlmICh0aGlzLnNvY2tldC5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xuICAgICAgICBjb25zb2xlLmxvZygnV2ViU29ja2V0IGNvbm5lY3Rpb24gaXMgYWxyZWFkeSBPUEVOLicpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnNvY2tldC5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuQ09OTkVDVElORykge1xuICAgICAgICBjb25zb2xlLmxvZygnV2ViU29ja2V0IGlzIGFscmVhZHkgQ09OTkVDVElORy4gV2FpdGluZyBmb3IgaGFuZHNoYWtlLicpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnNvY2tldC5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuQ0xPU0lORyB8fCB0aGlzLnNvY2tldC5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuQ0xPU0VEKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBDbGVhbmluZyB1cCBzdGFsZSBzb2NrZXQgKFN0YXRlOiAke3RoaXMuc29ja2V0LnJlYWR5U3RhdGV9KS5gKTtcbiAgICAgICAgdGhpcy5zb2NrZXQuY2xvc2UoKTtcbiAgICAgICAgdGhpcy5zb2NrZXQgPSBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuaXNTdWJzY3JpYmVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBVUkwgPSAoand0VG9rZW4pID8gYCR7dXJsfT90b2tlbj0ke2p3dFRva2VufWAgOiB1cmw7XG5cbiAgICB0aGlzLnNvY2tldCA9IG5ldyBXZWJTb2NrZXQoVVJMKTtcblxuICAgIHRoaXMuc29ja2V0Lm9ub3BlbiA9IChkYXRhKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKGDwn5OhIENvbm5lY3RlZCB0byBXZWJTb2NrZXRgKTtcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuc2VuZFN1YnNjcmliZSgnV1MtTVlfREFUQScpO1xuICAgIH07XG5cbiAgICB0aGlzLnNvY2tldC5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHtcblxuICAgICAgdHJ5IHtcblxuICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShldmVudC5kYXRhKTtcblxuICAgICAgICBpZiAoZGF0YS5lcnJvciAmJiBkYXRhLmVycm9yID09PSAnSldUX0lOVkFMSUQnKSB7XG5cbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdKV1QgdmFsaWRhdGlvbiBmYWlsZWQuIEF1dGhlbnRpY2F0aW9uIGVycm9yIScpO1xuXG4gICAgICAgICAgdGhpcy5tZXNzYWdlcy5uZXh0KGRhdGEpO1xuICAgICAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cy5uZXh0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLnNvY2tldD8uY2xvc2UoKTtcblxuICAgICAgICAgIHJldHVybjtcblxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5tZXNzYWdlcy5uZXh0KGRhdGEpO1xuXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwYXJzaW5nIFdlYlNvY2tldCBtZXNzYWdlOicsIGV2ZW50LmRhdGEpO1xuICAgICAgfVxuXG4gICAgfTtcblxuICAgIHRoaXMuc29ja2V0Lm9uY2xvc2UgPSAoKSA9PiB7XG5cbiAgICAgIGNvbnNvbGUubG9nKCdXZWJTb2NrZXQgY29ubmVjdGlvbiBjbG9zZWQnKTtcblxuICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzLm5leHQoZmFsc2UpO1xuICAgICAgdGhpcy5zb2NrZXQgPSBudWxsO1xuICAgIH07XG5cbiAgICB0aGlzLnNvY2tldC5vbmVycm9yID0gKGVycm9yKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKCdXZWJTb2NrZXQgZXJyb3I6JywgZXJyb3IpO1xuICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzLm5leHQoZmFsc2UpO1xuICAgIH07XG5cbiAgfVxuXG4gIGRpc2Nvbm5lY3QoKSB7XG4gICAgaWYgKHRoaXMuc29ja2V0KSB7XG4gICAgICB0aGlzLnNvY2tldC5jbG9zZSgpO1xuICAgICAgdGhpcy5zb2NrZXQgPSBudWxsO1xuICAgIH1cbiAgfVxuXG5zdWJzY3JpYmVUb0NoYW5uZWwoY2hhbm5lbE5hbWU6IHN0cmluZykge1xuXG4gICAgaWYgKHRoaXMuc29ja2V0Py5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xuXG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB7XG4gICAgICAgICAgICB0eXBlOiAnc3Vic2NyaWJlJyxcbiAgICAgICAgICAgIHN1YnNjcmliZWRDaGFubmVsOiBjaGFubmVsTmFtZSxcbiAgICAgICAgICAgIGNvbnRlbnQ6IHt9XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5zb2NrZXQuc2VuZChKU09OLnN0cmluZ2lmeShtZXNzYWdlKSk7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4oJ0Nhbm5vdCBzdWJzY3JpYmU6IFdlYlNvY2tldCBub3QgeWV0IG9wZW4uJyk7XG4gICAgfVxuXG59XG5cbiAgdW5zdWJzY3JpYmVUb0NoYW5uZWwoY2hhbm5lbDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuc29ja2V0Py5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xuICAgICAgdGhpcy5zb2NrZXQuc2VuZChKU09OLnN0cmluZ2lmeSh7IHR5cGU6ICd1bnN1YnNjcmliZScsIHN1YnNjcmliZWRDaGFubmVsOiBjaGFubmVsIH0pKTtcbiAgICAgIGNvbnNvbGUubG9nKGDwn5KsIFVuc3Vic2NyaWJlZCB0byBjaGFubmVsOiAke2NoYW5uZWx9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1dlYlNvY2tldCBpcyBub3Qgb3Blbi4gQ2Fubm90IHVuc3Vic2NyaWJlZCB0byBjaGFubmVsLicpO1xuICAgIH1cbiAgfVxuXG4gIHNlbmRCcm9hZGNhc3QoY29udGVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuc29ja2V0Py5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xuICAgICAgdGhpcy5zb2NrZXQuc2VuZChKU09OLnN0cmluZ2lmeSh7IHR5cGU6ICdicm9hZGNhc3QnLCBjb250ZW50IH0pKTtcbiAgICAgIGNvbnNvbGUubG9nKGDwn5OiIFNlbmQgYnJvYWRjYXN0OiAke2NvbnRlbnR9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1dlYlNvY2tldCBpcyBub3Qgb3Blbi4gQ2Fubm90IHNlbmQgYnJvYWRjYXN0LicpO1xuICAgIH1cbiAgfVxuXG4gIHNlbmRNZXNzYWdlSW5DaGFubmVsKGNoYW5uZWw6IHN0cmluZywgY29udGVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuc29ja2V0Py5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xuICAgICAgdGhpcy5zb2NrZXQuc2VuZChKU09OLnN0cmluZ2lmeSh7IHR5cGU6ICdzdGF0ZU1hbmdlck1lc3NhZ2UnLCBzdWJzY3JpYmVkQ2hhbm5lbDogY2hhbm5lbCwgY29udGVudCB9KSk7XG4gICAgICAgIGNvbnNvbGUubG9nKGDwn5KsIFNlbmQgbWVzc2FnZTogJHtjb250ZW50fWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdXZWJTb2NrZXQgaXMgbm90IG9wZW4uIENhbm5vdCBzZW5kIG1lc3NhZ2UuJyk7XG4gICAgfVxuICB9XG5cbiAgc2VuZE1lc3NhZ2VUb1VzZXIodXNlcjogc3RyaW5nLCBjb250ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5zb2NrZXQ/LnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5PUEVOKSB7XG4gICAgICB0aGlzLnNvY2tldC5zZW5kKEpTT04uc3RyaW5naWZ5KHsgdHlwZTogJ3VzZXJNZXNzYWdlJywgc3Vic2NyaWJlZENoYW5uZWw6IHVzZXIsIGNvbnRlbnQgfSkpO1xuICAgICAgICBjb25zb2xlLmxvZyhg8J+SrCBTZW5kIG1lc3NhZ2U6ICR7Y29udGVudH1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignV2ViU29ja2V0IGlzIG5vdCBvcGVuLiBDYW5ub3Qgc2VuZCBtZXNzYWdlLicpO1xuICAgIH1cbiAgfVxuXG4gIGdldEFsbENoYW5uZWxzKCkge1xuICAgIGlmICh0aGlzLnNvY2tldD8ucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU4pIHtcbiAgICAgIHRoaXMuc29ja2V0LnNlbmQoSlNPTi5zdHJpbmdpZnkoeyB0eXBlOiAnZ2V0Q2hhbm5lbHMnIH0pKTtcbiAgICAgIGNvbnNvbGUubG9nKCfwn5eC77iPIExpc3Qgb2YgYWxsIGNoYW5uZWxzJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1dlYlNvY2tldCBpcyBub3Qgb3Blbi4gQ2Fubm90IHJlcXVlc3QgY2hhbm5lbHMuJyk7XG4gICAgfVxuICB9XG5cbiAgY3JlYXRlQ2hhbm5lbChjaGFubmVsOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5zb2NrZXQ/LnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5PUEVOKSB7XG4gICAgICB0aGlzLnNvY2tldC5zZW5kKEpTT04uc3RyaW5naWZ5KHsgdHlwZTogJ2NyZWF0ZUNoYW5uZWwnLCBjb250ZW50OiBjaGFubmVsIH0pKTtcbiAgICAgIGNvbnNvbGUubG9nKCfwn5eC77iPIENyZWF0ZWQgY2hhbm5lbDonLCBjaGFubmVsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignV2ViU29ja2V0IGlzIG5vdCBvcGVuLiBDYW5ub3QgcmVxdWVzdCBjaGFubmVscy4nKTtcbiAgICB9XG4gIH1cblxuICBkZWxldGVDaGFubmVsKGNoYW5uZWw6IHN0cmluZykge1xuICAgIGlmICh0aGlzLnNvY2tldD8ucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU4pIHtcbiAgICAgIHRoaXMuc29ja2V0LnNlbmQoSlNPTi5zdHJpbmdpZnkoeyB0eXBlOiAnZGVsZXRlQ2hhbm5lbCcsIGNvbnRlbnQ6IGNoYW5uZWwgfSkpO1xuICAgICAgY29uc29sZS5sb2coJ/Cfl4LvuI8gRGVsZXRlIGNoYW5uZWw6JywgY2hhbm5lbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1dlYlNvY2tldCBpcyBub3Qgb3Blbi4gQ2Fubm90IHJlcXVlc3QgY2hhbm5lbHMuJyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0VXNlcnNJbkNoYW5uZWwoY2hhbm5lbDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuc29ja2V0Py5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xuICAgICAgdGhpcy5zb2NrZXQuc2VuZChKU09OLnN0cmluZ2lmeSh7IHR5cGU6ICdnZXRVc2VycycsIHN1YnNjcmliZWRDaGFubmVsOiBjaGFubmVsIH0pKTtcbiAgICAgIGNvbnNvbGUubG9nKGDwn5GlIExpc3QgYWxsIHVzZXJzIGluIGNoYW5uZWw6ICR7Y2hhbm5lbH1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignV2ViU29ja2V0IGlzIG5vdCBvcGVuLiBDYW5ub3QgcmVxdWVzdCB1c2Vycy4nKTtcbiAgICB9XG4gIH1cblxufVxuIl19