http-request-manager 18.7.21 → 18.7.27

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 (198) hide show
  1. package/fesm2022/http-request-manager.mjs +7633 -0
  2. package/fesm2022/http-request-manager.mjs.map +1 -0
  3. package/http-request-manager-18.7.27.tgz +0 -0
  4. package/package.json +16 -5
  5. package/types/http-request-manager.d.ts +2277 -0
  6. package/ARCHITECTURE.md +0 -483
  7. package/DATABASE_README.md +0 -1176
  8. package/HTTP_MANAGER_README.md +0 -579
  9. package/HTTP_SINGNALS_MANAGER_README.md +0 -654
  10. package/HTTP_STATE_MANAGER_README.md +0 -948
  11. package/INTERCEPTOR_README.md +0 -549
  12. package/LOCAL_STORAGE_README.md +0 -1056
  13. package/STORE_STATE_MANAGER_README.md +0 -1322
  14. package/UTILS_README.md +0 -1186
  15. package/WS_MANAGER_README.md +0 -613
  16. package/ng-package.json +0 -8
  17. package/src/lib/http-request-manager.module.ts +0 -132
  18. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.html +0 -65
  19. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.scss +0 -0
  20. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.ts +0 -224
  21. package/src/lib/http-request-services-demo/http-request-services-demo.component.html +0 -114
  22. package/src/lib/http-request-services-demo/http-request-services-demo.component.scss +0 -6
  23. package/src/lib/http-request-services-demo/http-request-services-demo.component.ts +0 -52
  24. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.html +0 -195
  25. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.scss +0 -17
  26. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.ts +0 -206
  27. package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.html +0 -200
  28. package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.scss +0 -17
  29. package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.ts +0 -212
  30. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.html +0 -53
  31. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.scss +0 -60
  32. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.ts +0 -72
  33. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-download.module.ts +0 -28
  34. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.html +0 -10
  35. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.scss +0 -29
  36. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.ts +0 -100
  37. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/models/download-labels-model.ts +0 -22
  38. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.html +0 -8
  39. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.scss +0 -19
  40. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.ts +0 -26
  41. package/src/lib/http-request-services-demo/request-manager-demo/models/app-session.model.ts +0 -30
  42. package/src/lib/http-request-services-demo/request-manager-demo/models/app.model.ts +0 -19
  43. package/src/lib/http-request-services-demo/request-manager-demo/models/get-sample.model.ts +0 -25
  44. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-ai-prompt.ts +0 -19
  45. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client-details.ts +0 -24
  46. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client-info.ts +0 -30
  47. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client.model.ts +0 -49
  48. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-mapper-client-info.ts +0 -33
  49. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.html +0 -392
  50. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.scss +0 -24
  51. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.ts +0 -461
  52. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.html +0 -393
  53. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.scss +0 -24
  54. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.ts +0 -421
  55. package/src/lib/http-request-services-demo/request-manager-state-demo/services/state-manager-demo.service.ts +0 -87
  56. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/services/state-data-request.service.ts +0 -120
  57. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.css +0 -0
  58. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.html +0 -3
  59. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.ts +0 -16
  60. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component.css +0 -0
  61. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component.html +0 -3
  62. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component.ts +0 -16
  63. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.css +0 -31
  64. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.html +0 -72
  65. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.scss +0 -41
  66. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.spec.ts +0 -205
  67. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.ts +0 -77
  68. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.css +0 -11
  69. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.html +0 -96
  70. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.spec.ts +0 -31
  71. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.ts +0 -229
  72. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.css +0 -30
  73. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.html +0 -172
  74. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.spec.ts +0 -31
  75. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.ts +0 -239
  76. package/src/lib/http-request-services-demo/request-manager-ws-demo/models/oidc-client.model.ts +0 -31
  77. package/src/lib/http-request-services-demo/request-manager-ws-demo/models/user-data.model.ts +0 -32
  78. package/src/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.css +0 -0
  79. package/src/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.html +0 -84
  80. package/src/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.ts +0 -41
  81. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/index.ts +0 -3
  82. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/message-service-demo.service.ts +0 -83
  83. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/notification-service-demo.service.ts +0 -147
  84. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/state-service-demo.service.ts +0 -158
  85. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.html +0 -53
  86. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.scss +0 -60
  87. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.ts +0 -72
  88. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-download.module.ts +0 -28
  89. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.html +0 -10
  90. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.scss +0 -29
  91. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.ts +0 -100
  92. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/models/download-labels-model.ts +0 -22
  93. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.html +0 -8
  94. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.scss +0 -19
  95. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.ts +0 -26
  96. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/app-session.model.ts +0 -30
  97. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/app.model.ts +0 -19
  98. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/get-sample.model.ts +0 -25
  99. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-ai-prompt.ts +0 -19
  100. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-details.ts +0 -24
  101. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-info.ts +0 -30
  102. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client.model.ts +0 -49
  103. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-mapper-client-info.ts +0 -33
  104. package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.html +0 -380
  105. package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.scss +0 -24
  106. package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.ts +0 -410
  107. package/src/lib/http-request-services-demo/store-state-manager-demo/models/settings.model.ts +0 -28
  108. package/src/lib/http-request-services-demo/store-state-manager-demo/services/settings-state.service.ts +0 -48
  109. package/src/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.css +0 -0
  110. package/src/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.html +0 -23
  111. package/src/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.ts +0 -36
  112. package/src/lib/index.ts +0 -3
  113. package/src/lib/interceptors/credentials.interceptor.ts +0 -16
  114. package/src/lib/interceptors/index.ts +0 -6
  115. package/src/lib/interceptors/models/error-settings.model.ts +0 -22
  116. package/src/lib/interceptors/models/index.ts +0 -2
  117. package/src/lib/interceptors/proxy-debugger.interceptor.ts +0 -46
  118. package/src/lib/interceptors/request-error.interceptor.ts +0 -65
  119. package/src/lib/interceptors/request-header.interceptor.ts +0 -53
  120. package/src/lib/models/config-http-options.model.ts +0 -42
  121. package/src/lib/models/config-local-storage-options.model.ts +0 -27
  122. package/src/lib/models/config-options.model.ts +0 -27
  123. package/src/lib/models/config-token.model.ts +0 -9
  124. package/src/lib/models/data-type.enum.ts +0 -5
  125. package/src/lib/models/database-storage.model.ts +0 -24
  126. package/src/lib/models/index.ts +0 -12
  127. package/src/lib/models/retry-options.model.ts +0 -22
  128. package/src/lib/services/database-manager-service/database.manager.service.ts +0 -262
  129. package/src/lib/services/database-manager-service/db.storage.service.ts +0 -207
  130. package/src/lib/services/database-manager-service/index.ts +0 -4
  131. package/src/lib/services/database-manager-service/models/index.ts +0 -2
  132. package/src/lib/services/database-manager-service/models/table-schema.ts +0 -33
  133. package/src/lib/services/index.ts +0 -12
  134. package/src/lib/services/local-storage-manager-service/index.ts +0 -4
  135. package/src/lib/services/local-storage-manager-service/local-storage-manager.service.spec.ts +0 -71
  136. package/src/lib/services/local-storage-manager-service/local-storage-manager.service.ts +0 -426
  137. package/src/lib/services/local-storage-manager-service/local-storage-signals-manager.service.spec.ts +0 -67
  138. package/src/lib/services/local-storage-manager-service/local-storage-signals-manager.service.ts +0 -345
  139. package/src/lib/services/local-storage-manager-service/models/global-store-options.model.ts +0 -30
  140. package/src/lib/services/local-storage-manager-service/models/index.ts +0 -6
  141. package/src/lib/services/local-storage-manager-service/models/setting-options.model.ts +0 -35
  142. package/src/lib/services/local-storage-manager-service/models/storage-data.model.ts +0 -24
  143. package/src/lib/services/local-storage-manager-service/models/storage-option.model.ts +0 -32
  144. package/src/lib/services/local-storage-manager-service/models/storage-type.enum.ts +0 -5
  145. package/src/lib/services/request-manager-services/README.md +0 -268
  146. package/src/lib/services/request-manager-services/http-manager-signals.service.ts +0 -246
  147. package/src/lib/services/request-manager-services/http-manager.service.spec.ts +0 -232
  148. package/src/lib/services/request-manager-services/http-manager.service.ts +0 -274
  149. package/src/lib/services/request-manager-services/index.ts +0 -8
  150. package/src/lib/services/request-manager-services/request-signals.service.ts +0 -214
  151. package/src/lib/services/request-manager-services/request.service.ts +0 -309
  152. package/src/lib/services/request-manager-services/rxjs-operators/countdown.ts +0 -17
  153. package/src/lib/services/request-manager-services/rxjs-operators/delay-retry.ts +0 -16
  154. package/src/lib/services/request-manager-services/rxjs-operators/index.ts +0 -4
  155. package/src/lib/services/request-manager-services/rxjs-operators/request-polling.ts +0 -35
  156. package/src/lib/services/request-manager-services/rxjs-operators/request-streaming.ts +0 -436
  157. package/src/lib/services/request-manager-state-service/http-manager-state.store.ts +0 -1321
  158. package/src/lib/services/request-manager-state-service/index.ts +0 -3
  159. package/src/lib/services/request-manager-state-service/models/api-request.model.ts +0 -61
  160. package/src/lib/services/request-manager-state-service/models/index.ts +0 -6
  161. package/src/lib/services/request-manager-state-service/models/request-options.model.ts +0 -22
  162. package/src/lib/services/request-manager-state-service/models/stream-type.enum.ts +0 -13
  163. package/src/lib/services/request-manager-state-service/models/ws-options.model.ts +0 -39
  164. package/src/lib/services/store-state-manager-service/index.ts +0 -3
  165. package/src/lib/services/store-state-manager-service/models/index.ts +0 -2
  166. package/src/lib/services/store-state-manager-service/models/state-storage-options.model.ts +0 -24
  167. package/src/lib/services/store-state-manager-service/store-state-manager.service.ts +0 -88
  168. package/src/lib/services/utils/app.service.spec.ts +0 -25
  169. package/src/lib/services/utils/app.service.ts +0 -21
  170. package/src/lib/services/utils/encryption/README.md +0 -79
  171. package/src/lib/services/utils/encryption/asymmetrical-encryption.service.ts +0 -282
  172. package/src/lib/services/utils/encryption/encryption-test.service.ts +0 -39
  173. package/src/lib/services/utils/encryption/index.ts +0 -5
  174. package/src/lib/services/utils/encryption/random.ts +0 -81
  175. package/src/lib/services/utils/encryption/symmetrical-encryption.service.ts +0 -93
  176. package/src/lib/services/utils/headers.service.spec.ts +0 -80
  177. package/src/lib/services/utils/headers.service.ts +0 -18
  178. package/src/lib/services/utils/index.ts +0 -7
  179. package/src/lib/services/utils/object-merger.service.spec.ts +0 -18
  180. package/src/lib/services/utils/object-merger.service.ts +0 -78
  181. package/src/lib/services/utils/path-query.service.spec.ts +0 -117
  182. package/src/lib/services/utils/path-query.service.ts +0 -69
  183. package/src/lib/services/utils/random-color.utils.ts +0 -83
  184. package/src/lib/services/utils/utils.service.spec.ts +0 -165
  185. package/src/lib/services/utils/utils.service.ts +0 -192
  186. package/src/lib/services/ws-manager-service/index.ts +0 -4
  187. package/src/lib/services/ws-manager-service/models/channel-info.model.ts +0 -24
  188. package/src/lib/services/ws-manager-service/models/channel-message-data.model.ts +0 -24
  189. package/src/lib/services/ws-manager-service/models/channel-message.model.ts +0 -24
  190. package/src/lib/services/ws-manager-service/models/communication-type.enum.ts +0 -5
  191. package/src/lib/services/ws-manager-service/models/index.ts +0 -5
  192. package/src/lib/services/ws-manager-service/models/ws-user.model.ts +0 -38
  193. package/src/lib/services/ws-manager-service/services/index.ts +0 -3
  194. package/src/lib/services/ws-manager-service/services/websocket.service.ts +0 -392
  195. package/src/public-api.ts +0 -14
  196. package/tsconfig.lib.json +0 -32
  197. package/tsconfig.lib.prod.json +0 -10
  198. package/tsconfig.spec.json +0 -14
