http-request-manager 18.7.21 → 18.7.24

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.24.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,39 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
-
3
- @Injectable({
4
- providedIn: 'root'
5
- })
6
- export class EncryptionTestService {
7
-
8
- constructor() { }
9
-
10
- private isBase64(str: string): boolean {
11
- const base64Pattern = /^(?:[A-Z0-9+/]{4})*(?:[A-Z0-9+/]{2}==|[A-Z0-9+/]{3}=)?$/i;
12
- return base64Pattern.test(str);
13
- }
14
-
15
- private isHexadecimal(str: string): boolean {
16
- const hexPattern = /^[0-9a-fA-F]+$/;
17
- return hexPattern.test(str) && (str.length % 2 === 0);
18
- }
19
-
20
- private hasHighEntropy(str: string): boolean {
21
- const uniqueChars = new Set(str).size;
22
- return uniqueChars > str.length * 0.6;
23
- }
24
-
25
- isEncrypted(str: string): boolean {
26
-
27
- if (typeof str !== 'string') {
28
- return false;
29
- }
30
-
31
- if (this.isBase64(str) || this.isHexadecimal(str)) {
32
- return true;
33
- }
34
-
35
- return this.hasHighEntropy(str);
36
-
37
- }
38
-
39
- }
@@ -1,5 +0,0 @@
1
- export * from "./asymmetrical-encryption.service";
2
- export * from './symmetrical-encryption.service';
3
-
4
- export * from './random';
5
-
@@ -1,81 +0,0 @@
1
- export const Random = () => {
2
- const typedArray = new Uint8Array(1)
3
- const randomValue = crypto.getRandomValues(typedArray)[0]
4
- const randomFloat = randomValue / Math.pow(2, 8)
5
- return randomFloat
6
- }
7
-
8
- export const RandomNumber = (min: number, max: number) => {
9
- return Math.floor(Random() * max) + min
10
- }
11
-
12
- export const RandomNumbers = (min: number, max: number, length: number) => {
13
- const numbers: number[] = []
14
- for (let i = 0; i < length; i++) numbers.push(Math.floor(Random() * max) + min)
15
- return numbers
16
- }
17
-
18
- export const RandomNumbersUnique = (min: number, max: number, length: number) => {
19
- let count = 0;
20
-
21
- // Adjust the length if it exceeds the number of unique numbers possible in the range
22
- if (length > (max - min + 1)) {
23
- console.error('error encountered');
24
- length = max - min + 1;
25
- }
26
-
27
- console.log('length', length);
28
- const numbers: number[] = [];
29
- const maxAttempts = length * 100 ; // Safeguard to prevent infinite loops
30
-
31
- while (numbers.length < length && count < maxAttempts) {
32
-
33
- const num = Math.floor(Random() * max) + min;
34
-
35
- if (!numbers.includes(num)) {
36
- numbers.push(num);
37
- }
38
- }
39
-
40
- if (count >= maxAttempts) {
41
- throw new Error('Maximum attempts exceeded while generating unique numbers');
42
- }
43
-
44
- return numbers;
45
- };
46
-
47
- export const RandomStr = () => {
48
-
49
- const typedArray = new Uint8Array(8)
50
- const array = new Uint32Array(1)
51
- crypto.getRandomValues(array)
52
- return array[0].toString(36)
53
-
54
- }
55
-
56
- export const RandomSignature = () => {
57
-
58
- const typedArray = new Uint8Array(8)
59
- const array = new Uint32Array(1)
60
- crypto.getRandomValues(array)
61
- return array[0]
62
-
63
- }
64
-
65
- export const UUID = () => {
66
- return self.crypto.randomUUID()
67
- }
68
-
69
- /**
70
- * Generate a UUID string (legacy format)
71
- */
72
- export const UUID_STR = (): string => {
73
- const s4 = () => {
74
- return Math.floor((1 + Random()) * 0x10000)
75
- .toString(16)
76
- .substring(1);
77
- };
78
- return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();
79
- };
80
-
81
-
@@ -1,93 +0,0 @@
1
- import { Injectable, inject } from '@angular/core';
2
- import * as CryptoJS from 'crypto-js';
3
-
4
- import { RandomSignature } from './random';
5
- import { AppService } from '../app.service';
6
-
7
- @Injectable({
8
- providedIn: 'root'
9
- })
10
- export class SymmetricalEncryptionService {
11
-
12
- appID: string; // APP SERVICE TO MANAGER ENCRYPTION KEY
13
-
14
- private appService = inject(AppService)
15
-
16
- constructor() {
17
- // TODO: The APP ID is not a string, it is a function
18
- this.appID = (this.appService.appID) ? this.appService.appID : ''
19
- if(this.appID === '') console.warn('No App Key has been define')
20
- }
21
-
22
- generateCipherKey() {
23
- return (RandomSignature().toString() + RandomSignature().toString()).substring(0, 8)
24
- }
25
-
26
- encrypt(str: any, key = this.appID) {
27
-
28
- if(!str || key === '') return ''
29
-
30
- let _key = CryptoJS.enc.Utf8.parse(key)
31
- let _iv = CryptoJS.enc.Utf8.parse(key)
32
-
33
- try {
34
-
35
- const encrypted = CryptoJS.AES.encrypt(
36
- JSON.stringify(str), _key, {
37
- keySize: 16,
38
- iv: _iv,
39
- mode: CryptoJS.mode.ECB,
40
- padding: CryptoJS.pad.Pkcs7
41
- });
42
-
43
- return encrypted.toString()
44
-
45
- } catch(error: any) {
46
- console.log(error)
47
- }
48
-
49
- return
50
- }
51
-
52
- decrypt(str: string, key = this.appID) {
53
-
54
- if(!str || key === '') return
55
-
56
- let _key = CryptoJS.enc.Utf8.parse(key)
57
- let _iv = CryptoJS.enc.Utf8.parse(key)
58
-
59
- try {
60
-
61
- return CryptoJS.AES.decrypt(
62
- str, _key, {
63
- keySize: 16,
64
- iv: _iv,
65
- mode: CryptoJS.mode.ECB,
66
- padding: CryptoJS.pad.Pkcs7
67
- }).toString(CryptoJS.enc.Utf8);
68
-
69
- } catch(error: any) {
70
- console.log(error)
71
- }
72
-
73
- return
74
- }
75
-
76
- createSignature(url: string, len = 16) {
77
- const sig = CryptoJS.SHA256(url).toString(CryptoJS.enc.Hex)
78
- return sig.substring(0, len).toUpperCase()
79
- }
80
-
81
- normalizeURL(url: string) {
82
- const normalizedURL = url.replace(/(https?:\/\/)?(www\.)?/, '').replace(/\/+$/, '');
83
- return normalizedURL;
84
- }
85
-
86
- generateSignature(url: string) {
87
- const normalizedURL = this.normalizeURL(url)
88
- const hash = CryptoJS.SHA256(normalizedURL)
89
- const signature = hash.toString(CryptoJS.enc.Hex)
90
- return signature;
91
- }
92
-
93
- }
@@ -1,80 +0,0 @@
1
- import { TestBed } from '@angular/core/testing';
2
- import { HttpHeaders } from '@angular/common/http';
3
- import { HeadersService } from './headers.service';
4
-
5
- describe('HeadersService', () => {
6
- let service: HeadersService;
7
-
8
- beforeEach(() => {
9
- TestBed.configureTestingModule({
10
- providers: [HeadersService]
11
- });
12
- service = TestBed.inject(HeadersService);
13
- });
14
-
15
- it('should be created', () => {
16
- expect(service).toBeTruthy();
17
- });
18
-
19
- it('should generate headers correctly', () => {
20
- service.headers = { 'Content-Type': 'application/json' };
21
- const customHeaders = { 'Authorization': 'Bearer token' };
22
- const result = service.generateHeaders(customHeaders);
23
- expect(result.headers.get('Content-Type')).toBe('application/json');
24
- expect(result.headers.get('Authorization')).toBe('Bearer token');
25
- });
26
-
27
- it('should override default headers with custom headers', () => {
28
- service.headers = { 'Content-Type': 'application/json' };
29
- const customHeaders = { 'Content-Type': 'text/plain' };
30
- const result = service.generateHeaders(customHeaders);
31
- expect(result.headers.get('Content-Type')).toBe('text/plain');
32
- });
33
-
34
- it('should handle empty custom headers', () => {
35
- service.headers = { 'Content-Type': 'application/json' };
36
- const customHeaders = {};
37
- const result = service.generateHeaders(customHeaders);
38
- expect(result.headers.get('Content-Type')).toBe('application/json');
39
- });
40
-
41
- it('should handle empty default headers', () => {
42
- service.headers = {};
43
- const customHeaders = { 'Content-Type': 'text/plain' };
44
- const result = service.generateHeaders(customHeaders);
45
- expect(result.headers.get('Content-Type')).toBe('text/plain');
46
- });
47
-
48
- it('should merge multiple headers correctly', () => {
49
- service.headers = { 'Content-Type': 'application/json', 'Accept': 'application/json' };
50
- const customHeaders = { 'Authorization': 'Bearer token', 'Accept': 'text/plain' };
51
- const result = service.generateHeaders(customHeaders);
52
- expect(result.headers.get('Content-Type')).toBe('application/json');
53
- expect(result.headers.get('Authorization')).toBe('Bearer token');
54
- expect(result.headers.get('Accept')).toBe('text/plain');
55
- });
56
-
57
- it('should handle no headers', () => {
58
- service.headers = {};
59
- const customHeaders = {};
60
- const result = service.generateHeaders(customHeaders);
61
- expect(result.headers.keys().length).toBe(0);
62
- });
63
-
64
- it('should prioritize custom headers over default headers', () => {
65
- service.headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer defaultToken' };
66
- const customHeaders = { 'Authorization': 'Bearer customToken' };
67
- const result = service.generateHeaders(customHeaders);
68
- expect(result.headers.get('Content-Type')).toBe('application/json');
69
- expect(result.headers.get('Authorization')).toBe('Bearer customToken');
70
- });
71
-
72
- it('should add new custom headers to default headers', () => {
73
- service.headers = { 'Content-Type': 'application/json' };
74
- const customHeaders = { 'Authorization': 'Bearer token', 'Accept': 'application/xml' };
75
- const result = service.generateHeaders(customHeaders);
76
- expect(result.headers.get('Content-Type')).toBe('application/json');
77
- expect(result.headers.get('Authorization')).toBe('Bearer token');
78
- expect(result.headers.get('Accept')).toBe('application/xml');
79
- });
80
- });
@@ -1,18 +0,0 @@
1
- import { HttpHeaders } from '@angular/common/http';
2
- import { Injectable } from '@angular/core';
3
-
4
- @Injectable({
5
- providedIn: 'root'
6
- })
7
- export class HeadersService {
8
-
9
- headers = {}
10
-
11
- generateHeaders(headers?: Record<string, string>): { headers: HttpHeaders } {
12
-
13
- const allHeaders = headers ? { ...this.headers, ...headers } : {}
14
- return { headers: new HttpHeaders(allHeaders) }
15
-
16
- }
17
-
18
- }
@@ -1,7 +0,0 @@
1
- export * from './app.service';
2
- export * from './headers.service';
3
- export * from './path-query.service';
4
- export * from './utils.service';
5
- export * from './random-color.utils';
6
- export * from './encryption/index';
7
-
@@ -1,18 +0,0 @@
1
- /* tslint:disable:no-unused-variable */
2
-
3
- import { TestBed, inject } from '@angular/core/testing';
4
- import { HttpClientTestingModule } from '@angular/common/http/testing';
5
- import { ObjectMergerService } from './object-merger.service';
6
-
7
- describe('Service: ObjectMerger', () => {
8
- beforeEach(() => {
9
- TestBed.configureTestingModule({
10
- imports: [HttpClientTestingModule],
11
- providers: [ObjectMergerService]
12
- });
13
- });
14
-
15
- it('should ...', inject([ObjectMergerService], (service: ObjectMergerService) => {
16
- expect(service).toBeTruthy();
17
- }));
18
- });
@@ -1,78 +0,0 @@
1
- import { Inject, Injectable, Optional, inject } from '@angular/core';
2
-
3
- import { ApiRequest } from '../request-manager-state-service/models';
4
- import { SettingOptions } from '../local-storage-manager-service';
5
- import { UtilsService } from './utils.service';
6
-
7
- import { CONFIG_SETTINGS_TOKEN } from '../../models/config-token.model';
8
- import { ConfigHTTPOptions, ConfigOptions, LocalStorageOptions } from '../request-manager-services';
9
-
10
- @Injectable({
11
- providedIn: 'root'
12
- })
13
- export class ObjectMergerService {
14
-
15
- utils = inject(UtilsService);
16
-
17
- constructor(@Inject(CONFIG_SETTINGS_TOKEN) @Optional() private configOptions?: ConfigOptions) {
18
- if (!this.configOptions) this.configOptions = ConfigOptions.adapt()
19
- }
20
-
21
- mergeOptions(options = ApiRequest.adapt()) {
22
-
23
- const configForRoot = (this.configOptions?.httpRequestOptions) ? this.configOptions.httpRequestOptions : ConfigHTTPOptions.adapt()
24
- const mergedOptions = ApiRequest.adapt(options)
25
-
26
- mergedOptions.server = (options && options.server === '') ? configForRoot?.server || '' : options.server
27
-
28
- mergedOptions.path = [ ...options.path || [], ...configForRoot?.path || [] ]
29
-
30
- mergedOptions.headers = { ...options.headers || {}, ...configForRoot?.headers || {} }
31
-
32
- mergedOptions.retry = (options && (options?.retry?.times !== 0 || options?.retry?.delay !== 3)) ? options.retry : configForRoot?.retry || { times: 0, delay: 3 };
33
-
34
- mergedOptions.polling = (options && options?.polling !== 0) ? options.polling : configForRoot?.polling || 0;
35
-
36
- mergedOptions.displayError = (options && options?.displayError) ? options.displayError : configForRoot?.displayError || false;
37
-
38
- mergedOptions.stream = (options && options?.stream) ? options.stream : configForRoot?.stream || false;
39
-
40
- return mergedOptions;
41
-
42
- }
43
-
44
- mergeStorageOptions(options = SettingOptions.adapt()) {
45
-
46
- const configForRoot = (this.configOptions?.LocalStorageOptions) ? this.configOptions.LocalStorageOptions : LocalStorageOptions.adapt()
47
- const configForRootOptions = configForRoot.options || LocalStorageOptions.adapt().options
48
-
49
- const mergedOptions = SettingOptions.adapt(options)
50
-
51
- // storage type
52
- mergedOptions.storage = (options && (typeof options.storage !== 'undefined')) ? options.storage : (configForRootOptions?.storage ?? 0)
53
-
54
- // expires: prefer explicit numeric expires; if not provided, compute from expiresIn string; otherwise use config default
55
- // if an explicit, non-zero numeric expires is provided, use it
56
- if (options && (typeof options.expires !== 'undefined') && options.expires !== null && Number(options.expires) > 0) {
57
- mergedOptions.expires = Number(options.expires);
58
- } else if (options && options.expiresIn) {
59
- // compute numeric epoch from expiresIn string using UtilsService if available
60
- try {
61
- mergedOptions.expires = this.utils ? this.utils.expires(options.expiresIn) : 0;
62
- } catch {
63
- mergedOptions.expires = 0;
64
- }
65
- } else {
66
- mergedOptions.expires = configForRootOptions?.expires ?? 0;
67
- }
68
-
69
- // keep expiresIn string if explicitly provided, otherwise use config default
70
- mergedOptions.expiresIn = (options && (typeof options.expiresIn !== 'undefined')) ? options.expiresIn : (configForRootOptions?.expiresIn || '')
71
-
72
- mergedOptions.encrypted = (options && (typeof options.encrypted !== 'undefined')) ? options.encrypted : (configForRootOptions?.encrypted || false)
73
-
74
- return mergedOptions;
75
-
76
- }
77
-
78
- }
@@ -1,117 +0,0 @@
1
- import { TestBed } from '@angular/core/testing';
2
- import { PathQueryService } from './path-query.service';
3
-
4
- describe('PathQueryService', () => {
5
- let service: PathQueryService;
6
-
7
- beforeEach(() => {
8
- TestBed.configureTestingModule({
9
- providers: [PathQueryService]
10
- });
11
- service = TestBed.inject(PathQueryService);
12
- });
13
-
14
- it('should be created', () => {
15
- expect(service).toBeTruthy();
16
- });
17
-
18
- it('should build API path with only server', () => {
19
- const result = service.buildAPIPath('http://example.com');
20
- expect(result).toBe('http://example.com');
21
- });
22
-
23
- it('should build API path with server and path params', () => {
24
- const result = service.buildAPIPath('http://example.com', ['path', 'to', 'resource']);
25
- expect(result).toBe('http://example.com/path/to/resource');
26
- });
27
-
28
- it('should build API path with server, path params, and query params', () => {
29
- const result = service.buildAPIPath('http://example.com', ['path', 'to', 'resource', { query: 'value' }]);
30
- expect(result).toBe('http://example.com/path/to/resource?query=value');
31
- });
32
-
33
- it('should build API path with server and query params', () => {
34
- const result = service.buildAPIPath('http://example.com', [{ query: 'value' }]);
35
- expect(result).toBe('http://example.com?query=value');
36
- });
37
-
38
- it('should handle empty query params', () => {
39
- const result = service.buildAPIPath('http://example.com', ['path', 'to', 'resource', {}]);
40
- expect(result).toBe('http://example.com/path/to/resource');
41
- });
42
-
43
- it('should remove empty query params', () => {
44
- const result = service.buildAPIPath('http://example.com', ['path', 'to', 'resource', { query: '' }]);
45
- expect(result).toBe('http://example.com/path/to/resource');
46
- });
47
-
48
- it('should clean URL path', () => {
49
- const result = service.buildAPIPath('http://example.com', ['path', '', 'to', 'resource']);
50
- expect(result).toBe('http://example.com/path/to/resource');
51
- });
52
-
53
- it('should handle null query params', () => {
54
- const result = service.buildAPIPath('http://example.com', ['path', 'to', 'resource', null]);
55
- expect(result).toBe('http://example.com/path/to/resource');
56
- });
57
-
58
- it('should handle undefined query params', () => {
59
- const result = service.buildAPIPath('http://example.com', ['path', 'to', 'resource', undefined]);
60
- expect(result).toBe('http://example.com/path/to/resource');
61
- });
62
-
63
- it('should build API path with server as string array and path params', () => {
64
- const result = service.buildAPIPath(['http://example.com', 'api', 'v1'], ['path', 'to', 'resource']);
65
- expect(result).toBe('http://example.com/api/v1/path/to/resource');
66
- });
67
-
68
- it('should build API path with server as string array, path params, and query params', () => {
69
- const result = service.buildAPIPath(['http://example.com', 'api', 'v1'], ['path', 'to', 'resource', { query: 'value' }]);
70
- expect(result).toBe('http://example.com/api/v1/path/to/resource?query=value');
71
- });
72
-
73
- it('should build API path with server as string array and query params', () => {
74
- const result = service.buildAPIPath(['http://example.com', 'api', 'v1'], [{ query: 'value' }]);
75
- expect(result).toBe('http://example.com/api/v1?query=value');
76
- });
77
-
78
- it('should handle empty query params with server as string array', () => {
79
- const result = service.buildAPIPath(['http://example.com', 'api', 'v1'], ['path', 'to', 'resource', {}]);
80
- expect(result).toBe('http://example.com/api/v1/path/to/resource');
81
- });
82
-
83
- it('should remove empty query params with server as string array', () => {
84
- const result = service.buildAPIPath(['http://example.com', 'api', 'v1'], ['path', 'to', 'resource', { query: '' }]);
85
- expect(result).toBe('http://example.com/api/v1/path/to/resource');
86
- });
87
-
88
- it('should clean URL path with server as string array', () => {
89
- const result = service.buildAPIPath(['http://example.com', 'api', 'v1'], ['path', '', 'to', 'resource']);
90
- expect(result).toBe('http://example.com/api/v1/path/to/resource');
91
- });
92
-
93
- it('should handle null query params with server as string array', () => {
94
- const result = service.buildAPIPath(['http://example.com', 'api', 'v1'], ['path', 'to', 'resource', null]);
95
- expect(result).toBe('http://example.com/api/v1/path/to/resource');
96
- });
97
-
98
- it('should handle undefined query params with server as string array', () => {
99
- const result = service.buildAPIPath(['http://example.com', 'api', 'v1'], ['path', 'to', 'resource', undefined]);
100
- expect(result).toBe('http://example.com/api/v1/path/to/resource');
101
- });
102
-
103
- it('should handle multiple query params with server as string array', () => {
104
- const result = service.buildAPIPath(['http://example.com', 'api', 'v1'], ['path', 'to', 'resource', { query1: 'value1', query2: 'value2' }]);
105
- expect(result).toBe('http://example.com/api/v1/path/to/resource?query1=value1&query2=value2');
106
- });
107
-
108
- it('should handle array query params with server as string array', () => {
109
- const result = service.buildAPIPath(['http://example.com', 'api', 'v1'], ['path', 'to', 'resource', { query: ['value1', 'value2'] }]);
110
- expect(result).toBe('http://example.com/api/v1/path/to/resource?query=value1%2Cvalue2');
111
- });
112
-
113
- it('should handle mixed path and query params with server as string array', () => {
114
- const result = service.buildAPIPath(['http://example.com', 'api', 'v1'], ['path', { query: 'value' }, 'to', 'resource']);
115
- expect(result).toBe('http://example.com/api/v1/path/to/resource?query=value');
116
- });
117
- });
@@ -1,69 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
-
3
- @Injectable({
4
- providedIn: 'root'
5
- })
6
- export class PathQueryService {
7
-
8
- buildAPIPath(server: string|string[], params?: any[]|any) {
9
-
10
- server = (Array.isArray(server)) ? server.join('/') : server
11
-
12
- const pathObjects = (params) ? params.filter((path:any) => (!this.isObject(path))) : []
13
- const queryObjects = (params) ? params.filter((path:any) => (this.isObject(path))) : []
14
-
15
- const query = this.removeEmptyParams(queryObjects.reduce((r: any, c: any) => {
16
- Object.entries(c).forEach(([key, value]) => {
17
- r[key] = Array.isArray(value) ? value.join(',') : value
18
- })
19
- return r
20
- }, {}))
21
-
22
- let path = this.buildRestPath(server, pathObjects)
23
-
24
- return(Object.keys(query).length > 0) ? path + '?' + this.buildQueryPath(query) : path
25
-
26
- }
27
-
28
- private buildRestPath(server: string, params: any[]): string {
29
- server = (server) ? server : ''
30
- server = (server.charAt(0) === '/') ? server.substring(1) : server
31
- return this.cleanUrlPath(server +'/'+ params.join('/'))
32
- }
33
-
34
- private buildQueryPath(params: any): string {
35
-
36
- const searchParams = new URLSearchParams()
37
-
38
- for (const key in params) {
39
-
40
- if (Array.isArray(params[key])) {
41
- params[key].forEach((value: any) => searchParams.append(key, value));
42
- } else {
43
- searchParams.append(key, params[key]);
44
- }
45
-
46
- }
47
-
48
- return searchParams.toString()
49
-
50
- }
51
-
52
- private cleanUrlPath(str: string) {
53
- return str.replace(/([^:]\/)\/+/g, "$1").replace(/\/$/,'')
54
- }
55
-
56
- private isObject(val: any): boolean {
57
- return (val === null) ? false : ( (typeof val === 'function') || (typeof val === 'object') )
58
- }
59
-
60
- private removeEmptyParams = (obj: any): Record<string, any> =>
61
- Object.fromEntries(
62
- Object.entries(obj)
63
- .map(([key, value]) =>
64
- [key, value && typeof value === 'object' ? this.removeEmptyParams(value) : value]
65
- )
66
- .filter(([_, value]) => value !== undefined && value !== "")
67
- )
68
-
69
- }