@@ -1,83 +0,0 @@
1
- /**
2
- * Generate a random hex color code
3
- * @returns A random hex color string (e.g., "#FF5733")
4
- */
5
- export const RandomHexColor = (): string => {
6
- // Generate a random number between 0 and 16777215 (0xFFFFFF)
7
- const randomColor = Math.floor(Math.random() * 16777215);
8
- // Convert to hexadecimal and pad with zeros to ensure 6 digits
9
- const hexColor = randomColor.toString(16).padStart(6, '0');
10
- // Return with # prefix
11
- return `#${hexColor}`;
12
- };
13
-
14
- /**
15
- * Generate a random hex color with constraints to ensure good visibility
16
- * @param options Optional constraints for color generation
17
- * @returns A random hex color string with good contrast
18
- */
19
- export const RandomVisibleColor = (options?: {
20
- minBrightness?: number; // Minimum brightness (0-255), default: 50
21
- maxBrightness?: number; // Maximum brightness (0-255), default: 200
22
- }): string => {
23
- const minBrightness = options?.minBrightness ?? 50;
24
- const maxBrightness = options?.maxBrightness ?? 200;
25
-
26
- // Generate RGB values within the specified brightness range
27
- const r = Math.floor(Math.random() * (maxBrightness - minBrightness) + minBrightness);
28
- const g = Math.floor(Math.random() * (maxBrightness - minBrightness) + minBrightness);
29
- const b = Math.floor(Math.random() * (maxBrightness - minBrightness) + minBrightness);
30
-
31
- // Convert to hex and pad with zeros
32
- const toHex = (n: number) => n.toString(16).padStart(2, '0');
33
- return `#${toHex(r)}${toHex(g)}${toHex(b)}`;
34
- };
35
-
36
- /**
37
- * Generate a random color from a predefined palette
38
- * @returns A hex color from a set of visually distinct colors
39
- */
40
- export const RandomPaletteColor = (): string => {
41
- const colorPalette = [
42
- '#FF6B6B', // Coral
43
- '#4ECDC4', // Turquoise
44
- '#45B7D1', // Sky Blue
45
- '#FFBE0B', // Amber
46
- '#FB5607', // Orange
47
- '#8338EC', // Violet
48
- '#3A86FF', // Azure
49
- '#38B000', // Green
50
- '#9D4EDD', // Purple
51
- '#FF006E', // Pink
52
- '#0077B6', // Blue
53
- '#2A9D8F' // Teal
54
- ];
55
-
56
- const randomIndex = Math.floor(Math.random() * colorPalette.length);
57
- return colorPalette[randomIndex];
58
- };
59
-
60
- /**
61
- * Generate a random HSL color
62
- * @param options Optional constraints for HSL generation
63
- * @returns A random HSL color string (e.g., "hsl(120, 100%, 50%)")
64
- */
65
- export const RandomHSLColor = (options?: {
66
- saturation?: [number, number]; // Saturation range (0-100), default: [50, 100]
67
- lightness?: [number, number]; // Lightness range (0-100), default: [40, 80]
68
- }): string => {
69
- // Full range for hue (0-360)
70
- const hue = Math.floor(Math.random() * 361);
71
-
72
- // Default or custom saturation range
73
- const satMin = options?.saturation?.[0] ?? 50;
74
- const satMax = options?.saturation?.[1] ?? 100;
75
- const saturation = Math.floor(Math.random() * (satMax - satMin + 1) + satMin);
76
-
77
- // Default or custom lightness range
78
- const lightMin = options?.lightness?.[0] ?? 40;
79
- const lightMax = options?.lightness?.[1] ?? 80;
80
- const lightness = Math.floor(Math.random() * (lightMax - lightMin + 1) + lightMin);
81
-
82
- return `hsl(${hue}, ${saturation}%, ${lightness}%)`;
83
- };
@@ -1,165 +0,0 @@
1
- import { TestBed } from '@angular/core/testing';
2
- import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing';
3
- import { UtilsService } from './utils.service';
4
- import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';
5
-
6
- describe('UtilsService', () => {
7
- let service: UtilsService;
8
- let httpMock: HttpTestingController;
9
-
10
- beforeEach(() => {
11
- TestBed.configureTestingModule({
12
- imports: [],
13
- providers: [UtilsService, provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()]
14
- });
15
- service = TestBed.inject(UtilsService);
16
- httpMock = TestBed.inject(HttpTestingController);
17
- });
18
-
19
- afterEach(() => {
20
- httpMock.verify();
21
- });
22
-
23
- it('should be created', () => {
24
- expect(service).toBeTruthy();
25
- });
26
-
27
- describe('Type Checks and JSON Conversions', () => {
28
- it('should check string and object types', () => {
29
- expect(service.isString('test')).toBeTrue();
30
- expect(service.isString(123)).toBeFalse();
31
- expect(service.isObject({})).toBeTrue();
32
- expect(service.isObject('test')).toBeFalse();
33
- });
34
-
35
- it('should convert between JSON and string', () => {
36
- const obj = { key: 'value' };
37
- const jsonString = '{"key":"value"}';
38
- expect(service.JSONToString(obj)).toBe(JSON.stringify(obj));
39
- expect(service.JSONToString('test')).toBe('test');
40
- expect(service.stringToJSON(jsonString)).toEqual(JSON.parse(jsonString));
41
- expect(service.stringToJSON('test')).toBe('test');
42
- });
43
-
44
- it('should check if a string is valid JSON', () => {
45
- expect(service.isJSON('{"key":"value"}')).toBeTrue();
46
- expect(service.isJSON('not json')).toBeFalse();
47
- });
48
- });
49
-
50
- describe('Object Access and Comparison', () => {
51
- it('should return property value and compare objects', () => {
52
- const obj = { key: 'value' };
53
- expect(service.getValueByProp(obj, 'key')).toBe('value');
54
- expect(service.getValueByProp(undefined, 'key')).toBeFalse();
55
-
56
- const obj1 = { key: 'value', nested: { a: 1 } };
57
- const obj2 = { key: 'value', nested: { a: 1 } };
58
- const obj3 = { key: 'value', nested: { a: 2 } };
59
- expect(service.objectsEqual(obj1, obj2)).toBeTrue();
60
- expect(service.objectsEqual(obj1, obj3)).toBeFalse();
61
- });
62
- });
63
-
64
- describe('HTTP and Getter', () => {
65
- it('should obtain JSON from file', () => {
66
- const dummyData = { key: 'value' };
67
- service.getJSON('test.json').subscribe(data => {
68
- expect(data).toEqual(dummyData);
69
- });
70
- const req = httpMock.expectOne('assets/data/test.json');
71
- expect(req.request.method).toBe('GET');
72
- req.flush(dummyData);
73
- });
74
-
75
- it('should return current time from today getter', () => {
76
- const nowInSec = new Date().getMilliseconds() / 1000;
77
- expect(service.today).toBeCloseTo(nowInSec, 0);
78
- });
79
- });
80
-
81
- describe('Conversion Methods', () => {
82
- it('should convert base32 to hex (simple case)', () => {
83
- // For "A", expecting "0".
84
- expect(service.base32ToHex('A')).toBe('0');
85
- });
86
-
87
- it('should convert binary to hex with 32-character padding', () => {
88
- /* For the binary representation of "Hello":
89
- H -> 01001000
90
- e -> 01100101
91
- l -> 01101100
92
- l -> 01101100
93
- o -> 01101111
94
- -> Hex: "48656c6c6f"
95
- Padded (22 zeros in front): "00000000000000000000000048656c6c6f"
96
- */
97
- const binary = '0100100001100101011011000110110001101111';
98
- const expected = '000000000000000000000048656c6c6f';
99
- expect(service.binaryToHex(binary)).toBe(expected);
100
- });
101
- });
102
-
103
- describe('Expiry Calculations', () => {
104
- // Helper to test expiry() returns a value close to now + (multiplier)
105
- function expectExpiryClose(input: string, multiplier: number) {
106
- const now = Math.floor(new Date().getTime() / 1000);
107
- const expiry = service.expires(input);
108
- expect(expiry).toBeGreaterThanOrEqual(now + multiplier - 1);
109
- expect(expiry).toBeLessThanOrEqual(now + multiplier + 1);
110
- }
111
-
112
- it('should calculate expiry for various time units', () => {
113
- expectExpiryClose("1y", 31556926);
114
- expectExpiryClose("1m", 2629743);
115
- expectExpiryClose("1w", 604800);
116
- expectExpiryClose("1d", 86400);
117
- expectExpiryClose("1hr", 3600);
118
- expectExpiryClose("1mn", 60);
119
- expectExpiryClose("1s", 1);
120
- });
121
-
122
- it('should return undefined for missing expiry string', () => {
123
- expect(service.expires()).toBeUndefined();
124
- });
125
-
126
- it('should indicate if expired', () => {
127
- const now = Math.floor(new Date().getTime() / 1000);
128
- expect(service.hasExpired(now - 10)).toBeTrue();
129
- expect(service.hasExpired(now + 10)).toBeFalse();
130
- expect(service.hasExpired(0)).toBeFalse();
131
- });
132
-
133
- it('should check setting for expiry', () => {
134
- const settingWithExpiry = { expires: 1234567890 };
135
- const settingWithoutExpiry = { key: 'value' };
136
- expect(service.hasExpiry(settingWithExpiry)).toBeTrue();
137
- expect(service.hasExpiry(settingWithoutExpiry)).toBeFalse();
138
- });
139
-
140
- it('should return a formatted string for future expiry dates', () => {
141
- const now = Math.floor(new Date().getTime() / 1000);
142
- const future = now + 10000;
143
- const result = service.expiresIn(future);
144
- expect(typeof result).toBe('string');
145
- expect(result).toBeDefined();
146
- expect(result!.length).toBeGreaterThan(0);
147
- // Expect one of the time unit labels in the formatted result.
148
- expect(result).toMatch(/(y|m|w|d|h|min|s)/);
149
- });
150
-
151
- it('should return "Expired" for past or current expiry dates', () => {
152
- const now = Math.floor(new Date().getTime() / 1000);
153
- expect(service.expiresIn(now - 1)).toBe("Expired");
154
- expect(service.expiresIn(now)).toBe("Expired");
155
- });
156
- });
157
-
158
- describe('String Conversion', () => {
159
- it('should convert string to lowercase with underscores', () => {
160
- const input = 'Hello, World!';
161
- // Expected conversion: remove punctuation, convert to lowercase, replace spaces with underscores.
162
- expect(service.lc(input)).toBe('hello_world');
163
- });
164
- });
165
- });
@@ -1,192 +0,0 @@
1
-
2
- import { HttpClient } from '@angular/common/http';
3
- import { Injectable, inject } from '@angular/core';
4
-
5
- @Injectable({
6
- providedIn: 'root'
7
- })
8
- export class UtilsService {
9
-
10
- http = inject(HttpClient)
11
-
12
- constructor() { }
13
-
14
- isString(x: string | number) {
15
- return Object.prototype.toString.call(x) === '[object String]'
16
- }
17
-
18
- isObject(obj: any) {
19
- return Object.prototype.toString.call(obj) === '[object Object]'
20
- }
21
-
22
- JSONToString(value: any) {
23
- return (this.isObject(value)) ? JSON.stringify(value) : value
24
- }
25
-
26
- stringToJSON(value: string) {
27
- return (this.isJSON(value)) ? JSON.parse(value) : value
28
- }
29
-
30
- isJSON(str: any) {
31
- try {
32
- JSON.parse(str)
33
- } catch (e) {
34
- return false
35
- }
36
- return true
37
- }
38
-
39
- getValueByProp(obj: any, prop: string) {
40
- if(typeof obj === 'undefined') return false
41
- return obj[prop]
42
- }
43
-
44
- objectsEqual(x: any, y: any): boolean {
45
-
46
- const ok = Object.keys, tx = typeof x, ty = typeof y
47
-
48
- return x && y && tx === 'object' && tx === ty ? (
49
- ok(x).length === ok(y).length &&
50
- ok(x).every((key: any) => this.objectsEqual(x[key], y[key]))
51
- ) : (x === y)
52
-
53
- }
54
-
55
- getJSON(file: string) {
56
- return this.http.get(`assets/data/${file}`)
57
- }
58
-
59
- get today() {
60
- return new Date().getMilliseconds() / 1000
61
- }
62
-
63
- base32ToHex(base32: string): string {
64
-
65
- const base32chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"
66
-
67
- const charToValue = (char: string) => base32chars.indexOf(char.toUpperCase())
68
-
69
- let bits = ''
70
- let hex = ''
71
-
72
- for (let i = 0; i < base32.length; i++) {
73
- const val = charToValue(base32.charAt(i))
74
- bits += val.toString(2).padStart(5, '0')
75
- }
76
-
77
- for (let i = 0; i + 4 <= bits.length; i += 4) {
78
- const chunk = bits.substr(i, 4)
79
- hex += parseInt(chunk, 2).toString(16)
80
- }
81
-
82
- return hex.toUpperCase()
83
- }
84
-
85
- binaryToHex(binary: string): string {
86
- let hex = '';
87
- for (let i = 0; i < binary.length; i += 8) {
88
- const byte = binary.substr(i, 8);
89
- const decimal = parseInt(byte, 2);
90
- hex += decimal.toString(16).padStart(2, '0');
91
- }
92
- return hex.padStart(32, '0').substr(0, 32);
93
- }
94
-
95
- // y = years, m = months, w = weeks, d = days, hr = hours, mn = minutes else seconds
96
- // returns epoch time corresponding to the expiry type
97
- expires(str?: string) {
98
-
99
- if(!str) return undefined
100
-
101
- const match = str.match(/[^0-9]+$/)
102
-
103
- const type = (match) ? str.slice(-match[0].length) : 0
104
-
105
- const now = Math.floor(new Date().getTime() / 1000)
106
-
107
- let value = 0;
108
-
109
- switch (type) {
110
- case
111
- 'y':
112
- const years = parseInt(str.slice(0, -1))
113
- value = now + (years * 31556926)
114
- break;
115
- case
116
- 'm':
117
- const months = parseInt(str.slice(0, -1))
118
- value = now + (months * 2629743)
119
- break;
120
- case
121
- 'w':
122
- const weeks = parseInt(str.slice(0, -1))
123
- value = now + (weeks * 604800)
124
- break;
125
- case
126
- 'd':
127
- const days = parseInt(str.slice(0, -1))
128
- value = now + (days * 86400)
129
- break;
130
- case
131
- 'hr':
132
- const hrs = parseInt(str.slice(0, -2))
133
- value = now + (hrs * 3600)
134
- break;
135
- case
136
- 'mn':
137
- const min = parseInt(str.slice(0, -2))
138
- value = now + (min * 60)
139
- break;
140
- default: //seconds
141
- const sec = parseInt(str.slice(0, -1))
142
- value = now + sec
143
- break;
144
- }
145
- return value;
146
- }
147
-
148
- hasExpired(expiryDate: number): boolean {
149
- if (!expiryDate || expiryDate === 0) return false
150
- const currentTime = Math.floor(new Date().getTime() / 1000)
151
- return expiryDate < currentTime
152
- }
153
-
154
- hasExpiry(setting: any) {
155
- return (setting?.expires) ? true : false
156
- }
157
-
158
- expiresIn(expiryDate: number) {
159
-
160
- if (!expiryDate) return;
161
-
162
- const now = Math.floor(new Date().getTime() / 1000);
163
- let diff = expiryDate - now;
164
-
165
- if (diff <= 0) return "Expired";
166
-
167
- const units = [
168
- { label: 'y', s: 31536000 },
169
- { label: 'm', s: 2592000 },
170
- { label: 'w', s: 604800 },
171
- { label: 'd', s: 86400 },
172
- { label: 'h', s: 3600 },
173
- { label: 'min', s: 60 },
174
- { label: 's', s: 1 },
175
- ];
176
-
177
- let result = [];
178
-
179
- for (const unit of units) {
180
- if (diff >= unit.s) {
181
- const value = Math.floor(diff / unit.s);
182
- diff %= unit.s;
183
- result.push(`${value}${unit.label}`);
184
- }
185
- }
186
-
187
- return result.join(', ');
188
- }
189
-
190
- lc = (str: string) => str.toLowerCase().replace(/[^\w\s]/g, '').replace(/\s+/g, '_')
191
-
192
- }
@@ -1,4 +0,0 @@
1
-
2
- export * from "./models/index";
3
- export * from "./services/websocket.service";
4
-
@@ -1,24 +0,0 @@
1
- export interface ChannelInfoInterface {
2
- name: string
3
- canSubscribe: boolean
4
- }
5
-
6
- export class ChannelInfo implements ChannelInfoInterface {
7
-
8
- constructor(
9
- public name = '',
10
- public canSubscribe = false,
11
- ) {}
12
-
13
- static adapt(item?: any): ChannelInfo {
14
-
15
- return new ChannelInfo(
16
- item?.name,
17
- item?.canSubscribe,
18
- )
19
-
20
- }
21
-
22
- }
23
-
24
-
@@ -1,24 +0,0 @@
1
- import { UserMessage } from "./user-message.model"
2
-
3
- export interface ChannelMessageInterface {
4
- channel: string,
5
- users: UserMessage[],
6
- }
7
-
8
- export class ChannelMessage implements ChannelMessageInterface {
9
-
10
- constructor(
11
- public channel: string,
12
- public users: UserMessage[] = [],
13
- ) {}
14
-
15
- static adapt(item?: any): ChannelMessage {
16
-
17
- return new ChannelMessage(
18
- item?.channel,
19
- (item?.users) ? item?.users.map((userItem: any) => UserMessage.adapt(userItem)) : [],
20
- )
21
-
22
- }
23
-
24
- }
@@ -1,24 +0,0 @@
1
- import { WSUser } from "./ws-user.model";
2
-
3
- export interface ChannelMessageInterface {
4
- sessionId: any,
5
- content: any,
6
- }
7
-
8
- export class ChannelMessage implements ChannelMessageInterface {
9
-
10
- constructor(
11
- public sessionId: any = null,
12
- public content: any = null,
13
- ) {}
14
-
15
- static adapt(item?: any): ChannelMessage {
16
-
17
- return new ChannelMessage(
18
- item?.sessionId || item?.id, // Support both for backward compatibility
19
- item?.content,
20
- )
21
-
22
- }
23
-
24
- }
@@ -1,5 +0,0 @@
1
- export enum CommunicationType {
2
- MESSAGE,
3
- ALERT,
4
- OTHER
5
- }
@@ -1,5 +0,0 @@
1
- export * from "./channel-info.model";
2
- export * from "./ws-user.model";
3
-
4
- export * from "./communication-type.enum";
5
-
@@ -1,38 +0,0 @@
1
- export interface WSUserInterface {
2
- id: string,
3
- ldap?: string,
4
- name?: string,
5
- email?: string,
6
- [key: string]: any, // Allow additional properties
7
- }
8
-
9
- export class WSUser implements WSUserInterface {
10
-
11
- constructor(
12
- public id: string = '',
13
- public ldap: string = '',
14
- public name: string = '',
15
- public email: string = '',
16
- ) {}
17
-
18
- static adapt(item?: any): WSUser {
19
- const user = new WSUser(
20
- item?.id || item?.sessionId, // Support both for backward compatibility
21
- item?.ldap,
22
- item?.name,
23
- item?.email,
24
- );
25
- // Copy any additional properties
26
- if (item) {
27
- Object.keys(item).forEach(key => {
28
- if (!['id', 'sessionId', 'ldap', 'name', 'email'].includes(key)) {
29
- (user as any)[key] = item[key];
30
- }
31
- });
32
- }
33
- return user;
34
- }
35
-
36
- }
37
-
38
-
@@ -1,3 +0,0 @@
1
-
2
- export * from "./websocket.service";
3
-